--- a/AbstractSettingsApplication.st Sat Jul 09 10:38:53 2011 +0200
+++ b/AbstractSettingsApplication.st Sat Jul 09 15:48:58 2011 +0200
@@ -287,8 +287,8 @@
privateIn:AbstractSettingsApplication
!
-Object subclass:#ManagerTypeTableEntry
- instanceVariableNames:'packageMatchString manager'
+SimpleDialog subclass:#PerModuleManagerSettingDialog
+ instanceVariableNames:'packageHolder managerNameHolder availableManagers'
classVariableNames:''
poolDictionaries:''
privateIn:AbstractSettingsApplication::SourceCodeManagementSettingsAppl
@@ -12582,7 +12582,7 @@
collection: (
(DataSetSpec
name: 'RepositoryConfigurationList'
- layout: (LayoutFrame 0 0 0 0 -25 1 0 1)
+ layout: (LayoutFrame 0 0 0 0 -85 1 0 1)
enableChannel: useManager
model: selectedManagerPerMatchingModuleHolder
hasHorizontalScrollBar: true
@@ -12591,99 +12591,63 @@
columnHolder: managerPerMatchingModuleColumns
beDependentOfRows: true
)
- (ArrowButtonSpec
- name: 'MoveUp'
- layout: (LayoutFrame -25 1 -25 0.5 0 1 0 0.5)
- activeHelpKey: moveManagerUp
- model: moveUpAction
- enableChannel: useManager
- isTriggerOnDown: true
- direction: up
- )
- (ArrowButtonSpec
- name: 'MoveDown'
- layout: (LayoutFrame -25 1 0 0.5 0 1 25 0.5)
- activeHelpKey: moveManagerDown
- model: moveDownAction
- enableChannel: useManager
- isTriggerOnDown: true
- direction: down
+ (VerticalPanelViewSpec
+ name: 'Buttons1'
+ layout: (LayoutFrame -80 1 0 0 0 1 0 1)
+ horizontalLayout: fit
+ verticalLayout: top
+ horizontalSpace: 5
+ verticalSpace: 3
+ component:
+ (SpecCollection
+ collection: (
+ (ActionButtonSpec
+ label: 'Add'
+ name: 'ButtonAdd'
+ translateLabel: true
+ model: actionAdd
+ extent: (Point 80 22)
+ )
+ (ActionButtonSpec
+ label: 'Remove'
+ name: 'ButtonRemove'
+ translateLabel: true
+ model: actionRemove
+ enableChannel: canRemoveManagerPerPackageEntry
+ extent: (Point 80 22)
+ )
+ (ActionButtonSpec
+ label: 'Edit'
+ name: 'ButtonEdit'
+ translateLabel: true
+ model: actionEdit
+ enableChannel: canRemoveManagerPerPackageEntry
+ extent: (Point 80 22)
+ )
+ (ActionButtonSpec
+ label: 'Move up'
+ name: 'ButtonModeUp'
+ translateLabel: true
+ model: actionMoveUp
+ enableChannel: canMoveUp
+ extent: (Point 80 22)
+ )
+ (ActionButtonSpec
+ label: 'Move down'
+ name: 'ButtonModeDown'
+ translateLabel: true
+ model: actionMoveDown
+ enableChannel: canMoveDown
+ extent: (Point 80 22)
+ )
+ )
+
+ )
)
)
)
- extent: (Point 625 168)
- )
- (ViewSpec
- name: 'Box4'
- component:
- (SpecCollection
- collection: (
- (LabelSpec
- label: 'Package ID:'
- name: 'Label15'
- layout: (LayoutFrame 9 0 9 0 100 0 31 0)
- translateLabel: true
- adjust: right
- )
- (LabelSpec
- label: 'Manager:'
- name: 'Label16'
- layout: (LayoutFrame 9 0 37 0 100 0 59 0)
- translateLabel: true
- adjust: right
- )
- (InputFieldSpec
- name: 'EntryField1'
- layout: (LayoutFrame 108 0 9 0 313 0 31 0)
- enableChannel: useManager
- model: packageToAddHolder
- acceptOnReturn: true
- acceptOnTab: true
- acceptOnPointerLeave: true
- )
- (ComboListSpec
- name: 'ComboList2'
- layout: (LayoutFrame 108 0 39 0 313 0 59 0)
- enableChannel: useManager
- model: managerTypeToAddHolder
- comboList: availableManagerTypeNames
- useIndex: false
- )
- )
-
- )
- extent: (Point 625 63)
- )
- (HorizontalPanelViewSpec
- name: 'AddRemovePanel'
- horizontalLayout: fit
- verticalLayout: center
- horizontalSpace: 3
- verticalSpace: 3
- component:
- (SpecCollection
- collection: (
- (ActionButtonSpec
- label: 'Add Entry'
- name: 'AddConfigurationAction'
- translateLabel: true
- model: addManagerAction
- enableChannel: useManager
- extent: (Point 311 25)
- )
- (ActionButtonSpec
- label: 'Remove Entry'
- name: 'RemoveConfigurationAction'
- translateLabel: true
- model: removeManagerAction
- enableChannel: canRemoveManagerPerPackageEntry
- extent: (Point 311 25)
- )
- )
-
- )
- extent: (Point 625 30)
+ extent: (Point 623 264)
)
)
@@ -12749,7 +12713,7 @@
tabable: true
model: flushSourceCache
enableChannel: useManager
- extent: (Point 208 22)
+ extent: (Point 207 22)
)
(ActionButtonSpec
label: 'Condense Cache now'
@@ -12759,7 +12723,7 @@
tabable: true
model: condenseSourceCache
enableChannel: useManager
- extent: (Point 208 22)
+ extent: (Point 207 22)
)
)
@@ -12879,15 +12843,16 @@
label: 'Module (PackageID Match)'
labelButtonType: Button
width: 0.5
- model: packageMatchString
+ model: displayStringForPackage
menuFromApplication: false
+ writeSelector: package:
canSelect: false
)
(DataSetColumnSpec
label: 'Repository Type'
labelButtonType: Button
width: 0.5
- model: managerTypeString
+ model: displayStringForManagerTypeName
menuFromApplication: false
writeSelector: manager:
canSelect: false
@@ -12905,25 +12870,85 @@
!AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'actions'!
-addManagerAction
- |package typeName manager oldEntry idx|
-
- package := self packageToAddHolder value.
- typeName := self managerTypeToAddHolder value.
- manager := self availableManagers detect:[:mgr | mgr managerTypeName = typeName] ifNone:nil.
- oldEntry := managerPerMatchingModule detect:[:entry | entry packageMatchString = package] ifNone:nil.
- oldEntry notNil ifTrue:[
- oldEntry manager:manager.
- managerPerMatchingModule changed.
- idx := managerPerMatchingModule indexOf:oldEntry.
- ] ifFalse:[
- managerPerMatchingModule add:(ManagerTypeTableEntry new packageMatchString:package manager:manager).
- idx := managerPerMatchingModule size.
- ].
+actionAdd
+ |dlg package mgr oldEntry idx|
+
+ dlg := PerModuleManagerSettingDialog new.
+ dlg open ifFalse:[ ^ self ].
+ package := dlg package.
+ mgr := dlg manager.
+ oldEntry := managerPerMatchingModule
+ detect:[:entry | entry package = package and:[ entry manager = mgr ] ]
+ ifNone:nil.
+ oldEntry notNil
+ ifTrue:
+ [ oldEntry manager:mgr.
+ managerPerMatchingModule changed.
+ idx := managerPerMatchingModule indexOf:oldEntry. ]
+ ifFalse:
+ [ managerPerMatchingModule
+ add:(AbstractSourceCodeManager::PackageAndManager package:package manager:mgr).
+ idx := managerPerMatchingModule size. ].
selectedManagerPerMatchingModuleHolder value:idx.
"Created: / 18-04-2011 / 19:30:46 / cg"
"Modified: / 18-04-2011 / 21:24:52 / cg"
+ "Modified: / 09-07-2011 / 14:07:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+actionEdit
+ <resource: #uiCallback>
+
+ | entry dlg |
+ entry := managerPerMatchingModule at: selectedManagerPerMatchingModuleHolder value.
+ dlg := PerModuleManagerSettingDialog new.
+ dlg package: entry packageMatchString.
+ dlg manager: entry manager.
+ dlg open ifTrue:[
+ entry packageMatchString: dlg package.
+ entry manager: dlg manager.
+ entry changed.
+ ]
+
+ "Modified: / 09-07-2011 / 13:26:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+actionMoveDown
+ <resource: #uiCallback>
+
+ | idx |
+ idx := selectedManagerPerMatchingModuleHolder value.
+ idx == managerPerMatchingModule size ifTrue:[^self].
+ managerPerMatchingModule swap: idx with: idx + 1.
+ selectedManagerPerMatchingModuleHolder value: idx + 1
+
+ "Modified: / 09-07-2011 / 13:23:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+actionMoveUp
+ <resource: #uiCallback>
+
+ | idx |
+ idx := selectedManagerPerMatchingModuleHolder value.
+ idx == 1 ifTrue:[^self].
+ managerPerMatchingModule swap: idx - 1 with: idx.
+ selectedManagerPerMatchingModuleHolder value: idx - 1
+
+ "Modified: / 09-07-2011 / 13:23:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+actionRemove
+ |idx|
+
+ idx := self selectedManagerPerMatchingModuleHolder value.
+ managerPerMatchingModule removeIndex:idx.
+ managerPerMatchingModule size >= idx
+ ifTrue:[ selectedManagerPerMatchingModuleHolder value:idx. ]
+ ifFalse:
+ [ managerPerMatchingModule size >= (idx - 1)
+ ifTrue:[ selectedManagerPerMatchingModuleHolder value:idx - 1. ]. ].
+
+ "Created: / 18-04-2011 / 20:56:46 / cg"
!
addModule:module withData:data
@@ -12956,11 +12981,8 @@
].
self managerPerMatchingModule removeAll.
- AbstractSourceCodeManager managerPerMatchingModuleDefinitions do:[:eachKeyValuePair |
- self managerPerMatchingModule
- add:(ManagerTypeTableEntry new
- packageMatchString:(eachKeyValuePair key)
- manager:(eachKeyValuePair value)).
+ AbstractSourceCodeManager managerPerMatchingModuleDefinitions do:[:each |
+ self managerPerMatchingModule add: each copy
].
self availableManagers do:[:eachManager |
@@ -12983,6 +13005,7 @@
"/ self selectedPerModuleRootChanged.
"Modified: / 18-04-2011 / 21:17:01 / cg"
+ "Modified: / 09-07-2011 / 14:00:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
basicSaveSettings
@@ -13029,8 +13052,8 @@
].
AbstractSourceCodeManager
- managerPerMatchingModuleDefinitions:(
- managerPerMatchingModule collect:[:entry | entry packageMatchString -> entry manager]) asOrderedCollection.
+ managerPerMatchingModuleDefinitions:
+ managerPerMatchingModule asOrderedCollection.
self availableManagers do:[:eachManager |
|infoPerModule|
@@ -13055,6 +13078,7 @@
self acceptChannel value.
"Modified: / 18-04-2011 / 21:22:14 / cg"
+ "Modified: / 09-07-2011 / 14:02:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
condenseSourceCache
@@ -13071,23 +13095,6 @@
"Modified: / 28-11-2006 / 12:21:21 / cg"
!
-removeManagerAction
- |idx|
-
- idx := self selectedManagerPerMatchingModuleHolder value.
- managerPerMatchingModule removeIndex:idx.
-
- managerPerMatchingModule size >= idx ifTrue:[
- selectedManagerPerMatchingModuleHolder value:idx.
- ] ifFalse:[
- managerPerMatchingModule size >= (idx-1) ifTrue:[
- selectedManagerPerMatchingModuleHolder value:idx-1.
- ].
- ].
-
- "Created: / 18-04-2011 / 20:56:46 / cg"
-!
-
removePerModuleRoot
|module|
@@ -13144,6 +13151,31 @@
"Modified: / 18-04-2011 / 19:05:47 / cg"
!
+canMoveDown
+ ^ BlockValue
+ with:
+ [:sel |
+ sel notNil
+ and:[sel ~~ 0
+ and:[sel ~~ managerPerMatchingModule size]]]
+ argument:(self selectedManagerPerMatchingModuleHolder)
+
+ "Created: / 18-04-2011 / 20:52:48 / cg"
+ "Created: / 09-07-2011 / 14:18:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+canMoveUp
+ ^ BlockValue
+ with:
+ [:sel |
+ sel notNil
+ and:[sel > 1]]
+ argument:(self selectedManagerPerMatchingModuleHolder)
+
+ "Created: / 18-04-2011 / 20:52:48 / cg"
+ "Created: / 09-07-2011 / 14:18:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
canRemoveManagerPerPackageEntry
^ BlockValue
with:[:sel :use | sel notNil and:[sel ~~ 0 and:[use]] ]
@@ -13473,8 +13505,8 @@
idx := changedObject value.
(idx notNil and:[idx ~~ 0]) ifTrue:[
entry := self managerPerMatchingModule at:idx.
- self packageToAddHolder value:(entry packageMatchString).
- self managerTypeToAddHolder value:(entry manager managerTypeName).
+ self packageToAddHolder value:(entry package).
+ self managerTypeToAddHolder value:(entry managerTypeName).
].
^ self.
].
@@ -13482,6 +13514,7 @@
super update:something with:aParameter from:changedObject
"Modified: / 18-04-2011 / 21:23:08 / cg"
+ "Modified: / 09-07-2011 / 14:07:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
updateSelectedManager
@@ -13571,7 +13604,7 @@
ifTrue:[^ true].
((AbstractSourceCodeManager managerPerMatchingModuleDefinitions)
- ~= (self managerPerMatchingModule collect:[:entry | entry packageMatchString -> entry manager]) asOrderedCollection) ifTrue:[^ true].
+ ~= (self managerPerMatchingModule asOrderedCollection)) ifTrue:[^ true].
self availableManagers do:[:mgr |
|modules|
@@ -13591,35 +13624,250 @@
^ false
"Modified: / 18-04-2011 / 21:22:18 / cg"
-! !
-
-!AbstractSettingsApplication::SourceCodeManagementSettingsAppl::ManagerTypeTableEntry methodsFor:'accessing'!
+ "Modified: / 09-07-2011 / 14:09:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AbstractSettingsApplication::SourceCodeManagementSettingsAppl::PerModuleManagerSettingDialog class methodsFor:'interface specs'!
+
+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:AbstractSettingsApplication::SourceCodeManagementSettingsAppl::PerModuleManagerSettingDialog andSelector:#windowSpec
+ AbstractSettingsApplication::SourceCodeManagementSettingsAppl::PerModuleManagerSettingDialog new openInterface:#windowSpec
+ AbstractSettingsApplication::SourceCodeManagementSettingsAppl::PerModuleManagerSettingDialog open
+ "
+
+ <resource: #canvas>
+
+ ^
+ #(FullSpec
+ name: windowSpec
+ window:
+ (WindowSpec
+ label: 'Per Module Source Code Manager'
+ name: 'Per Module Source Code Manager'
+ min: (Point 10 10)
+ bounds: (Rectangle 0 0 581 98)
+ )
+ component:
+ (SpecCollection
+ collection: (
+ (ViewSpec
+ name: 'Content'
+ layout: (LayoutFrame 0 0 0 0 0 1 -30 1)
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'Package ID:'
+ name: 'Label15'
+ layout: (LayoutFrame 9 0 9 0 100 0 31 0)
+ translateLabel: true
+ adjust: right
+ )
+ (LabelSpec
+ label: 'Manager:'
+ name: 'Label16'
+ layout: (LayoutFrame 9 0 37 0 100 0 59 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'EntryField1'
+ layout: (LayoutFrame 108 0 9 0 -9 1 31 0)
+ enableChannel: useManager
+ model: packageHolder
+ immediateAccept: true
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnPointerLeave: true
+ )
+ (ComboListSpec
+ name: 'ComboList2'
+ layout: (LayoutFrame 108 0 39 0 -9 1 61 0)
+ model: managerNameHolder
+ comboList: availableManagerTypeNames
+ useIndex: false
+ hidePullDownMenuButton: true
+ )
+ )
+
+ )
+ )
+ (HorizontalPanelViewSpec
+ name: 'Buttons'
+ layout: (LayoutFrame 0 0 -30 1 0 1 0 1)
+ horizontalLayout: fit
+ verticalLayout: center
+ horizontalSpace: 3
+ verticalSpace: 3
+ reverseOrderIfOKAtLeft: true
+ component:
+ (SpecCollection
+ collection: (
+ (ActionButtonSpec
+ label: 'Cancel'
+ name: 'Button2'
+ translateLabel: true
+ model: doCancel
+ extent: (Point 289 22)
+ )
+ (ActionButtonSpec
+ label: 'OK'
+ name: 'Button1'
+ translateLabel: true
+ model: doAccept
+ enableChannel: doAcceptEnabled
+ extent: (Point 289 22)
+ )
+ )
+
+ )
+ )
+ )
+
+ )
+ )
+! !
+
+!AbstractSettingsApplication::SourceCodeManagementSettingsAppl::PerModuleManagerSettingDialog methodsFor:'accessing'!
manager
- ^ manager
-!
-
-manager:something
- manager := something.
-!
-
-managerTypeString
- ^ manager managerTypeName
-
- "Created: / 18-04-2011 / 21:18:20 / cg"
-!
-
-packageMatchString
- ^ packageMatchString
-!
-
-packageMatchString:something
- packageMatchString := something.
-!
-
-packageMatchString:packageMatchStringArg manager:managerArg
- packageMatchString := packageMatchStringArg.
- manager := managerArg.
+
+ | m mn|
+ mn := self managerNameHolder value.
+ m := self availableManagers detect:[:mgr | mgr managerTypeName = mn] ifNone:nil.
+ ^m
+
+ "Created: / 09-07-2011 / 13:07:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+manager: aSourceCodeManager
+
+ self managerNameHolder value: aSourceCodeManager managerTypeName
+
+ "Created: / 09-07-2011 / 13:02:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+package
+
+ ^self packageHolder value
+
+ "Created: / 09-07-2011 / 13:06:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+package: aString
+
+ self packageHolder value: aString
+
+ "Created: / 09-07-2011 / 13:02:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AbstractSettingsApplication::SourceCodeManagementSettingsAppl::PerModuleManagerSettingDialog methodsFor:'aspects'!
+
+availableManagerTypeNames
+ ^ self availableManagers collect:[:cls | cls managerTypeName].
+
+ "Created: / 16-08-2006 / 11:16:25 / cg"
+!
+
+availableManagers
+ availableManagers isNil ifTrue:[
+ availableManagers := AbstractSourceCodeManager availableManagers copy.
+ availableManagers := availableManagers sort:[:a :b | a managerTypeName asLowercase < b managerTypeName asLowercase].
+ ].
+ ^ availableManagers.
+
+ "
+ self basicNew availableManagers
+ "
+
+ "Created: / 16-08-2006 / 11:01:10 / cg"
+ "Modified: / 18-04-2011 / 19:05:47 / cg"
+!
+
+doAcceptEnabled
+ <resource: #uiAspect>
+
+ |holder|
+
+ (holder := builder bindingAt:#doAcceptEnabled) isNil ifTrue:[
+ holder := BlockValue
+ with:
+ [:package :manager|
+ package value notEmptyOrNil and:[manager value notNil]]
+ argument: self packageHolder
+ argument: self managerHolder.
+
+ builder aspectAt:#doAcceptEnabled put:holder.
+ ].
+ ^ holder.
+
+ "Modified: / 09-07-2011 / 13:00:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+managerHolder
+ <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 ;-)"
+
+ managerNameHolder isNil ifTrue:[
+ managerNameHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ managerHolder addDependent:self.
+"/ managerHolder onChangeSend:#managerHolderChanged to:self.
+ ].
+ ^ managerNameHolder.
+!
+
+managerNameHolder
+ <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 ;-)"
+
+ managerNameHolder isNil ifTrue:[
+ managerNameHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ managerHolder addDependent:self.
+"/ managerHolder onChangeSend:#managerHolderChanged to:self.
+ ].
+ ^ managerNameHolder.
+
+ "Created: / 09-07-2011 / 13:05:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+packageHolder
+ <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 ;-)"
+
+ packageHolder isNil ifTrue:[
+ packageHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ packageHolder addDependent:self.
+"/ packageHolder onChangeSend:#packageHolderChanged to:self.
+ ].
+ ^ packageHolder.
! !
!AbstractSettingsApplication::StyleSettingsAppl class methodsFor:'defaults'!
@@ -15974,9 +16222,9 @@
!AbstractSettingsApplication class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.397 2011-07-08 11:42:52 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.398 2011-07-09 13:48:58 vrany Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.397 2011-07-08 11:42:52 cg Exp $'
-! !
+ ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.398 2011-07-09 13:48:58 vrany Exp $'
+! !