--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MCRepositoryBrowser.st Sat Aug 20 14:05:44 2011 +0200
@@ -0,0 +1,480 @@
+"{ 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 §'
+! !