*** empty log message ***
authorClaus Gittinger <cg@exept.de>
Thu, 07 Sep 2006 12:24:07 +0200
changeset 2081 7bd90dbd7018
parent 2080 b76931b8e953
child 2082 cb4532367cc0
*** empty log message ***
Tools__ProjectDefinitionEditor.st
--- a/Tools__ProjectDefinitionEditor.st	Wed Sep 06 21:50:31 2006 +0200
+++ b/Tools__ProjectDefinitionEditor.st	Thu Sep 07 12:24:07 2006 +0200
@@ -11,7 +11,8 @@
 		fileMinorVersionNrHolder descriptionHolder legalCopyrightHolder
 		isApplicationDefinitionHolder isNonGUIApplicationHolder
 		startSinglethreadedHolder startupClassNameHolder
-		startupSelectorHolder'
+		startupSelectorHolder prerequisitesList classListHolder
+		extensionsListHolder prerequisitesListHolder'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Tools'
@@ -31,6 +32,13 @@
 	privateIn:ProjectDefinitionEditor
 !
 
+Object subclass:#PrerequisitesListEntry
+	instanceVariableNames:'package'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:ProjectDefinitionEditor
+!
+
 !ProjectDefinitionEditor class methodsFor:'documentation'!
 
 documentation
@@ -100,13 +108,15 @@
               menu: classListMenu
               hasHorizontalScrollBar: true
               hasVerticalScrollBar: true
-              dataList: classList
+              dataList: classListHolder
               columnHolder: classesTableColumns
             )
            )
          
         )
       )
+
+    "Modified: / 07-09-2006 / 11:35:14 / cg"
 !
 
 compilationSpec
@@ -474,13 +484,15 @@
               model: selectedExtensionIndexHolder
               hasHorizontalScrollBar: true
               hasVerticalScrollBar: true
-              dataList: extensionsList
+              dataList: extensionsListHolder
               columnHolder: extensionsTableColumns
             )
            )
          
         )
       )
+
+    "Modified: / 07-09-2006 / 11:35:17 / cg"
 !
 
 prerequisitesSpec
@@ -516,7 +528,7 @@
               model: selectedPrerequisitesIndexHolder
               hasHorizontalScrollBar: true
               hasVerticalScrollBar: true
-              dataList: prerequisitesList
+              dataList: prerequisitesListHolder
               columnHolder: prerequisitesTableColumns
             )
            )
@@ -525,6 +537,7 @@
       )
 
     "Created: / 05-09-2006 / 13:21:32 / cg"
+    "Modified: / 07-09-2006 / 11:35:20 / cg"
 !
 
 startupSpec
@@ -1149,13 +1162,13 @@
 
 !ProjectDefinitionEditor methodsFor:'aspects'!
 
