Tools__ProjectBuilderAssistantApplication.st
changeset 2671 48cb061347ef
parent 2670 f2e117783c83
child 2674 3f61bdc7e0dc
--- a/Tools__ProjectBuilderAssistantApplication.st	Thu Oct 22 22:17:50 2009 +0200
+++ b/Tools__ProjectBuilderAssistantApplication.st	Thu Oct 22 22:48:52 2009 +0200
@@ -7,6 +7,7 @@
 		selectedProjectIndexHolder selectedProjectDefinition
 		listOfMatchingProjects selectedProjectsComment
 		hasProjectSelectedHolder newProjectsName hideSTXProjects
+		hideOtherApplicationClasses hideOtherStartupClasses
 		startMakeButtonEnabled stopMakeButtonVisible makeOutputHolder
 		newApplicationsName listOfApplicationsInProject
 		selectedApplicationIndexHolder selectedApplication
@@ -345,7 +346,7 @@
           label: 'Application Selection'
           name: 'Application Selection'
           min: (Point 0 0)
-          bounds: (Rectangle 0 0 521 408)
+          bounds: (Rectangle 0 0 519 406)
         )
         component: 
        (SpecCollection
@@ -390,7 +391,7 @@
                 collection: (
                  (VariableHorizontalPanelSpec
                     name: 'VariableHorizontalPanel2'
-                    layout: (LayoutFrame 0 0 4 0 0 1 0 1)
+                    layout: (LayoutFrame 0 0 4 0 0 1 -26 1)
                     component: 
                    (SpecCollection
                       collection: (
@@ -401,6 +402,7 @@
                           hasVerticalScrollBar: true
                           useIndex: true
                           sequenceList: listOfApplicationsInProject
+                          ignoreReselect: false
                         )
                        (TextEditorSpec
                           name: 'TextEditor2'
@@ -416,6 +418,13 @@
                     )
                     handles: (Any 0.34560327198364 1.0)
                   )
+                 (CheckBoxSpec
+                    label: 'Hide other Application Classes'
+                    name: 'CheckBox1'
+                    layout: (LayoutFrame -1 0 -18 1 0 1 4 1)
+                    model: hideOtherApplicationClasses
+                    translateLabel: true
+                  )
                  )
                
               )
@@ -523,7 +532,7 @@
                 collection: (
                  (VariableHorizontalPanelSpec
                     name: 'VariableHorizontalPanel2'
-                    layout: (LayoutFrame 0 0 4 0 0 1 0 1)
+                    layout: (LayoutFrame 0 0 4 0 0 1 -26 1)
                     component: 
                    (SpecCollection
                       collection: (
@@ -549,6 +558,13 @@
                     )
                     handles: (Any 0.34560327198364 1.0)
                   )
+                 (CheckBoxSpec
+                    label: 'Hide other Startup Classes'
+                    name: 'CheckBox1'
+                    layout: (LayoutFrame -1 0 -20 1 0 1 2 1)
+                    model: hideOtherStartupClasses
+                    translateLabel: true
+                  )
                  )
                
               )
@@ -1124,10 +1140,13 @@
 !
 
 selectedApplicationChanged
-    self selectedApplicationIndexHolder value isNil ifTrue:[
+    |idx|
+
+    ((idx := self selectedApplicationIndexHolder value) isNil
+    or:[idx == 0]) ifTrue:[
         selectedApplication := nil.
     ] ifFalse:[
-        selectedApplication := self listOfApplicationsInProject value at:(self selectedApplicationIndexHolder value).
+        selectedApplication := self listOfApplicationsInProject value at:idx.
     ].
     self hasApplicationSelectedHolder value:(selectedApplication notNil).
 
@@ -1235,6 +1254,26 @@
     ^ hasStartupClassSelectedHolder.
 !
 
+hideOtherApplicationClasses
+    <resource: #uiAspect>
+
+    hideOtherApplicationClasses isNil ifTrue:[
+        hideOtherApplicationClasses := true asValue.
+        hideOtherApplicationClasses onChangeSend:#updateListOfApplicationsInProject to:self.
+    ].
+    ^ hideOtherApplicationClasses.
+!
+
+hideOtherStartupClasses
+    <resource: #uiAspect>
+
+    hideOtherStartupClasses isNil ifTrue:[
+        hideOtherStartupClasses := true asValue.
+        hideOtherStartupClasses onChangeSend:#updateListOfStartupClassesInProject to:self.
+    ].
+    ^ hideOtherStartupClasses.
+!
+
 hideSTXProjects
     <resource: #uiAspect>
 
@@ -1562,7 +1601,7 @@
 !
 
 canEnterStartupClassSelection
-    ^ self hasProjectSelected and:[ self hasApplicationSelected ]
+    ^ self hasProjectSelected "and:[ self hasApplicationSelected ]"
 ! !
 
 !ProjectBuilderAssistantApplication methodsFor:'specs'!
@@ -1593,7 +1632,8 @@
             enterCallbackSelector: updateListOfApplicationsInProject
             infoText: 'Choose an existing application or create a new one.
                        These are subclasses of <I>ApplicationModel</I> and define
-                       the GUI and control flow inside the application.'
+                       the GUI and control flow inside the application.
+                       Can also be left blank if the startup class does it all (stx build).'
         )
 
         (AssistantPageSpec
@@ -1703,8 +1743,7 @@
 !
 
 updateListOfApplicationsInProject
-    |oldList applicationClasses package startUpClassName startUpClass 
-     appClass appClassIndex|
+    |oldList applicationClasses package appClass appClassIndex|
 
     appClassIndex := nil.
 
@@ -1715,8 +1754,9 @@
 
         applicationClasses := Smalltalk allClasses
                                     select:[:cls |
-                                        (cls package = package
-                                        and:[ cls isSubclassOf:ApplicationModel ])
+                                        ((cls isSubclassOf:ApplicationModel)
+                                        and:[ self hideOtherApplicationClasses value not
+                                              or:[ cls package = package ]])
                                     ].
         applicationClasses := applicationClasses asOrderedCollection.
         applicationClasses sort:[:a :b | a name < b name].
@@ -1799,8 +1839,9 @@
 
         startupClasses := Smalltalk allClasses
                                     select:[:cls |
-                                        (cls package = package
-                                        and:[ cls isSubclassOf:StandaloneStartup ])
+                                        ((cls includesBehavior:StandaloneStartup)
+                                        and:[ self hideOtherStartupClasses value not
+                                              or:[ cls package = package ]])
                                     ].
         startupClasses := startupClasses asOrderedCollection.
         startupClasses sort:[:a :b | a name < b name].