add menu added
authortz
Tue, 03 Feb 1998 13:51:57 +0100
changeset 564 df1f1e84d94a
parent 563 81f54df8d333
child 565 8fdeb11c72fd
add menu added
UIPainter.st
--- a/UIPainter.st	Tue Feb 03 12:13:51 1998 +0100
+++ b/UIPainter.st	Tue Feb 03 13:51:57 1998 +0100
@@ -22,7 +22,7 @@
 
 SelectionInTreeView subclass:#TreeView
 	instanceVariableNames:'lastDrawnMaster cvsEventsDisabled windowSpec'
-	classVariableNames:'Images'
+	classVariableNames:''
 	poolDictionaries:''
 	privateIn:UIPainter
 !
@@ -503,11 +503,11 @@
           #'window:' 
            #(#WindowSpec
               #'name:' 'Tree-View'
-              #'layout:' #(#LayoutFrame 6 0 406 0 558 0 931 0)
+              #'layout:' #(#LayoutFrame 6 0 391 0 558 0 916 0)
               #'label:' 'Tree-View'
               #'min:' #(#Point 10 10)
               #'max:' #(#Point 1160 870)
-              #'bounds:' #(#Rectangle 6 406 559 932)
+              #'bounds:' #(#Rectangle 6 391 559 917)
               #'menu:' #menu
               #'usePreferredExtent:' false
           )
@@ -552,78 +552,97 @@
                                          #(#SpecCollection
                                             #'collection:' 
                                              #(
-                                               #(#HorizontalPanelViewSpec
-                                                  #'name:' 'panelViewButtons'
-                                                  #'layout:' #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+                                               #(#ViewSpec
+                                                  #'name:' 'View'
+                                                  #'layout:' #(#LayoutFrame 0 0.0 0 0 0 1.0 28 0)
                                                   #'component:' 
                                                    #(#SpecCollection
                                                       #'collection:' 
                                                        #(
-                                                         #(#ArrowButtonSpec
-                                                            #'name:' 'moveLeft'
-                                                            #'activeHelpKey:' #moveSelectionLeft
-                                                            #'tabable:' true
-                                                            #'model:' #moveSelectionLeft
-                                                            #'enableChannel:' #canMoveOrAlignSelection
-                                                            #'isTriggerOnDown:' true
-                                                            #'direction:' #left
-                                                            #'extent:' #(#Point 22 22)
-                                                        )
-                                                         #(#ArrowButtonSpec
-                                                            #'name:' 'moveRight'
-                                                            #'activeHelpKey:' #moveSelectionRight
-                                                            #'model:' #moveSelectionRight
-                                                            #'enableChannel:' #canMoveOrAlignSelection
-                                                            #'isTriggerOnDown:' true
-                                                            #'direction:' #right
-                                                            #'extent:' #(#Point 22 22)
+                                                         #(#HorizontalPanelViewSpec
+                                                            #'name:' 'panelViewButtons'
+                                                            #'layout:' #(#LayoutFrame 0 0.0 2 0 0 0.5 26 0)
+                                                            #'component:' 
+                                                             #(#SpecCollection
+                                                                #'collection:' 
+                                                                 #(
+                                                                   #(#CheckBoxSpec
+                                                                      #'name:' 'checkBox1'
+                                                                      #'model:' #galleryShown
+                                                                      #'label:' 'Gallery'
+                                                                      #'extent:' #(#Point 82 22)
+                                                                  )
+                                                                   #(#CheckBoxSpec
+                                                                      #'name:' 'checkBox2'
+                                                                      #'model:' #painterShown
+                                                                      #'label:' 'Canvas'
+                                                                      #'extent:' #(#Point 119 22)
+                                                                  )
+                                                                )
+                                                            )
+                                                            #'horizontalLayout:' #left
+                                                            #'verticalLayout:' #top
+                                                            #'horizontalSpace:' 4
+                                                            #'verticalSpace:' 4
                                                         )
