*** empty log message ***
authorClaus Gittinger <cg@exept.de>
Thu, 07 Sep 2006 17:15:42 +0200
changeset 2082 cb4532367cc0
parent 2081 7bd90dbd7018
child 2083 eb0c83247da7
*** empty log message ***
Tools__ProjectDefinitionEditor.st
--- a/Tools__ProjectDefinitionEditor.st	Thu Sep 07 12:24:07 2006 +0200
+++ b/Tools__ProjectDefinitionEditor.st	Thu Sep 07 17:15:42 2006 +0200
@@ -801,8 +801,8 @@
      the MenuEditor may not be able to read the specification."
 
     "
-     MenuEditor new openOnClass:ApplicationDefinitionEditor andSelector:#classListMenu
-     (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor classListMenu)) startUp
+     MenuEditor new openOnClass:Tools::ProjectDefinitionEditor andSelector:#classListMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::ProjectDefinitionEditor classListMenu)) startUp
     "
 
     <resource: #menu>
@@ -811,6 +811,7 @@
      #(Menu
         (
          (MenuItem
+            enabled: hasDefinitionClassHolder
             label: 'Generate'
             itemValue: menuGenerateClassList
             translateLabel: true
@@ -819,11 +820,13 @@
             label: '-'
           )
          (MenuItem
+            enabled: hasDefinitionClassHolder
             label: 'Add...'
             itemValue: menuAddClass
             translateLabel: true
           )
          (MenuItem
+            enabled: hasDefinitionClassHolder
             label: 'Remove...'
             itemValue: menuRemoveClass
             translateLabel: true
@@ -842,8 +845,8 @@
      the MenuEditor may not be able to read the specification."
 
     "
-     MenuEditor new openOnClass:ApplicationDefinitionEditor andSelector:#extensionsListMenu
-     (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor extensionsListMenu)) startUp
+     MenuEditor new openOnClass:Tools::ProjectDefinitionEditor andSelector:#extensionsListMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::ProjectDefinitionEditor extensionsListMenu)) startUp
     "
 
     <resource: #menu>
@@ -852,6 +855,7 @@
      #(Menu
         (
          (MenuItem
+            enabled: hasDefinitionClassHolder
             label: 'Generate'
             itemValue: menuGenerateExtensionsList
             translateLabel: true
@@ -860,11 +864,13 @@
             label: '-'
           )
          (MenuItem
+            enabled: hasDefinitionClassHolder
             label: 'Add...'
             itemValue: menuAddExtension
             translateLabel: true
           )
          (MenuItem
+            enabled: hasDefinitionClassHolder
             label: 'Remove...'
             itemValue: menuRemoveExtension
             translateLabel: true
@@ -883,8 +889,8 @@
      the MenuEditor may not be able to read the specification."
 
     "
-     MenuEditor new openOnClass:ApplicationDefinitionEditor andSelector:#mainMenu
-     (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor mainMenu)) startUp
+     MenuEditor new openOnClass:Tools::ProjectDefinitionEditor andSelector:#mainMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::ProjectDefinitionEditor mainMenu)) startUp
     "
 
     <resource: #menu>
@@ -915,11 +921,13 @@
                   label: '-'
                 )
                (MenuItem
+                  enabled: hasDefinitionClassHolder
                   label: 'Save'
                   itemValue: menuSave
                   translateLabel: true
                 )
                (MenuItem
+                  enabled: hasDefinitionClassHolder
                   label: 'Save As...'
                   itemValue: menuSaveAs
                   translateLabel: true
@@ -938,6 +946,23 @@
             )
           )
          (MenuItem
+            label: 'Definition'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  enabled: hasDefinitionClassHolder
+                  label: 'Generate Definitions'
+                  itemValue: menuGenerateProjectDefinitions
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
             label: 'Classes'
             translateLabel: true
             isVisible: classesMenuVisibleHolder
@@ -997,8 +1022,8 @@
      the MenuEditor may not be able to read the specification."
 
     "
-     MenuEditor new openOnClass:ApplicationDefinitionEditor andSelector:#extensionsListMenu
-     (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor extensionsListMenu)) startUp
+     MenuEditor new openOnClass:Tools::ProjectDefinitionEditor andSelector:#prerequisitesListMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::ProjectDefinitionEditor prerequisitesListMenu)) startUp
     "
 
     <resource: #menu>
