MenuEditor.st
changeset 275 cdecb5b5d356
parent 270 1a68f7479932
child 287 1ecabfd468dc
--- a/MenuEditor.st	Fri Aug 01 14:22:44 1997 +0200
+++ b/MenuEditor.st	Fri Aug 01 16:39:37 1997 +0200
@@ -28,9 +28,8 @@
 !
 
 SelectionInTreeView subclass:#Painter
-	instanceVariableNames:'imageMenuLink imageSeparator'
-	classVariableNames:'CopyBuffer ImageMenuLink ImageSeparator ImageItem ImageMenu
-		ImageMenuOpen'
+	instanceVariableNames:'images'
+	classVariableNames:'CopyBuffer Images'
 	poolDictionaries:''
 	privateIn:MenuEditor
 !
@@ -2082,86 +2081,51 @@
 
 !MenuEditor::Painter class methodsFor:'constants'!
 
-imageClosed
-    ^ self imageMenu
-
-    "Created: 28.7.1997 / 10:31:37 / cg"
-!
-
 imageItem
-    ImageItem isNil ifTrue:[
-        ImageItem := Image fromFile:('ui_menuitem.xpm').
-    ].
-    ^ ImageItem
-
-    "
-     ImageItem := nil
-    "
-
-    "Created: 28.7.1997 / 09:51:00 / cg"
-    "Modified: 28.7.1997 / 09:51:14 / cg"
+    ^ self images at:#item
 !
 
 imageMenu
-    ImageMenu isNil ifTrue:[
-        ImageMenu := Image fromFile:('ui_submenu.xpm').
-    ].
-    ^ ImageMenu
-
-    "
-    ImageMenu := nil
-    "
-
-    "Created: 28.7.1997 / 10:01:21 / cg"
-    "Modified: 28.7.1997 / 10:29:14 / cg"
+    ^ self images at:#menuOpen
 !
 
 imageMenuLink
-    ImageMenuLink isNil ifTrue:[
-"/        ImageMenuLink := Image fromFile:('xpmBitmaps/document_images/tiny_yellow_dir_link.xpm').
-        ImageMenuLink := Image fromFile:('ui_submenulink.xpm').
-    ].
-    ^ ImageMenuLink
-
-    "
-    ImageMenuLink := nil
-    "
-
-    "Modified: 28.7.1997 / 10:29:18 / cg"
-!
-
-imageMenuOpen
-    ImageMenuOpen isNil ifTrue:[
-        ImageMenuOpen := Image fromFile:('ui_submenu_open.xpm').
-    ].
-    ^ ImageMenuOpen
-
-    "
-    ImageMenuOpen := nil
-    "
-
-    "Created: 28.7.1997 / 10:21:31 / cg"
-    "Modified: 28.7.1997 / 10:29:20 / cg"
-!
-
-imageOpened
-    ^ self imageMenuOpen
-
-    "Created: 28.7.1997 / 10:31:46 / cg"
+    ^ self images at:#menuLink
+
 !
 
 imageSeparator
-    ImageSeparator isNil ifTrue:[
-"/        ImageSeparator := Image fromFile:('xpmBitmaps/document_images/tiny_file_exec.xpm').
-        ImageSeparator := Image fromFile:('ui_menusep.xpm').
+    ^ self images at:#separator
+
+!
+
+images
+    "returns an IdentityDictionary containing a list of images and keys used
+    "
+    |icons image|
+
+    Images notNil ifTrue:[
+        ^ Images
     ].
-    ^ ImageSeparator
-
-    "
-     ImageSeparator := nil
-    "
-
-    "Modified: 28.7.1997 / 09:42:07 / cg"
+
+    Images := IdentityDictionary new.
+
+    #(
+        (#item            'ui_menuitem.xpm')
+        (#menuClosed      'ui_submenu.xpm')
+        (#menuOpen        'ui_submenu_open.xpm')
+        (#menuLink        'ui_submenulink.xpm')
+        (#separator       'ui_menusep.xpm')
+
+     ) do:[:el |
+        image := Image fromFile:( el last ).
+        Images at:(el first) put:image.
+    ].
+
+  ^ Images
+
+
+
 ! !
 
 !MenuEditor::Painter class methodsFor:'defaults'!
@@ -2346,48 +2310,52 @@
         item := aNode contents.
 
         item submenuChannel notNil ifTrue:[
-            imageMenuLink isNil ifTrue:[
-                imageMenuLink := (self class imageMenuLink) onDevice:device.
-            ].
-            ^ imageMenuLink
+            ^ images at:#menuLink
         ].
 
         item isSeparator ifTrue:[
-            imageSeparator isNil ifTrue:[
-                imageSeparator := (self class imageSeparator) onDevice:device.
-            ].
-            ^ imageSeparator
+            ^ images at:#separator
         ].
-        imageItem isNil ifTrue:[
-            imageItem := (self class imageItem) onDevice:device.
-        ].
-        ^ imageItem
+        ^ images at:#item
     ].
 
     aNode isExpandable ifTrue:[ 
-        imageClosed isNil ifTrue:[
-            imageClosed := (self class imageMenu) onDevice:device.
-        ].
-        ^ imageClosed
+        ^ images at:#menuClosed
     ].
-    imageOpened isNil ifTrue:[
-        imageOpened := (self class imageMenuOpen) onDevice:device.
-    ].
-    ^ imageOpened
-
-    "Modified: 28.7.1997 / 10:27:52 / cg"
+    ^ images at:#menuOpen
 ! !
 
 !MenuEditor::Painter methodsFor:'initialization'!
 
+fetchImageResources
+    "initialize heavily used device resources - to avoid rendering
+     images again and again later; returns maximum extent of the images used.
+    "
+    |y x t|
+
+    t := super fetchImageResources.
+    y := t y.
+    x := t x.
+
+    images do:[:anIcon|
+        (t := anIcon heightOn:self) > y ifTrue:[y := t].
+        (t := anIcon widthOn:self)  > x ifTrue:[x := t].
+    ].
+  ^ x @ y
+
+!
+
 initialize
     super initialize.
-    imageOpened := nil.
-    imageClosed := nil.
+
+    images := IdentityDictionary new.
+
+    self class images associationsDo:[:el|
+        images at:(el key) put:(el value onDevice:device)
+    ].
+
     self multipleSelectOk:true.
     self model:(SelectionInTree new).
-
-    "Modified: 28.7.1997 / 10:28:48 / cg"
 ! !
 
 !MenuEditor::Painter methodsFor:'menus'!