--- 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
+ "
+
+ <resource: #menu>
+
+ ^
+ #(#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