action creation/browse added
authorClaus Gittinger <cg@exept.de>
Mon, 10 Dec 2007 17:10:30 +0100
changeset 2210 0a2c19976d82
parent 2209 c7ac53d62021
child 2211 f7fac4c1afe9
action creation/browse added
UIPainter.st
--- a/UIPainter.st	Mon Dec 10 17:10:27 2007 +0100
+++ b/UIPainter.st	Mon Dec 10 17:10:30 2007 +0100
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 1995-1998 by eXept Software AG
-              All Rights Reserved
+	      All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -12,18 +12,18 @@
 "{ Package: 'stx:libtool2' }"
 
 ResourceSpecEditor subclass:#UIPainter
-        instanceVariableNames:'specSuperclassName treeView selectionPanel specTool layoutTool
-                helpTool painterView painter'
-        classVariableNames:''
-        poolDictionaries:''
-        category:'Interface-UIPainter'
+	instanceVariableNames:'specSuperclassName treeView selectionPanel specTool layoutTool
+		helpTool painterView painter'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-UIPainter'
 !
 
 SelectionInTreeView subclass:#TreeView
-        instanceVariableNames:'lastDrawnMaster cvsEventsDisabled windowSpec windowSpecClass'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:UIPainter
+	instanceVariableNames:'lastDrawnMaster cvsEventsDisabled windowSpec windowSpecClass'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:UIPainter
 !
 
 !UIPainter class methodsFor:'documentation'!
@@ -31,7 +31,7 @@
 copyright
 "
  COPYRIGHT (c) 1995-1998 by eXept Software AG
-              All Rights Reserved
+	      All Rights Reserved
 
  This software is furnished under a license and may be used
  only in accordance with the terms of that license and with the
@@ -53,17 +53,17 @@
     opening the application.
 
     [start with:]
-        UIPainter open
+	UIPainter open
 
     [author:]
-        Claus Gittinger, eXept Software AG
-        Claus Atzkern, eXept Software AG
-        Thomas Zwick, eXept Software AG
+	Claus Gittinger, eXept Software AG
+	Claus Atzkern, eXept Software AG
+	Thomas Zwick, eXept Software AG
 
     [see also:]
-        UIBuilder
-        ApplicationModel
-        UISpecification
+	UIBuilder
+	ApplicationModel
+	UISpecification
 "
 
 ! !
@@ -325,19 +325,19 @@
      per line
     "
     |stream
-        max     "{ Class:SmallInteger }"
-        size    "{ Class:SmallInteger }"
-        start   "{ Class:SmallInteger }"
-        stop    "{ Class:SmallInteger }"
-        cpySz   "{ Class:SmallInteger }"
-        lnSz    "{ Class:SmallInteger }"
-        atBeginOfLine|
+	max     "{ Class:SmallInteger }"
+	size    "{ Class:SmallInteger }"
+	start   "{ Class:SmallInteger }"
+	stop    "{ Class:SmallInteger }"
+	cpySz   "{ Class:SmallInteger }"
+	lnSz    "{ Class:SmallInteger }"
+	atBeginOfLine|
 
     maxCharactersPerLine < 20 ifFalse:[max := maxCharactersPerLine - 1]
-                               ifTrue:[max := 20].
+			       ifTrue:[max := 20].
 
     (size := aString size) <= max ifTrue:[
-        ^ aString
+	^ aString
     ].
     start  := 1.
     lnSz   := 0.
@@ -346,35 +346,35 @@
     atBeginOfLine := true.
 
     [start <= size] whileTrue:[
-        (start := aString indexOfNonSeparatorStartingAt:start) == 0 ifTrue:[
-            ^ stream contents
-        ].
-        (aString at:start) == $\ ifTrue:[
-            skipLineFeed ifFalse:[
-                stream nextPut:$\
-            ].
-            start := start + 1.
-            stream cr.
-            start := start + 1.
-            lnSz := 0.
-        ] ifFalse:[
-            (stop := aString indexOfSeparatorStartingAt:start) == 0 ifTrue:[
-                stop := size + 1
-            ].
-            (aString at:(stop - 1)) == $\ ifTrue:[
-                stop := stop - 1
-            ].
-            cpySz := stop - start.
-
-            lnSz == 0 ifFalse:[
-                (lnSz := lnSz + cpySz) >= max ifTrue:[stream cr.    lnSz := cpySz. atBeginOfLine := true. ]
-                                             ifFalse:[stream space. lnSz := lnSz + 1]
-            ] ifTrue:[
-                lnSz := cpySz
-            ].
-            stream nextPutAll:aString startingAt:start to:(stop - 1).
-            start := stop.
-        ]
+	(start := aString indexOfNonSeparatorStartingAt:start) == 0 ifTrue:[
+	    ^ stream contents
+	].
+	(aString at:start) == $\ ifTrue:[
+	    skipLineFeed ifFalse:[
+		stream nextPut:$\
+	    ].
+	    start := start + 1.
+	    stream cr.
+	    start := start + 1.
+	    lnSz := 0.
+	] ifFalse:[
+	    (stop := aString indexOfSeparatorStartingAt:start) == 0 ifTrue:[
+		stop := size + 1
+	    ].
+	    (aString at:(stop - 1)) == $\ ifTrue:[
+		stop := stop - 1
+	    ].
+	    cpySz := stop - start.
+
+	    lnSz == 0 ifFalse:[
+		(lnSz := lnSz + cpySz) >= max ifTrue:[stream cr.    lnSz := cpySz. atBeginOfLine := true. ]
+					     ifFalse:[stream space. lnSz := lnSz + 1]
+	    ] ifTrue:[
+		lnSz := cpySz
+	    ].
+	    stream nextPutAll:aString startingAt:start to:(stop - 1).
+	    start := stop.
+	]
     ].
     ^ stream contents
 
