UIPainterView.st
changeset 62 0e8573b4329a
parent 60 7542ab7fbbfe
child 69 e533f77871dd
--- a/UIPainterView.st	Fri Feb 28 10:20:51 1997 +0100
+++ b/UIPainterView.st	Fri Feb 28 10:22:30 1997 +0100
@@ -10,8 +10,6 @@
  hereby transferred.
 "
 
-'From Smalltalk/X, Version:3.1.4 on 25-feb-1997 at 2:17:29 pm'                  !
-
 UIObjectView subclass:#UIPainterView
 	instanceVariableNames:'fontPanel viewProperties superclassName className methodName
 		categoryName'
@@ -212,21 +210,24 @@
 !
 
 deleteSelection
-    "delete the selection; not into the paste buffer (undo)
+    "delete the selection; copy the selection into the cut&paste-buffer
+     and open a transaction
     "
-    |text|
+    |text specs|
 
     self numberOfSelections ~~ 0 ifTrue:[
-        text := self transactionTextFor:selection.
+        specs := self generateSpecFor:selection.
+        text  := self transactionTextFor:selection.
 
         undoHistory transaction:#cut text:text do:[
             super deleteSelection
         ].
+        self setSelection:specs
     ]
 !
 
 pasteBuffer
-    "add the objects in the paste-buffer
+    "add the objects in the paste-buffer to the object view
     "
     |paste builder frame pasteOrigin pasteOffset|
 
@@ -237,7 +238,7 @@
 
     frame := self singleSelection.
 
