register the icons and put them into a caching dict
authortz
Sun, 22 Feb 1998 14:36:02 +0100
changeset 773 b3596157f97d
parent 772 9ae43992a603
child 774 98d6c7e3e851
register the icons and put them into a caching dict
SelTreeV.st
SelectionInTreeView.st
--- a/SelTreeV.st	Sat Feb 21 19:26:47 1998 +0100
+++ b/SelTreeV.st	Sun Feb 22 14:36:02 1998 +0100
@@ -17,7 +17,7 @@
 		lineColor openIndicator computeResources closeIndicator showRoot
 		extentOpenIndicator extentCloseIndicator showDirectoryIndicator
 		showDirectoryIndicatorForRoot indicatorExtentDiv2 imageOpened
-		imageClosed imageItem discardMotionEvents'
+		imageClosed imageItem discardMotionEvents registeredImages'
 	classVariableNames:'ImageOpened ImageClosed ImageItem OpenIndicator CloseIndicator'
 	poolDictionaries:''
 	category:'Views-Text'
@@ -946,14 +946,10 @@
     "
     super initialize.
     self bitGravity:#NorthWest.
-    showLines := true.
-    showRoot  := true.
-    computeResources := true.
-    showDirectoryIndicator := false.
-    showDirectoryIndicatorForRoot := true.
-    discardMotionEvents := false.
+    showRoot := showDirectoryIndicatorForRoot      := showLines := computeResources := true.
+    showDirectoryIndicator := discardMotionEvents := false.
     lineMask := Form width:2 height:2 fromArray:#[16rAA 16r55].
-
+    registeredImages := IdentityDictionary new.
     textInset  := 4.
     imageInset := 0.    "/ set during indication enabled
     imageWidth := 8.    "/ default: will change during startup
@@ -1270,18 +1266,19 @@
 figureFor:aNode
     "access figure for a node
     "
-    |icon|
-    (icon := aNode icon) notNil
+    |unregisteredImage registeredImage|
+
+    (unregisteredImage := aNode icon) notNil
     ifTrue:
     [
-        icon device ~= device 
-        ifTrue: 
-        [
-            icon := icon onDevice: device. 
-            aNode icon: icon. 
-            icon clearMaskedPixels
+        (registeredImage := registeredImages at: unregisteredImage ifAbsent: nil) isNil
+        ifTrue:
+        [           
+            registeredImage := unregisteredImage on: device. 
+            registeredImage clearMaskedPixels.
+            registeredImages at: unregisteredImage put: registeredImage
         ].
-        ^icon
+        ^registeredImage
     ].
 
     aNode hasChildren ifTrue:[
@@ -1557,5 +1554,5 @@
 !SelectionInTreeView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/Attic/SelTreeV.st,v 1.42 1998-02-20 18:35:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/Attic/SelTreeV.st,v 1.43 1998-02-22 13:36:02 tz Exp $'
 ! !
--- a/SelectionInTreeView.st	Sat Feb 21 19:26:47 1998 +0100
+++ b/SelectionInTreeView.st	Sun Feb 22 14:36:02 1998 +0100
@@ -17,7 +17,7 @@
 		lineColor openIndicator computeResources closeIndicator showRoot
 		extentOpenIndicator extentCloseIndicator showDirectoryIndicator
 		showDirectoryIndicatorForRoot indicatorExtentDiv2 imageOpened
-		imageClosed imageItem discardMotionEvents'
+		imageClosed imageItem discardMotionEvents registeredImages'
 	classVariableNames:'ImageOpened ImageClosed ImageItem OpenIndicator CloseIndicator'
 	poolDictionaries:''
 	category:'Views-Text'
@@ -946,14 +946,10 @@
     "
     super initialize.
     self bitGravity:#NorthWest.
-    showLines := true.
-    showRoot  := true.
-    computeResources := true.
-    showDirectoryIndicator := false.
-    showDirectoryIndicatorForRoot := true.
-    discardMotionEvents := false.
+    showRoot := showDirectoryIndicatorForRoot      := showLines := computeResources := true.
+    showDirectoryIndicator := discardMotionEvents := false.
     lineMask := Form width:2 height:2 fromArray:#[16rAA 16r55].
-
+    registeredImages := IdentityDictionary new.
     textInset  := 4.
     imageInset := 0.    "/ set during indication enabled
     imageWidth := 8.    "/ default: will change during startup
@@ -1270,18 +1266,19 @@
 figureFor:aNode
     "access figure for a node
     "
-    |icon|
-    (icon := aNode icon) notNil
+    |unregisteredImage registeredImage|
+
+    (unregisteredImage := aNode icon) notNil
     ifTrue:
     [
-        icon device ~= device 
-        ifTrue: 
-        [
-            icon := icon onDevice: device. 
-            aNode icon: icon. 
-            icon clearMaskedPixels
+        (registeredImage := registeredImages at: unregisteredImage ifAbsent: nil) isNil
+        ifTrue:
+        [           
+            registeredImage := unregisteredImage on: device. 
+            registeredImage clearMaskedPixels.
+            registeredImages at: unregisteredImage put: registeredImage
         ].
-        ^icon
+        ^registeredImage
     ].
 
     aNode hasChildren ifTrue:[
@@ -1557,5 +1554,5 @@
 !SelectionInTreeView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/SelectionInTreeView.st,v 1.42 1998-02-20 18:35:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/SelectionInTreeView.st,v 1.43 1998-02-22 13:36:02 tz Exp $'
 ! !