@@ -465,6 +465,28 @@
         ifAbsentPut:[(Depth1Image new) width: 11; height: 11; photometric:(#palette); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'?>C?8O? >>C18NC 0FC?8O? ?>C?8@@a') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((Depth1Image new) width: 11; height: 11; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@A@@NG1<@O8@@@@@@@@@@AP@a') ; yourself); yourself]
 !
 
+browseActionImage
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self browseActionImage inspect
+     ImageEditor openOnClass:self andSelector:#browseActionImage
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:#'UISpecification class browseActionImage'
+        ifAbsentPut:[(Depth8Image new) width: 11; height: 12; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+R@@@RT%RST1LTD9H@D%IT%MRSD1PS$!!RT$5RUEILT%INT%UVT%YWU%IVUUIHT%!!YV%-ZVU!!RWD!!MT%Y[@E-VT%5\RD1RU%,@V5YRWU1HT%!!YV%-ZVU!!RWEIU
+U%IVU5YRU%URZ%IR@EITT ART&,@@@@@T%MR@@@@@@@@@@@@T @@@@@@') ; colorMapFromArray:#[255 248 248 63 144 224 64 152 232 79 160 232 64 152 224 64 144 224 63 136 224 48 128 216 48 120 216 47 112 216 47 112 208 32 104 208 32 96 208 31 88 200 16 88 200 16 80 200 15 72 192 15 64 192 0 64 192 0 56 184 0 56 176 0 48 160 143 200 248 128 200 248 127 192 248 112 184 248 111 176 248 96 168 248 95 160 248 80 152 248 79 144 248 64 128 248 63 120 248 48 112 248 32 104 248 31 96 248 16 88 248 15 80 248 0 72 248 0 64 240 0 48 168 112 176 248 111 168 248 96 160 248 95 152 248 80 144 248 79 136 248 63 128 248 48 120 248 47 112 248 15 72 248 0 48 176 95 168 232 191 224 248 191 216 248 176 208 248 175 208 248 175 200 248 160 200 248 160 192 248 159 192 248 159 184 248 144 184 248 144 176 248 143 168 248 128 168 248 128 160 248 127 160 248 127 152 240 31 72 176 111 168 232 127 160 216 207 216 240 240 240 248 240 232 240 63 88 176 239 232 240 240 240 240 48 88 176 96 168 224 224 224 232 96 160 224 240 144 24 255 248 48 255 248 96 255 248 24 240 208 24 255 248 152 255 248 88 255 248 136 255 248 176 255 248 200 48 80 176 223 216 224 96 152 224 96 152 216 95 152 216 48 120 208 80 144 208 80 136 208 79 128 200 79 120 200 79 120 192 64 112 192 64 104 184 63 104 184 63 96 184 15 56 160]; mask:((Depth1Image new) width: 11; height: 12; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A@@N@F;@?>A?0G>@O8A?0O? [,@N@@P@') ; yourself); yourself]
+!
+
 defaultIcon
     <resource: #programImage>
 
@@ -488,8 +510,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'UIPainter iconAlignB'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E@@@@@@@G@@@@@@@G@E@@@@@G@G@@@@@G@G@@@@@G@G@@@E@G@G@@@G@G@G@K@G@G@G@@@G@G@G@A@G@G@G@@@G@G@G@K@@@@@@@@B*****(@B*****(@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@G C@G @@G'' @G'' @G'' @G'' G'''' G'''' G'''' G''''!!G'''' G'''' G'''' G'''' O??0O??0@@@@@@@C@@@@') ; yourself); yourself]
+	constantNamed:#'UIPainter iconAlignB'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E@@@@@@@G@@@@@@@G@E@@@@@G@G@@@@@G@G@@@@@G@G@@@E@G@G@@@G@G@G@K@G@G@G@@@G@G@G@A@G@G@G@@@G@G@G@K@@@@@@@@B*****(@B*****(@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@G C@G @@G'' @G'' @G'' @G'' G'''' G'''' G'''' G''''!!G'''' G'''' G'''' G'''' O??0O??0@@@@@@@C@@@@') ; yourself); yourself]
 !
 
 iconAlignL