-                                                         #(#ArrowButtonSpec
-                                                            #'name:' 'moveDown'
-                                                            #'activeHelpKey:' #moveSelectionDown
-                                                            #'model:' #moveSelectionDown
-                                                            #'enableChannel:' #canMoveOrAlignSelection
-                                                            #'isTriggerOnDown:' true
-                                                            #'direction:' #down
-                                                            #'extent:' #(#Point 22 22)
-                                                        )
-                                                         #(#ArrowButtonSpec
-                                                            #'name:' 'moveUp'
-                                                            #'activeHelpKey:' #moveSelectionUp
-                                                            #'model:' #moveSelectionUp
-                                                            #'enableChannel:' #canMoveOrAlignSelection
-                                                            #'isTriggerOnDown:' true
-                                                            #'direction:' #up
-                                                            #'extent:' #(#Point 22 22)
-                                                        )
-                                                         #(#LabelSpec
-                                                            #'name:' 'label1'
-                                                            #'label:' ' '
-                                                            #'extent:' #(#Point 14 22)
-                                                        )
-                                                         #(#CheckBoxSpec
-                                                            #'name:' 'checkBox1'
-                                                            #'model:' #galleryShown
-                                                            #'label:' 'Gallery'
-                                                            #'extent:' #(#Point 82 22)
-                                                        )
-                                                         #(#CheckBoxSpec
-                                                            #'name:' 'checkBox2'
-                                                            #'model:' #painterShown
-                                                            #'label:' 'Canvas'
-                                                            #'extent:' #(#Point 119 22)
+                                                         #(#HorizontalPanelViewSpec
+                                                            #'name:' 'horizontalPanelView1'
+                                                            #'layout:' #(#LayoutFrame 0 0.5 2 0 0 1.0 26 0)
+                                                            #'component:' 
+                                                             #(#SpecCollection
+                                                                #'collection:' 
+                                                                 #(
+                                                                   #(#ArrowButtonSpec
+                                                                      #'name:' 'arrowButton1'
+                                                                      #'activeHelpKey:' #moveSelectionLeft
+                                                                      #'tabable:' true
+                                                                      #'model:' #moveSelectionLeft
+                                                                      #'enableChannel:' #canMoveOrAlignSelection
+                                                                      #'isTriggerOnDown:' true
+                                                                      #'direction:' #left
+                                                                      #'extent:' #(#Point 22 22)
+                                                                  )
+                                                                   #(#ArrowButtonSpec
+                                                                      #'name:' 'arrowButton2'
+                                                                      #'activeHelpKey:' #moveSelectionRight
+                                                                      #'model:' #moveSelectionRight
+                                                                      #'enableChannel:' #canMoveOrAlignSelection
+                                                                      #'isTriggerOnDown:' true
+                                                                      #'direction:' #right
+                                                                      #'extent:' #(#Point 22 22)
+                                                                  )
+                                                                   #(#ArrowButtonSpec
+                                                                      #'name:' 'arrowButton3'
+                                                                      #'activeHelpKey:' #moveSelectionDown
+                                                                      #'model:' #moveSelectionDown
+                                                                      #'enableChannel:' #canMoveOrAlignSelection
+                                                                      #'isTriggerOnDown:' true
+                                                                      #'direction:' #down
+                                                                      #'extent:' #(#Point 22 22)
+                                                                  )
+                                                                   #(#ArrowButtonSpec
+                                                                      #'name:' 'arrowButton4'
+                                                                      #'activeHelpKey:' #moveSelectionUp
+                                                                      #'model:' #moveSelectionUp
+                                                                      #'enableChannel:' #canMoveOrAlignSelection
+                                                                      #'isTriggerOnDown:' true
+                                                                      #'direction:' #up
+                                                                      #'extent:' #(#Point 22 22)
+                                                                  )
+                                                                )
+                                                            )
+                                                            #'horizontalLayout:' #right
+                                                            #'verticalLayout:' #top
+                                                            #'horizontalSpace:' 4
+                                                            #'verticalSpace:' 4
                                                         )
                                                       )
                                                   )
                                                   #'level:' 1
-                                                  #'horizontalLayout:' #left
-                                                  #'verticalLayout:' #top
-                                                  #'horizontalSpace:' 4
-                                                  #'verticalSpace:' 4
                                               )
                                                #(#NoteBookViewSpec
                                                   #'name:' 'noteBook'
-                                                  #'layout:' #(#LayoutFrame 0 0.0 26 0.0 0 1.0 -30 1.0)
+                                                  #'layout:' #(#LayoutFrame 0 0.0 29 0.0 0 1.0 -30 1.0)
                                                   #'enableChannel:' #enableChannel
                                                   #'tabable:' true
                                                   #'model:' #tabModel
@@ -815,6 +834,10 @@
                 #'submenuChannel:' #menuEdit
             )
              #(#MenuItem
+                #'label:' 'Add'
+                #'submenuChannel:' #menuAdd
+            )
+             #(#MenuItem
                 #'label:' 'Align'
                 #'submenuChannel:' #menuAlign
             )
@@ -875,6 +898,350 @@
       )
 !
 
