diff -r 2f19d0fb6983 -r ac6dfc008bfc MCRepositoryBrowser.st --- /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 + " + + + + ^ + #(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 " +! + +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 + " + + + + ^ + #(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 + " + + + + ^ + #(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 " +! ! + +!MCRepositoryBrowser methodsFor:'aspect-queries'! + +hasVersionSelectedHolder + + ^[self selectedVersionHolder value notNil] + + "Created: / 13-10-2010 / 17:08:34 / Jan Vrany " +! ! + +!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 " +! + +repositoriesHolder:something + "set the 'repositoriesHolder' value holder (automatically generated)" + + repositoriesHolder := something. +! + +selectedVersionDetailsHolder + + + "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 " +! + +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 " +! + +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 " +! + +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 " +! + +versionInspect + + | v | + v := self selectedVersionAsMCVersion. + v ifNotNil:[v inspect] + + "Modified: / 13-10-2010 / 17:48:32 / Jan Vrany " +! + +versionLoad + + | entry | + entry := self selectedVersionHolder value. + entry ifNotNil:[self versionLoad: entry asMCVersion into: PackageId noProjectID]. + + "Modified: / 09-11-2010 / 13:26:27 / Jan Vrany " +! + +versionLoad: version into: package + + MCStXPackageQuery answer: package do: [ + MCInteractiveLoadingQuery answer: true do:[ + version load + ] + ]. + + "Created: / 09-11-2010 / 13:25:53 / Jan Vrany " + "Modified: / 06-03-2011 / 20:44:15 / Jan Vrany " +! + +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 " +! ! + +!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 " + "Modified: / 26-10-2010 / 22:08:43 / Jan Vrany " +! ! + +!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 §' +! !