@@ -506,8 +528,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'UIPainter iconAlignL'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@(@@@@@@@(@@@@@@@(UUUP@I@(_??0@@@(@@@@@@@(@@@@@@@(@@@@@@@(@@@@@@@(UUUU@@@(_???@@@(@@@@@E@(@@@@@@@(@@@@@@@(@@@@@@@(UU@@@@@(_?@@@@@(@@@@@@@(@@@@@@@@@@@@@E@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@F@@@G?>@G?>@G?>@G?>@F@@@F@@@G?? G?? G?? G?? F@@@F@@@G? @G? @G? @G? @F@@@@@@@@@@@') ; yourself); yourself]
+	constantNamed:#'UIPainter iconAlignL'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@(@@@@@@@(@@@@@@@(UUUP@I@(_??0@@@(@@@@@@@(@@@@@@@(@@@@@@@(@@@@@@@(UUUU@@@(_???@@@(@@@@@E@(@@@@@@@(@@@@@@@(@@@@@@@(UU@@@@@(_?@@@@@(@@@@@@@(@@@@@@@@@@@@@E@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@F@@@G?>@G?>@G?>@G?>@F@@@F@@@G?? G?? G?? G?? F@@@F@@@G? @G? @G? @G? @F@@@@@@@@@@@') ; yourself); yourself]
 !
 
 iconAlignLR
@@ -524,8 +546,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'UIPainter iconAlignLR'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@(@@@B @@(@@@B @@(UUUR I@(_??2 @@(@@@B @@(@@@B @@(@@@B @@(@@@B @@(UUUR @@(_??2 @@(@@@B E@(@@@B @@(@@@B @@(@@@B @@(UUUR @@(_??B @@(@@@B @@(@@@B @@@@@@@@E@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@F@A G?? G?? G?? G?? F@A F@A G?? G?? G?? G?? F@A F@A G?? G?? G?; G?? F@A @@@@@@@@') ; yourself); yourself]
+	constantNamed:#'UIPainter iconAlignLR'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@(@@@B @@(@@@B @@(UUUR I@(_??2 @@(@@@B @@(@@@B @@(@@@B @@(@@@B @@(UUUR @@(_??2 @@(@@@B E@(@@@B @@(@@@B @@(@@@B @@(UUUR @@(_??B @@(@@@B @@(@@@B @@@@@@@@E@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@F@A G?? G?? G?? G?? F@A F@A G?? G?? G?? G?? F@A F@A G?? G?? G?; G?? F@A @@@@@@@@') ; yourself); yourself]
 !
 
 iconAlignR
@@ -542,8 +564,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'UIPainter iconAlignR'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@B @@@@@@B @@@UUUR I@@_??2 @@@@@@B @@@@@@B @@@@@@B @@@@@@B @@EUUUR @@G???2 @@@@@@B E@@@@@B @@@@@@B @@@@@@B @@@@EUR @@@@G?2 @@@@@@B @@@@@@B @@@@@@@@E@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@A A?? A?? A?? A?? @@A @@A G?? G?? G?? G?? @@A @@A @G? @G? @G? @G? @@A @@@@@@@@') ; yourself); yourself]
+	constantNamed:#'UIPainter iconAlignR'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@B @@@@@@B @@@UUUR I@@_??2 @@@@@@B @@@@@@B @@@@@@B @@@@@@B @@EUUUR @@G???2 @@@@@@B E@@@@@B @@@@@@B @@@@@@B @@@@EUR @@@@G?2 @@@@@@B @@@@@@B @@@@@@@@E@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@A A?? A?? A?? A?? @@A @@A G?? G?? G?? G?? @@A @@A @G? @G? @G? @G? @@A @@@@@@@@') ; yourself); yourself]
 !
 
 iconAlignT
@@ -560,8 +582,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'UIPainter iconAlignT'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@B*****(@B*****(@@@@@@@@@@E@E@E@K@G@G@G@@@G@G@G@A@G@G@G@@@G@G@G@K@G@G@G@@@@@G@G@@@@@G@G@@@@@G@G@@@@@G@G@@@@@G@@@@@@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@C@@@@O??0O??0G'''' G'''' G'''' G'''' G''''!!G'''' G'''' G'''' @G'' @G'' @G'' @G'' @G @@G C@@@@@@@@@@@@') ; yourself); yourself]
+	constantNamed:#'UIPainter iconAlignT'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@B*****(@B*****(@@@@@@@@@@E@E@E@K@G@G@G@@@G@G@G@A@G@G@G@@@G@G@G@K@G@G@G@@@@@G@G@@@@@G@G@@@@@G@G@@@@@G@G@@@@@G@@@@@@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@C@@@@O??0O??0G'''' G'''' G'''' G'''' G''''!!G'''' G'''' G'''' @G'' @G'' @G'' @G'' @G @@G C@@@@@@@@@@@@') ; yourself); yourself]
 !
 
 iconAlignTB
@@ -578,8 +600,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'UIPainter iconAlignTB'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@A@@@@@@@@@@@@@@@@B*****(@B*****(@@@@@@@@@@E@E@E@G@G@G@G@@@G@G@G@@@G@G@G@@@G@G@G@H@G@G@G@@@G@G@G@A@G@G@G@@@G@G@G@@@G@G@D@@@@@@@@@@B*****(@B*****(@@@@@@@@@@@@@@@@H@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@C@@@@O??0O??0G'''' G''''!!G'''' G'''' G'''' G'''' G'''' G'''' G''''!!G''''!!G''& G'''' O??0O??2@@@@@@@@@@@@') ; yourself); yourself]
+	constantNamed:#'UIPainter iconAlignTB'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@A@@@@@@@@@@@@@@@@B*****(@B*****(@@@@@@@@@@E@E@E@G@G@G@G@@@G@G@G@@@G@G@G@@@G@G@G@H@G@G@G@@@G@G@G@A@G@G@G@@@G@G@G@@@G@G@D@@@@@@@@@@B*****(@B*****(@@@@@@@@@@@@@@@@H@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 0 0 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@C@@@@O??0O??0G'''' G''''!!G'''' G'''' G'''' G'''' G'''' G'''' G''''!!G''''!!G''& G'''' O??0O??2@@@@@@@@@@@@') ; yourself); yourself]
 !
 
 iconCenterH
@@ -733,86 +755,86 @@
     ^
      
        #(#FullSpec
-          #window: 
-           #(#WindowSpec
-              #name: 'GUI Painter'
-              #layout: #(#LayoutFrame 291 0 130 0 637 0 289 0)
-              #label: 'GUI Painter'
-              #min: #(#Point 350 160)
-              #max: #(#Point 500 160)
-              #bounds: #(#Rectangle 291 130 638 290)
-              #usePreferredExtent: false
-          )
-          #component: 
-           #(#SpecCollection
-              #collection: 
-               #(
-                 #(#FramedBoxSpec
-                    #name: 'FramedBox'
-                    #layout: #(#LayoutFrame 0 0.0 3 0.0 0 1.0 -35 1.0)
-                    #component: 
-                     #(#SpecCollection
-                        #collection: 
-                         #(
-                           #(#LabelSpec
-                              #name: 'selectorLabel'
-                              #layout: #(#AlignmentOrigin 67 0.11 29 0 1 0.5)
-                              #label: 'Selector:'
-                              #translateLabel: true
-                              #adjust: #right
-                              #resizeForLabel: true
-                          )
-                           #(#InputFieldSpec
-                              #name: 'methodNameField'
-                              #layout: #(#LayoutFrame 70 0.11 18 0 4 1.0 40 0)
-                              #tabable: true
-                              #model: #methodNameChannel
-                              #group: #inputGroup
-                          )
-                           #(#LabelSpec
-                              #name: 'classLabel'
-                              #layout: #(#AlignmentOrigin 67 0.11 54 0 1 0.5)
-                              #label: 'Class:'
-                              #translateLabel: true
-                              #adjust: #right
-                              #resizeForLabel: true
-                          )
-                           #(#InputFieldSpec
-                              #name: 'classNameField'
-                              #layout: #(#LayoutFrame 70 0.11 43 0 4 1.0 65 0)
-                              #tabable: true
-                              #model: #classNameChannel
-                              #group: #inputGroup
-                          )
-                           #(#LabelSpec
-                              #name: 'superClassLabel'
-                              #layout: #(#AlignmentOrigin 67 0.11 79 0 1 0.5)
-                              #label: 'Superclass:'
-                              #translateLabel: true
-                              #adjust: #right
-                              #resizeForLabel: true
-                          )
-                           #(#ComboBoxSpec
-                              #name: 'superclassNameComboBox'
-                              #layout: #(#LayoutFrame 70 0.11 68 0 4 1.0 90 0)
-                              #tabable: true
-                              #model: #superclassNameChannel
-                              #comboList: #superclassNameDefaults
-                          )
-                        )
-                    )
-                    #label: 'Define Class And Selector'
-                    #labelPosition: #topLeft
-                    #translateLabel: true
-                )
-                 #(#UISubSpecification
-                    #name: 'subSpec'
-                    #layout: #(#LayoutFrame 0 0.0 -29 1 0 1.0 -5 1)
-                    #majorKey: #ToolApplicationModel
-                    #minorKey: #windowSpecForCommitWithoutChannels
-                )
-              )
-          )
+	  #window: 
+	   #(#WindowSpec
+	      #name: 'GUI Painter'
+	      #layout: #(#LayoutFrame 291 0 130 0 637 0 289 0)
+	      #label: 'GUI Painter'
+	      #min: #(#Point 350 160)
+	      #max: #(#Point 500 160)
+	      #bounds: #(#Rectangle 291 130 638 290)
+	      #usePreferredExtent: false
+	  )
+	  #component: 
+	   #(#SpecCollection
+	      #collection: 
+	       #(
+		 #(#FramedBoxSpec
+		    #name: 'FramedBox'
+		    #layout: #(#LayoutFrame 0 0.0 3 0.0 0 1.0 -35 1.0)
+		    #component: 
+		     #(#SpecCollection
+			#collection: 
+			 #(
+			   #(#LabelSpec
+			      #name: 'selectorLabel'
+			      #layout: #(#AlignmentOrigin 67 0.11 29 0 1 0.5)
+			      #label: 'Selector:'
+			      #translateLabel: true
+			      #adjust: #right
+			      #resizeForLabel: true
+			  )
+			   #(#InputFieldSpec
+			      #name: 'methodNameField'
+			      #layout: #(#LayoutFrame 70 0.11 18 0 4 1.0 40 0)
+			      #tabable: true
+			      #model: #methodNameChannel
+			      #group: #inputGroup
+			  )
+			   #(#LabelSpec
+			      #name: 'classLabel'
+			      #layout: #(#AlignmentOrigin 67 0.11 54 0 1 0.5)
+			      #label: 'Class:'
+			      #translateLabel: true
+			      #adjust: #right
+			      #resizeForLabel: true
+			  )
+			   #(#InputFieldSpec
+			      #name: 'classNameField'
+			      #layout: #(#LayoutFrame 70 0.11 43 0 4 1.0 65 0)
+			      #tabable: true
+			      #model: #classNameChannel
+			      #group: #inputGroup
+			  )
+			   #(#LabelSpec
+			      #name: 'superClassLabel'
+			      #layout: #(#AlignmentOrigin 67 0.11 79 0 1 0.5)
+			      #label: 'Superclass:'
+			      #translateLabel: true
+			      #adjust: #right
+			      #resizeForLabel: true
+			  )
+			   #(#ComboBoxSpec
+			      #name: 'superclassNameComboBox'
+			      #layout: #(#LayoutFrame 70 0.11 68 0 4 1.0 90 0)
+			      #tabable: true
+			      #model: #superclassNameChannel
+			      #comboList: #superclassNameDefaults
+			  )
+			)
+		    )
+		    #label: 'Define Class And Selector'
+		    #labelPosition: #topLeft
+		    #translateLabel: true
+		)
+		 #(#UISubSpecification
+		    #name: 'subSpec'
+		    #layout: #(#LayoutFrame 0 0.0 -29 1 0 1.0 -5 1)
+		    #majorKey: #ToolApplicationModel
+		    #minorKey: #windowSpecForCommitWithoutChannels
+		)
+	      )
+	  )
       )
 
     "Modified: / 13.8.1998 / 19:59:44 / cg"
@@ -1818,41 +1840,41 @@
      
        #(#Menu
           
-           #(
-             #(#MenuItem
-                #label: 'Up'
-                #translateLabel: true
-                #value: #doStepUp
-                #activeHelpKey: #moveWidgetUp
-                #enabled: #canChangeOrderInContainer
-                #labelImage: #(#ResourceRetriever #Icon #upIcon 'Up')
-            )
-             #(#MenuItem
-                #label: 'Down'
-                #translateLabel: true
-                #value: #doStepDown
-                #activeHelpKey: #moveWidgetDown
-                #enabled: #canChangeOrderInContainer
-                #labelImage: #(#ResourceRetriever #Icon #downIcon 'Down')
-            )
-             #(#MenuItem
-                #label: 'Into'
-                #translateLabel: true
-                #value: #doStepIn
-                #activeHelpKey: #moveWidgetInto
-                #enabled: #canMoveSelectionIntoContainer
-                #labelImage: #(#ResourceRetriever #Icon #downRightIcon 'Into')
-            )
-             #(#MenuItem
-                #label: 'Out'
-                #translateLabel: true
-                #value: #doStepOut
-                #activeHelpKey: #moveWidgetOut
-                #enabled: #canMoveSelectionOutOfContainer
-                #labelImage: #(#ResourceRetriever #Icon #leftDownIcon 'Out')
-            )
-          ) nil
-          nil
+	   #(
+	     #(#MenuItem
+		#label: 'Up'
+		#translateLabel: true
+		#value: #doStepUp
+		#activeHelpKey: #moveWidgetUp
+		#enabled: #canChangeOrderInContainer
+		#labelImage: #(#ResourceRetriever #Icon #upIcon 'Up')
+	    )
+	     #(#MenuItem
+		#label: 'Down'
+		#translateLabel: true
+		#value: #doStepDown
+		#activeHelpKey: #moveWidgetDown
+		#enabled: #canChangeOrderInContainer
+		#labelImage: #(#ResourceRetriever #Icon #downIcon 'Down')
+	    )
+	     #(#MenuItem
+		#label: 'Into'
+		#translateLabel: true
+		#value: #doStepIn
+		#activeHelpKey: #moveWidgetInto
+		#enabled: #canMoveSelectionIntoContainer
+		#labelImage: #(#ResourceRetriever #Icon #downRightIcon 'Into')
+	    )
+	     #(#MenuItem
+		#label: 'Out'
+		#translateLabel: true
+		#value: #doStepOut
+		#activeHelpKey: #moveWidgetOut
+		#enabled: #canMoveSelectionOutOfContainer
+		#labelImage: #(#ResourceRetriever #Icon #leftDownIcon 'Out')
+	    )
+	  ) nil
+	  nil
       )
 !
 