+menuAdd
+    "this window spec was automatically generated by the ST/X MenuEditor"
+
+    "do not manually edit this - the builder may not be able to
+     handle the specification if its corrupted."
+
+    "
+     MenuEditor new openOnClass:UIPainter andSelector:#menuAdd
+     (Menu new fromLiteralArrayEncoding:(UIPainter menuAdd)) startUp
+    "
+
+    <resource: #menu>
+
+    ^
+     
+       #(#Menu
+          
+           #(
+             #(#MenuItem
+                #'label:' 'Buttons'
+                #'submenu:' 
+                 #(#Menu
+                    
+                     #(
+                       #(#MenuItem
+                          #'label:' 'Action Button'
+                          #'value:' #'addWidget:'
+                          #'argument:' #ActionButtonSpec
+                          #'labelImage:' #(#ResourceRetriever #ActionButtonSpec #icon 'Action Button')
+                      )
+                       #(#MenuItem
+                          #'label:' 'Arrow Button'
+                          #'value:' #'addWidget:'
+                          #'argument:' #ArrowButtonSpec
+                          #'labelImage:' #(#ResourceRetriever #ArrowButtonSpec #icon 'Arrow Button')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Toggle'
+                          #'value:' #'addWidget:'
+                          #'argument:' #ToggleSpec
+                          #'labelImage:' #(#ResourceRetriever #ToggleSpec #icon 'Toggle')
+                      )
+                       #(#MenuItem
+                          #'label:' 'Radio Button'
+                          #'value:' #'addWidget:'
+                          #'argument:' #RadioButtonSpec
+                          #'labelImage:' #(#ResourceRetriever #RadioButtonSpec #icon 'Radio Button')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Check Box'
+                          #'value:' #'addWidget:'
+                          #'argument:' #CheckBoxSpec
+                          #'labelImage:' #(#ResourceRetriever #CheckBoxSpec #icon 'Check Box')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Up Down Button'
+                          #'value:' #'addWidget:'
+                          #'argument:' #UpDownButtonSpec
+                          #'labelImage:' #(#ResourceRetriever #UpDownButtonSpec #icon 'Up Down Button')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Slider'
+                          #'value:' #'addWidget:'
+                          #'argument:' #SliderSpec
+                          #'labelImage:' #(#ResourceRetriever #SliderSpec #icon 'Slider')
+                      )
+                       #(#MenuItem
+                          #'label:' 'Thumb Wheel'
+                          #'value:' #'addWidget:'
+                          #'argument:' #ThumbWheelSpec
+                          #'labelImage:' #(#ResourceRetriever #ThumbWheelSpec #icon 'Thumb Wheel')
+                      )
+                    ) nil
+                    nil
+                )
+            )
+             #(#MenuItem
+                #'label:' 'Menus'
+                #'submenu:' 
+                 #(#Menu
+                    
+                     #(
+                       #(#MenuItem
+                          #'label:' 'Combo Box'
+                          #'value:' #'addWidget:'
+                          #'argument:' #ComboBoxSpec
+                          #'labelImage:' #(#ResourceRetriever #ComboBoxSpec #icon 'Combo Box')
+                      )
+                       #(#MenuItem
+                          #'label:' 'Combo List'
+                          #'value:' #'addWidget:'
+                          #'argument:' #ComboListSpec
+                          #'labelImage:' #(#ResourceRetriever #ComboListSpec #icon 'Combo List')
+                      )
+                       #(#MenuItem
+                          #'label:' 'PopUp List'
+                          #'value:' #'addWidget:'
+                          #'argument:' #PopUpListSpec
+                          #'labelImage:' #(#ResourceRetriever #ComboListSpec #icon 'PopUp List')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Tab'
+                          #'value:' #'addWidget:'
+                          #'argument:' #TabViewSpec
+                          #'labelImage:' #(#ResourceRetriever #TabViewSpec #icon 'Tab')
+                      )
+                       #(#MenuItem
+                          #'label:' 'Note Book'
+                          #'value:' #'addWidget:'
+                          #'argument:' #NoteBookViewSpec
+                          #'labelImage:' #(#ResourceRetriever #NoteBookViewSpec #icon 'Note Book')
+                      )
+                       #(#MenuItem
+                          #'label:' 'Gallery'
+                          #'value:' #'addWidget:'
+                          #'argument:' #UIGalleryViewSpec
+                          #'labelImage:' #(#ResourceRetriever #UIGalleryViewSpec #icon 'Gallery')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Menu Panel'
+                          #'value:' #'addWidget:'
+                          #'argument:' #MenuPanelSpec
+                          #'labelImage:' #(#ResourceRetriever #MenuPanelSpec #icon 'Menu Panel')
+                      )
+                    ) nil
+                    nil
+                )
+            )
+             #(#MenuItem
+                #'label:' 'Text Views'
+                #'submenu:' 
+                 #(#Menu
+                    
+                     #(
+                       #(#MenuItem
+                          #'label:' 'Text Editor'
+                          #'value:' #'addWidget:'
+                          #'argument:' #TextEditorSpec
+                          #'labelImage:' #(#ResourceRetriever #TextEditorSpec #icon 'Text Editor')
+                      )
+                       #(#MenuItem
+                          #'label:' 'Input Field'
+                          #'value:' #'addWidget:'
+                          #'argument:' #InputFieldSpec
+                          #'labelImage:' #(#ResourceRetriever #InputFieldSpec #icon 'Input Field')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Label'
+                          #'value:' #'addWidget:'
+                          #'argument:' #LabelSpec
+                          #'labelImage:' #(#ResourceRetriever #LabelSpec #icon 'Label')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'HTML View'
+                          #'value:' #'addWidget:'
+                          #'argument:' #HTMLViewSpec
+                          #'labelImage:' #(#ResourceRetriever #HTMLViewSpec #icon 'HTML View')
+                      )
+                    ) nil
+                    nil
+                )
+            )
+             #(#MenuItem
+                #'label:' 'Lists'
+                #'submenu:' 
+                 #(#Menu
+                    
+                     #(
+                       #(#MenuItem
+                          #'label:' 'List'
+                          #'value:' #'addWidget:'
+                          #'argument:' #SequenceViewSpec
+                          #'labelImage:' #(#ResourceRetriever #SequenceViewSpec #icon 'List')
+                      )
+                       #(#MenuItem
+                          #'label:' 'Data Set List'
+                          #'value:' #'addWidget:'
+                          #'argument:' #DataSetSpec
+                          #'labelImage:' #(#ResourceRetriever #DataSetSpec #icon 'Data Set List')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Tree List'
+                          #'value:' #'addWidget:'
+                          #'argument:' #SelectionInTreeViewSpec
+                          #'labelImage:' #(#ResourceRetriever #SelectionInTreeViewSpec #icon 'Tree List')
+                      )
+                       #(#MenuItem
+                          #'label:' 'File Tree List'
+                          #'value:' #'addWidget:'
+                          #'argument:' #FileSelectionTreeSpec
+                          #'labelImage:' #(#ResourceRetriever #FileSelectionTreeSpec #icon 'File Tree List')
+                      )
+                    ) nil
+                    nil
+                )
+            )
+             #(#MenuItem
+                #'label:' 'Boxes'
+                #'submenu:' 
+                 #(#Menu
+                    
+                     #(
+                       #(#MenuItem
+                          #'label:' 'Box'
+                          #'value:' #'addWidget:'
+                          #'argument:' #ViewSpec
+                          #'labelImage:' #(#ResourceRetriever #ViewSpec #icon 'Box')
+                      )
+                       #(#MenuItem
+                          #'label:' 'Framed Box'
+                          #'value:' #'addWidget:'
+                          #'argument:' #FramedBoxSpec
+                          #'labelImage:' #(#ResourceRetriever #FramedBoxSpec #icon 'Framed Box')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Horizontal Panel'
+                          #'value:' #'addWidget:'
+                          #'argument:' #HorizontalPanelViewSpec
+                          #'labelImage:' #(#ResourceRetriever #HorizontalPanelViewSpec #icon 'Horizontal Panel')
+                      )
+                       #(#MenuItem
+                          #'label:' 'Vertical Panel'
+                          #'value:' #'addWidget:'
+                          #'argument:' #VerticalPanelViewSpec
+                          #'labelImage:' #(#ResourceRetriever #VerticalPanelViewSpec #icon 'Vertical Panel')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Area Panel'
+                          #'value:' #'addWidget:'
+                          #'argument:' #PanelViewSpec
+                          #'labelImage:' #(#ResourceRetriever #PanelViewSpec #icon 'Area Panel')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Variable Horizontal Panel'
+                          #'value:' #'addWidget:'
+                          #'argument:' #VariableHorizontalPanelSpec
+                          #'labelImage:' #(#ResourceRetriever #VariableHorizontalPanelSpec #icon 'Variable Horizontal Panel')
+                      )
+                       #(#MenuItem
+                          #'label:' 'Variable Vertical Panel'
+                          #'value:' #'addWidget:'
+                          #'argument:' #VariableVerticalPanelSpec
+                          #'labelImage:' #(#ResourceRetriever #VariableVerticalPanelSpec #icon 'Variable Vertical Panel')
+                      )
+                    ) nil
+                    nil
+                )
+            )
+             #(#MenuItem
+                #'label:' 'Misc'
+                #'submenu:' 
+                 #(#Menu
+                    
+                     #(
+                       #(#MenuItem
+                          #'label:' 'Arbitrary Component'
+                          #'value:' #'addWidget:'
+                          #'argument:' #ArbitraryComponentSpec
+                          #'labelImage:' #(#ResourceRetriever #ArbitraryComponentSpec #icon 'Arbitrary Component')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Sub Specification'
+                          #'value:' #'addWidget:'
+                          #'argument:' #UISubSpecification
+                          #'labelImage:' #(#ResourceRetriever #ArbitraryComponentSpec #icon 'Sub Specification')
+                      )
+                       #(#MenuItem
+                          #'label:' 'Sub Canvas'
+                          #'value:' #'addWidget:'
+                          #'argument:' #SubCanvasSpec
+                          #'labelImage:' #(#ResourceRetriever #SubCanvasSpec #icon 'Sub Canvas')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Progress Indicator'
+                          #'value:' #'addWidget:'
+                          #'argument:' #ProgressIndicatorSpec
+                          #'labelImage:' #(#ResourceRetriever #ProgressIndicatorSpec #icon 'Progress Indicator')
+                      )
+                       #(#MenuItem
+                          #'label:' '-'
+                      )
+                       #(#MenuItem
+                          #'label:' 'Divider'
+                          #'value:' #'addWidget:'
+                          #'argument:' #DividerSpec
+                          #'labelImage:' #(#ResourceRetriever #DividerSpec #icon 'Divider')
+                      )
+                       #(#MenuItem
+                          #'label:' 'Region'
+                          #'value:' #'addWidget:'
+                          #'argument:' #RegionSpec
+                          #'labelImage:' #(#ResourceRetriever #RegionSpec #icon 'Region')
+                      )
+                    ) nil
+                    nil
+                )
+            )
+          ) nil
+          nil
+      )
+!
+
 menuAlign
     "this window spec was automatically generated by the ST/X MenuEditor"
 
