# HG changeset patch # User Claus Gittinger # Date 922745689 -7200 # Node ID b1214f3dc633707077ea2dff41f70d7f6a5be3a0 # Parent 311115f31a4d317772b5a5da47f201099b287572 *** empty log message *** diff -r 311115f31a4d -r b1214f3dc633 ProjectBrowser.st --- a/ProjectBrowser.st Mon Mar 29 20:14:08 1999 +0200 +++ b/ProjectBrowser.st Tue Mar 30 00:14:49 1999 +0200 @@ -251,11 +251,11 @@ #(#WindowSpec #label: 'NewApplication' #name: 'NewApplication' - #layout: #(#LayoutFrame 140 0 81 0 439 0 380 0) + #layout: #(#LayoutFrame 216 0 173 0 515 0 472 0) #level: 0 #min: #(#Point 10 10) #max: #(#Point 1280 1024) - #bounds: #(#Rectangle 140 81 440 381) + #bounds: #(#Rectangle 216 173 516 473) #usePreferredExtent: false #returnIsOKInDialog: true #escapeIsCancelInDialog: true @@ -293,15 +293,15 @@ #name: 'CheckBox3' #layout: #(#LayoutFrame 0 0.0 66 0 0 1.0 88 0) #tabable: true - #model: #deliverSources + #model: #deliverGZipArchive #translateLabel: true ) #(#CheckBoxSpec - #label: 'Sources' + #label: 'Include Sources' #name: 'CheckBox4' #layout: #(#LayoutFrame 0 0.0 94 0 0 1.0 116 0) #tabable: true - #model: #deliverGZipArchive + #model: #deliverSources #translateLabel: true ) #(#CheckBoxSpec @@ -965,6 +965,44 @@ !ProjectBrowser class methodsFor:'menu specs'! +classItemMenu + "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:ProjectBrowser andSelector:#classItemMenu + (Menu new fromLiteralArrayEncoding:(ProjectBrowser classItemMenu)) startUp + " + + + + ^ + #(#Menu + #( + #(#MenuItem + #label: 'Remove from Project...' + #translateLabel: true + #value: #removeClassFromProject + #enabled: #hasClassesSelectedHolder + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem + #label: 'Browse...' + #translateLabel: true + #value: #browseClass + #enabled: #hasClassesSelectedHolder + ) + ) + nil + nil + ) +! + classesItemMenu "This resource specification was automatically generated by the MenuEditor of ST/X." @@ -994,6 +1032,21 @@ #label: '-' ) #(#MenuItem + #label: 'Load Classes from Directory...' + #translateLabel: true + #value: #loadClassesFromDirectory + #enabled: #canLoadClassesFromDirectory + ) + #(#MenuItem + #label: 'Load Classes from Repository...' + #translateLabel: true + #value: #loadClassesFromRepository + #enabled: #canLoadClassesFromRepository + ) + #(#MenuItem + #label: '-' + ) + #(#MenuItem #label: 'Browse...' #translateLabel: true #value: #browseClasses @@ -1347,6 +1400,22 @@ !ProjectBrowser methodsFor:'aspects'! +browseClass + |node className cls| + + self hasClassNodeSelected ifFalse:[^ self]. + + node := self selectedTreeNode value. + className := node contents value. + cls := Smalltalk at:className. + cls isNil ifTrue:[ + self information:'The class is not (yet) loaded'. + ^ self. + ]. + SystemBrowser openInClass:cls selector:nil. + +! + canAddSelectedProjectToPrerequisites |holder| @@ -1823,7 +1892,9 @@ ]. changedObject == self currentProject ifTrue:[ - self halt + self halt. + self readAspectsFromProject. + self halt. ]. ! ! @@ -1851,7 +1922,6 @@ self hasNodeSelected ifFalse:[ ^ self class noItemMenu ]. - self hasProjectNodeSelected ifTrue:[ ^ self class projectItemMenu ]. @@ -1861,6 +1931,9 @@ self hasClassesNodeSelected ifTrue:[ ^ self class classesItemMenu ]. + self hasClassNodeSelected ifTrue:[ + ^ self class classItemMenu + ]. ^ nil ! @@ -1879,6 +1952,45 @@ and:[aProjectName ~= self currentProject name] ! +canLoadClassesFromDirectory + |p projectDir| + + self hasClassesNodeSelected ifFalse:[^ false]. + + (p := self currentProject) isNil ifTrue:[^ false]. + (projectDir := p directory) size == 0 ifTrue:[^ false]. + projectDir asFilename exists ifFalse:[^ false]. + + ^ true +! + +canLoadClassesFromRepository + |manager p moduleDir packageDir| + + self hasClassesNodeSelected ifFalse:[^ false]. + + (p := self currentProject) isNil ifTrue:[^ false]. + (moduleDir := p repositoryModule) size == 0 ifTrue:[^ false]. + (packageDir := p repositoryDirectory) size == 0 ifTrue:[^ false]. + + "/ SourceCodeManager available ? + + (AbstractSourceCodeManager notNil + and:[AbstractSourceCodeManager isLoaded not]) ifTrue:[ + AbstractSourceCodeManager autoload. + ]. + + AbstractSourceCodeManager isNil ifTrue:[^ false]. + AbstractSourceCodeManager isLoaded ifFalse:[^ false]. + (manager := Smalltalk at:#SourceCodeManager) isNil ifTrue:[^ false]. + + "/ does the repository contain the module/package ? + + (manager checkForExistingModule:moduleDir package:packageDir) ifFalse:[^ false]. + + ^ true +! + currentProject |node| @@ -1895,6 +2007,17 @@ ! +hasClassNodeSelected + |selectedNode| + + selectedNode := self selectedTreeNode value. + selectedNode isNil ifTrue:[^ false]. + + ^ selectedNode contents isAssociation + and:[selectedNode contents key == #class] + +! + hasClassesNodeSelected |selectedNode| @@ -1997,6 +2120,7 @@ cName := aClass isSymbol ifTrue:[aClass] ifFalse:[aClass name]. cNode := ProjectTreeItem name:cName. + cNode contents:(#class -> aClass). classesNode add:cNode. ]. @@ -2055,6 +2179,8 @@ self deliverSources value:(p propertyAt:#deliverSources) ? false. self deliverLoadAllFile value:(p propertyAt:#deliverLoadAllFile) ? false. + self installDirectory value:(p propertyAt:#installDirectory) ? '/opt'. + modifiedChannel value:false. p addDependent:self. ]. @@ -2068,6 +2194,8 @@ p := self currentProject. p notNil ifTrue:[ + p removeDependent:self. + "/ self currentProjectWasNotLoadedFromFile value:p wasLoadedFromFile not. p type:self projectType value. "/ p directory:self projectDirectory value. @@ -2089,7 +2217,9 @@ p propertyAt:#deliverGZipArchive put:self deliverGZipArchive value. p propertyAt:#deliverLoadAllFile put:self deliverLoadAllFile value. -"/ modifiedChannel value:false. + p propertyAt:#installDirectory put:self installDirectory value. + + p addDependent:self. ]. "Created: / 23.3.1999 / 14:16:12 / cg" @@ -2161,6 +2291,8 @@ "save values from aspects into the project" self saveAspectsIntoProject. + modifiedChannel value:false. + ! addToPrerequisites