#FEATURE by cg
class: Tools::NewSystemBrowser
support to tag extensions
added:
#browseClassExtensionsMenuUsingManagerNamed:operation:
#classMenuTagExtensionsFor:usingManager:
#tagClassExtensionsMenu
#tagClassExtensionsMenuUsingManagerNamed:
changed: #browseClassExtensionsMenuUsingManagerNamed:
class: Tools::NewSystemBrowser class
changed:
#classCVSMenu
#classMenuSCMExtra_CVS
--- a/Tools__NewSystemBrowser.st Thu Nov 28 14:32:16 2019 +0100
+++ b/Tools__NewSystemBrowser.st Thu Nov 28 15:39:01 2019 +0100
@@ -14320,6 +14320,12 @@
showBusyCursorWhilePerforming: true
)
(MenuItem
+ enabled: hasClassWithExtensionsSelectedHolder
+ label: 'Set Tag For...'
+ submenuChannel: tagClassExtensionsMenu
+ showBusyCursorWhilePerforming: true
+ )
+ (MenuItem
label: '-'
)
(MenuItem
@@ -15038,6 +15044,12 @@
labelImage: (ResourceRetriever ToolbarIconLibrary repositoryTag 'Set Tag...')
showBusyCursorWhilePerforming: true
)
+ (MenuItem
+ enabled: hasClassWithExtensionsSelectedHolder
+ label: 'Set Tag For...'
+ submenuChannel: tagClassExtensionsMenu
+ showBusyCursorWhilePerforming: true
+ )
)
nil
nil
@@ -38245,6 +38257,41 @@
"Created: / 21-12-2011 / 23:12:15 / cg"
!
+classMenuTagExtensionsFor:package usingManager:mgr
+ |classes tag tags tagAndRevision revision utilities|
+
+ classes := self selectedNonMetaclasses.
+ SourceCodeManagerError handle:[:ex |
+ Dialog warn:(resources
+ stringWithCRs:'Could not fetch tag information.\\Please check your sourcecode manager settings.\(and possibly the network for reachability of the repository)').
+ ] do:[
+ tagAndRevision := self askForTagForClasses:classes askForRevision:(classes size == 1).
+ ].
+ tag := tagAndRevision key.
+ tag isEmptyOrNil ifTrue:[^ self ].
+
+ revision := tagAndRevision value.
+ (revision notNil and:[revision withoutSeparators isEmpty]) ifTrue:[
+ revision := nil.
+ ].
+
+ mgr isNil ifTrue:[
+ utilities := (AbstractSourceCodeManager managerForPackage:package) utilities.
+ ] ifFalse:[
+ utilities := mgr utilities.
+ ].
+ utilities defaultManager recentTag:tag.
+ self withWaitCursorDo:[
+ tags := tag asCollectionOfSubstringsSeparatedByAny:',;'.
+ tags do:[:eachTag |
+ utilities tagExtensionsFromPackage:package with:eachTag
+ ].
+ ]
+
+ "Created: / 12-09-2006 / 13:36:59 / cg"
+ "Modified: / 29-07-2013 / 00:59:28 / cg"
+!
+
compareAgainstNewestInRepository:aClass
"open a diff-textView comparing the current (in-image) version
with the newest version found in the repository.
@@ -54014,6 +54061,14 @@
browseClassExtensionsMenuUsingManagerNamed:sourceCodeManagerNameOrNil
<resource: #programMenu >
+ ^ self
+ browseClassExtensionsMenuUsingManagerNamed:sourceCodeManagerNameOrNil
+ operation:[:package :mgr | self classMenuCheckInExtensionsFor:package usingManager:mgr ]
+!
+
+browseClassExtensionsMenuUsingManagerNamed:sourceCodeManagerNameOrNil operation:actionWithPackageAndMgr
+ <resource: #programMenu >
+
^ [
|m extensionProjectIDs classPackage item mgr|
@@ -54049,7 +54104,7 @@
].
extensionProjectIDs asSortedCollection do:[:eachExtensionPackage |
item := MenuItem label:eachExtensionPackage.
- item itemValue:[ self classMenuCheckInExtensionsFor: eachExtensionPackage usingManager:mgr ].
+ item itemValue:[ actionWithPackageAndMgr value: eachExtensionPackage value:mgr ].
m addItem:item.
].
].
@@ -55526,6 +55581,20 @@
"Modified: / 05-09-2006 / 10:33:49 / cg"
!
+tagClassExtensionsMenu
+ <resource: #programMenu >
+
+ ^ self tagClassExtensionsMenuUsingManagerNamed:nil
+!
+
+tagClassExtensionsMenuUsingManagerNamed:sourceCodeManagerNameOrNil
+ <resource: #programMenu >
+
+ ^ self
+ browseClassExtensionsMenuUsingManagerNamed:sourceCodeManagerNameOrNil
+ operation:[:package :mgr | self classMenuTagExtensionsFor:package usingManager:mgr ]
+!
+
toolBarMenu
<resource: #programMenu>