@@ -2267,8 +2289,8 @@
     |holder|
 
     (holder := builder bindingAt:#galleryShown) isNil ifTrue:[
-        builder aspectAt:#galleryShown put:(holder :=  true asValue).
-        holder addDependent:self
+	builder aspectAt:#galleryShown put:(holder :=  true asValue).
+	holder addDependent:self
     ].
     ^ holder
 
@@ -2320,8 +2342,8 @@
     |holder|
 
     (holder := builder bindingAt:#painterShown) isNil ifTrue:[
-        builder aspectAt:#painterShown put:(holder :=  true asValue).
-        holder addDependent:self
+	builder aspectAt:#painterShown put:(holder :=  true asValue).
+	holder addDependent:self
     ].
     ^ holder
 
@@ -2345,8 +2367,8 @@
     |holder|
 
     (holder := builder bindingAt:#tabModel) isNil ifTrue:[
-        holder := AspectAdaptor new subject:self; forAspect:#tabSelection.
-        builder aspectAt:#tabModel put:holder.
+	holder := AspectAdaptor new subject:self; forAspect:#tabSelection.
+	builder aspectAt:#tabModel put:holder.
     ].
     ^ holder
 !
@@ -2478,12 +2500,12 @@
     |selector editor spec|
 
     (self resolveName:specClassName) isNil ifTrue:[
-        self askForSaving ifFalse: [^self]
+	self askForSaving ifFalse: [^self]
     ].
 
     spec := self specTool specification.
     (selector := spec hierarchicalList) notNil ifTrue:[
-        selector := selector asSymbol
+	selector := selector asSymbol
     ].
 
     editor := HierarchicalListEditor new.
