"{ Package: 'stx:goodies/monticello' }"
ApplicationModel subclass:#MCRepositoryBrowser
instanceVariableNames:'repositoriesHolder packagesHolder versionsHolder
selectedVersionHolder worker selectedVersionDetailsHolder'
classVariableNames:''
poolDictionaries:''
category:'Monticello-St/X UI'
!
!MCRepositoryBrowser class methodsFor:'interface specs'!
packageDetailsSpec
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:MCRepositoryBrowser andSelector:#psckageDetailsSpec
MCRepositoryBrowser new openInterface:#psckageDetailsSpec
"
<resource: #canvas>
^
#(FullSpec
name: psckageDetailsSpec
window:
(WindowSpec
label: 'MC Package Details'
name: 'MC Package Details'
min: (Point 10 10)
bounds: (Rectangle 0 0 533 326)
)
component:
(SpecCollection
collection: (
(TextEditorSpec
name: 'PackageDetails'
layout: (LayoutFrame 0 0 0 0 0 1 -30 1)
model: selectedVersionDetailsHolder
hasHorizontalScrollBar: true
hasVerticalScrollBar: true
isReadOnly: true
hasKeyboardFocusInitially: false
)
(ActionButtonSpec
label: 'Load'
name: 'LoadButton'
layout: (LayoutFrame 0 0 -30 1 0 1 0 1)
translateLabel: true
model: versionLoad
)
)
)
)
"Modified: / 26-10-2010 / 21:57:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
windowSpec
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:MCRepositoryBrowser andSelector:#windowSpec
MCRepositoryBrowser new openInterface:#windowSpec
MCRepositoryBrowser open
"
<resource: #canvas>
^
#(FullSpec
name: windowSpec
window:
(WindowSpec
label: 'MC Repository Browser'
name: 'MC Repository Browser'
min: (Point 10 10)
bounds: (Rectangle 0 0 796 497)
)
component:
(SpecCollection
collection: (
(VariableVerticalPanelSpec
name: 'VariableVerticalPanel1'
layout: (LayoutFrame 0 0 0 0 0 1 0 1)
component:
(SpecCollection
collection: (
(VariableHorizontalPanelSpec
name: 'VariableHorizontalPanel1'
component:
(SpecCollection
collection: (
(SubCanvasSpec
name: 'RepositoryList'
hasHorizontalScrollBar: false
hasVerticalScrollBar: false
majorKey: MCRepositoryList
subAspectHolders:
(Array
(SubChannelInfoSpec
subAspect: inGeneratorHolder
aspect: repositoriesHolder
)
(SubChannelInfoSpec
subAspect: outGeneratorHolder
aspect: packagesHolder
)
)
createNewApplication: true
createNewBuilder: true
)
(SubCanvasSpec
name: 'PackageList'
hasHorizontalScrollBar: false
hasVerticalScrollBar: false
majorKey: MCPackageList
subAspectHolders:
(Array
(SubChannelInfoSpec
subAspect: inGeneratorHolder
aspect: packagesHolder
)
(SubChannelInfoSpec
subAspect: outGeneratorHolder
aspect: versionsHolder
)
)
createNewApplication: true
createNewBuilder: true
)
(SubCanvasSpec
name: 'VersionList'
hasHorizontalScrollBar: false
hasVerticalScrollBar: false
majorKey: MCVersionList
subAspectHolders:
(Array
(SubChannelInfoSpec
subAspect: inGeneratorHolder
aspect: versionsHolder
)
(SubChannelInfoSpec
subAspect: menuHolder
aspect: versionsMenu
)
(SubChannelInfoSpec
subAspect: selectionHolder
aspect: selectedVersionHolder
)
)
createNewApplication: true
createNewBuilder: true
)
)
)
handles: (Any 0.333333333333333 0.666666666666667 1.0)
)
(UISubSpecification
name: 'SubSpecification1'
minorKey: packageDetailsSpec
)
)
)
handles: (Any 0.5 1.0)
)
)
)
)
! !
!MCRepositoryBrowser class methodsFor:'menu specs'!
versionsMenu
"This resource specification was automatically generated
by the MenuEditor of ST/X."
"Do not manually edit this!! If it is corrupted,
the MenuEditor may not be able to read the specification."
"
MenuEditor new openOnClass:MCRepositoryBrowser andSelector:#versionsMenu
(Menu new fromLiteralArrayEncoding:(MCRepositoryBrowser versionsMenu)) startUp
"
<resource: #menu>
^
#(Menu
(
(MenuItem
label: 'Load'
itemValue: versionLoad
translateLabel: true
)
(MenuItem
label: 'Load into package...'
itemValue: versionLoadIntoPackage
translateLabel: true
)
(MenuItem
label: '-'
)
(MenuItem
enabled: hasVersionSelectedHolder
label: 'Browse'
itemValue: versionBrowser
translateLabel: true
)
(MenuItem
label: 'Browse unloadable'
itemValue: versionBrowseUnloadable
translateLabel: true
)
(MenuItem
label: '-'
)
(MenuItem
enabled: hasVersionSelectedHolder
label: 'Inspect'
itemValue: versionInspect
translateLabel: true
)
)
nil
nil
)
! !
!MCRepositoryBrowser methodsFor:'accessing'!
selectedVersion
"return the value in 'selectedVersionHolder'"
^ self selectedVersionHolder value
!
selectedVersion: newValue
"set the value in 'selectedVersionHolder'"
self selectedVersionHolder value: newValue
!
selectedVersionAsMCVersion
| entry |
entry := self selectedVersionHolder value.
^entry ifNil:[nil] ifNotNil:[entry asMCVersion].
"Created: / 13-10-2010 / 17:48:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!MCRepositoryBrowser methodsFor:'aspect-queries'!
hasVersionSelectedHolder
^[self selectedVersionHolder value notNil]
"Created: / 13-10-2010 / 17:08:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!MCRepositoryBrowser methodsFor:'aspects'!
packagesHolder
"return/create the 'packagesHolder' value holder (automatically generated)"
packagesHolder isNil ifTrue:[
packagesHolder := ValueHolder new.
].
^ packagesHolder
!
packagesHolder:something
"set the 'packagesHolder' value holder (automatically generated)"
packagesHolder := something.
!
repositoriesHolder
"return/create the 'repositoriesHolder' value holder (automatically generated)"
repositoriesHolder isNil ifTrue:[
repositoriesHolder := ValueHolder with: MCRepositoryGroup default repositories.
].
^ repositoriesHolder
"Modified: / 16-09-2010 / 18:33:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
repositoriesHolder:something
"set the 'repositoriesHolder' value holder (automatically generated)"
repositoriesHolder := something.
!
selectedVersionDetailsHolder
<resource: #uiAspect>
"automatically generated by UIPainter ..."
"*** the code below creates a default model when invoked."
"*** (which may not be the one you wanted)"
"*** Please change as required and accept it in the browser."
"*** (and replace this comment by something more useful ;-)"
selectedVersionDetailsHolder isNil ifTrue:[
selectedVersionDetailsHolder := '' asValue.
"/ if your app needs to be notified of changes, uncomment one of the lines below:
"/ selectedPackageDetailsHolder addDependent:self.
"/ selectedPackageDetailsHolder onChangeSend:#selectedPackageDetailsHolderChanged to:self.
].
^ selectedVersionDetailsHolder.
"Modified: / 17-09-2010 / 15:17:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
selectedVersionHolder
"return/create the valueHolder 'selectedVersionHolder'"
selectedVersionHolder isNil ifTrue:[
selectedVersionHolder := ValueHolder with:nil "defaultValue here".
selectedVersionHolder onChangeSend: #updateVersionDetails to: self.
].
^ selectedVersionHolder
"Modified: / 17-09-2010 / 15:23:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
selectedVersionHolder:something
selectedVersionHolder := something.
!
versionsHolder
"return/create the 'versionsHolder' value holder (automatically generated)"
versionsHolder isNil ifTrue:[
versionsHolder := ValueHolder new.
].
^ versionsHolder
!
versionsHolder:something
"set the 'versionsHolder' value holder (automatically generated)"
versionsHolder := something.
! !
!MCRepositoryBrowser methodsFor:'menu actions'!
versionBrowseUnloadable
| version snapshot loader unloadables |
version := self selectedVersionAsMCVersion.
version ifNil:[^self].
snapshot := version snapshot.
loader := MCPackageLoader new
installSnapshot: snapshot;
yourself.
loader analyze.
unloadables := ChangeSet withAll:
(loader unloadableDefinitions collect:
[:def|def asChange]).
(Tools::ChangeSetBrowser
on: unloadables
label: version info name , ' (unloadable definitions)')
beTwoColumn;
open
"Modified: / 26-10-2010 / 23:04:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
versionBrowser
| version snapshot |
version := self selectedVersionAsMCVersion.
version ifNil:[^self].
snapshot := version snapshot.
(Tools::ChangeSetBrowser2
on: snapshot asChangeSet
label: version info name)
beTwoColumn;
open
"Modified: / 04-08-2011 / 19:03:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
versionInspect
| v |
v := self selectedVersionAsMCVersion.
v ifNotNil:[v inspect]
"Modified: / 13-10-2010 / 17:48:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
versionLoad
| entry |
entry := self selectedVersionHolder value.
entry ifNotNil:[self versionLoad: entry asMCVersion into: PackageId noProjectID].
"Modified: / 09-11-2010 / 13:26:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
versionLoad: version into: package
MCStXPackageQuery answer: package do: [
MCInteractiveLoadingQuery answer: true do:[
version load
]
].
"Created: / 09-11-2010 / 13:25:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 06-03-2011 / 20:44:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
versionLoadIntoPackage
| version package |
version := self selectedVersionAsMCVersion.
version ifNil:[^self].
package := Dialog
requestProject:'Smalltalk/X package to load code into'
initialAnswer:nil suggestions:#().
package ifNil:[^self].
self versionLoad: version into: package
"Modified: / 09-11-2010 / 13:33:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!MCRepositoryBrowser methodsFor:'updating'!
updateVersionDetails
| versionEntry version |
worker ifNotNil:[worker terminate. worker := nil].
versionEntry := self selectedVersion.
versionEntry ifNil:[selectedVersionDetailsHolder value:'No version selected'. ^self].
worker :=
[[selectedVersionDetailsHolder value:'Reading ' , versionEntry name.
version := versionEntry asMCVersion.
version ifNotNil:
[selectedVersionDetailsHolder value: version summary]] ensure:[worker := nil]] newProcess.
worker resume.
"Created: / 17-09-2010 / 15:23:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 26-10-2010 / 22:08:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!MCRepositoryBrowser class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/goodies/monticello/MCRepositoryBrowser.st,v 1.1 2011-08-20 12:05:44 cg Exp $'
!
version_CVS
^ '$Header: /cvs/stx/stx/goodies/monticello/MCRepositoryBrowser.st,v 1.1 2011-08-20 12:05:44 cg Exp $'
!
version_SVN
^ '§Id: MCRepositoryBrowser.st 34 2011-08-04 21:44:46Z vranyj1 §'
! !