@@ -1007,6 +1032,7 @@
      #(Menu
         (
          (MenuItem
+            enabled: hasDefinitionClassHolder
             label: 'Generate'
             itemValue: menuGeneratePrerequisitesList
             translateLabel: true
@@ -1015,11 +1041,13 @@
             label: '-'
           )
          (MenuItem
+            enabled: hasDefinitionClassHolder
             label: 'Add...'
             itemValue: menuAddPrerequisite
             translateLabel: true
           )
          (MenuItem
+            enabled: hasDefinitionClassHolder
             label: 'Remove...'
             itemValue: menuRemovePrerequisite
             translateLabel: true
@@ -1028,8 +1056,6 @@
         nil
         nil
       )
-
-    "Modified: / 05-09-2006 / 13:24:58 / cg"
 ! !
 
 !ProjectDefinitionEditor class methodsFor:'tableColumns specs'!
@@ -1146,11 +1172,10 @@
 
 definitionClass:aClass
     definitionClass := aClass.
-    self isApplicationDefinitionHolder value:( definitionClass isApplicationDefinition ).
-    self fetchValues.
+    self refetchDefinitionValues.
 
     "Created: / 04-09-2006 / 16:30:18 / cg"
-    "Modified: / 06-09-2006 / 19:25:15 / cg"
+    "Modified: / 07-09-2006 / 12:26:57 / cg"
 !
 
 specClass:aClass
@@ -1510,6 +1535,18 @@
     "Created: / 05-09-2006 / 13:03:16 / cg"
 !
 
+hasDefinitionClass
+    ^ definitionClass notNil
+
+    "Created: / 07-09-2006 / 12:29:10 / cg"
+!
+
+hasDefinitionClassHolder
+    ^ [ self hasDefinitionClass ]
+
+    "Created: / 07-09-2006 / 12:29:22 / cg"
+!
+
 prerequisitesMenuVisibleHolder
     ^ builder booleanValueAspectFor:#'prerequisitesMenuVisibleHolder'
 
@@ -1577,18 +1614,18 @@
             |entry|
 
             entry := PrerequisitesListEntry new.
-            entry packageName:packageName.
+            entry package:packageName.
             entries add:entry.
         ].
 
     ^ entries.
 
     "Created: / 06-09-2006 / 18:45:15 / cg"
-    "Modified: / 07-09-2006 / 12:22:36 / cg"
+    "Modified: / 07-09-2006 / 12:36:21 / cg"
 !
 
 fetchValues
-    |definitionClass isApplicationDefinition className|
+    |definitionClass isApplicationDefinition startupClassName startupSelector|
 
     definitionClass := self definitionClass.
     definitionClass isNil ifTrue:[^ self ].
@@ -1597,13 +1634,14 @@
 
     self isApplicationDefinitionHolder value:isApplicationDefinition.
     isApplicationDefinition ifTrue:[
-        Error handle:[:ex |
-            className := definitionClass name
-        ] do:[
-            className := definitionClass startupClassName
-        ].
-        self startupClassNameHolder value:className.
-        self startupSelectorHolder value:(definitionClass startupSelector).
+        startupClassName := definitionClass name.
+        startupSelector := #start.
+
+        Error handle:[:ex | ] do:[ startupClassName := definitionClass startupClassName].
+        Error handle:[:ex | ] do:[ startupSelector := definitionClass startupSelector].
+        self startupClassNameHolder value:startupClassName.
+        self startupSelectorHolder value:startupSelector.
+
         self iconFileNameHolder value:(definitionClass iconFileName).
         self tabList value:(self class tabListForApplication).
     ] ifFalse:[
@@ -1636,7 +1674,14 @@
                     , ' Definition: ',definitionClass name.
 
     "Created: / 04-09-2006 / 16:34:39 / cg"
-    "Modified: / 07-09-2006 / 12:19:36 / cg"
+    "Modified: / 07-09-2006 / 12:36:10 / cg"
+!
+
+refetchDefinitionValues
+    self isApplicationDefinitionHolder value:( definitionClass isApplicationDefinition ).
+    self fetchValues.
+
+    "Created: / 07-09-2006 / 12:26:54 / cg"
 !
 
 update:something with:parameter from:changedObject
@@ -1694,13 +1739,33 @@
 
 !ProjectDefinitionEditor methodsFor:'menu actions'!
 
-menuGenerateClassList
-    masterApplication
-        generateProjectDefinitionsIn:(Array with:self definitionClass).
+menuGenerateProjectDefinitions
+    |action|
 
-    self classListHolder value:(self fetchClassListEntries).
+    action := [:generator :defClass |
+                    defClass theNonMetaclass 
+                        forEachMethodsCodeToCompileDo:
+                            [:code :category | 
+                                generator  
+                                    compile:code
+                                    forClass:defClass theMetaclass
+                                    inCategory:category.
+                            ]
+                        ignoreOldDefinition:true
+               ].
 
-    "Modified: / 07-09-2006 / 11:35:39 / cg"
+    masterApplication notNil ifTrue:[
+        masterApplication
+            generateUndoableChange:'Generate Project Definitions'
+            overClasses:(Array with:self definitionClass)
+            via:action.
+    ] ifFalse:[
+        action value:Compiler value:self definitionClass
+    ].
+
+    self refetchDefinitionValues
+
+    "Created: / 07-09-2006 / 12:26:22 / cg"
 !
 
 menuNew