@@ -2491,11 +2513,11 @@
     editor openModalOnClass:specClassName andSelector:selector.
 
     editor specSelector ~= selector ifTrue:[
-        editor hasSaved ifTrue:[
-            spec hierarchicalList:editor specSelector.
-            self modifiedChannel value:true.
-            self accept
-        ]
+	editor hasSaved ifTrue:[
+	    spec hierarchicalList:editor specSelector.
+	    self modifiedChannel value:true.
+	    self accept
+	]
     ]
 
     "Modified: / 16.7.1998 / 18:15:46 / cg"
@@ -2897,10 +2919,10 @@
     self askForSectionModification.    
 
     ((YesNoBox title:'No application class defined yet!!')        
-        noText:'Cancel';
-        yesText:'Define';
-        showAtPointer;
-        accepted) ifFalse: [^false].
+	noText:'Cancel';
+	yesText:'Define';
+	showAtPointer;
+	accepted) ifFalse: [^false].
 
     self doSave.
 
@@ -2911,11 +2933,11 @@
     "asks for section modification in the notebook"
 
     self isModified ifTrue:[
-        (self confirm:'Accept modifications in section ' , tabSelection printString asBoldText, '?') ifTrue:[
-            self accept
-        ] ifFalse: [
-            self cancel
-        ]
+	(self confirm:'Accept modifications in section ' , tabSelection printString asBoldText, '?') ifTrue:[
+	    self accept
+	] ifFalse: [
+	    self cancel
+	]
     ]
 !
 
