PerforceSourceCodeManagementSettingsAppl.st
changeset 9861 2fb5f110fe82
parent 9848 74fc0d845a9b
child 9864 d9b21106b707
equal deleted inserted replaced
9860:5225713f415e 9861:2fb5f110fe82
     1 "{ Package: 'stx:libtool' }"
     1 "{ Package: 'stx:libtool' }"
     2 
     2 
     3 AbstractSettingsApplication subclass:#P4SourceCodeManagementSettingsAppl
     3 AbstractSourceCodeManagementSettingsAppl subclass:#P4SourceCodeManagementSettingsAppl
     4 	instanceVariableNames:'sourceCacheDir listOfModules removeEnabled acceptChannel
     4         instanceVariableNames:'sourceCacheDir listOfModules removeEnabled acceptChannel
     5 		selectedPerModuleRoot verboseSourceCodeAccess
     5                 selectedPerModuleRoot verboseSourceCodeAccess
     6 		perforceExecutableHolder listOfPerforceModules
     6                 perforceExecutableHolder listOfPerforceModules
     7 		defaultSettingsHolder tableColumns defaultSettingsPrototypeList'
     7                 defaultSettingsHolder tableColumns defaultSettingsPrototypeList'
     8 	classVariableNames:'RecentlyUsedCVSRoots RecentlyUsedStoreHosts
     8         classVariableNames:'RecentlyUsedCVSRoots RecentlyUsedStoreHosts
     9 		RecentlyUsedSmallTeamHosts LastStoreHost LastStoreUser
     9                 RecentlyUsedSmallTeamHosts LastStoreHost LastStoreUser
    10 		LastStorePassword'
    10                 LastStorePassword'
    11 	poolDictionaries:''
    11         poolDictionaries:''
    12 	category:'Interface-Smalltalk'
    12         category:'Interface-Smalltalk'
    13 !
    13 !
    14 
    14 
    15 ApplicationModel subclass:#ManagerPerModuleApp
    15 ApplicationModel subclass:#ManagerPerModuleApp
    16 	instanceVariableNames:'moduleHolder acceptChannel settingsHolder
    16         instanceVariableNames:'moduleHolder acceptChannel settingsHolder
    17 		sourceCodeManagementSettingsApp acceptEnableChannel canceled
    17                 sourceCodeManagementSettingsApp acceptEnableChannel canceled
    18 		defaultSettingsPrototypeList'
    18                 defaultSettingsPrototypeList'
    19 	classVariableNames:''
    19         classVariableNames:''
    20 	poolDictionaries:''
    20         poolDictionaries:''
    21 	privateIn:P4SourceCodeManagementSettingsAppl
    21         privateIn:P4SourceCodeManagementSettingsAppl
    22 !
    22 !
    23 
    23 
    24 Object subclass:#ModuleManager
    24 Object subclass:#ModuleManager
    25 	instanceVariableNames:'manager module settings app'
    25         instanceVariableNames:'manager module settings app'
    26 	classVariableNames:''
    26         classVariableNames:''
    27 	poolDictionaries:''
    27         poolDictionaries:''
    28 	privateIn:P4SourceCodeManagementSettingsAppl
    28         privateIn:P4SourceCodeManagementSettingsAppl
    29 !
    29 !
    30 
    30 
    31 
    31 
    32 !P4SourceCodeManagementSettingsAppl class methodsFor:'image specs'!
    32 !P4SourceCodeManagementSettingsAppl class methodsFor:'image specs'!
    33 
    33 
    45     "
    45     "
    46 
    46 
    47     <resource: #image>
    47     <resource: #image>
    48 
    48 
    49     ^Icon
    49     ^Icon
    50 	constantNamed:#'AbstractSettingsApplication::SourceCodeManagementSettingsAppl class defaultIcon'
    50         constantNamed:#'AbstractSettingsApplication::SourceCodeManagementSettingsAppl class defaultIcon'
    51 	ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
    51         ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
    52 @@@@@@@@@@@A@PHB@0P@@@@@@@@@@@@@@@@@@@HEA \HA $JB0HD@@@@@@@@@@@@@@HLA04NC0HD@@L@@ P@@@@@@@@@@@@ED@ NDP@@@@@@@@@D@@@@@@@@
    52 @@@@@@@@@@@A@PHB@0P@@@@@@@@@@@@@@@@@@@HEA \HA $JB0HD@@@@@@@@@@@@@@HLA04NC0HD@@L@@ P@@@@@@@@@@@@ED@ NDP@@@@@@@@@D@@@@@@@@
    53 @@@BA \FAPP@@@@@@@@@@@P@@@@@@@@@AQ@RC0@@@@@@@@@@@@@@@@@@@@@@@@TGA!!DD@@@@@@@@@@@@@@@@@@@D@PDIA08OA@@@@@@@@@@@@@@@@@@@AP S
    53 @@@BA \FAPP@@@@@@@@@@@P@@@@@@@@@AQ@RC0@@@@@@@@@@@@@@@@@@@@@@@@TGA!!DD@@@@@@@@@@@@@@@@@@@D@PDIA08OA@@@@@@@@@@@@@@@@@@@AP S
    54 A0XIBPXGC0P@@@@@@@@@@@@@@@@ECAPLBPXOAP@@@@@@EQX@@@@@@@@@@@TIE@XOAP@@@@@@EQ\XE @@@@@@@@@@AP$OAP@@@@@@FQ\ZE!! V@@@@@@@@@@@E
    54 A0XIBPXGC0P@@@@@@@@@@@@@@@@ECAPLBPXOAP@@@@@@EQX@@@@@@@@@@@TIE@XOAP@@@@@@EQ\XE @@@@@@@@@@AP$OAP@@@@@@FQ\ZE!! V@@@@@@@@@@@E
    55 F0@@@@@@EQ\ZF!!(VFAX@@@@@@@@@@@@@@@@ZEQ\VE!!(ZF!!XWF @@@@@@@@@@@@@@@@@@@A\ZE!!(@@@@@@@@@@@@@@@@@@@@@@@@XE!!XZ@@@@@@@@@@@@@@@@
    55 F0@@@@@@EQ\ZF!!(VFAX@@@@@@@@@@@@@@@@ZEQ\VE!!(ZF!!XWF @@@@@@@@@@@@@@@@@@@A\ZE!!(@@@@@@@@@@@@@@@@@@@@@@@@XE!!XZ@@@@@@@@@@@@@@@@
    56 @@@@@@@@EQ(V@@@@@@@@@@@@@@@@@@@@@@@@EQ\VE @@@@@@@@@@@@@@@@@@@@@@EQ VE @@@@@@@@@@@@@@F @@@@@WEQ VE!!(@@@@@@@@@@@@@@@@@E!!\W
    56 @@@@@@@@EQ(V@@@@@@@@@@@@@@@@@@@@@@@@EQ\VE @@@@@@@@@@@@@@@@@@@@@@EQ VE @@@@@@@@@@@@@@F @@@@@WEQ VE!!(@@@@@@@@@@@@@@@@@E!!\W
   330          
   330          
   331         )
   331         )
   332       )
   332       )
   333 ! !
   333 ! !
   334 
   334 
       
   335 !P4SourceCodeManagementSettingsAppl class methodsFor:'queries'!
       
   336 
       
   337 managerClass
       
   338     "backlink to my manager class (needed by the settings app)"
       
   339 
       
   340     ^ PerforceSourceCodeManager
       
   341 
       
   342     "Created: / 19-04-2011 / 12:52:02 / cg"
       
   343 ! !
       
   344 
   335 !P4SourceCodeManagementSettingsAppl class methodsFor:'tableColumns specs'!
   345 !P4SourceCodeManagementSettingsAppl class methodsFor:'tableColumns specs'!
   336 
   346 
   337 tableColumns
   347 tableColumns
   338     "This resource specification was automatically generated
   348     "This resource specification was automatically generated
   339      by the DataSetBuilder of ST/X."
   349      by the DataSetBuilder of ST/X."
   347 
   357 
   348     <resource: #tableColumns>
   358     <resource: #tableColumns>
   349 
   359 
   350     ^#(
   360     ^#(
   351       (DataSetColumnSpec
   361       (DataSetColumnSpec
   352 	 label: 'Module'
   362          label: 'Module'
   353 	 labelButtonType: Button
   363          labelButtonType: Button
   354 	 usePreferredWidth: true
   364          usePreferredWidth: true
   355 	 model: module
   365          model: module
   356        )
   366        )
   357       (DataSetColumnSpec
   367       (DataSetColumnSpec
   358 	 label: 'Settings'
   368          label: 'Settings'
   359 	 labelButtonType: Button
   369          labelButtonType: Button
   360 	 editorType: InputField
   370          editorType: InputField
   361 	 model: settings
   371          model: settings
   362 	 isResizeable: false
   372          isResizeable: false
   363        )
   373        )
   364       )
   374       )
   365 
   375 
   366 ! !
   376 ! !
   367 
   377 
   371 
   381 
   372     |detectedManager|
   382     |detectedManager|
   373 
   383 
   374     detectedManager := self listOfModules detect:[:eachModuleManager| eachModuleManager module = aModuleManager module] ifNone:nil.
   384     detectedManager := self listOfModules detect:[:eachModuleManager| eachModuleManager module = aModuleManager module] ifNone:nil.
   375     detectedManager isNil ifTrue:[
   385     detectedManager isNil ifTrue:[
   376 	self listOfModules add:aModuleManager; sort.
   386         self listOfModules add:aModuleManager; sort.
   377 	self updateModifiedChannel.
   387         self updateModifiedChannel.
   378     ] ifFalse:[
   388     ] ifFalse:[
   379 	Dialog information:'Manager for Module ', aModuleManager module, ' already exists'.
   389         Dialog information:'Manager for Module ', aModuleManager module, ' already exists'.
   380     ].
   390     ].
   381 
   391 
   382 
   392 
   383     "Created: / 08-11-2006 / 19:25:21 / cg"
   393     "Created: / 08-11-2006 / 19:25:21 / cg"
   384 !
   394 !
   385 
   395 
   386 addModule:module withData:data
   396 addModule:module withData:data
   387     (self listOfModules includes:module) ifFalse:[
   397     (self listOfModules includes:module) ifFalse:[
   388 	self listOfModules add:module; sort.
   398         self listOfModules add:module; sort.
   389     ].
   399     ].
   390 
   400 
   391     self updateModifiedChannel.
   401     self updateModifiedChannel.
   392 
   402 
   393     "Created: / 08-11-2006 / 19:25:21 / cg"
   403     "Created: / 08-11-2006 / 19:25:21 / cg"
   517 !P4SourceCodeManagementSettingsAppl methodsFor:'aspects'!
   527 !P4SourceCodeManagementSettingsAppl methodsFor:'aspects'!
   518 
   528 
   519 acceptChannel
   529 acceptChannel
   520 
   530 
   521     acceptChannel isNil ifTrue:[
   531     acceptChannel isNil ifTrue:[
   522 	acceptChannel := TriggerValue new.
   532         acceptChannel := TriggerValue new.
   523     ].
   533     ].
   524     ^ acceptChannel.
   534     ^ acceptChannel.
   525 !
   535 !
   526 
   536 
   527 defaultSettingsHolder
   537 defaultSettingsHolder
   528 
   538 
   529     defaultSettingsHolder isNil ifTrue:[
   539     defaultSettingsHolder isNil ifTrue:[
   530 	defaultSettingsHolder := ValueHolder new.
   540         defaultSettingsHolder := ValueHolder new.
   531 	defaultSettingsHolder addDependent:self.
   541         defaultSettingsHolder addDependent:self.
   532     ].
   542     ].
   533     ^ defaultSettingsHolder.
   543     ^ defaultSettingsHolder.
   534 !
   544 !
   535 
   545 
   536 defaultSettingsPrototypeList
   546 defaultSettingsPrototypeList
   537 
   547 
   538     defaultSettingsPrototypeList isNil ifTrue:[
   548     defaultSettingsPrototypeList isNil ifTrue:[
   539 	defaultSettingsPrototypeList := self perforcePrototypeList.
   549         defaultSettingsPrototypeList := self perforcePrototypeList.
   540     ].
   550     ].
   541     ^ defaultSettingsPrototypeList.
   551     ^ defaultSettingsPrototypeList.
   542 !
   552 !
   543 
   553 
   544 listOfModules
   554 listOfModules
   545 
   555 
   546     listOfModules isNil ifTrue:[
   556     listOfModules isNil ifTrue:[
   547 	listOfModules := List new.
   557         listOfModules := List new.
   548 	listOfModules addDependent:self.
   558         listOfModules addDependent:self.
   549     ].
   559     ].
   550     ^ listOfModules.
   560     ^ listOfModules.
   551 !
   561 !
   552 
   562 
   553 perforceExecutableHolder
   563 perforceExecutableHolder
   554     perforceExecutableHolder isNil ifTrue:[
   564     perforceExecutableHolder isNil ifTrue:[
   555 	perforceExecutableHolder := ValueHolder new.
   565         perforceExecutableHolder := ValueHolder new.
   556 	perforceExecutableHolder onChangeSend:#updateModifiedChannel to:self
   566         perforceExecutableHolder onChangeSend:#updateModifiedChannel to:self
   557     ].
   567     ].
   558     ^ perforceExecutableHolder.
   568     ^ perforceExecutableHolder.
   559 
   569 
   560     "Created: / 21-09-2006 / 15:37:06 / cg"
   570     "Created: / 21-09-2006 / 15:37:06 / cg"
   561 !
   571 !
   564 
   574 
   565     |first client|
   575     |first client|
   566 
   576 
   567     client := PerforceSourceCodeManager perforceClient.
   577     client := PerforceSourceCodeManager perforceClient.
   568     client isEmptyOrNil ifTrue:[
   578     client isEmptyOrNil ifTrue:[
   569 	client := 'workspace'.
   579         client := 'workspace'.
   570     ].
   580     ].
   571     first := (client ,':', PerforceSourceCodeManager perforceUser, ':',
   581     first := (client ,':', PerforceSourceCodeManager perforceUser, ':',
   572 			   (PerforceSourceCodeManager perforcePassword ? 'pass'), '@',
   582                            (PerforceSourceCodeManager perforcePassword ? 'pass'), '@',
   573 			   PerforceSourceCodeManager perforcePort).
   583                            PerforceSourceCodeManager perforcePort).
   574     ^ Array with:first.
   584     ^ Array with:first.
   575 !
   585 !
   576 
   586 
   577 removeEnabled
   587 removeEnabled
   578 
   588 
   579     removeEnabled isNil ifTrue:[
   589     removeEnabled isNil ifTrue:[
   580 	removeEnabled := false asValue.
   590         removeEnabled := false asValue.
   581     ].
   591     ].
   582     ^ removeEnabled.
   592     ^ removeEnabled.
   583 !
   593 !
   584 
   594 
   585 selectedPerModuleRoot
   595 selectedPerModuleRoot
   586     selectedPerModuleRoot isNil ifTrue:[
   596     selectedPerModuleRoot isNil ifTrue:[
   587 	selectedPerModuleRoot := ValueHolder new.
   597         selectedPerModuleRoot := ValueHolder new.
   588 	selectedPerModuleRoot addDependent:self.
   598         selectedPerModuleRoot addDependent:self.
   589     ].
   599     ].
   590     ^ selectedPerModuleRoot.
   600     ^ selectedPerModuleRoot.
   591 !
   601 !
   592 
   602 
   593 sourceCacheDir
   603 sourceCacheDir
   594     sourceCacheDir isNil ifTrue:[
   604     sourceCacheDir isNil ifTrue:[
   595 	sourceCacheDir := ValueHolder new.
   605         sourceCacheDir := ValueHolder new.
   596 	sourceCacheDir onChangeSend:#updateModifiedChannel to:self
   606         sourceCacheDir onChangeSend:#updateModifiedChannel to:self
   597     ].
   607     ].
   598     ^ sourceCacheDir.
   608     ^ sourceCacheDir.
   599 !
   609 !
   600 
   610 
   601 tableColumns
   611 tableColumns
   607     "*** (which may not be the one you wanted)"
   617     "*** (which may not be the one you wanted)"
   608     "*** Please change as required and accept it in the browser."
   618     "*** Please change as required and accept it in the browser."
   609     "*** (and replace this comment by something more useful ;-)"
   619     "*** (and replace this comment by something more useful ;-)"
   610 
   620 
   611     tableColumns isNil ifTrue:[
   621     tableColumns isNil ifTrue:[
   612 	tableColumns := self class tableColumns asValue.
   622         tableColumns := self class tableColumns asValue.
   613 "/ if your app needs to be notified of changes, uncomment one of the lines below:
   623 "/ if your app needs to be notified of changes, uncomment one of the lines below:
   614 "/       tableColumns addDependent:self.
   624 "/       tableColumns addDependent:self.
   615 "/       tableColumns onChangeSend:#tableColumnsChanged to:self.
   625 "/       tableColumns onChangeSend:#tableColumnsChanged to:self.
   616     ].
   626     ].
   617     ^ tableColumns.
   627     ^ tableColumns.
   618 !
   628 !
   619 
   629 
   620 verboseSourceCodeAccess
   630 verboseSourceCodeAccess
   621     verboseSourceCodeAccess isNil ifTrue:[
   631     verboseSourceCodeAccess isNil ifTrue:[
   622 	verboseSourceCodeAccess := false asValue.
   632         verboseSourceCodeAccess := false asValue.
   623 	verboseSourceCodeAccess onChangeSend:#updateModifiedChannel to:self
   633         verboseSourceCodeAccess onChangeSend:#updateModifiedChannel to:self
   624     ].
   634     ].
   625     ^ verboseSourceCodeAccess.
   635     ^ verboseSourceCodeAccess.
   626 ! !
   636 ! !
   627 
   637 
   628 !P4SourceCodeManagementSettingsAppl methodsFor:'change & update'!
   638 !P4SourceCodeManagementSettingsAppl methodsFor:'change & update'!
   637 
   647 
   638     nm := self sourceCacheDir value.
   648     nm := self sourceCacheDir value.
   639     nm isEmptyOrNil ifTrue:[^ self].
   649     nm isEmptyOrNil ifTrue:[^ self].
   640 
   650 
   641     (fn := nm asFilename) exists ifFalse:[
   651     (fn := nm asFilename) exists ifFalse:[
   642 	(self confirm:('SourceCache directory ''' , nm , ''' does not exist.\Create ?' withCRs)) ifTrue:[
   652         (self confirm:('SourceCache directory ''' , nm , ''' does not exist.\Create ?' withCRs)) ifTrue:[
   643 	    fn makeDirectory;
   653             fn makeDirectory;
   644 	       makeReadableForAll;
   654                makeReadableForAll;
   645 	       makeWritableForAll;
   655                makeWritableForAll;
   646 	       makeExecutableForAll.
   656                makeExecutableForAll.
   647 	] ifFalse:[
   657         ] ifFalse:[
   648 	    self sourceCacheDir value:(AbstractSourceCodeManager cacheDirectoryName).
   658             self sourceCacheDir value:(AbstractSourceCodeManager cacheDirectoryName).
   649 	    ^ self.
   659             ^ self.
   650 	].
   660         ].
   651     ].
   661     ].
   652     (fn isDirectory
   662     (fn isDirectory
   653     and:[fn isReadable
   663     and:[fn isReadable
   654     and:[fn isWritable]]) ifTrue:[
   664     and:[fn isWritable]]) ifTrue:[
   655 	AbstractSourceCodeManager cacheDirectoryName:nm.
   665         AbstractSourceCodeManager cacheDirectoryName:nm.
   656     ] ifFalse:[
   666     ] ifFalse:[
   657 	self warn:'Invalid sourceCache directory.'.
   667         self warn:'Invalid sourceCache directory.'.
   658 	self sourceCacheDir value:(AbstractSourceCodeManager cacheDirectoryName).
   668         self sourceCacheDir value:(AbstractSourceCodeManager cacheDirectoryName).
   659     ].
   669     ].
   660 !
   670 !
   661 
   671 
   662 update:something with:aParameter from:changedObject
   672 update:something with:aParameter from:changedObject
   663     "/ common
   673     "/ common
   762 
   772 
   763     |repositoryInfoPerModule|
   773     |repositoryInfoPerModule|
   764 
   774 
   765     repositoryInfoPerModule := Dictionary new.
   775     repositoryInfoPerModule := Dictionary new.
   766     self listOfModules do:[:aModuleManager|
   776     self listOfModules do:[:aModuleManager|
   767 	repositoryInfoPerModule at:aModuleManager module put:aModuleManager settings.
   777         repositoryInfoPerModule at:aModuleManager module put:aModuleManager settings.
   768     ].
   778     ].
   769     ^ repositoryInfoPerModule
   779     ^ repositoryInfoPerModule
   770 ! !
   780 ! !
   771 
   781 
   772 !P4SourceCodeManagementSettingsAppl::ManagerPerModuleApp class methodsFor:'instance creation'!
   782 !P4SourceCodeManagementSettingsAppl::ManagerPerModuleApp class methodsFor:'instance creation'!
   944 !
   954 !
   945 
   955 
   946 defaultSettingsPrototypeList
   956 defaultSettingsPrototypeList
   947 
   957 
   948     defaultSettingsPrototypeList isNil ifTrue:[
   958     defaultSettingsPrototypeList isNil ifTrue:[
   949 	defaultSettingsPrototypeList := sourceCodeManagementSettingsApp perforcePrototypeList.
   959         defaultSettingsPrototypeList := sourceCodeManagementSettingsApp perforcePrototypeList.
   950     ].
   960     ].
   951     ^ defaultSettingsPrototypeList.
   961     ^ defaultSettingsPrototypeList.
   952 !
   962 !
   953 
   963 
   954 sourceCodeManagementSettingsApp
   964 sourceCodeManagementSettingsApp
   970     "*** (which may not be the one you wanted)"
   980     "*** (which may not be the one you wanted)"
   971     "*** Please change as required and accept it in the browser."
   981     "*** Please change as required and accept it in the browser."
   972     "*** (and replace this comment by something more useful ;-)"
   982     "*** (and replace this comment by something more useful ;-)"
   973 
   983 
   974     acceptChannel isNil ifTrue:[
   984     acceptChannel isNil ifTrue:[
   975 	acceptChannel := TriggerValue new.
   985         acceptChannel := TriggerValue new.
   976     ].
   986     ].
   977     ^ acceptChannel.
   987     ^ acceptChannel.
   978 !
   988 !
   979 
   989 
   980 acceptEnableChannel
   990 acceptEnableChannel
   986     "*** (which may not be the one you wanted)"
   996     "*** (which may not be the one you wanted)"
   987     "*** Please change as required and accept it in the browser."
   997     "*** Please change as required and accept it in the browser."
   988     "*** (and replace this comment by something more useful ;-)"
   998     "*** (and replace this comment by something more useful ;-)"
   989 
   999 
   990     acceptEnableChannel isNil ifTrue:[
  1000     acceptEnableChannel isNil ifTrue:[
   991 	acceptEnableChannel := true asValue.
  1001         acceptEnableChannel := true asValue.
   992 "/ if your app needs to be notified of changes, uncomment one of the lines below:
  1002 "/ if your app needs to be notified of changes, uncomment one of the lines below:
   993 "/       acceptEnableChannel addDependent:self.
  1003 "/       acceptEnableChannel addDependent:self.
   994 "/       acceptEnableChannel onChangeSend:#acceptEnableChannelChanged to:self.
  1004 "/       acceptEnableChannel onChangeSend:#acceptEnableChannelChanged to:self.
   995     ].
  1005     ].
   996     ^ acceptEnableChannel.
  1006     ^ acceptEnableChannel.
  1005     "*** (which may not be the one you wanted)"
  1015     "*** (which may not be the one you wanted)"
  1006     "*** Please change as required and accept it in the browser."
  1016     "*** Please change as required and accept it in the browser."
  1007     "*** (and replace this comment by something more useful ;-)"
  1017     "*** (and replace this comment by something more useful ;-)"
  1008 
  1018 
  1009     moduleHolder isNil ifTrue:[
  1019     moduleHolder isNil ifTrue:[
  1010 	moduleHolder := ValueHolder new.
  1020         moduleHolder := ValueHolder new.
  1011 "/ if your app needs to be notified of changes, uncomment one of the lines below:
  1021 "/ if your app needs to be notified of changes, uncomment one of the lines below:
  1012 	moduleHolder addDependent:self.
  1022         moduleHolder addDependent:self.
  1013 "/       moduleHolder onChangeSend:#moduleHolderChanged to:self.
  1023 "/       moduleHolder onChangeSend:#moduleHolderChanged to:self.
  1014     ].
  1024     ].
  1015     ^ moduleHolder.
  1025     ^ moduleHolder.
  1016 !
  1026 !
  1017 
  1027 
  1024     "*** (which may not be the one you wanted)"
  1034     "*** (which may not be the one you wanted)"
  1025     "*** Please change as required and accept it in the browser."
  1035     "*** Please change as required and accept it in the browser."
  1026     "*** (and replace this comment by something more useful ;-)"
  1036     "*** (and replace this comment by something more useful ;-)"
  1027 
  1037 
  1028     settingsHolder isNil ifTrue:[
  1038     settingsHolder isNil ifTrue:[
  1029 	settingsHolder := ValueHolder new.
  1039         settingsHolder := ValueHolder new.
  1030 "/ if your app needs to be notified of changes, uncomment one of the lines below:
  1040 "/ if your app needs to be notified of changes, uncomment one of the lines below:
  1031 "/       settingsHolder addDependent:self.
  1041 "/       settingsHolder addDependent:self.
  1032 "/       settingsHolder onChangeSend:#settingsHolderChanged to:self.
  1042 "/       settingsHolder onChangeSend:#settingsHolderChanged to:self.
  1033     ].
  1043     ].
  1034     ^ settingsHolder.
  1044     ^ settingsHolder.
  1133 ! !
  1143 ! !
  1134 
  1144 
  1135 !P4SourceCodeManagementSettingsAppl class methodsFor:'documentation'!
  1145 !P4SourceCodeManagementSettingsAppl class methodsFor:'documentation'!
  1136 
  1146 
  1137 version_CVS
  1147 version_CVS
  1138     ^ '$Header: /cvs/stx/stx/libtool/PerforceSourceCodeManagementSettingsAppl.st,v 1.3 2011-04-19 10:42:04 cg Exp $'
  1148     ^ '$Header: /cvs/stx/stx/libtool/PerforceSourceCodeManagementSettingsAppl.st,v 1.4 2011-04-19 11:21:57 cg Exp $'
  1139 ! !
  1149 ! !