-    (self supportsSubComponents:frame) ifFalse:[
+    (self canPasteInto:frame) ifFalse:[
         frame := self
     ].
     self unselect.
@@ -277,6 +278,7 @@
     self showSelection.
     self realizeAllSubViews.
     inputView raise.
+    self elementChangedSize:frame.
     self changed:#tree
 
 ! !
@@ -296,7 +298,7 @@
     viewProperties add:props.
     name := props name.
 
-    aView specClass basicNew supportsLabel ifTrue:[
+    aView specClass supportsLabel ifTrue:[
         aView label:name
     ].
     aView name:name.
@@ -304,6 +306,8 @@
 !
 
 propertiesForNewView:aView
+    "generate property for a view and return properties
+    "
     |cls props index|
 
     cls := aView class.
@@ -348,6 +352,8 @@
 !UIPainterView methodsFor:'event handling'!
 
 keyPress:key x:x y:y
+    "any key pressed
+    "
     <resource: #keyboard ( #Copy #Paste) >
 
     key == #Copy ifTrue:[
@@ -405,7 +411,7 @@
     code := ''.
 
     viewProperties do:[:aProp |
-        |modelSelector protoSpec thisCode|
+        |modelSelector menuSelector protoSpec thisCode|
 
         (modelSelector := aProp aspectSelector) notNil ifTrue:[
             (cls implements:modelSelector asSymbol) ifFalse:[
@@ -417,6 +423,15 @@
                     thisCode := (self generateAspectMethodFor:modelSelector spec:protoSpec inClass:cls).
                 ].
                 code := code , thisCode
+            ].
+        ].
+
+        (menuSelector := aProp menuSelector) notNil ifTrue:[
+            (cls implements:menuSelector asSymbol) ifFalse:[
+                protoSpec := aProp view specClass basicNew.
+                "/ kludge ..
+                thisCode := (self generateAspectMethodFor:menuSelector spec:protoSpec inClass:cls).
+                code := code , thisCode
             ]
         ]
     ].
@@ -833,7 +848,7 @@
     (labelSelector := props labelSelector) notNil ifTrue:[
         newSpec label:labelSelector
     ].
-    (tabable := props tabable) notNil ifTrue:[
+    (tabable := props tabable) == true ifTrue:[
         newSpec tabable:tabable
     ].
     (defaultable := props defaultable) notNil ifTrue:[
@@ -889,7 +904,7 @@
             ^ self
         ]
     ].
-    self selectionHiddenDo:[
+    self withSelectionHiddenDo:[
         group := EnterFieldGroup new.
 
         props := GroupProperties new.
@@ -922,7 +937,7 @@
             ^ self
         ]
     ].
-    self selectionHiddenDo:[
+    self withSelectionHiddenDo:[
         group := RadioButtonGroup new.
 
         props := GroupProperties new.
@@ -950,6 +965,8 @@
 !UIPainterView methodsFor:'initialization'!
 
 initialize
+    "setup attributes
+    "
     super initialize.
 
     superclassName := 'ApplicationModel'.
@@ -1113,6 +1130,8 @@
 !UIPainterView methodsFor:'menus'!
 
 menu
+    "returns middle-button menu dependent on the selection
+    "
     |menu canPaste|
 
     testMode ifTrue:[^ nil ].
@@ -1158,7 +1177,7 @@
                               )
                      receiver:self.
 
-    (canPaste and:[self supportsSubComponents:selection]) ifFalse:[
+    (canPaste and:[self canPasteInto:selection]) ifFalse:[
         menu disable:#pasteBuffer
     ].
 
@@ -1167,6 +1186,8 @@
     menu subMenuAt:#align     put:(self subMenuAlign).
   ^ menu
 
+
+
 !
 
 subMenuAlign
@@ -1186,6 +1207,7 @@
                                     '-'
                                     'spread horizontal'
                                     'spread vertical'
+                                    '-'
                                     'center horizontal in frame'
                                     'center vertical in frame'
                                   )
@@ -1202,6 +1224,7 @@
                             nil
                             spreadSelectionHor
                             spreadSelectionVer
+                            nil
                             centerSelectionHor
                             centerSelectionVer
                          )
@@ -1306,12 +1329,13 @@
                 size:size.
 
     f notNil ifTrue:[
-        self selectionHiddenDo:[
+        self withSelectionHiddenDo:[
             self selectionDo:[:aView |
                 aView font:f.
-                self elementChanged:aView.
+                self elementChangedSize:aView.
             ]
-        ]
+        ].
+        self changed:#any.
     ]
 
     "Modified: 5.9.1995 / 12:13:27 / claus"
@@ -1327,7 +1351,7 @@
     ].
 
     ((aView respondsTo:#label:) and:[aView label = prop name]) ifTrue:[
-        self selectionHiddenDo:[
+        self withSelectionHiddenDo:[
             |layout|
             layout := aView geometryLayout copy.
             aView label:newName.
@@ -1391,9 +1415,10 @@
 !
 
 removeAll
-    "remove the argument, anObject"
-
+    "remove all objects and properties
+    "
     self unselect.
+    viewProperties := OrderedCollection new.
 
     subViews notNil ifTrue:[
         subViews copy do:[:sub |
@@ -1402,7 +1427,6 @@
             ]
         ]
     ].
-    viewProperties := OrderedCollection new.
     undoHistory reinitialize.
     self changed:#tree
 !
@@ -1422,7 +1446,7 @@
 !
 
 removeTreeFrom:anObject
-    "remove the argument, anObject and all of its children
+    "remove the argument, anObject and all of its subviews
     "
     |props|
 
@@ -1461,7 +1485,7 @@
 !
 
 findViewWithId:aViewId
-    "finds view assigned to id and returns the view or nil
+    "finds view assigned to identifier and returns the view or nil
     "
     |prop|
 
@@ -1474,7 +1498,8 @@
 !UIPainterView methodsFor:'seraching property'!
 
 propertyOf:something
-
+    "returns property assigned to group or view
+    "
     ^ viewProperties detect:[:p| (p view == something or:[p group == something])]
                      ifNone:nil
 
@@ -1485,12 +1510,14 @@
 !
 
 propertyOfGroup:aGroup
-
+    "returns property assigned to group
+    "
     ^ viewProperties detect:[:p| p group == aGroup] ifNone:nil
 !
 
 propertyOfIdentifier:anId
-
+    "returns property assigned to unique identifier
+    "
     anId notNil ifTrue:[
         ^ viewProperties detect:[:p| p identifier == anId] ifNone:nil.
     ].
@@ -1498,7 +1525,8 @@
 !
 
 propertyOfName:aString
-
+    "returns property assigned to name
+    "
     aString = 'self' ifFalse:[
         ^ viewProperties detect:[:p| p name = aString] ifNone:nil
     ].
@@ -1506,7 +1534,8 @@
 !
 
 propertyOfView:aView
-
+    "returns property assigned to view
+    "
     (aView isNil or:[aView == self]) ifFalse:[
         ^ viewProperties detect:[:p| p view == aView] ifNone:nil
     ].
@@ -1516,7 +1545,8 @@
 !UIPainterView methodsFor:'testing'!
 
 isHorizontalResizable:aComponent
-
+    "returns true if instance is horizontal resizeable
+    "
     (aComponent isKindOf:ScrollBar) ifTrue:[
         ^ aComponent orientation == #horizontal
     ].
@@ -1532,7 +1562,8 @@
 !
 
 isVerticalResizable:aComponent
-
+    "returns true if instance is vertical resizeable
+    "
     (aComponent isKindOf:EditField) ifTrue:[
         ^ false
     ].
@@ -1600,6 +1631,8 @@
 !UIPainterView methodsFor:'undo actions'!
 
 undoCreate:aViewId
+    "undo method when creating or pasting an object
+    "
     |view|
 
     undoHistory addUndoBlock:[
@@ -1611,30 +1644,22 @@
 !
 
 undoLayout:aViewId
-    "undo method layout
+    "undo method when changing the layout (position or dimension)
     "
-    |view layout|
+    |view layout extent|
 
     (view := self findViewWithId:aViewId) notNil ifTrue:[
-        layout := view geometryLayout copy.
-        view   := nil.
-
-        layout notNil ifTrue:[
-            undoHistory addUndoBlock:[
-                (view := self findViewWithId:aViewId) notNil ifTrue:[
-                    view geometryLayout:layout
-                ]
-            ]
-        ] ifFalse:[
-            layout := view pixelOrigin.
-
-            undoHistory addUndoBlock:[
-                (view := self findViewWithId:aViewId) notNil ifTrue:[
-                    view pixelOrigin:layout
-                ]
+        (layout := view geometryLayout copy) isNil ifTrue:[
+            extent := view extent copy
+        ].
+        undoHistory addUndoBlock:[
+            (view := self findViewWithId:aViewId) notNil ifTrue:[
+                layout notNil ifTrue:[view geometryLayout:layout]
+                             ifFalse:[view extent:extent]
             ]
         ]
-    ]
+    ].
+    view := nil
 !
 
 undoLayoutView:aView
@@ -1651,7 +1676,7 @@
 !
 
 undoRemove:aViewId
-    "prepare undo method
+    "undo method when removing an object
     "
     |view prop spec parentId|
 
@@ -1659,10 +1684,8 @@
         spec := (self generateSpecFor:view) first.
         view := view superView.
 
-        (self supportsSubComponents:view) ifTrue:[
-            prop := self propertyOfView:view.
-
-            prop notNil ifTrue:[
+        (self canPasteInto:view) ifTrue:[
+            (prop := self propertyOfView:view) notNil ifTrue:[
                 parentId := prop identifier
             ]
         ].
@@ -1691,7 +1714,7 @@
 !
 
 undoSpecModify:aViewId
-    "undo for updateFromSpec
+    "undo method when changing the specification for an object
     "
     |builder view spec|
 
@@ -1703,7 +1726,7 @@
             (view := self findViewWithId:aViewId) notNil ifTrue:[
                 builder := UIBuilder new.
                 spec setAttributesIn:view with:builder.
-                view superView sizeChanged:nil
+                self elementChangedSize:view.
             ]
         ]
     ].
@@ -1720,7 +1743,7 @@
     |props name builder|
 
     self singleSelection notNil ifTrue:[
-        self selectionHiddenDo:[
+        self withSelectionHiddenDo:[
             self transaction:#specification selectionDo:[:aView|
                 builder := UIBuilder new.
                 props   := self propertyOfView:aView.
@@ -1742,7 +1765,7 @@
                 ].
 
                 aSpec setAttributesIn:aView with:builder.
-                aView superView sizeChanged:nil.
+                self elementChangedSize:aView.
 
                 props tabable:aSpec tabable.
                 props defaultable:aSpec defaultable.
@@ -1751,9 +1774,9 @@
                 props changeSelector:aSpec changeSelector.
                 props labelSelector:aSpec labelSelector.
                 props menuSelector:aSpec menuSelector.
-            ].
-            self changed:#tree
-        ]
+            ]
+        ].
+        self changed:#tree
     ].
 
 ! !