-classList
-    classList isNil ifTrue:[
-        classList := #() asValue.
+classListHolder
+    classListHolder isNil ifTrue:[
+        classListHolder := #() asValue.
     ].
-    ^ classList.
+    ^ classListHolder.
 
-    "Modified: / 05-09-2006 / 10:22:35 / cg"
+    "Created: / 07-09-2006 / 11:34:35 / cg"
 !
 
 classesTableColumns
@@ -1185,13 +1198,13 @@
     "Modified: / 04-09-2006 / 17:58:15 / cg"
 !
 
-extensionsList
-    extensionsList isNil ifTrue:[
-        extensionsList := #() asValue.
+extensionsListHolder
+    extensionsListHolder isNil ifTrue:[
+        extensionsListHolder := #() asValue.
     ].
-    ^ extensionsList.
+    ^ extensionsListHolder.
 
-    "Created: / 06-09-2006 / 18:47:54 / cg"
+    "Created: / 07-09-2006 / 11:34:50 / cg"
 !
 
 fileDescriptionHolder
@@ -1366,6 +1379,15 @@
     ^ minorVersionNrHolder.
 !
 
+prerequisitesListHolder
+    prerequisitesListHolder isNil ifTrue:[
+        prerequisitesListHolder := #() asValue.
+    ].
+    ^ prerequisitesListHolder.
+
+    "Created: / 07-09-2006 / 11:35:03 / cg"
+!
+
 productNameHolder
     "automatically generated by UIPainter ..."
 
@@ -1546,8 +1568,27 @@
     "Created: / 06-09-2006 / 18:45:15 / cg"
 !
 
+fetchPrerequisitesListEntries
+    |entries|
+
+    entries := OrderedCollection new.
+    definitionClass 
+        preRequisites do:[:packageName |
+            |entry|
+
+            entry := PrerequisitesListEntry new.
+            entry packageName:packageName.
+            entries add:entry.
+        ].
+
+    ^ entries.
+
+    "Created: / 06-09-2006 / 18:45:15 / cg"
+    "Modified: / 07-09-2006 / 12:22:36 / cg"
+!
+
 fetchValues
-    |definitionClass isApplicationDefinition|
+    |definitionClass isApplicationDefinition className|
 
     definitionClass := self definitionClass.
     definitionClass isNil ifTrue:[^ self ].
@@ -1556,7 +1597,12 @@
 
     self isApplicationDefinitionHolder value:isApplicationDefinition.
     isApplicationDefinition ifTrue:[
-        self startupClassNameHolder value:(definitionClass startupClassName).
+        Error handle:[:ex |
+            className := definitionClass name
+        ] do:[
+            className := definitionClass startupClassName
+        ].
+        self startupClassNameHolder value:className.
         self startupSelectorHolder value:(definitionClass startupSelector).
         self iconFileNameHolder value:(definitionClass iconFileName).
         self tabList value:(self class tabListForApplication).
@@ -1579,8 +1625,9 @@
     self fileRevisionNrHolder value:(definitionClass fileRevisionNr asInteger).
     self fileReleaseNrHolder value:(definitionClass fileReleaseNr asInteger).
 
-    self classList value:(self fetchClassListEntries).
-    self extensionsList value:(self fetchExtensionsListEntries).
+    self classListHolder value:(self fetchClassListEntries).
+    self extensionsListHolder value:(self fetchExtensionsListEntries).
+    self prerequisitesListHolder value:(self fetchPrerequisitesListEntries).
 
     self window 
         label:(isApplicationDefinition 
@@ -1589,7 +1636,7 @@
                     , ' Definition: ',definitionClass name.
 
     "Created: / 04-09-2006 / 16:34:39 / cg"
-    "Modified: / 06-09-2006 / 18:45:45 / cg"
+    "Modified: / 07-09-2006 / 12:19:36 / cg"
 !
 
 update:something with:parameter from:changedObject
@@ -1651,9 +1698,9 @@
     masterApplication
         generateProjectDefinitionsIn:(Array with:self definitionClass).
 
-    self classList value:(self fetchClassListEntries).
+    self classListHolder value:(self fetchClassListEntries).
 
-    "Modified: / 06-09-2006 / 21:36:44 / cg"
+    "Modified: / 07-09-2006 / 11:35:39 / cg"
 !
 
 menuNew
@@ -1665,19 +1712,38 @@
 !
 
 menuOpen
-    self warn:'no action for ''open'' defined.'.
+    |projectID class answer|
 
-    "Modified: / 05-09-2006 / 16:28:51 / cg"
+    projectID := Dialog requestProject:'Project' initialAnswer:'' suggestions:nil.
+    class := ProjectDefinition definitionClassForPackage:projectID.
+    class isNil ifTrue:[
+        answer := Dialog 
+            confirmWithCancel:(resources string:'No Projectdefinition class exists for "%1".\\Create ?' with:projectID allBold)
+            labels:(resources array:#('Cancel' 'Create Library' 'Create Application' ))
+            values:#(nil LibraryDefinition ApplicationDefinition)
+            default:2
+            boxLabel:(resources string:'Create Projectdefinition').
+        answer isNil ifTrue:[^ self].
+    ].
+    answer == #LibraryDefinition ifTrue:[
+        class := LibraryDefinition definitionClassForPackage:projectID createIfAbsent:true
+    ] ifFalse:[
+        class := ApplicationDefinition definitionClassForPackage:projectID createIfAbsent:true
+    ].
+    self definitionClass:class.
+
+    "Modified: / 07-09-2006 / 12:19:58 / cg"
 !
 
 menuRemoveClass
     |classListHolder|
 
-    classListHolder := self classList.
+    classListHolder := self classListHolder.
     classListHolder value removeIndex:(self selectedClassIndexHolder value).
     classListHolder changed.
 
     "Created: / 06-09-2006 / 21:31:05 / cg"
+    "Modified: / 07-09-2006 / 11:35:44 / cg"
 !
 
 menuSave
@@ -1769,10 +1835,11 @@
 selectedClass
     |item|
 
-    item := self classList value at:(self selectedClassIndexHolder value).
+    item := self classListHolder value at:(self selectedClassIndexHolder value).
 self halt.
 
     "Created: / 06-09-2006 / 21:32:20 / cg"
+    "Modified: / 07-09-2006 / 11:35:48 / cg"
 !
 
 selectedTabIndex
@@ -1837,6 +1904,20 @@
     ^ selector
 ! !
 
+!ProjectDefinitionEditor::PrerequisitesListEntry methodsFor:'accessing'!
+
+package
+    ^ package
+
+    "Created: / 07-09-2006 / 12:23:17 / cg"
+!
+
+package:something
+    package := something.
+
+    "Created: / 07-09-2006 / 12:23:19 / cg"
+! !
+
 !ProjectDefinitionEditor class methodsFor:'documentation'!
 
 version