@@ -3081,7 +3103,7 @@
     |type|
 
     self painter topView == aView ifTrue:[
-        type := #Extent
+	type := #Extent
     ].
     self layoutTool layoutView:aView type:type spec:aSpec
 
@@ -3159,7 +3181,7 @@
      the window spec is stored is defined"
 
     specSelector size > 1 ifTrue:[
-        ^ self hasSpecClass
+	^ self hasSpecClass
     ].
     ^ false
 !
@@ -3409,18 +3431,18 @@
     |topView|
 
     (topView := self window) == aTopView ifTrue:[
-        super closeRequestFor:aTopView
+	super closeRequestFor:aTopView
     ] ifFalse:[
-        aTopView = selectionPanel window ifTrue:[
-            self galleryShown value:false
-        ] ifFalse:[
-            aTopView == (self painter topView) ifTrue:[
-                self painterShown value:false
-            ] ifFalse:[
-                aTopView closeRequest
-            ]
-        ].
-        topView raise.
+	aTopView = selectionPanel window ifTrue:[
+	    self galleryShown value:false
+	] ifFalse:[
+	    aTopView == (self painter topView) ifTrue:[
+		self painterShown value:false
+	    ] ifFalse:[
+		aTopView closeRequest
+	    ]
+	].
+	topView raise.
     ].
 !
 
@@ -3829,6 +3851,48 @@
     self replaceWidgetByClass:widgetClass
 !
 
+doBrowseActionMethod:aspectSelector
+    |cls spec aspect code|
+
+    cls := self specClass.
+    cls isNil ifTrue:[
+        Dialog information:'No Application Class defined.'.
+        ^ self
+    ].
+
+    spec := painter specForSelection.
+    spec isNil ifTrue:[^ self].
+    aspect := spec perform:aspectSelector.
+    aspect isNil ifTrue:[
+        Dialog information:(resources 
+                                string:'Please enter a Method name for %1 first.'
+                                with:aspectSelector allBold).
+        ^ self
+    ].
+        
+    (cls implements:aspect asSymbol) ifFalse:[
+        (Dialog confirm:(resources 
+                            stringWithCRs:'%1 does not implement %2.\\Create ?'
+                            with:(cls name allBold)
+                            with:aspect allBold)) 
+        ifFalse:[
+            (Dialog confirm:(resources 
+                                stringWithCRs:'Browse implementors of %1 ?'
+                                with:aspect allBold)) 
+            ifTrue:[
+                SystemBrowser browseImplementorsOf:aspect
+            ].
+            ^ self
+        ].
+        code := painter
+            generateActionMethodFor:aspect 
+            spec:nil 
+            inClass:cls.
+        code readStream fileIn.
+    ].
+    SystemBrowser openInClass:cls selector:aspect
+!
+
 doBrowseAspectMethods
     "opens a browser on the aspect methods"
 
@@ -4100,9 +4164,9 @@
     |selection|
 
     ((selection := self painter selection) isCollection and: [selection size >= 1]) ifTrue:[
-        selection first inspect
+	selection first inspect
     ] ifFalse: [
-        selection inspect
+	selection inspect
     ]
 
 !
@@ -4194,9 +4258,9 @@
     self askForModification ifFalse: [^nil].
 
     (view := Screen current viewFromUser) notNil ifTrue:[
-        view == Screen current rootView ifFalse:[
-            self painter setupFromSpec:(UISpecification fromView:view topView).
-        ]
+	view == Screen current rootView ifFalse:[
+	    self painter setupFromSpec:(UISpecification fromView:view topView).
+	]
     ].
 
     self updateInfoLabel
@@ -4341,8 +4405,8 @@
     self askForSectionModification.
 
     CodeView 
-        openWith: self painter generateWindowSpecMethodSource 
-        title: 'Window Spec'
+	openWith: self painter generateWindowSpecMethodSource 
+	title: 'Window Spec'
 
 !
 
@@ -4381,13 +4445,13 @@
     selection in tree view; only used by the UIPainter
 
     [see also:]
-        SelectionInTreeView
-        SelectionInTree
-        TreeItem
-        UIPainter
+	SelectionInTreeView
+	SelectionInTree
+	TreeItem
+	UIPainter
 
     [author:]
-        Claus Atzkern
+	Claus Atzkern
 "
 
 
@@ -4483,9 +4547,9 @@
     "returns item assigned to view or nil"
 
     aView notNil ifTrue:[
-        self allItemsDo:[:anItem|
-            (anItem contents view == aView) ifTrue:[^ anItem]
-        ]
+	self allItemsDo:[:anItem|
+	    (anItem contents view == aView) ifTrue:[^ anItem]
+	]
     ].
     ^ nil
 
@@ -4526,7 +4590,7 @@
     "evaluates the block on each property"
 
     self allItemsDo:[:anItem|
-        (aOneArgBlock value:(anItem contents)) ifTrue:[^ anItem contents]
+	(aOneArgBlock value:(anItem contents)) ifTrue:[^ anItem contents]
     ].
     ^ nil
 
@@ -4539,9 +4603,9 @@
     |idx|
 
     selection size == 1 ifTrue:[
-        (idx := selection first) ~~ 1 ifTrue:[          "canvas: not yet supported"
-            ^ (listOfNodes at:idx) contents
-        ]
+	(idx := selection first) ~~ 1 ifTrue:[          "canvas: not yet supported"
+	    ^ (listOfNodes at:idx) contents
+	]
     ].
     ^ nil
 
