Tools__ProjectDefinitionEditor.st
changeset 2078 67cc88b7b310
child 2079 43f28c0ce813
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__ProjectDefinitionEditor.st	Tue Sep 05 18:46:36 2006 +0200
@@ -0,0 +1,1742 @@
+"{ Package: 'stx:libtool2' }"
+
+"{ NameSpace: Tools }"
+
+ResourceSpecEditor subclass:#ProjectDefinitionEditor
+	instanceVariableNames:'definitionClass classList selectedClassIndexHolder
+		classesTableColumns revisionNrHolder companyNameHolder
+		fileMajorVersionNrHolder minorVersionNrHolder iconFileNameHolder
+		fileReleaseNrHolder productNameHolder majorVersionNrHolder
+		fileRevisionNrHolder fileDescriptionHolder releaseNrHolder
+		fileMinorVersionNrHolder descriptionHolder legalCopyrightHolder
+		isApplicationDefinitionHolder isNonGUIApplicationHolder
+		startSinglethreadedHolder startupClassHolder
+		startupSelectorHolder'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Tools'
+!
+
+Object subclass:#ClassListEntry
+	instanceVariableNames:'className autoloaded win32 unix'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:ProjectDefinitionEditor
+!
+
+!ProjectDefinitionEditor class methodsFor:'documentation'!
+
+documentation
+"
+    unfinished app-definition editor
+
+    [author:]
+        cg (cg@FUSI)
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+!
+
+examples
+"
+  Starting the application:
+                                                                [exBegin]
+    (ProjectDefinitionEditor new
+        definitionClass:stx_libbasic) open
+                                                                [exEnd]
+
+                                                                [exBegin]
+    (ProjectDefinitionEditor new
+        definitionClass:bosch_dapasx_application) open
+                                                                [exEnd]
+"
+! !
+
+!ProjectDefinitionEditor class methodsFor:'interface specs'!
+
+classesSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:ApplicationDefinitionEditor andSelector:#classesSpec
+     ApplicationDefinitionEditor new openInterface:#classesSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: classesSpec
+        window: 
+       (WindowSpec
+          label: 'NewApplication'
+          name: 'NewApplication'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 300 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (DataSetSpec
+              name: 'ClassesTable'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              model: selectedClassIndexHolder
+              hasHorizontalScrollBar: true
+              hasVerticalScrollBar: true
+              dataList: classList
+              columnHolder: classesTableColumns
+            )
+           )
+         
+        )
+      )
+!
+
+compilationSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:ApplicationDefinitionEditor andSelector:#compilationSpec
+     ApplicationDefinitionEditor new openInterface:#compilationSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: compilationSpec
+        window: 
+       (WindowSpec
+          label: 'NewApplication'
+          name: 'NewApplication'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 433 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (FramedBoxSpec
+              label: 'Optimization'
+              name: 'FramedBox1'
+              layout: (LayoutFrame 0 0 0 0 0 1 -57 0.5)
+              labelPosition: topLeft
+              translateLabel: true
+              component: 
+             (SpecCollection
+                collection: (
+                 (LabelSpec
+                    label: 'STC Optimization Flags:'
+                    name: 'Label1'
+                    layout: (LayoutFrame 0 0.0 7 0 160 0 29 0)
+                    translateLabel: true
+                    adjust: right
+                  )
+                 (InputFieldSpec
+                    name: 'STCOptimizationFlagsEntryField'
+                    layout: (LayoutFrame 162 0.0 5 0 0 1.0 27 0)
+                    model: stcOptimizationFlagsHolder
+                    acceptOnReturn: true
+                    acceptOnTab: true
+                    acceptOnLostFocus: true
+                    acceptOnPointerLeave: false
+                  )
+                 (LabelSpec
+                    label: 'CC Optimization Flags:'
+                    name: 'Label2'
+                    layout: (LayoutFrame 0 0.0 35 0 160 0 57 0)
+                    translateLabel: true
+                    adjust: right
+                  )
+                 (InputFieldSpec
+                    name: 'CCOptimizationFlagsEntryField'
+                    layout: (LayoutFrame 162 0.0 33 0 0 1.0 55 0)
+                    model: ccOptimizationFlagsHolder
+                    acceptOnReturn: true
+                    acceptOnTab: true
+                    acceptOnLostFocus: true
+                    acceptOnPointerLeave: false
+                  )
+                 )
+               
+              )
+            )
+           (FramedBoxSpec
+              label: 'Includes'
+              name: 'FramedBox2'
+              layout: (LayoutFrame 0 0 98 0 0 1 10 0.5)
+              labelPosition: topLeft
+              translateLabel: true
+              component: 
+             (SpecCollection
+                collection: (
+                 (LabelSpec
+                    label: 'Additional Includes:'
+                    name: 'Label3'
+                    layout: (LayoutFrame 0 0.0 7 0 160 0 29 0)
+                    translateLabel: true
+                    adjust: right
+                  )
+                 (InputFieldSpec
+                    name: 'IncludeFlagsEntryField'
+                    layout: (LayoutFrame 162 0.0 5 0 0 1.0 27 0)
+                    model: includeFlagsHolder
+                    acceptOnReturn: true
+                    acceptOnTab: true
+                    acceptOnLostFocus: true
+                    acceptOnPointerLeave: false
+                  )
+                 )
+               
+              )
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 05-09-2006 / 13:28:00 / cg"
+!
+
+descriptionSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:ApplicationDefinitionBuilder andSelector:#descriptionSpec
+     ApplicationDefinitionBuilder new openInterface:#descriptionSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: descriptionSpec
+        window: 
+       (WindowSpec
+          label: 'NewApplication'
+          name: 'NewApplication'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 433 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'Company:'
+              name: 'CompanyLabel'
+              layout: (LayoutFrame 2 0.0 13 0 160 0 35 0)
+              translateLabel: true
+              adjust: right
+            )
+           (InputFieldSpec
+              name: 'CompanyEntryField'
+              layout: (LayoutFrame 162 0.0 12 0 -2 1.0 34 0)
+              model: companyNameHolder
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           (LabelSpec
+              label: 'Description:'
+              name: 'DescriptionLabel'
+              layout: (LayoutFrame 2 0.0 39 0 160 0 61 0)
+              translateLabel: true
+              adjust: right
+            )
+           (InputFieldSpec
+              name: 'DescriptionEntryField'
+              layout: (LayoutFrame 162 0.0 38 0 -2 1.0 60 0)
+              model: descriptionHolder
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           (LabelSpec
+              label: 'ProductName:'
+              name: 'ProductNameLabel'
+              layout: (LayoutFrame 2 0.0 65 0 160 0 87 0)
+              translateLabel: true
+              adjust: right
+            )
+           (InputFieldSpec
+              name: 'ProductNameEntryField'
+              layout: (LayoutFrame 162 0.0 64 0 -2 1.0 86 0)
+              model: productNameHolder
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           (LabelSpec
+              label: 'ProductVersion:'
+              name: 'ProductVersionLabel'
+              layout: (LayoutFrame 2 0.0 91 0 160 0 113 0)
+              translateLabel: true
+              adjust: right
+            )
+           (InputFieldSpec
+              name: 'MajorVersionNrEntryField'
+              layout: (LayoutFrame 162 0.0 90 0 182 0.0 112 0)
+              model: majorVersionNrHolder
+              type: number
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           (InputFieldSpec
+              name: 'MinorVersionNrEntryField'
+              layout: (LayoutFrame 184 0.0 90 0 204 0.0 112 0)
+              model: minorVersionNrHolder
+              type: numberOrNil
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           (InputFieldSpec
+              name: 'RevisionNrEntryField'
+              layout: (LayoutFrame 206 0.0 90 0 226 0.0 112 0)
+              model: revisionNrHolder
+              type: number
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           (InputFieldSpec
+              name: 'ReleaseNrEntryField'
+              layout: (LayoutFrame 228 0.0 90 0 248 0.0 112 0)
+              model: releaseNrHolder
+              type: number
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           (LabelSpec
+              label: 'LegalCopyright:'
+              name: 'LegalCopyrightLabel'
+              layout: (LayoutFrame 2 0.0 119 0 160 0 141 0)
+              translateLabel: true
+              adjust: right
+            )
+           (InputFieldSpec
+              name: 'LegalCopyrightEntryField'
+              layout: (LayoutFrame 162 0.0 118 0 -2 1.0 140 0)
+              model: legalCopyrightHolder
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           (LabelSpec
+              label: 'FileDescriptionDescription:'
+              name: 'FileDescriptionLabel'
+              layout: (LayoutFrame 2 0.0 161 0 160 0 183 0)
+              translateLabel: true
+              adjust: right
+            )
+           (InputFieldSpec
+              name: 'FileDescriptionEntryField'
+              layout: (LayoutFrame 162 0.0 160 0 -2 1.0 182 0)
+              model: fileDescriptionHolder
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           (LabelSpec
+              label: 'FileVersion:'
+              name: 'FileVersionLabel'
+              layout: (LayoutFrame 2 0.0 187 0 160 0 209 0)
+              translateLabel: true
+              adjust: right
+            )
+           (InputFieldSpec
+              name: 'FileMajorVersionNrEntryField'
+              layout: (LayoutFrame 162 0.0 186 0 182 0.0 208 0)
+              model: fileMajorVersionNrHolder
+              type: number
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           (InputFieldSpec
+              name: 'FileMinorVersionNrEntryField'
+              layout: (LayoutFrame 184 0.0 186 0 204 0.0 208 0)
+              model: fileMinorVersionNrHolder
+              type: number
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           (InputFieldSpec
+              name: 'FileRevisionNrEntryField'
+              layout: (LayoutFrame 206 0.0 186 0 226 0.0 208 0)
+              model: fileRevisionNrHolder
+              type: number
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           (InputFieldSpec
+              name: 'FileReleaseNrEntryField'
+              layout: (LayoutFrame 228 0.0 186 0 248 0.0 208 0)
+              model: fileReleaseNrHolder
+              type: number
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           (LabelSpec
+              label: 'Icon Filename:'
+              name: 'IconFileNameLabel'
+              layout: (LayoutFrame 2 0.0 236 0 160 0 258 0)
+              visibilityChannel: isApplicationDefinitionHolder
+              translateLabel: true
+              adjust: right
+            )
+           (InputFieldSpec
+              name: 'IconFileNameEntryField'
+              layout: (LayoutFrame 162 0.0 234 0 -2 1.0 256 0)
+              visibilityChannel: isApplicationDefinitionHolder
+              model: iconFilenameHolder
+              acceptOnReturn: true
+              acceptOnTab: true
+              acceptOnLostFocus: true
+              acceptOnPointerLeave: false
+            )
+           )
+         
+        )
+      )
+!
+
+extensionsSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:ApplicationDefinitionEditor andSelector:#extensionsSpec
+     ApplicationDefinitionEditor new openInterface:#extensionsSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: extensionsSpec
+        window: 
+       (WindowSpec
+          label: 'NewApplication'
+          name: 'NewApplication'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 300 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (DataSetSpec
+              name: 'ExtensionsTable'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              model: selectedExtensionIndexHolder
+              hasHorizontalScrollBar: true
+              hasVerticalScrollBar: true
+              dataList: extensionsList
+              columnHolder: extensionsTableColumns
+            )
+           )
+         
+        )
+      )
+!
+
+prerequisitesSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:ApplicationDefinitionEditor andSelector:#extensionsSpec
+     ApplicationDefinitionEditor new openInterface:#extensionsSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: extensionsSpec
+        window: 
+       (WindowSpec
+          label: 'NewApplication'
+          name: 'NewApplication'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 300 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (DataSetSpec
+              name: 'ExtensionsTable'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              model: selectedPrerequisitesIndexHolder
+              hasHorizontalScrollBar: true
+              hasVerticalScrollBar: true
+              dataList: prerequisitesList
+              columnHolder: prerequisitesTableColumns
+            )
+           )
+         
+        )
+      )
+
+    "Created: / 05-09-2006 / 13:21:32 / cg"
+!
+
+startupSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:ApplicationDefinitionEditor andSelector:#startupSpec
+     ApplicationDefinitionEditor new openInterface:#startupSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: startupSpec
+        window: 
+       (WindowSpec
+          label: 'NewApplication'
+          name: 'NewApplication'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 433 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (FramedBoxSpec
+              label: 'Startup'
+              name: 'FramedBox1'
+              layout: (LayoutFrame 0 0 0 0 0 1 -57 0.5)
+              labelPosition: topLeft
+              translateLabel: true
+              component: 
+             (SpecCollection
+                collection: (
+                 (LabelSpec
+                    label: 'Startup Class:'
+                    name: 'Label1'
+                    layout: (LayoutFrame 0 0.0 7 0 160 0 29 0)
+                    translateLabel: true
+                    adjust: right
+                  )
+                 (InputFieldSpec
+                    name: 'StartupClassEntryField'
+                    layout: (LayoutFrame 162 0.0 5 0 0 1.0 27 0)
+                    model: startupClassHolder
+                    acceptOnReturn: true
+                    acceptOnTab: true
+                    acceptOnLostFocus: true
+                    acceptOnPointerLeave: false
+                  )
+                 (LabelSpec
+                    label: 'Startup Selector:'
+                    name: 'Label2'
+                    layout: (LayoutFrame 0 0.0 35 0 160 0 57 0)
+                    translateLabel: true
+                    adjust: right
+                  )
+                 (InputFieldSpec
+                    name: 'StartupSelectorEntryField'
+                    layout: (LayoutFrame 162 0.0 33 0 0 1.0 55 0)
+                    model: startupSelectorHolder
+                    acceptOnReturn: true
+                    acceptOnTab: true
+                    acceptOnLostFocus: true
+                    acceptOnPointerLeave: false
+                  )
+                 )
+               
+              )
+            )
+           (FramedBoxSpec
+              label: 'Execution'
+              name: 'FramedBox2'
+              layout: (LayoutFrame 0 0 97 0 0 1 10 0.5)
+              labelPosition: topLeft
+              translateLabel: true
+              component: 
+             (SpecCollection
+                collection: (
+                 (CheckBoxSpec
+                    label: 'Non-GUI Application'
+                    name: 'CheckBox1'
+                    layout: (LayoutFrame 0 0.0 7 0 0 0.5 29 0)
+                    model: isNonGUIApplicationHolder
+                    translateLabel: true
+                  )
+                 (CheckBoxSpec
+                    label: 'Singlethreaded'
+                    name: 'CheckBox2'
+                    layout: (LayoutFrame 0 0.5 7 0 0 1 29 0)
+                    enableChannel: isNonGUIApplicationHolder
+                    model: startSinglethreadedHolder
+                    translateLabel: true
+                  )
+                 )
+               
+              )
+            )
+           )
+         
+        )
+      )
+!
+
+windowSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:ApplicationDefinitionBuilder andSelector:#windowSpec
+     ApplicationDefinitionBuilder new openInterface:#windowSpec
+     ApplicationDefinitionBuilder open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'ApplicationDefinitionBuilder'
+          name: 'ApplicationDefinitionBuilder'
+          min: (Point 10 10)
+          max: (Point 1024 768)
+          bounds: (Rectangle 0 0 596 339)
+          menu: mainMenu
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (NoteBookViewSpec
+              name: 'NoteBook1'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              model: selectedTabIndexHolder
+              menu: tabList
+              useIndex: true
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 03-09-2006 / 10:57:33 / cg"
+! !
+
+!ProjectDefinitionEditor class methodsFor:'list specs'!
+
+tabListForApplication
+    "This resource specification was automatically generated
+     by the TabListEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the TabListEditor may not be able to read the specification."
+
+    "
+     TabListEditor new openOnClass: self andSelector:#tabList
+    "
+
+    <resource: #tabList>
+
+    ^     #(
+       (TabItem
+          label: 'Classes'
+          createNewBuilder: false
+          translateLabel: true
+          minorKey: classesSpec
+        )
+       (TabItem
+          label: 'Extensions'
+          minorKey: extensionsSpec
+        )
+       (TabItem
+          label: 'Prerequisites'
+          minorKey: prerequisitesSpec
+        )
+       (TabItem
+          label: 'Description'
+          minorKey: descriptionSpec
+        )
+       (TabItem
+          label: 'Compilation'
+          minorKey: compilationSpec
+        )
+       (TabItem
+          label: 'Startup'
+          minorKey: startupSpec
+        )
+       )
+     
+      collect:[:aTab| TabItem new fromLiteralArrayEncoding:aTab ]
+
+    "Created: / 05-09-2006 / 16:24:48 / cg"
+!
+
+tabListForLibrary
+    "This resource specification was automatically generated
+     by the TabListEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the TabListEditor may not be able to read the specification."
+
+    "
+     TabListEditor new openOnClass: self andSelector:#tabList
+    "
+
+    <resource: #tabList>
+
+    ^     #(
+       (TabItem
+          label: 'Classes'
+          createNewBuilder: false
+          translateLabel: true
+          minorKey: classesSpec
+        )
+       (TabItem
+          label: 'Extensions'
+          minorKey: extensionsSpec
+        )
+       (TabItem
+          label: 'Prerequisites'
+          minorKey: prerequisitesSpec
+        )
+       (TabItem
+          label: 'Description'
+          minorKey: descriptionSpec
+        )
+       (TabItem
+          label: 'Compilation'
+          minorKey: compilationSpec
+        )
+       (TabItem
+          label: 'Startup'
+          minorKey: startupSpec
+        )
+       )
+     
+      collect:[:aTab| TabItem new fromLiteralArrayEncoding:aTab ]
+
+    "Created: / 05-09-2006 / 16:24:52 / cg"
+! !
+
+!ProjectDefinitionEditor class methodsFor:'menu specs'!
+
+classListMenu
+    "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:ApplicationDefinitionEditor andSelector:#classListMenu
+     (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor classListMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Generate'
+            itemValue: menuGenerateClassList
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Add...'
+            itemValue: menuAddClass
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'Remove...'
+            itemValue: menuRemoveClass
+            translateLabel: true
+          )
+         )
+        nil
+        nil
+      )
+!
+
+extensionsListMenu
+    "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:ApplicationDefinitionEditor andSelector:#extensionsListMenu
+     (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor extensionsListMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Generate'
+            itemValue: menuGenerateExtensionsList
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Add...'
+            itemValue: menuAddExtension
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'Remove...'
+            itemValue: menuRemoveExtension
+            translateLabel: true
+          )
+         )
+        nil
+        nil
+      )
+!
+
+mainMenu
+    "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:ApplicationDefinitionEditor andSelector:#mainMenu
+     (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor mainMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'File'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'New'
+                  itemValue: menuNew
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Open...'
+                  itemValue: menuOpen
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Save'
+                  itemValue: menuSave
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'Save As...'
+                  itemValue: menuSaveAs
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Exit'
+                  itemValue: closeRequest
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: 'Classes'
+            translateLabel: true
+            isVisible: classesMenuVisibleHolder
+            submenuChannel: classListMenu
+            keepLinkedMenu: true
+          )
+         (MenuItem
+            label: 'Extensions'
+            translateLabel: true
+            isVisible: extensionsMenuVisibleHolder
+            submenuChannel: extensionsListMenu
+            keepLinkedMenu: true
+          )
+         (MenuItem
+            label: 'Prerequisites'
+            translateLabel: true
+            isVisible: prerequisitesMenuVisibleHolder
+            submenuChannel: prerequisitesListMenu
+            keepLinkedMenu: true
+          )
+         (MenuItem
+            label: 'Help'
+            translateLabel: true
+            startGroup: right
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'Documentation'
+                  itemValue: openDocumentation
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'About this Application...'
+                  itemValue: openAboutThisApplication
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+!
+
+prerequisitesListMenu
+    "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:ApplicationDefinitionEditor andSelector:#extensionsListMenu
+     (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor extensionsListMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Generate'
+            itemValue: menuGeneratePrerequisitesList
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Add...'
+            itemValue: menuAddPrerequisite
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'Remove...'
+            itemValue: menuRemovePrerequisite
+            translateLabel: true
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 05-09-2006 / 13:24:58 / cg"
+! !
+
+!ProjectDefinitionEditor class methodsFor:'tableColumns specs'!
+
+classesTableColumns
+    "This resource specification was automatically generated
+     by the DataSetBuilder of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the DataSetBuilder may not be able to read the specification."
+
+    "
+     DataSetBuilder new openOnClass:ApplicationDefinitionEditor andSelector:#classesTableColumns
+    "
+
+    <resource: #tableColumns>
+
+    ^#(
+      (DataSetColumnSpec
+         label: 'Auto'
+         labelButtonType: Button
+         rendererType: CheckToggle
+         model: autoloaded
+       )
+      (DataSetColumnSpec
+         label: 'Win32'
+         labelButtonType: Button
+         rendererType: CheckToggle
+         model: win32
+       )
+      (DataSetColumnSpec
+         label: 'Unix'
+         labelButtonType: Button
+         rendererType: CheckToggle
+         model: unix
+       )
+      (DataSetColumnSpec
+         label: 'Class'
+         labelButtonType: Button
+         model: className
+       )
+      )
+    
+!
+
+extensionsTableColumns
+    "This resource specification was automatically generated
+     by the DataSetBuilder of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the DataSetBuilder may not be able to read the specification."
+
+    "
+     DataSetBuilder new openOnClass:ApplicationDefinitionEditor andSelector:#extensionsTableColumns
+    "
+
+    <resource: #tableColumns>
+
+    ^#(
+      (DataSetColumnSpec
+         label: 'Class'
+         labelButtonType: Button
+         model: className
+       )
+      (DataSetColumnSpec
+         label: 'Selector'
+         labelButtonType: Button
+         model: selector
+       )
+      )
+    
+!
+
+prerequisitesTableColumns
+    "This resource specification was automatically generated
+     by the DataSetBuilder of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the DataSetBuilder may not be able to read the specification."
+
+    "
+     DataSetBuilder new openOnClass:ApplicationDefinitionEditor andSelector:#prerequisitesTableColumns
+    "
+
+    <resource: #tableColumns>
+
+    ^#(
+      (DataSetColumnSpec
+         label: 'Package'
+         labelButtonType: Button
+         model: package
+       )
+      )
+    
+! !
+
+!ProjectDefinitionEditor methodsFor:'accessing'!
+
+definitionClass
+    ^ definitionClass
+
+    "Created: / 04-09-2006 / 16:30:09 / cg"
+!
+
+definitionClass:aClass
+    definitionClass := aClass.
+    self isApplicationDefinitionHolder value:( definitionClass isApplicationDefinition ).
+
+    "Created: / 04-09-2006 / 16:30:18 / cg"
+    "Modified: / 04-09-2006 / 19:22:40 / cg"
+! !
+
+!ProjectDefinitionEditor methodsFor:'aspects'!
+
+classList
+    classList isNil ifTrue:[
+        classList := #() asValue.
+    ].
+    ^ classList.
+
+    "Modified: / 05-09-2006 / 10:22:35 / cg"
+!
+
+classesTableColumns
+    classesTableColumns isNil ifTrue:[
+        classesTableColumns := self class classesTableColumns asValue.
+    ].
+    ^ classesTableColumns.
+
+    "Modified: / 04-09-2006 / 17:58:09 / cg"
+!
+
+companyNameHolder
+    companyNameHolder isNil ifTrue:[
+        companyNameHolder := ValueHolder new.
+    ].
+    ^ companyNameHolder.
+
+    "Created: / 04-09-2006 / 17:58:02 / cg"
+!
+
+descriptionHolder
+    descriptionHolder isNil ifTrue:[
+        descriptionHolder := ValueHolder new.
+    ].
+    ^ descriptionHolder.
+
+    "Modified: / 04-09-2006 / 17:58:15 / cg"
+!
+
+fileDescriptionHolder
+    fileDescriptionHolder isNil ifTrue:[
+        fileDescriptionHolder := ValueHolder new.
+    ].
+    ^ fileDescriptionHolder.
+
+    "Modified: / 04-09-2006 / 17:58:19 / cg"
+!
+
+fileMajorVersionNrHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    fileMajorVersionNrHolder isNil ifTrue:[
+        fileMajorVersionNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       fileMajorVersionNrHolder addDependent:self.
+"/       fileMajorVersionNrHolder onChangeSend:#fileMajorVersionNrHolderChanged to:self.
+    ].
+    ^ fileMajorVersionNrHolder.
+!
+
+fileMinorVersionNrHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    fileMinorVersionNrHolder isNil ifTrue:[
+        fileMinorVersionNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       fileMinorVersionNrHolder addDependent:self.
+"/       fileMinorVersionNrHolder onChangeSend:#fileMinorVersionNrHolderChanged to:self.
+    ].
+    ^ fileMinorVersionNrHolder.
+!
+
+fileReleaseNrHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    fileReleaseNrHolder isNil ifTrue:[
+        fileReleaseNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       fileReleaseNrHolder addDependent:self.
+"/       fileReleaseNrHolder onChangeSend:#fileReleaseNrHolderChanged to:self.
+    ].
+    ^ fileReleaseNrHolder.
+!
+
+fileRevisionNrHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    fileRevisionNrHolder isNil ifTrue:[
+        fileRevisionNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       fileRevisionNrHolder addDependent:self.
+"/       fileRevisionNrHolder onChangeSend:#fileRevisionNrHolderChanged to:self.
+    ].
+    ^ fileRevisionNrHolder.
+!
+
+iconFileNameHolder
+    iconFileNameHolder isNil ifTrue:[
+        iconFileNameHolder := ValueHolder new.
+    ].
+    ^ iconFileNameHolder.
+
+    "Created: / 04-09-2006 / 18:01:22 / cg"
+!
+
+iconFilenameHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    iconFilenameHolder isNil ifTrue:[
+        iconFilenameHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       iconFilenameHolder addDependent:self.
+"/       iconFilenameHolder onChangeSend:#iconFilenameHolderChanged to:self.
+    ].
+    ^ iconFilenameHolder.
+!
+
+isApplicationDefinitionHolder
+    isApplicationDefinitionHolder isNil ifTrue:[
+        isApplicationDefinitionHolder := false asValue
+    ].
+    ^ isApplicationDefinitionHolder.
+
+    "Created: / 04-09-2006 / 19:22:47 / cg"
+!
+
+isNonGUIApplicationHolder
+    isNonGUIApplicationHolder isNil ifTrue:[
+        isNonGUIApplicationHolder := false asValue.
+    ].
+    ^ isNonGUIApplicationHolder.
+
+    "Created: / 05-09-2006 / 13:34:31 / cg"
+!
+
+legalCopyrightHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    legalCopyrightHolder isNil ifTrue:[
+        legalCopyrightHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       legalCopyrightHolder addDependent:self.
+"/       legalCopyrightHolder onChangeSend:#legalCopyrightHolderChanged to:self.
+    ].
+    ^ legalCopyrightHolder.
+!
+
+majorVersionNrHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    majorVersionNrHolder isNil ifTrue:[
+        majorVersionNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       majorVersionNrHolder addDependent:self.
+"/       majorVersionNrHolder onChangeSend:#majorVersionNrHolderChanged to:self.
+    ].
+    ^ majorVersionNrHolder.
+!
+
+minorVersionNrHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    minorVersionNrHolder isNil ifTrue:[
+        minorVersionNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       minorVersionNrHolder addDependent:self.
+"/       minorVersionNrHolder onChangeSend:#minorVersionNrHolderChanged to:self.
+    ].
+    ^ minorVersionNrHolder.
+!
+
+productNameHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    productNameHolder isNil ifTrue:[
+        productNameHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       productNameHolder addDependent:self.
+"/       productNameHolder onChangeSend:#productNameHolderChanged to:self.
+    ].
+    ^ productNameHolder.
+!
+
+releaseNrHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    releaseNrHolder isNil ifTrue:[
+        releaseNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       releaseNrHolder addDependent:self.
+"/       releaseNrHolder onChangeSend:#releaseNrHolderChanged to:self.
+    ].
+    ^ releaseNrHolder.
+!
+
+revisionNrHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    revisionNrHolder isNil ifTrue:[
+        revisionNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       revisionNrHolder addDependent:self.
+"/       revisionNrHolder onChangeSend:#revisionNrHolderChanged to:self.
+    ].
+    ^ revisionNrHolder.
+!
+
+selectedClassIndexHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    selectedClassIndexHolder isNil ifTrue:[
+        selectedClassIndexHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       selectedClassIndexHolder addDependent:self.
+"/       selectedClassIndexHolder onChangeSend:#selectedClassIndexHolderChanged to:self.
+    ].
+    ^ selectedClassIndexHolder.
+!
+
+startSinglethreadedHolder
+    startSinglethreadedHolder isNil ifTrue:[
+        startSinglethreadedHolder := false asValue.
+    ].
+    ^ startSinglethreadedHolder.
+
+    "Created: / 05-09-2006 / 13:34:54 / cg"
+!
+
+startupClassHolder
+    startupClassHolder isNil ifTrue:[
+        startupClassHolder := '' asValue.
+    ].
+    ^ startupClassHolder.
+
+    "Created: / 05-09-2006 / 13:34:08 / cg"
+!
+
+startupSelectorHolder
+    startupSelectorHolder isNil ifTrue:[
+        startupSelectorHolder := '' asValue.
+    ].
+    ^ startupSelectorHolder.
+
+    "Created: / 05-09-2006 / 13:34:20 / cg"
+!
+
+tabList
+    "Generated by the TabListEditor"
+
+    |list|
+
+    (list := builder bindingAt:#tabList) isNil ifTrue:[
+        builder aspectAt:#tabList put:(list := self class tabListForApplication asValue).
+    ].
+    ^ list
+
+    "Modified: / 05-09-2006 / 16:28:09 / cg"
+! !
+
+!ProjectDefinitionEditor methodsFor:'aspects-menu'!
+
+classesMenuVisibleHolder
+    ^ builder booleanValueAspectFor:#'classesMenuVisibleHolder'
+
+    "Modified: / 03-09-2006 / 10:57:00 / cg"
+!
+
+extensionsMenuVisibleHolder
+    ^ builder booleanValueAspectFor:#'extensionsMenuVisibleHolder'
+
+    "Created: / 05-09-2006 / 13:03:16 / cg"
+!
+
+prerequisitesMenuVisibleHolder
+    ^ builder booleanValueAspectFor:#'prerequisitesMenuVisibleHolder'
+
+    "Created: / 05-09-2006 / 13:26:45 / cg"
+!
+
+selectedTabIndexHolder
+    |h|
+
+    h := builder valueAspectFor:#'selectedTabIndexHolder' initialValue:nil.
+    h addDependent:self.
+    ^ h
+
+    "Created: / 03-09-2006 / 10:58:05 / cg"
+! !
+
+!ProjectDefinitionEditor methodsFor:'change & update'!
+
+fetchClassListEntries
+    |entries|
+
+    entries := OrderedCollection new.
+    definitionClass 
+        classNamesAndAttributesDo:[:className :attributes |
+            |entry|
+
+            entry := ClassListEntry new.
+            entry 
+                className:className
+                autoloaded:(attributes includes:#autoload)
+                win32:(attributes includes:#win32) 
+                unix:(attributes includes:#unix).
+            entries add:entry.
+        ].
+
+    ^ entries.
+
+    "Created: / 05-09-2006 / 12:31:26 / cg"
+!
+
+fetchValues
+    |definitionClass isApplicationDefinition|
+
+    definitionClass := self definitionClass.
+    definitionClass isNil ifTrue:[^ self ].
+
+    isApplicationDefinition := definitionClass isApplicationDefinition.
+
+    self isApplicationDefinitionHolder value:isApplicationDefinition.
+    isApplicationDefinition ifTrue:[
+        self startupClassHolder value:(definitionClass startupClass).
+        self startupSelectorHolder value:(definitionClass startupSelector).
+        self iconFileNameHolder value:(definitionClass iconFileName).
+        self tabList value:(self class tabListForApplication).
+    ] ifFalse:[
+        self tabList value:(self class tabListForLibrary).
+    ].
+
+    self companyNameHolder value:(definitionClass companyName).
+    self descriptionHolder value:(definitionClass description).
+    self legalCopyrightHolder value:(definitionClass legalCopyright).
+    self productNameHolder value:(definitionClass productName).
+    self majorVersionNrHolder value:(definitionClass majorVersionNr asInteger).
+    self minorVersionNrHolder value:(definitionClass minorVersionNr asInteger).
+    self revisionNrHolder value:(definitionClass revisionNr asInteger).
+    self releaseNrHolder value:(definitionClass releaseNr asInteger).
+
+    self fileDescriptionHolder value:(definitionClass fileDescription).
+    self fileMajorVersionNrHolder value:(definitionClass fileMajorVersionNr asInteger).
+    self fileMinorVersionNrHolder value:(definitionClass fileMinorVersionNr asInteger).
+    self fileRevisionNrHolder value:(definitionClass fileRevisionNr asInteger).
+    self fileReleaseNrHolder value:(definitionClass fileReleaseNr asInteger).
+
+    self classList value:(self fetchClassListEntries).
+
+    self window 
+        label:(isApplicationDefinition 
+                ifTrue:'Application'
+                ifFalse:'Library' ) 
+                    , ' Definition: ',definitionClass name.
+
+    "Created: / 04-09-2006 / 16:34:39 / cg"
+    "Modified: / 05-09-2006 / 16:26:45 / cg"
+!
+
+update:something with:parameter from:changedObject
+    changedObject == self selectedTabIndexHolder ifTrue:[
+        self updateMenuVisibility.
+        ^ self.
+    ].
+    ^ super update:something with:parameter from:changedObject
+
+    "Created: / 03-09-2006 / 10:59:42 / cg"
+!
+
+updateMenuVisibility
+    self classesMenuVisibleHolder value:(self hasClassesTabSelected).
+    self extensionsMenuVisibleHolder value:(self hasExtensionsTabSelected).
+    self prerequisitesMenuVisibleHolder value:(self hasPrerequisitesTabSelected).
+
+    "Created: / 03-09-2006 / 11:01:48 / cg"
+    "Modified: / 05-09-2006 / 13:27:10 / cg"
+! !
+
+!ProjectDefinitionEditor methodsFor:'initialization & release'!
+
+closeRequest
+    (self hasUnsavedChanges) ifTrue:[
+        (self confirm:(resources string:'Close without saving ?')) ifFalse:[
+            ^ self
+        ]
+    ].
+
+    ^ super closeRequest
+
+    "Modified: / 03-09-2006 / 10:53:14 / cg"
+!
+
+postBuildWith:aBuilder
+    super postBuildWith:aBuilder.
+    self selectedTabIndexHolder value:1.
+    self updateMenuVisibility.
+    self fetchValues.
+
+    "Modified: / 04-09-2006 / 16:28:09 / cg"
+!
+
+postOpenWith:aBuilder
+    "This is a hook method generated by the Browser.
+     It will be invoked right after the applications window has been opened.
+     Add any app-specific actions here (starting background processes etc.).
+     See also #postBuildWith:, which is invoked before opening."
+
+    "/ add any code here ...
+
+    ^ super postOpenWith:aBuilder
+! !
+
+!ProjectDefinitionEditor methodsFor:'menu actions'!
+
+menuNew
+    "This method was generated by the Browser.
+     It will be invoked when the menu-item 'new' is selected."
+
+    "/ change below and add any actions as required here ...
+    self warn:'no action for ''new'' available.'.
+!
+
+menuOpen
+    self warn:'no action for ''open'' defined.'.
+
+    "Modified: / 05-09-2006 / 16:28:51 / cg"
+!
+
+menuSave
+    self menuSaveAs:definitionClass name
+
+    "Modified: / 05-09-2006 / 13:48:27 / cg"
+!
+
+menuSaveAs
+    |className class newPackage|
+
+    className := Dialog 
+                    requestClassName:'Name of new Definition class'
+                    okLabel:'Create'
+                    initialAnswer:'privete_myProject'.
+    className isEmptyOrNil ifTrue:[^ self].
+    class := Smalltalk classNamed:className.
+    class notNil ifTrue:[
+        Dialog warn:(resources 
+                            string:'A class named %1 already exists'
+                            with:className).
+        ^ self.
+    ].
+    newPackage := className copy replaceAll:$_ with:$/.
+    newPackage replace:$/ with:$:.
+    class := ApplicationDefinition newNamed:className package:newPackage.
+    self menuSaveAs:class.
+
+    "Modified: / 05-09-2006 / 16:20:16 / cg"
+!
+
+menuSaveAs:aClassName
+    self halt.
+
+    "Created: / 05-09-2006 / 13:48:03 / cg"
+!
+
+openAboutThisApplication
+    "This method was generated by the Browser.
+     It will be invoked when the menu-item 'help-about' is selected."
+
+    "/ could open a customized aboutBox here ...
+    super openAboutThisApplication
+!
+
+openDocumentation
+    "This method was generated by the Browser.
+     It will be invoked when the menu-item 'help-documentation' is selected."
+
+    "/ change below as required ...
+
+    "/ to open an HTML viewer on some document (under 'doc/online/<language>/' ):
+    HTMLDocumentView openFullOnDocumentationFile:'TOP.html'.
+
+    "/ add application-specific help files under the 'doc/online/<language>/help/appName'
+    "/ directory, and open a viewer with:
+    "/ HTMLDocumentView openFullOnDocumentationFile:'help/<MyApplication>/TOP.html'.
+! !
+
+!ProjectDefinitionEditor methodsFor:'queries'!
+
+hasClassesTabSelected
+    ^ self selectedTabIndex == 1
+
+    "Created: / 03-09-2006 / 11:00:39 / cg"
+!
+
+hasExtensionsTabSelected
+    ^ self selectedTabIndex == 2
+
+    "Created: / 05-09-2006 / 13:02:26 / cg"
+!
+
+hasPrerequisitesTabSelected
+    ^ self selectedTabIndex == 3
+
+    "Created: / 05-09-2006 / 13:27:16 / cg"
+!
+
+hasUnsavedChanges
+     ^ false
+
+    "Created: / 03-09-2006 / 10:53:05 / cg"
+!
+
+selectedTabIndex
+    ^ self selectedTabIndexHolder value
+
+    "Created: / 03-09-2006 / 11:00:48 / cg"
+! !
+
+!ProjectDefinitionEditor::ClassListEntry methodsFor:'accessing'!
+
+autoloaded
+    ^ autoloaded
+!
+
+autoloaded:something
+    autoloaded := something.
+!
+
+className
+    ^ className
+!
+
+className:something
+    className := something.
+!
+
+className:classNameArg autoloaded:autoloadedArg win32:win32Arg unix:unixArg 
+    className := classNameArg.
+    autoloaded := autoloadedArg.
+    win32 := win32Arg.
+    unix := unixArg.
+!
+
+unix
+    ^ unix
+!
+
+unix:something
+    unix := something.
+!
+
+win32
+    ^ win32
+!
+
+win32:something
+    win32 := something.
+! !
+
+!ProjectDefinitionEditor class methodsFor:'documentation'!
+
+version
+    ^ '$Header$'
+! !