*** empty log message ***
authorClaus Gittinger <cg@exept.de>
Tue, 30 Mar 1999 00:14:49 +0200
changeset 1094 b1214f3dc633
parent 1093 311115f31a4d
child 1095 660185e02224
*** empty log message ***
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
+    "
+
+    <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