@@ -4568,8 +4632,8 @@
     windowSpec := nil.
 
     self canvas subViews copy do:[:aView|
-        "/ care to not destroy the transparent input view
-        (aView isInputOnly) ifFalse:[aView destroy]
+	"/ care to not destroy the transparent input view
+	(aView isInputOnly) ifFalse:[aView destroy]
     ].
     model root name: UIPainter defaultNameOfCanvas asBoldText.
     model removeAllOtherThanRoot.
@@ -4582,9 +4646,9 @@
     |item prnt|
 
     ((item := self itemOfView:aView) notNil and:[(prnt := item parent) notNil]) ifTrue:[
-        aView destroy.
-        prnt contents view sizeChanged:nil.
-        model remove:item
+	aView destroy.
+	prnt contents view sizeChanged:nil.
+	model remove:item
     ]
 
 
@@ -4601,12 +4665,12 @@
     fullSpec name:specNameSymbol.
 
     fullSpec fromBuilder:(self canvas topView)
-              components:(SpecCollection new collection:aSpecArray).
+	      components:(SpecCollection new collection:aSpecArray).
 
     windowSpec notNil ifTrue:[
-        winSpec := fullSpec window.
-        winSpec copyValuesFromSpec:windowSpec.
-        winSpec name: winSpec label.
+	winSpec := fullSpec window.
+	winSpec copyValuesFromSpec:windowSpec.
+	winSpec name: winSpec label.
     ].    
     ^ fullSpec literalArrayEncoding.
 
@@ -4638,19 +4702,19 @@
     |sel list size|
 
     ((sel := aSelection) isNil or:[sel isCollection]) ifFalse:[
-        sel := Array with:sel
+	sel := Array with:sel
     ].
 
     (size := sel size) ~~ 0 ifTrue:[
-        list := OrderedCollection new:size.
-
-        sel do:[:aView||item|
-            (item := self itemOfView:aView) notNil ifTrue:[
-                list add:item.
-                model doMakeVisible:item.
-            ]
-        ].
-        sel := list collect:[:anItem| self indexOfNode:anItem ].
+	list := OrderedCollection new:size.
+
+	sel do:[:aView||item|
+	    (item := self itemOfView:aView) notNil ifTrue:[
+		list add:item.
+		model doMakeVisible:item.
+	    ]
+	].
+	sel := list collect:[:anItem| self indexOfNode:anItem ].
     ].
     self cvsEventsDisabledDo:[ self selection:sel ].            
 
@@ -4667,13 +4731,13 @@
     item := self itemOfView:aView.
 
     item notNil ifTrue:[
-        model doMakeVisible:item.
-
-        (index := self indexOfNode:item) ~~ 0 ifTrue:[
-            oldSel := selection copy.
-            self addToSelection:index.
-            self selectionChangedFrom:oldSel
-        ]        
+	model doMakeVisible:item.
+
+	(index := self indexOfNode:item) ~~ 0 ifTrue:[
+	    oldSel := selection copy.
+	    self addToSelection:index.
+	    self selectionChangedFrom:oldSel
+	]        
     ]            
 
 
@@ -4689,9 +4753,9 @@
      and:[(index := self indexOfNode:item) ~~ 0
      and:[self isInSelection:index]]
     ) ifTrue:[
-        oldSel := selection copy.
-        self removeFromSelection:index.
-        self selectionChangedFrom:oldSel.
+	oldSel := selection copy.
+	self removeFromSelection:index.
+	self selectionChangedFrom:oldSel.
     ].
 
 
@@ -4711,8 +4775,8 @@
      and:[(self propertyDetect:[:p| p name = name]) isNil
      and:[node name ~= name]]]
     ) ifTrue:[
-        node name: name asBoldText.
-        node changed.   
+	node name: name asBoldText.
+	node changed.   
     ].
 !
 
@@ -4721,7 +4785,7 @@
      application will be informed to update its layout
     "
     selection size == 1 ifTrue:[
-        self application layoutChanged
+	self application layoutChanged
     ]
 
 
@@ -4735,29 +4799,29 @@
     item := self itemOfView:(aProperty view).
 
     item notNil ifTrue:[
-        item contents:aProperty.
-
-        item name = aProperty name ifFalse:[
-            idx := self firstLineShown.
-
-            (end := self lastLineShown) > listOfNodes size ifTrue:[
-                end := listOfNodes size
-            ].                          
-            item changed.   
-
-            [idx <= end] whileTrue:[
-                (listOfNodes at:idx) == item ifTrue:[
-                    self redrawLine:idx.                "/ is visible; redraw line
-                    end := 0
-                ] ifFalse:[
-                    idx := idx + 1
-                ]
-            ]
-        ].
-
-        self selectedNode == item ifTrue:[              "/ inform application
-            self application propertyChanged
-        ]
+	item contents:aProperty.
+
+	item name = aProperty name ifFalse:[
+	    idx := self firstLineShown.
+
+	    (end := self lastLineShown) > listOfNodes size ifTrue:[
+		end := listOfNodes size
+	    ].                          
+	    item changed.   
+
+	    [idx <= end] whileTrue:[
+		(listOfNodes at:idx) == item ifTrue:[
+		    self redrawLine:idx.                "/ is visible; redraw line
+		    end := 0
+		] ifFalse:[
+		    idx := idx + 1
+		]
+	    ]
+	].
+
+	self selectedNode == item ifTrue:[              "/ inform application
+	    self application propertyChanged
+	]
     ].
 
 
@@ -4861,7 +4925,7 @@
     "disables collapsing of the root item"
 
     self selectedNode == model root ifFalse:[
-        super doubleClicked
+	super doubleClicked
     ]
 
 
