Tools__ProjectDefinitionEditor.st
changeset 2082 cb4532367cc0
parent 2081 7bd90dbd7018
child 2100 4a7a7734e30c
equal deleted inserted replaced
2081:7bd90dbd7018 2082:cb4532367cc0
   799 
   799 
   800     "Do not manually edit this!! If it is corrupted,
   800     "Do not manually edit this!! If it is corrupted,
   801      the MenuEditor may not be able to read the specification."
   801      the MenuEditor may not be able to read the specification."
   802 
   802 
   803     "
   803     "
   804      MenuEditor new openOnClass:ApplicationDefinitionEditor andSelector:#classListMenu
   804      MenuEditor new openOnClass:Tools::ProjectDefinitionEditor andSelector:#classListMenu
   805      (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor classListMenu)) startUp
   805      (Menu new fromLiteralArrayEncoding:(Tools::ProjectDefinitionEditor classListMenu)) startUp
   806     "
   806     "
   807 
   807 
   808     <resource: #menu>
   808     <resource: #menu>
   809 
   809 
   810     ^ 
   810     ^ 
   811      #(Menu
   811      #(Menu
   812         (
   812         (
   813          (MenuItem
   813          (MenuItem
       
   814             enabled: hasDefinitionClassHolder
   814             label: 'Generate'
   815             label: 'Generate'
   815             itemValue: menuGenerateClassList
   816             itemValue: menuGenerateClassList
   816             translateLabel: true
   817             translateLabel: true
   817           )
   818           )
   818          (MenuItem
   819          (MenuItem
   819             label: '-'
   820             label: '-'
   820           )
   821           )
   821          (MenuItem
   822          (MenuItem
       
   823             enabled: hasDefinitionClassHolder
   822             label: 'Add...'
   824             label: 'Add...'
   823             itemValue: menuAddClass
   825             itemValue: menuAddClass
   824             translateLabel: true
   826             translateLabel: true
   825           )
   827           )
   826          (MenuItem
   828          (MenuItem
       
   829             enabled: hasDefinitionClassHolder
   827             label: 'Remove...'
   830             label: 'Remove...'
   828             itemValue: menuRemoveClass
   831             itemValue: menuRemoveClass
   829             translateLabel: true
   832             translateLabel: true
   830           )
   833           )
   831          )
   834          )
   840 
   843 
   841     "Do not manually edit this!! If it is corrupted,
   844     "Do not manually edit this!! If it is corrupted,
   842      the MenuEditor may not be able to read the specification."
   845      the MenuEditor may not be able to read the specification."
   843 
   846 
   844     "
   847     "
   845      MenuEditor new openOnClass:ApplicationDefinitionEditor andSelector:#extensionsListMenu
   848      MenuEditor new openOnClass:Tools::ProjectDefinitionEditor andSelector:#extensionsListMenu
   846      (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor extensionsListMenu)) startUp
   849      (Menu new fromLiteralArrayEncoding:(Tools::ProjectDefinitionEditor extensionsListMenu)) startUp
   847     "
   850     "
   848 
   851 
   849     <resource: #menu>
   852     <resource: #menu>
   850 
   853 
   851     ^ 
   854     ^ 
   852      #(Menu
   855      #(Menu
   853         (
   856         (
   854          (MenuItem
   857          (MenuItem
       
   858             enabled: hasDefinitionClassHolder
   855             label: 'Generate'
   859             label: 'Generate'
   856             itemValue: menuGenerateExtensionsList
   860             itemValue: menuGenerateExtensionsList
   857             translateLabel: true
   861             translateLabel: true
   858           )
   862           )
   859          (MenuItem
   863          (MenuItem
   860             label: '-'
   864             label: '-'
   861           )
   865           )
   862          (MenuItem
   866          (MenuItem
       
   867             enabled: hasDefinitionClassHolder
   863             label: 'Add...'
   868             label: 'Add...'
   864             itemValue: menuAddExtension
   869             itemValue: menuAddExtension
   865             translateLabel: true
   870             translateLabel: true
   866           )
   871           )
   867          (MenuItem
   872          (MenuItem
       
   873             enabled: hasDefinitionClassHolder
   868             label: 'Remove...'
   874             label: 'Remove...'
   869             itemValue: menuRemoveExtension
   875             itemValue: menuRemoveExtension
   870             translateLabel: true
   876             translateLabel: true
   871           )
   877           )
   872          )
   878          )
   881 
   887 
   882     "Do not manually edit this!! If it is corrupted,
   888     "Do not manually edit this!! If it is corrupted,
   883      the MenuEditor may not be able to read the specification."
   889      the MenuEditor may not be able to read the specification."
   884 
   890 
   885     "
   891     "
   886      MenuEditor new openOnClass:ApplicationDefinitionEditor andSelector:#mainMenu
   892      MenuEditor new openOnClass:Tools::ProjectDefinitionEditor andSelector:#mainMenu
   887      (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor mainMenu)) startUp
   893      (Menu new fromLiteralArrayEncoding:(Tools::ProjectDefinitionEditor mainMenu)) startUp
   888     "
   894     "
   889 
   895 
   890     <resource: #menu>
   896     <resource: #menu>
   891 
   897 
   892     ^ 
   898     ^ 
   913                 )
   919                 )
   914                (MenuItem
   920                (MenuItem
   915                   label: '-'
   921                   label: '-'
   916                 )
   922                 )
   917                (MenuItem
   923                (MenuItem
       
   924                   enabled: hasDefinitionClassHolder
   918                   label: 'Save'
   925                   label: 'Save'
   919                   itemValue: menuSave
   926                   itemValue: menuSave
   920                   translateLabel: true
   927                   translateLabel: true
   921                 )
   928                 )
   922                (MenuItem
   929                (MenuItem
       
   930                   enabled: hasDefinitionClassHolder
   923                   label: 'Save As...'
   931                   label: 'Save As...'
   924                   itemValue: menuSaveAs
   932                   itemValue: menuSaveAs
   925                   translateLabel: true
   933                   translateLabel: true
   926                 )
   934                 )
   927                (MenuItem
   935                (MenuItem
   928                   label: '-'
   936                   label: '-'
   929                 )
   937                 )
   930                (MenuItem
   938                (MenuItem
   931                   label: 'Exit'
   939                   label: 'Exit'
   932                   itemValue: closeRequest
   940                   itemValue: closeRequest
       
   941                   translateLabel: true
       
   942                 )
       
   943                )
       
   944               nil
       
   945               nil
       
   946             )
       
   947           )
       
   948          (MenuItem
       
   949             label: 'Definition'
       
   950             translateLabel: true
       
   951             submenu: 
       
   952            (Menu
       
   953               (
       
   954                (MenuItem
       
   955                   enabled: hasDefinitionClassHolder
       
   956                   label: 'Generate Definitions'
       
   957                   itemValue: menuGenerateProjectDefinitions
   933                   translateLabel: true
   958                   translateLabel: true
   934                 )
   959                 )
   935                )
   960                )
   936               nil
   961               nil
   937               nil
   962               nil
   995 
  1020 
   996     "Do not manually edit this!! If it is corrupted,
  1021     "Do not manually edit this!! If it is corrupted,
   997      the MenuEditor may not be able to read the specification."
  1022      the MenuEditor may not be able to read the specification."
   998 
  1023 
   999     "
  1024     "
  1000      MenuEditor new openOnClass:ApplicationDefinitionEditor andSelector:#extensionsListMenu
  1025      MenuEditor new openOnClass:Tools::ProjectDefinitionEditor andSelector:#prerequisitesListMenu
  1001      (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor extensionsListMenu)) startUp
  1026      (Menu new fromLiteralArrayEncoding:(Tools::ProjectDefinitionEditor prerequisitesListMenu)) startUp
  1002     "
  1027     "
  1003 
  1028 
  1004     <resource: #menu>
  1029     <resource: #menu>
  1005 
  1030 
  1006     ^ 
  1031     ^ 
  1007      #(Menu
  1032      #(Menu
  1008         (
  1033         (
  1009          (MenuItem
  1034          (MenuItem
       
  1035             enabled: hasDefinitionClassHolder
  1010             label: 'Generate'
  1036             label: 'Generate'
  1011             itemValue: menuGeneratePrerequisitesList
  1037             itemValue: menuGeneratePrerequisitesList
  1012             translateLabel: true
  1038             translateLabel: true
  1013           )
  1039           )
  1014          (MenuItem
  1040          (MenuItem
  1015             label: '-'
  1041             label: '-'
  1016           )
  1042           )
  1017          (MenuItem
  1043          (MenuItem
       
  1044             enabled: hasDefinitionClassHolder
  1018             label: 'Add...'
  1045             label: 'Add...'
  1019             itemValue: menuAddPrerequisite
  1046             itemValue: menuAddPrerequisite
  1020             translateLabel: true
  1047             translateLabel: true
  1021           )
  1048           )
  1022          (MenuItem
  1049          (MenuItem
       
  1050             enabled: hasDefinitionClassHolder
  1023             label: 'Remove...'
  1051             label: 'Remove...'
  1024             itemValue: menuRemovePrerequisite
  1052             itemValue: menuRemovePrerequisite
  1025             translateLabel: true
  1053             translateLabel: true
  1026           )
  1054           )
  1027          )
  1055          )
  1028         nil
  1056         nil
  1029         nil
  1057         nil
  1030       )
  1058       )
  1031 
       
  1032     "Modified: / 05-09-2006 / 13:24:58 / cg"
       
  1033 ! !
  1059 ! !
  1034 
  1060 
  1035 !ProjectDefinitionEditor class methodsFor:'tableColumns specs'!
  1061 !ProjectDefinitionEditor class methodsFor:'tableColumns specs'!
  1036 
  1062 
  1037 classesTableColumns
  1063 classesTableColumns
  1144     "Created: / 04-09-2006 / 16:30:09 / cg"
  1170     "Created: / 04-09-2006 / 16:30:09 / cg"
  1145 !
  1171 !
  1146 
  1172 
  1147 definitionClass:aClass
  1173 definitionClass:aClass
  1148     definitionClass := aClass.
  1174     definitionClass := aClass.
  1149     self isApplicationDefinitionHolder value:( definitionClass isApplicationDefinition ).
  1175     self refetchDefinitionValues.
  1150     self fetchValues.
       
  1151 
  1176 
  1152     "Created: / 04-09-2006 / 16:30:18 / cg"
  1177     "Created: / 04-09-2006 / 16:30:18 / cg"
  1153     "Modified: / 06-09-2006 / 19:25:15 / cg"
  1178     "Modified: / 07-09-2006 / 12:26:57 / cg"
  1154 !
  1179 !
  1155 
  1180 
  1156 specClass:aClass
  1181 specClass:aClass
  1157     super specClass:aClass.
  1182     super specClass:aClass.
  1158     self definitionClass:aClass theNonMetaclass.
  1183     self definitionClass:aClass theNonMetaclass.
  1506 
  1531 
  1507 extensionsMenuVisibleHolder
  1532 extensionsMenuVisibleHolder
  1508     ^ builder booleanValueAspectFor:#'extensionsMenuVisibleHolder'
  1533     ^ builder booleanValueAspectFor:#'extensionsMenuVisibleHolder'
  1509 
  1534 
  1510     "Created: / 05-09-2006 / 13:03:16 / cg"
  1535     "Created: / 05-09-2006 / 13:03:16 / cg"
       
  1536 !
       
  1537 
       
  1538 hasDefinitionClass
       
  1539     ^ definitionClass notNil
       
  1540 
       
  1541     "Created: / 07-09-2006 / 12:29:10 / cg"
       
  1542 !
       
  1543 
       
  1544 hasDefinitionClassHolder
       
  1545     ^ [ self hasDefinitionClass ]
       
  1546 
       
  1547     "Created: / 07-09-2006 / 12:29:22 / cg"
  1511 !
  1548 !
  1512 
  1549 
  1513 prerequisitesMenuVisibleHolder
  1550 prerequisitesMenuVisibleHolder
  1514     ^ builder booleanValueAspectFor:#'prerequisitesMenuVisibleHolder'
  1551     ^ builder booleanValueAspectFor:#'prerequisitesMenuVisibleHolder'
  1515 
  1552 
  1575     definitionClass 
  1612     definitionClass 
  1576         preRequisites do:[:packageName |
  1613         preRequisites do:[:packageName |
  1577             |entry|
  1614             |entry|
  1578 
  1615 
  1579             entry := PrerequisitesListEntry new.
  1616             entry := PrerequisitesListEntry new.
  1580             entry packageName:packageName.
  1617             entry package:packageName.
  1581             entries add:entry.
  1618             entries add:entry.
  1582         ].
  1619         ].
  1583 
  1620 
  1584     ^ entries.
  1621     ^ entries.
  1585 
  1622 
  1586     "Created: / 06-09-2006 / 18:45:15 / cg"
  1623     "Created: / 06-09-2006 / 18:45:15 / cg"
  1587     "Modified: / 07-09-2006 / 12:22:36 / cg"
  1624     "Modified: / 07-09-2006 / 12:36:21 / cg"
  1588 !
  1625 !
  1589 
  1626 
  1590 fetchValues
  1627 fetchValues
  1591     |definitionClass isApplicationDefinition className|
  1628     |definitionClass isApplicationDefinition startupClassName startupSelector|
  1592 
  1629 
  1593     definitionClass := self definitionClass.
  1630     definitionClass := self definitionClass.
  1594     definitionClass isNil ifTrue:[^ self ].
  1631     definitionClass isNil ifTrue:[^ self ].
  1595 
  1632 
  1596     isApplicationDefinition := definitionClass isApplicationDefinition.
  1633     isApplicationDefinition := definitionClass isApplicationDefinition.
  1597 
  1634 
  1598     self isApplicationDefinitionHolder value:isApplicationDefinition.
  1635     self isApplicationDefinitionHolder value:isApplicationDefinition.
  1599     isApplicationDefinition ifTrue:[
  1636     isApplicationDefinition ifTrue:[
  1600         Error handle:[:ex |
  1637         startupClassName := definitionClass name.
  1601             className := definitionClass name
  1638         startupSelector := #start.
  1602         ] do:[
  1639 
  1603             className := definitionClass startupClassName
  1640         Error handle:[:ex | ] do:[ startupClassName := definitionClass startupClassName].
  1604         ].
  1641         Error handle:[:ex | ] do:[ startupSelector := definitionClass startupSelector].
  1605         self startupClassNameHolder value:className.
  1642         self startupClassNameHolder value:startupClassName.
  1606         self startupSelectorHolder value:(definitionClass startupSelector).
  1643         self startupSelectorHolder value:startupSelector.
       
  1644 
  1607         self iconFileNameHolder value:(definitionClass iconFileName).
  1645         self iconFileNameHolder value:(definitionClass iconFileName).
  1608         self tabList value:(self class tabListForApplication).
  1646         self tabList value:(self class tabListForApplication).
  1609     ] ifFalse:[
  1647     ] ifFalse:[
  1610         self tabList value:(self class tabListForLibrary).
  1648         self tabList value:(self class tabListForLibrary).
  1611     ].
  1649     ].
  1634                 ifTrue:'Application'
  1672                 ifTrue:'Application'
  1635                 ifFalse:'Library' ) 
  1673                 ifFalse:'Library' ) 
  1636                     , ' Definition: ',definitionClass name.
  1674                     , ' Definition: ',definitionClass name.
  1637 
  1675 
  1638     "Created: / 04-09-2006 / 16:34:39 / cg"
  1676     "Created: / 04-09-2006 / 16:34:39 / cg"
  1639     "Modified: / 07-09-2006 / 12:19:36 / cg"
  1677     "Modified: / 07-09-2006 / 12:36:10 / cg"
       
  1678 !
       
  1679 
       
  1680 refetchDefinitionValues
       
  1681     self isApplicationDefinitionHolder value:( definitionClass isApplicationDefinition ).
       
  1682     self fetchValues.
       
  1683 
       
  1684     "Created: / 07-09-2006 / 12:26:54 / cg"
  1640 !
  1685 !
  1641 
  1686 
  1642 update:something with:parameter from:changedObject
  1687 update:something with:parameter from:changedObject
  1643     changedObject == self selectedTabIndexHolder ifTrue:[
  1688     changedObject == self selectedTabIndexHolder ifTrue:[
  1644         self updateMenuVisibility.
  1689         self updateMenuVisibility.
  1692     ^ super postOpenWith:aBuilder
  1737     ^ super postOpenWith:aBuilder
  1693 ! !
  1738 ! !
  1694 
  1739 
  1695 !ProjectDefinitionEditor methodsFor:'menu actions'!
  1740 !ProjectDefinitionEditor methodsFor:'menu actions'!
  1696 
  1741 
  1697 menuGenerateClassList
  1742 menuGenerateProjectDefinitions
  1698     masterApplication
  1743     |action|
  1699         generateProjectDefinitionsIn:(Array with:self definitionClass).
  1744 
  1700 
  1745     action := [:generator :defClass |
  1701     self classListHolder value:(self fetchClassListEntries).
  1746                     defClass theNonMetaclass 
  1702 
  1747                         forEachMethodsCodeToCompileDo:
  1703     "Modified: / 07-09-2006 / 11:35:39 / cg"
  1748                             [:code :category | 
       
  1749                                 generator  
       
  1750                                     compile:code
       
  1751                                     forClass:defClass theMetaclass
       
  1752                                     inCategory:category.
       
  1753                             ]
       
  1754                         ignoreOldDefinition:true
       
  1755                ].
       
  1756 
       
  1757     masterApplication notNil ifTrue:[
       
  1758         masterApplication
       
  1759             generateUndoableChange:'Generate Project Definitions'
       
  1760             overClasses:(Array with:self definitionClass)
       
  1761             via:action.
       
  1762     ] ifFalse:[
       
  1763         action value:Compiler value:self definitionClass
       
  1764     ].
       
  1765 
       
  1766     self refetchDefinitionValues
       
  1767 
       
  1768     "Created: / 07-09-2006 / 12:26:22 / cg"
  1704 !
  1769 !
  1705 
  1770 
  1706 menuNew
  1771 menuNew
  1707     "This method was generated by the Browser.
  1772     "This method was generated by the Browser.
  1708      It will be invoked when the menu-item 'new' is selected."
  1773      It will be invoked when the menu-item 'new' is selected."