--- a/AbstractSettingsApplication.st Fri Aug 25 15:41:38 2006 +0200
+++ b/AbstractSettingsApplication.st Fri Aug 25 18:01:38 2006 +0200
@@ -215,8 +215,15 @@
cvsBinDirectoryHolder rootsPerModule cvsLoginInModuleEnabled
cvsLoginEnabled selectedManagerTypeIndexHolder
managerIsCVSSourceCodeManager managerIsStoreSourceCodeManager
- storeLoginEnabled'
- classVariableNames:''
+ storeLoginEnabled storeHostPrototypeList storeHostnameHolder
+ storeUsernameHolder storePasswordHolder
+ perStoreModuleHostnameHolder perStoreModuleUsernameHolder
+ perStoreModulePasswordHolder perStoreModuleRoot
+ perStoreModuleRootModule selectedPerStoreModuleRoot
+ storeConnectEnabled storeConnectInModuleEnabled
+ perModuleFieldsEnableHolder perStoreModuleFieldsEnableHolder'
+ classVariableNames:'RecentlyUsedCVSRoots RecentlyUsedStoreHosts LastStoreHost
+ LastStoreUser LastStorePassword'
poolDictionaries:''
privateIn:AbstractSettingsApplication
!
@@ -364,7 +371,7 @@
result ifTrue:[
self saveSettings
] ifFalse:[
- self readSettings
+"/ self readSettings
]
].
^ true
@@ -9666,7 +9673,7 @@
horizontalLayout: fit
verticalLayout: top
horizontalSpace: 3
- verticalSpace: 10
+ verticalSpace: 4
component:
(SpecCollection
collection: (
@@ -9702,9 +9709,262 @@
(SpecCollection
collection: (
(FramedBoxSpec
+ label: 'Store-DB Repository Setup'
+ name: 'StoreSetupBox'
+ layout: (LayoutFrame 0 0 0 0 0 1 -12 1)
+ visibilityChannel: managerIsStoreSourceCodeManager
+ labelPosition: topLeft
+ translateLabel: true
+ component:
+ (SpecCollection
+ collection: (
+ (ViewSpec
+ name: 'HostBox'
+ layout: (LayoutFrame 0 0 0 0 0 1 25 0)
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'DB or DB@Host:'
+ name: 'StoreHostLabel'
+ layout: (LayoutFrame 0 0.0 0 0 40 0.25 22 0)
+ level: 0
+ translateLabel: true
+ adjust: right
+ )
+ (ComboBoxSpec
+ name: 'StoreHostComboBox'
+ layout: (LayoutFrame 44 0.25 0 0 -5 1 22 0)
+ enableChannel: useManager
+ tabable: true
+ model: storeHostnameHolder
+ immediateAccept: true
+ acceptOnLeave: true
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptChannel: acceptChannel
+ acceptOnPointerLeave: true
+ comboList: storeHostPrototypeList
+ )
+ )
+
+ )
+ )
+ (ViewSpec
+ name: 'UserBox'
+ layout: (LayoutFrame 0 0.0 27 0 0 1 52 0)
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'Username:'
+ name: 'StoreUserLabel'
+ layout: (LayoutFrame 0 0.0 0 0 40 0.25 22 0)
+ level: 0
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'StoreUserEntryField'
+ layout: (LayoutFrame 44 0.25 0 0 -5 1 22 0)
+ enableChannel: useManager
+ tabable: true
+ model: storeUsernameHolder
+ acceptChannel: acceptChannel
+ acceptOnPointerLeave: true
+ )
+ )
+
+ )
+ )
+ (ViewSpec
+ name: 'PasswordBox'
+ layout: (LayoutFrame 0 0.0 54 0 0 1 79 0)
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'Password:'
+ name: 'Label7'
+ layout: (LayoutFrame 0 0.0 0 0 40 0.25 22 0)
+ level: 0
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'PasswordEntryField'
+ layout: (LayoutFrame 44 0.25 0 0 -130 1 22 0)
+ enableChannel: useManager
+ tabable: true
+ model: storePasswordHolder
+ type: password
+ acceptChannel: acceptChannel
+ acceptOnPointerLeave: true
+ )
+ )
+
+ )
+ )
+ (HorizontalPanelViewSpec
+ name: 'HorizontalPanel4'
+ layout: (LayoutFrame -130 1 51 0 -1 1 82 0)
+ horizontalLayout: fitSpace
+ verticalLayout: center
+ horizontalSpace: 3
+ verticalSpace: 3
+ component:
+ (SpecCollection
+ collection: (
+ (ActionButtonSpec
+ label: 'Try to Connect'
+ name: 'Button1'
+ translateLabel: true
+ tabable: true
+ model: storeConnect
+ enableChannel: storeConnectEnabled
+ extent: (Point 123 22)
+ )
+ )
+
+ )
+ )
+ (LabelSpec
+ label: 'DB per Module:'
+ name: 'Label4'
+ layout: (LayoutFrame 0 0.0 82 0 40 0.25 104 0)
+ translateLabel: true
+ adjust: right
+ )
+ (SequenceViewSpec
+ name: 'List2'
+ layout: (LayoutFrame 44 0.25 82 0 -5 1 180 0)
+ enableChannel: useManager
+ tabable: true
+ model: selectedPerStoreModuleRoot
+ hasHorizontalScrollBar: true
+ hasVerticalScrollBar: true
+ miniScrollerHorizontal: true
+ useIndex: false
+ sequenceList: listOfModules
+ )
+ (LabelSpec
+ label: 'Module:'
+ name: 'perModuleModuleLabel'
+ layout: (LayoutFrame 0 0.0 186 0 40 0.25 203 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'perModuleModuleEntryField'
+ layout: (LayoutFrame 44 0.25 182 0 -5 1 204 0)
+ enableChannel: useManager
+ tabable: true
+ model: perStoreModuleRoot
+ acceptChannel: acceptChannel
+ acceptOnPointerLeave: true
+ )
+ (LabelSpec
+ label: 'DB:'
+ name: 'perModuleDBLabel'
+ layout: (LayoutFrame 0 0.0 211 0 40 0.25 228 0)
+ translateLabel: true
+ adjust: right
+ )
+ (ComboBoxSpec
+ name: 'perModuleModuleHostComboBox2'
+ layout: (LayoutFrame 44 0.25 207 0 -5 1 229 0)
+ enableChannel: useManager
+ tabable: true
+ model: perStoreModuleHostnameHolder
+ immediateAccept: true
+ acceptOnLeave: true
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptChannel: acceptChannel
+ acceptOnPointerLeave: true
+ comboList: storeHostPrototypeList
+ )
+ (LabelSpec
+ label: 'User / Password:'
+ name: 'perModuleUserPasswordLabel'
+ layout: (LayoutFrame 0 0.0 236 0 40 0.25 253 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'perModuleUserEntryField'
+ layout: (LayoutFrame 44 0.25 232 0 -2 0.65 254 0)
+ enableChannel: useManager
+ tabable: true
+ model: perStoreModuleUsernameHolder
+ acceptChannel: acceptChannel
+ acceptOnPointerLeave: true
+ )
+ (InputFieldSpec
+ name: 'perModulePasswordEntryField'
+ layout: (LayoutFrame 2 0.65 232 0 -5 1 254 0)
+ enableChannel: useManager
+ tabable: true
+ model: perStoreModulePasswordHolder
+ type: password
+ acceptChannel: acceptChannel
+ acceptOnPointerLeave: true
+ )
+ (HorizontalPanelViewSpec
+ name: 'HorizontalPanel5'
+ layout: (LayoutFrame 44 0.25 258 0 -1 1 289 0)
+ horizontalLayout: fitSpace
+ verticalLayout: center
+ horizontalSpace: 3
+ verticalSpace: 3
+ component:
+ (SpecCollection
+ collection: (
+ (ActionButtonSpec
+ label: 'Add/Apply'
+ name: 'Button2'
+ translateLabel: true
+ tabable: true
+ model: addPerStoreModuleDB
+ enableChannel: useManager
+ extent: (Point 103 22)
+ )
+ (ActionButtonSpec
+ label: 'Remove'
+ name: 'Button3'
+ translateLabel: true
+ tabable: true
+ model: removePerStoreModuleDB
+ enableChannel: removeEnabled
+ extent: (Point 103 22)
+ )
+ (ViewSpec
+ name: 'Box17'
+ extent: (Point 103 10)
+ )
+ (ActionButtonSpec
+ label: 'Try to Connect'
+ name: 'Button4'
+ translateLabel: true
+ tabable: true
+ model: connectPerStoreModuleDB
+ enableChannel: storeConnectInModuleEnabled
+ extent: (Point 103 22)
+ )
+ )
+
+ )
+ )
+ )
+
+ )
+ )
+ (FramedBoxSpec
label: 'CVS Sourcecode Manager Setup'
name: 'CVSSetupBox'
- layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+ layout: (LayoutFrame 0 0 0 0 0 1 -12 1)
visibilityChannel: managerIsCVSSourceCodeManager
labelPosition: topLeft
translateLabel: true
@@ -9720,14 +9980,14 @@
(LabelSpec
label: 'CVS BinDirectory:'
name: 'Label1'
- layout: (LayoutFrame 0 0.0 0 0 40 0.25 22 0)
+ layout: (LayoutFrame 0 0.0 0 0 60 0.25 22 0)
level: 0
translateLabel: true
adjust: right
)
(InputFieldSpec
name: 'BinDirectoryField'
- layout: (LayoutFrame 44 0.25 0 0 -5 1 22 0)
+ layout: (LayoutFrame 64 0.25 0 0 -5 1 22 0)
enableChannel: useManager
tabable: true
model: cvsBinDirectoryHolder
@@ -9747,14 +10007,14 @@
(LabelSpec
label: 'CVSRoot default:'
name: 'defaultCvsRootLabel'
- layout: (LayoutFrame 0 0.0 0 0 40 0.25 22 0)
+ layout: (LayoutFrame 0 0.0 0 0 60 0.25 22 0)
level: 0
translateLabel: true
adjust: right
)
(ComboBoxSpec
name: 'cvsRootComboBox'
- layout: (LayoutFrame 44 0.25 0 0 -5 1 22 0)
+ layout: (LayoutFrame 64 0.25 0 0 -5 1 22 0)
enableChannel: useManager
tabable: true
model: cvsRootHolder
@@ -9809,13 +10069,13 @@
(LabelSpec
label: 'CVSRoot per Module:'
name: 'knownModulesLabel'
- layout: (LayoutFrame 0 0.0 82 0 40 0.25 104 0)
+ layout: (LayoutFrame 0 0.0 82 0 60 0.25 104 0)
translateLabel: true
adjust: right
)
(SequenceViewSpec
name: 'List1'
- layout: (LayoutFrame 44 0.25 82 0 -5 1 201 0)
+ layout: (LayoutFrame 64 0.25 82 0 -5 1 201 0)
enableChannel: useManager
tabable: true
model: selectedPerModuleRoot
@@ -9828,13 +10088,13 @@
(LabelSpec
label: 'Module:'
name: 'moduleLabel'
- layout: (LayoutFrame 0 0.0 211 0 40 0.25 228 0)
+ layout: (LayoutFrame 0 0.0 211 0 60 0.25 228 0)
translateLabel: true
adjust: right
)
(InputFieldSpec
name: 'perModuleRootModuleEntryField'
- layout: (LayoutFrame 44 0.25 207 0 -5 1 229 0)
+ layout: (LayoutFrame 64 0.25 207 0 -5 1 229 0)
enableChannel: useManager
tabable: true
model: perModuleRootModule
@@ -9844,13 +10104,13 @@
(LabelSpec
label: 'CVSRoot:'
name: 'cvsRootLabel'
- layout: (LayoutFrame 0 0.0 236 0 40 0.25 253 0)
+ layout: (LayoutFrame 0 0.0 236 0 60 0.25 253 0)
translateLabel: true
adjust: right
)
(ComboBoxSpec
name: 'perModuleRootComboBox'
- layout: (LayoutFrame 44 0.25 232 0 -5 1.0 254 0)
+ layout: (LayoutFrame 64 0.25 232 0 -5 1.0 254 0)
enableChannel: useManager
tabable: true
model: perModuleRoot
@@ -9865,7 +10125,7 @@
)
(HorizontalPanelViewSpec
name: 'HorizontalPanel2'
- layout: (LayoutFrame 44 0.25 258 0 -1 1 289 0)
+ layout: (LayoutFrame 64 0.25 258 0 -1 1 289 0)
horizontalLayout: fitSpace
verticalLayout: center
horizontalSpace: 3
@@ -9880,7 +10140,7 @@
tabable: true
model: addPerModuleRoot
enableChannel: useManager
- extent: (Point 103 22)
+ extent: (Point 98 22)
)
(ActionButtonSpec
label: 'Remove'
@@ -9889,11 +10149,11 @@
tabable: true
model: removePerModuleRoot
enableChannel: removeEnabled
- extent: (Point 103 22)
+ extent: (Point 98 22)
)
(ViewSpec
name: 'Box11'
- extent: (Point 103 10)
+ extent: (Point 98 10)
)
(ActionButtonSpec
label: 'CVS-Login'
@@ -9902,228 +10162,7 @@
tabable: true
model: loginPerModuleRoot
enableChannel: cvsLoginInModuleEnabled
- extent: (Point 103 22)
- )
- )
-
- )
- )
- )
-
- )
- )
- (FramedBoxSpec
- label: 'Store Repository Setup'
- name: 'StoreSetupBox'
- layout: (LayoutFrame 0 0 0 0 0 1 0 1)
- visibilityChannel: managerIsStoreSourceCodeManager
- labelPosition: topLeft
- translateLabel: true
- component:
- (SpecCollection
- collection: (
- (ViewSpec
- name: 'HostBox'
- layout: (LayoutFrame 0 0 0 0 0 1 25 0)
- component:
- (SpecCollection
- collection: (
- (LabelSpec
- label: 'Store DB Host:'
- name: 'StoreHostLabel'
- layout: (LayoutFrame 0 0.0 0 0 40 0.25 22 0)
- level: 0
- translateLabel: true
- adjust: right
- )
- (InputFieldSpec
- name: 'StoreHostEntryField'
- layout: (LayoutFrame 44 0.25 0 0 -5 1 22 0)
- enableChannel: useManager
- tabable: true
- model: storeHostnameHolder
- acceptChannel: acceptChannel
- acceptOnPointerLeave: true
- )
- )
-
- )
- )
- (ViewSpec
- name: 'UserBox'
- layout: (LayoutFrame 0 0.0 27 0 0 1 52 0)
- component:
- (SpecCollection
- collection: (
- (LabelSpec
- label: 'Store DB Username:'
- name: 'StoreUserLabel'
- layout: (LayoutFrame 0 0.0 0 0 40 0.25 22 0)
- level: 0
- translateLabel: true
- adjust: right
- )
- (InputFieldSpec
- name: 'StoreUserEntryField'
- layout: (LayoutFrame 44 0.25 0 0 -5 1 22 0)
- enableChannel: useManager
- tabable: true
- model: storeUsernameHolder
- acceptChannel: acceptChannel
- acceptOnPointerLeave: true
- )
- )
-
- )
- )
- (ViewSpec
- name: 'PasswordBox'
- layout: (LayoutFrame 0 0.0 54 0 0 1 79 0)
- component:
- (SpecCollection
- collection: (
- (LabelSpec
- label: 'Store DB Password:'
- name: 'Label7'
- layout: (LayoutFrame 0 0.0 0 0 40 0.25 22 0)
- level: 0
- translateLabel: true
- adjust: right
- )
- (InputFieldSpec
- name: 'PasswordEntryField'
- layout: (LayoutFrame 44 0.25 0 0 -130 1 22 0)
- enableChannel: useManager
- tabable: true
- model: storePasswordHolder
- type: password
- acceptChannel: acceptChannel
- acceptOnPointerLeave: true
- )
- )
-
- )
- )
- (HorizontalPanelViewSpec
- name: 'HorizontalPanel4'
- layout: (LayoutFrame -130 1 51 0 -1 1 82 0)
- horizontalLayout: fitSpace
- verticalLayout: center
- horizontalSpace: 3
- verticalSpace: 3
- component:
- (SpecCollection
- collection: (
- (ActionButtonSpec
- label: 'CVS-Login'
- name: 'Button1'
- translateLabel: true
- tabable: true
- model: loginCVSRoot
- enableChannel: storeLoginEnabled
- extent: (Point 123 22)
- )
- )
-
- )
- )
- (LabelSpec
- label: 'DB per Module:'
- name: 'Label4'
- layout: (LayoutFrame 0 0.0 82 0 40 0.25 104 0)
- translateLabel: true
- adjust: right
- )
- (SequenceViewSpec
- name: 'List2'
- layout: (LayoutFrame 44 0.25 82 0 -5 1 201 0)
- enableChannel: useManager
- tabable: true
- model: selectedPerModuleDBInfo
- hasHorizontalScrollBar: true
- hasVerticalScrollBar: true
- miniScrollerHorizontal: true
- useIndex: false
- sequenceList: listOfModules
- )
- (LabelSpec
- label: 'Module:'
- name: 'Label5'
- layout: (LayoutFrame 0 0.0 211 0 40 0.25 228 0)
- translateLabel: true
- adjust: right
- )
- (InputFieldSpec
- name: 'EntryField2'
- layout: (LayoutFrame 44 0.25 207 0 -5 1 229 0)
- enableChannel: useManager
- tabable: true
- model: perModuleRootModule
- acceptChannel: acceptChannel
- acceptOnPointerLeave: true
- )
- (LabelSpec
- label: 'DB:'
- name: 'Label6'
- layout: (LayoutFrame 0 0.0 236 0 40 0.25 253 0)
- translateLabel: true
- adjust: right
- )
- (ComboBoxSpec
- name: 'ComboBox2'
- layout: (LayoutFrame 44 0.25 232 0 -5 1.0 254 0)
- enableChannel: useManager
- tabable: true
- model: perModuleRoot
- immediateAccept: true
- acceptOnLeave: true
- acceptOnReturn: true
- acceptOnTab: true
- acceptOnLostFocus: true
- acceptChannel: acceptChannel
- acceptOnPointerLeave: true
- comboList: storeRootPrototypeList
- )
- (HorizontalPanelViewSpec
- name: 'HorizontalPanel5'
- layout: (LayoutFrame 44 0.25 258 0 -1 1 289 0)
- horizontalLayout: fitSpace
- verticalLayout: center
- horizontalSpace: 3
- verticalSpace: 3
- component:
- (SpecCollection
- collection: (
- (ActionButtonSpec
- label: 'Add/Apply'
- name: 'Button2'
- translateLabel: true
- tabable: true
- model: addPerModuleStoreDB
- enableChannel: useManager
- extent: (Point 103 22)
- )
- (ActionButtonSpec
- label: 'Remove'
- name: 'Button3'
- translateLabel: true
- tabable: true
- model: removePerModuleStoreDB
- enableChannel: removeEnabled
- extent: (Point 103 22)
- )
- (ViewSpec
- name: 'Box17'
- extent: (Point 103 10)
- )
- (ActionButtonSpec
- label: 'CVS-Login'
- name: 'Button4'
- translateLabel: true
- tabable: true
- model: loginPerStoreDB
- enableChannel: cvsLoginInModuleEnabled
- extent: (Point 103 22)
+ extent: (Point 98 22)
)
)
@@ -10194,7 +10233,7 @@
)
)
- extent: (Point 659 40)
+ extent: (Point 659 38)
)
(ViewSpec
name: 'Box5'
@@ -10256,63 +10295,70 @@
!AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'actions'!
-addPerModuleRoot
-
- |module cvsRoot|
-
- acceptChannel value:true.
- module := self perModuleRootModule value.
- cvsRoot := self perModuleRoot value.
- (self listOfModules includes:module) ifFalse:[
- self listOfModules add:module.
- self listOfModules sort.
- ].
- cvsRoot size > 0 ifTrue:[
- rootsPerModule at:module put:cvsRoot.
- ].
- self updateModifiedChannel.
-!
-
basicReadSettings
self initialize.
+
self hasManager ifTrue:[
self useManager value:(manager := Smalltalk at:#SourceCodeManager) notNil.
self localSourceFirst value:Class tryLocalSourceFirst.
self sourceCacheDir value:(AbstractSourceCodeManager cacheDirectoryName).
+
manager notNil ifTrue:[
manager forgetDisabledModules.
- repository := manager repositoryName.
- repositoryHolder := (repository ? '') asValue
+ manager isCVS ifTrue:[
+ repository := manager repositoryName.
+ repositoryHolder := (repository ? '') asValue
+ ].
+ manager isStore ifTrue:[
+ self storeHostnameHolder value: (manager hostAndDBName).
+ self storeUsernameHolder value: (manager userName).
+ self storePasswordHolder value: (manager password).
+ ].
].
] ifFalse:[
self useManager value:false.
self localSourceFirst value:false.
].
- self checkClassesWhenCheckingIn
- value:(currentUserPrefs at:#checkClassesWhenCheckingIn ifAbsent:true).
- self cvsRootHolder
- value:CVSSourceCodeManager repositoryName ? '/cvs/stx'.
+
+ self availableManagers do:[:eachManager |
+ |infoPerModule|
+
+ infoPerModule := eachManager repositoryInfoPerModule.
+ infoPerModule keysAndValuesDo:[:module :info |
+ rootsPerModule at:module put:(Array with:eachManager with:info).
+ ].
+ ].
+
+ self checkClassesWhenCheckingIn value:(currentUserPrefs at:#checkClassesWhenCheckingIn ifAbsent:true).
+ self cvsRootHolder value:CVSSourceCodeManager repositoryName ? '/cvs/stx'.
self cvsBinDirectoryHolder value:CVSSourceCodeManager cvsBinDirectory.
+
rootsPerModule notNil ifTrue:[
self listOfModules removeAll.
listOfModules addAll:rootsPerModule keys asList.
].
- self selectedPerModuleRootChanged.
+"/ self selectedPerModuleRootChanged.
"Modified: / 16-08-2006 / 11:08:01 / cg"
!
basicSaveSettings
+ |modules|
+
+ currentUserPrefs at:#checkClassesWhenCheckingIn put:self checkClassesWhenCheckingIn value.
+ Class tryLocalSourceFirst:self localSourceFirst value.
(self hasManager and:[self useManager value]) ifTrue:[
+ manager ~~ self selectedManager ifTrue:[
+ manager := nil.
+ ].
+
manager isNil ifTrue:[
- Smalltalk at:#SourceCodeManager put:(CVSSourceCodeManager).
- manager := Smalltalk at:#SourceCodeManager.
+ Smalltalk at:#SourceCodeManager put:(manager := self selectedManager).
].
- Class tryLocalSourceFirst:self localSourceFirst value.
-
manager notNil ifTrue:[
| nm fn|
+
nm := self sourceCacheDir value.
nm notEmptyOrNil ifTrue:[
(fn := nm asFilename) exists ifFalse:[
@@ -10330,29 +10376,36 @@
] ifFalse:[
self warn:'Invalid sourceCache directory.'
]
-"/ ] ifFalse:[
-"/ AbstractSourceCodeManager cacheDirectoryName:nil.
- ].
- ].
-
- repositoryHolder notNil ifTrue:[
- repositoryHolder value size > 0 ifTrue:[
- manager notNil ifTrue:[
- manager initializeForRepository:repositoryHolder value.
- ]
].
].
- CVSSourceCodeManager cvsBinDirectory:self cvsBinDirectoryHolder value withoutSeparators.
- CVSSourceCodeManager initializeForRepository:self cvsRootHolder value.
- self cvsBinDirectoryHolder value:CVSSourceCodeManager cvsBinDirectory.
- CVSSourceCodeManager repositoryNamesPerModule:rootsPerModule.
+
+ self availableManagers do:[:eachManager |
+ |infoPerModule|
+ modules := rootsPerModule select:[:entry | entry first == eachManager].
+ infoPerModule := Dictionary new.
+ modules keysAndValuesDo:[:module :entry |
+ entry first == eachManager ifTrue:[
+ infoPerModule at:module put:(entry second).
+ ].
+ ].
+ eachManager repositoryInfoPerModule:infoPerModule.
+ ].
+
+ manager isCVS ifTrue:[
+ self basicSaveCVSSettings.
+ ] ifFalse:[ manager isStore ifTrue:[
+ self basicSaveStoreSettings.
+ ] ifFalse:[
+ self error.
+ ]].
+
self sourceCacheDir value:(AbstractSourceCodeManager cacheDirectoryName).
- DebugView newDebugger.
+
+ DebugView newDebugger. "/ ???
] ifFalse:[
Smalltalk at:#SourceCodeManager put:nil
].
- currentUserPrefs at:#checkClassesWhenCheckingIn put:self checkClassesWhenCheckingIn value.
self acceptChannel value.
!
@@ -10361,28 +10414,6 @@
self withWaitCursorDo:[ AbstractSourceCodeManager condenseSourceCache ]
!
-cvsLogin:cvsRoot
- |cmd term|
-
- cmd := 'cvs -d ' , cvsRoot , ' login ; exit'.
- term := VT100TerminalView open.
- term topView label:'CVS Login for ' , cvsRoot.
- term topView waitUntilVisible.
- term shellTerminateAction:[
- "/ term topView destroy
- ].
-
- term showCR:(('Please enter the CVS-password then close this terminal window.') asText allBold colorizeAllWith:Color red).
- term showCR:''.
- term endEntry.
- Delay waitForSeconds:1.
- term sendLine:cmd.
-
- "
- self basicNew cvsLogin:':pserver:stx@exept.eu.org:/stx'
- "
-!
-
flushSourceCache
self withWaitCursorDo:[ AbstractSourceCodeManager flushSourceCache ]
@@ -10392,14 +10423,6 @@
^ 'Launcher/cvsSetup.html'
!
-loginCVSRoot
- self cvsLogin:cvsRootHolder value.
-!
-
-loginPerModuleRoot
- self cvsLogin:perModuleRoot value.
-!
-
removePerModuleRoot
|module|
@@ -10425,6 +10448,172 @@
"Modified: / 16-08-2006 / 11:07:51 / cg"
! !
+!AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'actions - cvs'!
+
+addPerModuleRoot
+ |module cvsRoot|
+
+ acceptChannel value:true.
+ module := self perModuleRootModule value.
+ cvsRoot := self perModuleRoot value.
+ (self listOfModules includes:module) ifFalse:[
+ self listOfModules add:module; sort.
+ ].
+ cvsRoot size > 0 ifTrue:[
+ rootsPerModule at:module put:(Array with:CVSSourceCodeManager with:cvsRoot).
+ ].
+ self updateModifiedChannel.
+!
+
+basicSaveCVSSettings
+ |cvsRoot|
+
+ repositoryHolder notNil ifTrue:[
+ repositoryHolder value size > 0 ifTrue:[
+ manager notNil ifTrue:[
+ manager initializeForRepository:repositoryHolder value.
+ ]
+ ].
+ ].
+ CVSSourceCodeManager cvsBinDirectory:(self cvsBinDirectoryHolder value withoutSeparators).
+ CVSSourceCodeManager initializeForRepository:(cvsRoot := self cvsRootHolder value).
+
+ CVSSourceCodeManager cvsBinDirectory ~= self cvsBinDirectoryHolder value withoutSeparators ifTrue:[
+ self warn:'CVS does not seem to like your Bin-Directory setting...'.
+ "/ self cvsBinDirectoryHolder value:CVSSourceCodeManager cvsBinDirectory.
+ AbortSignal raise "/ avoid clearing modfified
+ ].
+
+ RecentlyUsedCVSRoots isNil ifTrue:[
+ RecentlyUsedCVSRoots := OrderedCollection new.
+ ].
+ (RecentlyUsedCVSRoots includes:cvsRoot) ifFalse:[
+ RecentlyUsedCVSRoots addFirst:cvsRoot.
+ RecentlyUsedCVSRoots size > 20 ifTrue:[
+ RecentlyUsedCVSRoots removeLast.
+ ].
+ ].
+!
+
+cvsLogin:cvsRoot
+ |cmd term|
+
+ cmd := 'cvs -d ' , cvsRoot , ' login ; exit'.
+ term := VT100TerminalView open.
+ term topView label:'CVS Login for ' , cvsRoot.
+ term topView waitUntilVisible.
+ term shellTerminateAction:[
+ "/ term topView destroy
+ ].
+
+ term showCR:(('Please enter the CVS-password then close this terminal window.') asText allBold colorizeAllWith:Color red).
+ term showCR:''.
+ term endEntry.
+ Delay waitForSeconds:1.
+ term sendLine:cmd.
+
+ "
+ self basicNew cvsLogin:':pserver:stx@exept.eu.org:/stx'
+ "
+!
+
+loginCVSRoot
+ self cvsLogin:cvsRootHolder value.
+!
+
+loginPerModuleRoot
+ self cvsLogin:perModuleRoot value.
+! !
+
+!AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'actions - store'!
+
+addPerStoreModuleDB
+
+ |module info|
+
+ acceptChannel value:true.
+
+ module := self perStoreModuleRoot value.
+ info := StoreSourceCodeManager newDBInfo.
+ info hostAndDBName:perStoreModuleHostnameHolder value.
+ info userName:perStoreModuleUsernameHolder value.
+ info password:perStoreModulePasswordHolder value.
+
+ (self listOfModules includes:module) ifFalse:[
+ self listOfModules add:module; sort.
+ ].
+ rootsPerModule at:module put:(Array with:StoreSourceCodeManager with:info).
+
+ self updateModifiedChannel.
+!
+
+basicSaveStoreSettings
+ |storeHost|
+
+ StoreSourceCodeManager hostAndDBName:(storeHost := self storeHostnameHolder value withoutSeparators).
+ StoreSourceCodeManager userName:(self storeUsernameHolder value withoutSeparators).
+ StoreSourceCodeManager password:(self storePasswordHolder value withoutSeparators).
+
+ StoreSourceCodeManager connectToDatabase.
+
+ RecentlyUsedStoreHosts isNil ifTrue:[
+ RecentlyUsedStoreHosts := OrderedCollection new.
+ ].
+ (RecentlyUsedStoreHosts includes:storeHost) ifFalse:[
+ RecentlyUsedStoreHosts addFirst:storeHost.
+ RecentlyUsedStoreHosts size > 20 ifTrue:[
+ RecentlyUsedStoreHosts removeLast.
+ ].
+ ].
+!
+
+connectPerStoreModuleDB
+ |testInfo|
+
+ testInfo := StoreSourceCodeManager newDBInfo.
+ testInfo hostAndDBName:(perStoreModuleHostnameHolder value).
+ testInfo userName:(perStoreModuleUsernameHolder value).
+ testInfo password:(perStoreModulePasswordHolder value).
+
+ (self tryToConnectTo:testInfo)
+!
+
+storeConnect
+ |testInfo|
+
+ testInfo := StoreSourceCodeManager newDBInfo.
+ testInfo hostAndDBName:(storeHostnameHolder value).
+ testInfo userName:(storeUsernameHolder value).
+ testInfo password:(storePasswordHolder value).
+
+ (self tryToConnectTo:testInfo) ifTrue:[
+ LastStoreHost := storeHostnameHolder value.
+ LastStoreUser := storeUsernameHolder value.
+ LastStorePassword := storePasswordHolder value.
+ ].
+!
+
+tryToConnectTo:dbInfo
+ |session|
+
+ SQL::SQLError handle:[:ex |
+ self warn:('Failed to connect to Database:\\' withCRs,ex description).
+ ^ false.
+ ] do:[
+ self withWaitCursorDo:[
+ session := StoreSourceCodeManager tryToConnectToDatabase:dbInfo.
+ ]
+ ].
+ session isNil ifTrue:[
+ self warn:'OOPS - Failed to connect'.
+ ^ false.
+ ].
+
+ self information:('Successfully connected to ',dbInfo dbName,'.').
+ session disconnect.
+ ^ true
+! !
+
!AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'aspects'!
acceptChannel
@@ -10443,11 +10632,14 @@
availableManagers
availableManagers isNil ifTrue:[
- availableManagers := AbstractSourceCodeManager allSubclasses
- reject:[:cls | (cls isAbstract) or:[cls isExperimental ]].
+ availableManagers := AbstractSourceCodeManager availableManagers.
].
^ availableManagers.
+ "
+ self basicNew availableManagers
+ "
+
"Created: / 16-08-2006 / 11:01:10 / cg"
!
@@ -10572,6 +10764,15 @@
"Created: / 16-08-2006 / 11:22:03 / cg"
!
+perModuleFieldsEnableHolder
+
+ perModuleFieldsEnableHolder isNil ifTrue:[
+ perModuleFieldsEnableHolder := true asValue.
+ perModuleFieldsEnableHolder addDependent:self.
+ ].
+ ^ perModuleFieldsEnableHolder.
+!
+
perModuleRoot
perModuleRoot isNil ifTrue:[
perModuleRoot := ValueHolder new.
@@ -10587,6 +10788,57 @@
^ perModuleRootModule.
!
+perStoreModuleFieldsEnableHolder
+
+ perStoreModuleFieldsEnableHolder isNil ifTrue:[
+ perStoreModuleFieldsEnableHolder := true asValue.
+ perStoreModuleFieldsEnableHolder addDependent:self.
+ ].
+ ^ perStoreModuleFieldsEnableHolder.
+!
+
+perStoreModuleHostnameHolder
+
+ perStoreModuleHostnameHolder isNil ifTrue:[
+ perStoreModuleHostnameHolder := '' asValue.
+ perStoreModuleHostnameHolder addDependent:self.
+ ].
+ ^ perStoreModuleHostnameHolder.
+!
+
+perStoreModulePasswordHolder
+
+ perStoreModulePasswordHolder isNil ifTrue:[
+ perStoreModulePasswordHolder := '' asValue.
+ perStoreModulePasswordHolder addDependent:self.
+ ].
+ ^ perStoreModulePasswordHolder.
+!
+
+perStoreModuleRoot
+ perStoreModuleRoot isNil ifTrue:[
+ perStoreModuleRoot := ValueHolder new.
+ perStoreModuleRoot addDependent:self.
+ ].
+ ^ perStoreModuleRoot.
+!
+
+perStoreModuleRootModule
+ perStoreModuleRootModule isNil ifTrue:[
+ perStoreModuleRootModule := ValueHolder new.
+ ].
+ ^ perStoreModuleRootModule.
+!
+
+perStoreModuleUsernameHolder
+
+ perStoreModuleUsernameHolder isNil ifTrue:[
+ perStoreModuleUsernameHolder := '' asValue.
+ perStoreModuleUsernameHolder addDependent:self.
+ ].
+ ^ perStoreModuleUsernameHolder.
+!
+
removeEnabled
removeEnabled isNil ifTrue:[
@@ -10613,6 +10865,7 @@
selectedManagerTypeIndexHolder onChangeEvaluate:[
self managerIsCVSSourceCodeManager value:( self selectedManager isCVS ).
self managerIsStoreSourceCodeManager value:( self selectedManager isStore ).
+ self updateModifiedChannel
].
].
^ selectedManagerTypeIndexHolder.
@@ -10628,6 +10881,14 @@
^ selectedPerModuleRoot.
!
+selectedPerStoreModuleRoot
+ selectedPerStoreModuleRoot isNil ifTrue:[
+ selectedPerStoreModuleRoot := ValueHolder new.
+ selectedPerStoreModuleRoot addDependent:self.
+ ].
+ ^ selectedPerStoreModuleRoot.
+!
+
sourceCacheDir
sourceCacheDir isNil ifTrue:[
sourceCacheDir := ValueHolder new.
@@ -10636,6 +10897,55 @@
^ sourceCacheDir.
!
+storeConnectEnabled
+ storeConnectEnabled isNil ifTrue:[
+ storeConnectEnabled := false asValue.
+ ].
+ ^ storeConnectEnabled.
+!
+
+storeConnectInModuleEnabled
+ storeConnectInModuleEnabled isNil ifTrue:[
+ storeConnectInModuleEnabled := false asValue.
+ ].
+ ^ storeConnectInModuleEnabled.
+!
+
+storeHostPrototypeList
+ |prototypeList|
+
+ storeHostPrototypeList isNil ifTrue:[
+ prototypeList := OrderedSet new.
+
+ prototypeList add:('public@store.smalltalk-x.de:5432').
+ prototypeList add:('public').
+ prototypeList add:('stx').
+
+ OperatingSystem getLoginName = 'cg' ifTrue:[
+ prototypeList add:('oyster@store.smalltalk-x.de:5432').
+ prototypeList add:('oyster').
+ ].
+
+ OperatingSystem getDomainName = 'exept.de' ifTrue:[
+ prototypeList add:('stx@exept.exept.de:5432').
+ ] ifFalse:[
+ prototypeList add:('db@host').
+ prototypeList add:('db@host:port').
+ ].
+ storeHostPrototypeList := prototypeList asOrderedCollection.
+ ].
+ ^ storeHostPrototypeList.
+!
+
+storeHostnameHolder
+
+ storeHostnameHolder isNil ifTrue:[
+ storeHostnameHolder := (LastStoreHost ? '') asValue.
+ storeHostnameHolder addDependent:self.
+ ].
+ ^ storeHostnameHolder.
+!
+
storeLoginEnabled
storeLoginEnabled isNil ifTrue:[
storeLoginEnabled := false asValue.
@@ -10645,6 +10955,24 @@
"Created: / 16-08-2006 / 11:11:15 / cg"
!
+storePasswordHolder
+
+ storePasswordHolder isNil ifTrue:[
+ storePasswordHolder := (LastStorePassword ? '') asValue.
+ storePasswordHolder addDependent:self.
+ ].
+ ^ storePasswordHolder.
+!
+
+storeUsernameHolder
+
+ storeUsernameHolder isNil ifTrue:[
+ storeUsernameHolder := (LastStoreUser ? '') asValue.
+ storeUsernameHolder addDependent:self.
+ ].
+ ^ storeUsernameHolder.
+!
+
useManager
useManager isNil ifTrue:[
useManager := ValueHolder new.
@@ -10656,16 +10984,58 @@
!AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'change & update'!
selectedPerModuleRootChanged
- |module cvsRoot|
+ |module entry|
self acceptChannel value:true.
module := self selectedPerModuleRoot value.
- module isNil ifTrue:[ ^ self].
-
- self removeEnabled value:true.
- cvsRoot := rootsPerModule at:module ifAbsent:''.
- self perModuleRootModule value:module.
- self perModuleRoot value:cvsRoot.
+ module isNil ifTrue:[
+ self removeEnabled value:false.
+ self perModuleRootModule value:' '.
+ self perModuleRoot value:''.
+ ^ self
+ ].
+
+ entry := rootsPerModule at:module ifAbsent:#().
+ (entry first = CVSSourceCodeManager) ifTrue:[
+ self removeEnabled value:true.
+ self perModuleRootModule value:module.
+ self perModuleRoot value:(entry at:2).
+ ] ifFalse:[
+ self removeEnabled value:false.
+ self perModuleRootModule value:module , ' ',('<<use ',entry first managerTypeName,'>>') allBold.
+ self perModuleRoot value:''.
+ ].
+!
+
+selectedPerStoreModuleRootChanged
+ |module entry|
+
+ self acceptChannel value:true.
+
+ module := self selectedPerStoreModuleRoot value.
+ module isNil ifTrue:[
+ self removeEnabled value:false.
+ self perStoreModuleRoot value:''.
+ self perStoreModuleHostnameHolder value:''.
+ self perStoreModuleUsernameHolder value:''.
+ self perStoreModulePasswordHolder value:''.
+ ^ self
+ ].
+
+ entry := rootsPerModule at:module ifAbsent:#().
+ (entry first = StoreSourceCodeManager) ifTrue:[
+ self removeEnabled value:true.
+ self perStoreModuleRoot value:module.
+ self perStoreModuleHostnameHolder value:(entry at:2) hostAndDBName.
+ self perStoreModuleUsernameHolder value:(entry at:2) userName.
+ self perStoreModulePasswordHolder value:(entry at:2) password.
+ ] ifFalse:[
+ self removeEnabled value:false.
+ self perStoreModuleRoot value:module , ' ',('<<use ',entry first managerTypeName,'>>') allBold.
+ self perStoreModuleHostnameHolder value:''.
+ self perStoreModuleUsernameHolder value:''.
+ self perStoreModulePasswordHolder value:''.
+ ].
!
sourceDirChanged
@@ -10698,6 +11068,14 @@
!
update:something with:aParameter from:changedObject
+ "/ common
+ changedObject == sourceCacheDir ifTrue:[
+ self sourceDirChanged.
+ self updateModifiedChannel.
+ ^ self
+ ].
+
+ "/ cvs
changedObject == cvsRootHolder ifTrue:[
self updateModifiedChannel.
self updateLoginEnableHolders.
@@ -10707,19 +11085,59 @@
self updateLoginEnableHolders.
^ self
].
- changedObject == sourceCacheDir ifTrue:[
- self sourceDirChanged.
- self updateModifiedChannel.
- ^ self
- ].
changedObject == selectedPerModuleRoot ifTrue:[
self selectedPerModuleRootChanged.
^ self
].
- super
- update:something
- with:aParameter
- from:changedObject
+
+ "/ store
+ changedObject == storeHostnameHolder ifTrue:[
+ self updateConnectEnableHolders.
+ ^ self
+ ].
+ changedObject == storeUsernameHolder ifTrue:[
+ self updateConnectEnableHolders.
+ ^ self
+ ].
+ changedObject == storePasswordHolder ifTrue:[
+ self updateConnectEnableHolders.
+ ^ self
+ ].
+ changedObject == perStoreModuleRoot ifTrue:[
+ self updateConnectEnableHolders.
+ ^ self
+ ].
+ changedObject == perStoreModuleHostnameHolder ifTrue:[
+ self updateConnectEnableHolders.
+ ^ self
+ ].
+ changedObject == perStoreModuleUsernameHolder ifTrue:[
+ self updateConnectEnableHolders.
+ ^ self
+ ].
+ changedObject == perStoreModulePasswordHolder ifTrue:[
+ self updateConnectEnableHolders.
+ ^ self
+ ].
+
+ changedObject == selectedPerStoreModuleRoot ifTrue:[
+ self selectedPerStoreModuleRootChanged.
+ ^ self
+ ].
+
+ super update:something with:aParameter from:changedObject
+!
+
+updateConnectEnableHolders
+ self storeConnectEnabled
+ value:(storeHostnameHolder value notEmptyOrNil
+ and:[ storeUsernameHolder value notEmptyOrNil
+ and:[ storePasswordHolder value notEmptyOrNil ]]).
+
+ self storeConnectInModuleEnabled
+ value:(perStoreModuleHostnameHolder value notEmptyOrNil
+ and:[ perStoreModuleUsernameHolder value notEmptyOrNil
+ and:[ perStoreModulePasswordHolder value notEmptyOrNil ]]).
!
updateLoginEnableHolders
@@ -10730,7 +11148,7 @@
!AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'initialization & release'!
initialize
- (AbstractSourceCodeManager notNil) ifTrue:[AbstractSourceCodeManager autoload].
+ (AbstractSourceCodeManager notNil) ifTrue:[ AbstractSourceCodeManager autoload ].
useManager := false asValue.
useManager onChangeSend:#updateModifiedChannel to:self.
@@ -10741,8 +11159,11 @@
repositoryHolder := '' asValue.
rootsPerModule := Dictionary new.
- SourceCodeManager == CVSSourceCodeManager ifTrue:[
- rootsPerModule addAll:(SourceCodeManager repositoryNamesPerModule).
+ self availableManagers do:[:eachManager |
+ eachManager repositoryInfoPerModule
+ keysAndValuesDo:[:module :info |
+ rootsPerModule at:module put:(Array with:eachManager with:info)
+ ].
].
super initialize.
@@ -10764,36 +11185,49 @@
!
hasManager
- ^ AbstractSourceCodeManager notNil
- and:[AbstractSourceCodeManager isLoaded]
+ "true if ANY source code management class is available"
+
+ ^ AbstractSourceCodeManager notNil and:[AbstractSourceCodeManager isLoaded]
!
hasUnsavedChanges
+ |cvsModules storeModules|
+
(self useManager value ~= ((Smalltalk at:#SourceCodeManager) notNil)) ifTrue:[^ true].
-
- ((self hasManager and:[self useManager value])
- and:[
- Class tryLocalSourceFirst ~= self localSourceFirst value or:[
- (AbstractSourceCodeManager cacheDirectoryName ? '') ~= (self sourceCacheDir value ? '')]
- ])
- ifTrue:[^ true].
-
+ (Smalltalk at:#SourceCodeManager) ~~ self selectedManager ifTrue:[^ true].
(self hasManager and:[self useManager value]) ifFalse:[^ false].
+ (Class tryLocalSourceFirst ~= self localSourceFirst value) ifTrue:[^ true].
+ ((AbstractSourceCodeManager cacheDirectoryName ? '') ~= (self sourceCacheDir value ? '')) ifTrue:[^ true].
+
((currentUserPrefs at:#checkClassesWhenCheckingIn ifAbsent:true) ~= self checkClassesWhenCheckingIn value)
ifTrue:[^ true].
- ((CVSSourceCodeManager cvsBinDirectory ? '') ~= (self cvsBinDirectoryHolder value ? '') withoutSeparators)
+ cvsModules := rootsPerModule select:[:entry | entry first == CVSSourceCodeManager].
+ ((Dictionary new addAll:(CVSSourceCodeManager repositoryInfoPerModule); yourself) ~= cvsModules)
ifTrue:[^ true].
- (CVSSourceCodeManager repositoryName ? '/files/CVS' ~= self cvsRootHolder value)
+ storeModules := rootsPerModule select:[:entry | entry first == StoreSourceCodeManager].
+ ((Dictionary new addAll:(StoreSourceCodeManager repositoryInfoPerModule); yourself) ~= storeModules)
ifTrue:[^ true].
- ((Dictionary new addAll:(CVSSourceCodeManager repositoryNamesPerModule); yourself) ~= rootsPerModule)
- ifTrue:[^ true].
-
- ((self sourceCacheDir value ? '') ~= (AbstractSourceCodeManager cacheDirectoryName ? '')) ifTrue:[^ true].
-
+ self selectedManager isCVS ifTrue:[
+ ((CVSSourceCodeManager cvsBinDirectory ? '') ~= (self cvsBinDirectoryHolder value ? '') withoutSeparators)
+ ifTrue:[^ true].
+
+ (CVSSourceCodeManager repositoryName ? '/files/CVS' ~= self cvsRootHolder value)
+ ifTrue:[^ true].
+ ].
+
+ self selectedManager isStore ifTrue:[
+ ((StoreSourceCodeManager hostAndDBName ? '') ~= (self storeHostnameHolder value ? '') withoutSeparators)
+ ifTrue:[^ true].
+ ((StoreSourceCodeManager userName ? '') ~= (self storeUsernameHolder value ? '') withoutSeparators)
+ ifTrue:[^ true].
+ ((StoreSourceCodeManager password ? '') ~= (self storePasswordHolder value ? '') withoutSeparators)
+ ifTrue:[^ true].
+ ].
+
^ false
! !
@@ -12564,5 +12998,5 @@
!AbstractSettingsApplication class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.240 2006-08-22 09:44:23 cg Exp $'
-! !
+ ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.241 2006-08-25 16:01:38 cg Exp $'
+! !