ProjectBrowser.st
changeset 1116 710c9297a9fc
parent 1114 7fd86e9a6a11
child 1147 422c8afcb0f5
--- a/ProjectBrowser.st	Sat Apr 24 17:46:36 1999 +0200
+++ b/ProjectBrowser.st	Tue Apr 27 09:42:31 1999 +0200
@@ -1396,35 +1396,37 @@
 
     <resource: #menu>
 
-    ^
-     
-       #(#Menu
-          
-           #(
-             #(#MenuItem
-                #label: 'New...'
-                #translateLabel: true
-                #isButton: true
-                #value: #newProject
-                #labelImage: #(#ResourceRetriever #Icon #newIcon)
-            )
-             #(#MenuItem
-                #label: 'Open...'
-                #translateLabel: true
-                #isButton: true
-                #value: #openProject
-                #labelImage: #(#ResourceRetriever #Icon #loadIcon)
-            )
-             #(#MenuItem
-                #label: 'SaveAs...'
-                #translateLabel: true
-                #isButton: true
-                #value: #saveProject
-                #labelImage: #(#ResourceRetriever #Icon #saveIcon)
-            )
-          ) nil
-          nil
+    ^ 
+     #(#Menu
+        #(
+         #(#MenuItem
+            #label: 'New...'
+            #translateLabel: true
+            #isButton: true
+            #value: #newProject
+            #labelImage: #(#ResourceRetriever #Icon #newIcon)
+          )
+         #(#MenuItem
+            #label: 'Open...'
+            #translateLabel: true
+            #isButton: true
+            #value: #openProject
+            #labelImage: #(#ResourceRetriever #Icon #loadIcon)
+          )
+         #(#MenuItem
+            #label: 'SaveAs...'
+            #translateLabel: true
+            #isButton: true
+            #value: #saveProject
+            #enabled: #hasProjectSelectedHolder
+            #labelImage: #(#ResourceRetriever #Icon #saveIcon)
+          )
+         )
+        nil
+        nil
       )
+
+    "Modified: / 26.4.1999 / 22:45:25 / cg"
 !
 
 noItemMenu
@@ -1869,9 +1871,15 @@
 !
 
 hasProjectSelectedHolder
-    ^ [
-        self hasProjectNodeSelected
-      ]
+    |holder|
+
+    (holder := builder bindingAt:#hasProjectSelectedHolder) isNil ifTrue:[
+        holder := false asValue.
+        builder aspectAt:#hasProjectSelectedHolder put:holder.
+    ].
+    ^ holder.
+
+    "Modified: / 26.4.1999 / 22:47:33 / cg"
 !
 
 hasSubProjectsSelectedHolder
@@ -2188,8 +2196,9 @@
 
     changedObject == self currentProject ifTrue:[
         self readAspectsFromProject.
-        self halt.
     ].
+
+    "Modified: / 26.4.1999 / 23:39:04 / cg"
 ! !
 
 !ProjectBrowser methodsFor:'initialization'!
@@ -2504,7 +2513,7 @@
 !
 
 readAspectsFromProject
-    |p|
+    |p l|
 
     p := self currentProject.
     p notNil ifTrue:[
@@ -2529,6 +2538,20 @@
 
         self installDirectory value:(p propertyAt:#installDirectory) ? '/opt'.
 
+        l := p prerequisitePackages collect:[:entry |
+                    |pName|
+
+                    entry isString ifTrue:[
+                        pName := entry
+                    ] ifFalse:[
+                        entry isArray ifTrue:[
+                            pName := entry at:1
+                        ] ifFalse:[
+                            pName := entry name
+                        ]
+                    ]
+                ].
+        self listOfRequiredProjectsInPrerequisites value:(l sort).
         self listOfRequiredClassesInPrerequisites value:(p prerequisiteClasses copy sort).
 
         modifiedChannel value:false.
@@ -2536,7 +2559,7 @@
     ].
 
     "Created: / 23.3.1999 / 14:16:12 / cg"
-    "Modified: / 23.3.1999 / 14:18:38 / cg"
+    "Modified: / 26.4.1999 / 23:38:14 / cg"
 !
 
 saveAspectsIntoProject
@@ -2786,7 +2809,11 @@
         action value:item.
     ].
 
-    self valueOfInfoLabel value: item info
+    self valueOfInfoLabel value: item info.
+
+    self hasProjectSelectedHolder value:self hasProjectNodeSelected.
+
+    "Modified: / 26.4.1999 / 22:49:20 / cg"
 !
 
 loadClassesFromDirectory
@@ -2926,6 +2953,10 @@
     ].
 
     p := self currentProject.
+    p isNil ifTrue:[
+        self information:'Selet a project first.'.
+        ^self
+    ].
     p directory isNil ifTrue:[
         d := (Dialog request:'Project Directory:').
         d size == 0 ifTrue:[
@@ -2935,6 +2966,8 @@
     ].
 
     p saveAsProjectFile.
+
+    "Modified: / 26.4.1999 / 22:43:57 / cg"
 !
 
 selectionChangeAllowed:newNode