@@ -1488,9 +1855,15 @@
     self modifiedChannel value:false.
 !
 
+addWidget: aSpecClass
+
+    self addWidgetOfSpec: (Array with: (Smalltalk at: aSpecClass) new)
+
+!
+
 addWidgetOfSpec: aSpec
 
-    |newSel|
+    |newSel|  
     (newSel := self pasteSpecifications:aSpec keepLayout:false at:0@0) notNil
     ifTrue:
     [
@@ -1498,13 +1871,13 @@
     ]
     ifFalse:
     [   
-        treeView selection size = 0
+        ((treeView selection size = 0) or: [treeView selectedNode isNil])
         ifTrue:
         [                          
             treeView selection: #(1).
         ]
         ifFalse:
-        [
+        [  
             treeView selectNode: (treeView detectNode: [:n| n = treeView selectedNode parent])
         ].
         self addWidgetOfSpec: aSpec
@@ -2892,13 +3265,6 @@
 
 ! !
 
-!UIPainter::TreeView class methodsFor:'startup / release'!
-
-preSnapshot
-
-    Images notNil ifTrue: [Images removeAll]
-! !
-
 !UIPainter::TreeView methodsFor:'accessing'!
 
 canvas
@@ -3311,8 +3677,9 @@
 initialize
     "initialization; set multiple select and model
     "
-    Images := Images ? IdentityDictionary new.
+
     super initialize.
+
     self multipleSelectOk:true.
     cvsEventsDisabled := false.
     self showDirectoryIndicator: true.
@@ -3324,15 +3691,14 @@
 figureFor:aNode
     "returns image for an spec item"
 
-    |cls image|
+    |cls icon|
 
     cls := aNode contents spec class.
     aNode contents spec isNil ifTrue: [cls := WindowSpec].
-    cls := cls withAllSuperclasses detect: [:cls| cls class implements: #icon] ifNone: [^nil].
-    image := Images at: cls name ifAbsent: [Images at: cls name put: cls icon].
-    image device ~~ device ifTrue: [image := image onDevice: device].
-    image extent y > 16 ifTrue: [image := image magnifiedBy: 16/image extent y].
-    ^image
+    icon := cls icon.
+    icon extent y > 16 ifTrue: [icon := icon magnifiedBy: 16/icon extent y].
+    icon device ~~ device ifTrue: [icon := icon onDevice: device].
+    ^icon
 !
 
 selectionChangedFrom:oldSelection