@@ -4875,12 +4939,12 @@
     super redrawLabelAt:x y:yTop index:anIndex.
 
     ((selection size > 1) and: [selection first == anIndex]) ifTrue:[
-        dX := textInset - 1.
-        self paint:(Color red). "/ self application painter handleMasterColor.
-        self fillRectangleX:(x - dX - 2)
-                          y:yTop + ((fontHeight - dX) // 2)
-                      width:dX
-                     height:dX
+	dX := textInset - 1.
+	self paint:(Color red). "/ self application painter handleMasterColor.
+	self fillRectangleX:(x - dX - 2)
+			  y:yTop + ((fontHeight - dX) // 2)
+		      width:dX
+		     height:dX
     ]
 ! !
 
@@ -4898,18 +4962,18 @@
 
     self model iconAction: 
     [:aNode|
-        |specClass|       
-        (specClass := aNode contents spec) isNil 
-            ifTrue: [WindowSpec icon]
-            ifFalse:[specClass class icon]
+	|specClass|       
+	(specClass := aNode contents spec) isNil 
+	    ifTrue: [WindowSpec icon]
+	    ifFalse:[specClass class icon]
     ].
 
     self model labelAction: 
     [:aNode|
-        |spec|
-        (spec := aNode contents spec) notNil
-            ifTrue: [self nameForSpecInList:spec] 
-            ifFalse:[aNode name]
+	|spec|
+	(spec := aNode contents spec) notNil
+	    ifTrue: [self nameForSpecInList:spec] 
+	    ifFalse:[aNode name]
     ]
 ! !
 
@@ -4931,32 +4995,32 @@
     size := selection size.
 
     cvsEventsDisabled ifFalse:[
-        (size ~~ 0 and:[size ~~ 1 or:[selection first ~~ 1]]) ifTrue:[
-            sel := OrderedCollection new.
-
-            selection do:[:i|
-                i ~~ 1 ifTrue:[sel add:(listOfNodes at:i) contents view]
-            ]
-        ].
-        self canvas updateSelectionFromModel:sel
+	(size ~~ 0 and:[size ~~ 1 or:[selection first ~~ 1]]) ifTrue:[
+	    sel := OrderedCollection new.
+
+	    selection do:[:i|
+		i ~~ 1 ifTrue:[sel add:(listOfNodes at:i) contents view]
+	    ]
+	].
+	self canvas updateSelectionFromModel:sel
     ].             
     size = 1 ifTrue:[
-        oldSelection size > 1 ifTrue: [
-            (listOfNodes at:lastDrawnMaster) retrieveLabel.
-            self redrawLine: lastDrawnMaster. 
-            lastDrawnMaster := selection first
-        ]
+	oldSelection size > 1 ifTrue: [
+	    (listOfNodes at:lastDrawnMaster) retrieveLabel.
+	    self redrawLine: lastDrawnMaster. 
+	    lastDrawnMaster := selection first
+	]
     ].
     size > 1 ifTrue:[
-        selection first ~~ lastDrawnMaster ifTrue: [
-            (listOfNodes at:selection first) retrieveLabel.
-            lastDrawnMaster notNil ifTrue: [(listOfNodes at:lastDrawnMaster) retrieveLabel].
-            self redrawLine: lastDrawnMaster. 
-            self redrawLine: (lastDrawnMaster := selection first)
-        ]
+	selection first ~~ lastDrawnMaster ifTrue: [
+	    (listOfNodes at:selection first) retrieveLabel.
+	    lastDrawnMaster notNil ifTrue: [(listOfNodes at:lastDrawnMaster) retrieveLabel].
+	    self redrawLine: lastDrawnMaster. 
+	    self redrawLine: (lastDrawnMaster := selection first)
+	]
     ]         
     ifFalse: [
-        lastDrawnMaster := nil
+	lastDrawnMaster := nil
     ] 
 ! !
 
@@ -4989,15 +5053,15 @@
      can change their layout through to a move or align operation"
 
     selection size == 0 ifTrue:[
-        ^ false
+	^ false
     ].
 
     selection do:[:i|
-        i == 1 ifTrue:[^ false].
-
-        (self canvas canChangeLayoutOfView:((listOfNodes at:i) contents view)) ifFalse:[
-            ^ false
-        ]
+	i == 1 ifTrue:[^ false].
+
+	(self canvas canChangeLayoutOfView:((listOfNodes at:i) contents view)) ifFalse:[
+	    ^ false
+	]
     ].
     ^ true
 !
@@ -5028,7 +5092,7 @@
       or:[(prnt := item parent) isNil
       or:[prnt parent isNil]]
     ) ifTrue:[
-        ^ false
+	^ false
     ].
     ^ true
 !
@@ -5040,9 +5104,9 @@
     |selectedNode|
 
     (selectedNode := self selectedNode) notNil ifTrue:[
-        (selectedNode := selectedNode parent) notNil ifTrue:[
-            ^ (selectedNode parent isNil or:[selectedNode contents spec class canResizeSubComponents])
-        ]
+	(selectedNode := selectedNode parent) notNil ifTrue:[
+	    ^ (selectedNode parent isNil or:[selectedNode contents spec class canResizeSubComponents])
+	]
     ].
     ^ false
 !
@@ -5110,7 +5174,7 @@
       or:[(prnt := prnt childAt:((prnt indexOfChild:item) + 1)) isNil
       or:[prnt contents spec class supportsSubComponents not]]]
     ) ifFalse:[
-        self doChangeHierarchyOf:prnt
+	self doChangeHierarchyOf:prnt
     ]
 !
 
@@ -5118,7 +5182,7 @@
     |item|
 
     ((item := self selectedNode) notNil and:[(item := item parent) notNil]) ifTrue:[
-        self doChangeHierarchyOf:(item parent)
+	self doChangeHierarchyOf:(item parent)
     ].
 !