UIObjectView.st
author Claus Gittinger <cg@exept.de>
Sun, 01 Feb 2015 14:16:33 +0100
changeset 3178 58100b56595d
parent 3143 0eb6a10e5dc8
child 3219 2395b33f653e
permissions -rw-r--r--
class: MenuEditor fixed the following redraw bug in ModelListView (which is already fixed in SelectionInListView): if a colored item is shown with selection, the color attribute should be removed (or relaxed), to avoid drawing the label invisible. I.e. if the text color is blue or grey, and the selection bg is blue. we should draw white-on-blue, instead of blue/grey on blue. For this to work, the info whether drawing a selection must be passed down through the renderer to the item's draw routine.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
156
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
     1
"
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
     2
 COPYRIGHT (c) 1995 by eXept Software AG
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
     3
	      All Rights Reserved
156
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
     4
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
     5
 This software is furnished under a license and may be used
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
     6
 only in accordance with the terms of that license and with the
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
     8
 be provided or otherwise made available to, or used by, any
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
     9
 other person.  No title to or ownership of the software is
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    10
 hereby transferred.
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    11
"
1399
a0687f5e1f54 category changes
Claus Gittinger <cg@exept.de>
parents: 1350
diff changeset
    12
"{ Package: 'stx:libtool2' }"
a0687f5e1f54 category changes
Claus Gittinger <cg@exept.de>
parents: 1350
diff changeset
    13
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    14
ObjectView subclass:#UIObjectView
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
    15
	instanceVariableNames:'saveSelection undoHistory copiedExtent copiedLayout resizeData
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
    16
		clipChildren selectionHiddenLevel gridParameters
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
    17
		setOfSuperViewsSizeChanged hasUndoHistoryHolder'
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
    18
	classVariableNames:'CopiedLayout CopiedExtent'
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    19
	poolDictionaries:''
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    20
	category:'Interface-UIPainter'
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    21
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    22
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
    23
Object subclass:#PostEventHandler
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
    24
	instanceVariableNames:'onView'
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
    25
	classVariableNames:''
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
    26
	poolDictionaries:''
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
    27
	privateIn:UIObjectView
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
    28
!
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
    29
1437
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
    30
Object subclass:#ResizeData
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
    31
	instanceVariableNames:'object selector checkForChangeSelector delta'
1437
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
    32
	classVariableNames:''
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
    33
	poolDictionaries:''
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
    34
	privateIn:UIObjectView
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
    35
!
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
    36
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    37
Object subclass:#UndoHistory
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
    38
	instanceVariableNames:'startIdentifier identifier painter history transaction enabled'
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    39
	classVariableNames:''
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    40
	poolDictionaries:''
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    41
	privateIn:UIObjectView
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    42
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    43
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
    44
Object subclass:#Transaction
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
    45
	instanceVariableNames:'identifier type text actions'
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
    46
	classVariableNames:''
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
    47
	poolDictionaries:''
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
    48
	privateIn:UIObjectView::UndoHistory
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
    49
!
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
    50
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
    51
!UIObjectView class methodsFor:'documentation'!
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
    52
156
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    53
copyright
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    54
"
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    55
 COPYRIGHT (c) 1995 by eXept Software AG
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
    56
	      All Rights Reserved
156
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    57
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    58
 This software is furnished under a license and may be used
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    59
 only in accordance with the terms of that license and with the
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    60
 inclusion of the above copyright notice.   This software may not
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    61
 be provided or otherwise made available to, or used by, any
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    62
 other person.  No title to or ownership of the software is
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    63
 hereby transferred.
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    64
"
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    65
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    66
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    67
!
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    68
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
    69
documentation
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
    70
"
131
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
    71
    buildIn view used by the UIPainter; it provides all services for creating, deleting
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
    72
    moving and changing layouts of painted components on a canvas.
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
    73
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
    74
    [see also:]
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
    75
	UIBuilder
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
    76
	UIPainterView
156
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    77
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    78
    [author:]
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
    79
	Claus Atzkern
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
    80
"
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
    81
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
    82
! !
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    83
63
6714daee4b26 checkin from browser
ca
parents: 61
diff changeset
    84
!UIObjectView class methodsFor:'conversion'!
6714daee4b26 checkin from browser
ca
parents: 61
diff changeset
    85
6714daee4b26 checkin from browser
ca
parents: 61
diff changeset
    86
asLayoutFrameFromView:aView
6714daee4b26 checkin from browser
ca
parents: 61
diff changeset
    87
    "convert layout from aView to a frameLayout. On success the frameLayout is
6714daee4b26 checkin from browser
ca
parents: 61
diff changeset
    88
     returned otherwise nil
6714daee4b26 checkin from browser
ca
parents: 61
diff changeset
    89
    "
68
889c3877baf0 layout ....
ca
parents: 67
diff changeset
    90
    |lF lO rF rO tF tO bF bO type layout newLyt|
889c3877baf0 layout ....
ca
parents: 67
diff changeset
    91
889c3877baf0 layout ....
ca
parents: 67
diff changeset
    92
    type   := self layoutType:aView.
889c3877baf0 layout ....
ca
parents: 67
diff changeset
    93
    layout := aView geometryLayout.
889c3877baf0 layout ....
ca
parents: 67
diff changeset
    94
91
86d0c649f95e extent -> layout
Claus Gittinger <cg@exept.de>
parents: 89
diff changeset
    95
    layout isNil ifTrue:[
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
    96
        type == #Extent ifTrue:[
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
    97
            layout := aView bounds asLayout
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
    98
        ]
91
86d0c649f95e extent -> layout
Claus Gittinger <cg@exept.de>
parents: 89
diff changeset
    99
    ].
86d0c649f95e extent -> layout
Claus Gittinger <cg@exept.de>
parents: 89
diff changeset
   100
68
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   101
    (type isNil or:[layout isNil]) ifTrue:[
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   102
        ^ nil
63
6714daee4b26 checkin from browser
ca
parents: 61
diff changeset
   103
    ].
6714daee4b26 checkin from browser
ca
parents: 61
diff changeset
   104
68
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   105
    type == #LayoutFrame ifTrue:[
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   106
        ^ layout copy
68
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   107
    ].
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   108
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   109
    layout isLayout ifFalse:[
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   110
        type == #Rectangle ifTrue:[
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   111
            lO := layout left.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   112
            tO := layout top.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   113
            rO := layout right.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   114
            bO := layout bottom.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   115
        ] ifFalse:[
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   116
            lO := layout x.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   117
            tO := layout y.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   118
            rO := lO + aView extent x.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   119
            bO := tO + aView extent y.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   120
        ].
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   121
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   122
        ^ LayoutFrame 
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   123
                leftFraction:0 offset:lO  
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   124
                rightFraction:0 offset:rO
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   125
                topFraction:0 offset:tO 
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   126
                bottomFraction:0 offset:bO
63
6714daee4b26 checkin from browser
ca
parents: 61
diff changeset
   127
    ].
6714daee4b26 checkin from browser
ca
parents: 61
diff changeset
   128
68
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   129
    lF := layout leftFraction.
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   130
    lO := layout leftOffset.
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   131
    tF := layout topFraction.
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   132
    tO := layout topOffset.
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   133
    bF := tF.
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   134
    bO := tO + aView extent y.
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   135
    rF := lF.
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   136
    rO := lO + aView extent x.
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   137
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   138
    newLyt := LayoutFrame 
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   139
                leftFraction:lF offset:lO  
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   140
                rightFraction:rF offset:rO
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   141
                topFraction:tF offset:tO 
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   142
                bottomFraction:bF offset:bO.
68
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   143
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   144
    (    (type == #AlignmentOrigin)
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   145
     and:[layout leftAlignmentFraction ~~ 0
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   146
      or:[layout topAlignmentFraction  ~~ 0]]
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   147
    ) ifTrue:[
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   148
        |svRc prBd dlta|
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   149
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   150
        svRc := aView superView viewRectangle.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   151
        prBd := aView preferredBounds.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   152
        dlta := (  ((layout rectangleRelativeTo:svRc preferred:prBd) corner)
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   153
                 - ((newLyt rectangleRelativeTo:svRc preferred:prBd) corner)
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   154
                ) rounded.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   155
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   156
        newLyt 
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   157
            leftOffset:(lO + dlta x)
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   158
            rightOffset:(rO + dlta x)
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   159
            topOffset:(tO + dlta y)
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
   160
            bottomOffset:(bO + dlta y).
68
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   161
    ].
889c3877baf0 layout ....
ca
parents: 67
diff changeset
   162
  ^ newLyt.
91
86d0c649f95e extent -> layout
Claus Gittinger <cg@exept.de>
parents: 89
diff changeset
   163
86d0c649f95e extent -> layout
Claus Gittinger <cg@exept.de>
parents: 89
diff changeset
   164
    "Modified: 28.3.1997 / 19:52:48 / cg"
63
6714daee4b26 checkin from browser
ca
parents: 61
diff changeset
   165
! !
6714daee4b26 checkin from browser
ca
parents: 61
diff changeset
   166
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   167
!UIObjectView class methodsFor:'defaults'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   168
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   169
defaultGrid
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   170
    ^ 4 @ 4
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   171
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   172
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   173
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   174
gridShown
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   175
    ^ false
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   176
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   177
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   178
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   179
handleSize
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   180
    "size of blob drawn for handles"
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   181
    ^ 4
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   182
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   183
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   184
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   185
hitDelta
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   186
    ^ 4
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   187
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   188
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   189
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   190
!UIObjectView class methodsFor:'handles'!
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   191
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   192
handlesOf:aViewOrComponent do:aBlock
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   193
    |type v h|
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   194
3143
0eb6a10e5dc8 class: UIObjectView
Stefan Vogel <sv@exept.de>
parents: 3082
diff changeset
   195
    (aViewOrComponent isKindOf:(Smalltalk classNamed:#LineSegmentMorph)) ifTrue:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   196
        aBlock value:(aViewOrComponent startPoint) value:#startPoint.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   197
        aBlock value:(aViewOrComponent endPoint) value:#endPoint.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   198
        ^ self.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   199
    ].
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   200
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   201
    type := self layoutType:aViewOrComponent.
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   202
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   203
    (type == #LayoutFrame or:[type == #Rectangle]) ifTrue:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   204
        v := self isVerticalResizable:aViewOrComponent.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   205
        h := self isHorizontalResizable:aViewOrComponent.
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   206
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   207
        h ifTrue:[  
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   208
            aBlock value:(aViewOrComponent leftCenter rounded ) value:#left.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   209
            aBlock value:(aViewOrComponent rightCenter rounded) value:#right
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   210
        ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   211
        v ifTrue:[  
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   212
            aBlock value:(aViewOrComponent topCenter rounded   ) value:#top.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   213
            aBlock value:(aViewOrComponent bottomCenter rounded) value:#bottom.
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   214
        ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   215
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   216
        (h and:[v]) ifTrue:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   217
            aBlock value:(aViewOrComponent origin    ) value:#origin.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   218
            aBlock value:(aViewOrComponent topRight  ) value:#topRight.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   219
            aBlock value:(aViewOrComponent bottomLeft) value:#bottomLeft.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   220
            aBlock value:(aViewOrComponent corner    ) value:#corner.
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   221
            ^ self
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   222
        ]
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   223
    ].
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   224
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   225
    aBlock value:(aViewOrComponent origin    ) value:#view.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   226
    aBlock value:(aViewOrComponent topRight  ) value:#view.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   227
    aBlock value:(aViewOrComponent bottomLeft) value:#view.
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   228
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   229
    type == #Extent ifTrue:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   230
        v := self isVerticalResizable:aViewOrComponent.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   231
        h := self isHorizontalResizable:aViewOrComponent.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   232
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   233
        v ifTrue:[ aBlock value:(aViewOrComponent bottomCenter rounded) value:#bottom ].
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   234
        h ifTrue:[ aBlock value:(aViewOrComponent rightCenter rounded ) value:#right ].
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   235
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   236
        (h and:[v]) ifTrue:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   237
            aBlock value:(aViewOrComponent corner) value:#corner.
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   238
            ^ self
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   239
        ]
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   240
    ].
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   241
    aBlock value:(aViewOrComponent corner) value:#view.
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   242
! !
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   243
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   244
!UIObjectView class methodsFor:'queries'!
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   245
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   246
isHorizontalResizable:aComponent
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   247
    "returns true if aComponent is horizontal resizeable
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   248
    "
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   249
    (aComponent isKindOf:ScrollBar) ifTrue:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   250
        ^ aComponent orientation == #horizontal
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   251
    ].
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   252
    (aComponent isKindOf:Scroller) ifTrue:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   253
        ^ aComponent orientation == #horizontal
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   254
    ].
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   255
    (aComponent isKindOf:Slider) ifTrue:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   256
        ^ aComponent orientation == #horizontal
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   257
    ].
3143
0eb6a10e5dc8 class: UIObjectView
Stefan Vogel <sv@exept.de>
parents: 3082
diff changeset
   258
    (aComponent isKindOf:(Smalltalk classNamed:#LineSegmentMorph)) ifTrue:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   259
        ^ false
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   260
    ].
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   261
    ^ true
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   262
!
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   263
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   264
isVerticalResizable:aComponent
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   265
    "returns true if aComponent is vertical resizeable
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   266
    "
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   267
"/    (aComponent isKindOf:EditField) ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   268
"/        ^ false
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   269
"/    ].
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   270
"/    (aComponent isKindOf:ComboBoxView) ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   271
"/        ^ false
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   272
"/    ].
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   273
"/    (aComponent isKindOf:CheckBox) ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   274
"/        ^ false
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   275
"/    ].
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   276
"/    (aComponent isKindOf:ScrollBar) ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   277
"/        ^ aComponent orientation == #vertical
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   278
"/    ].
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   279
"/    (aComponent isKindOf:Scroller) ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   280
"/        ^ aComponent orientation == #vertical
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   281
"/    ].
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   282
"/    (aComponent isKindOf:Slider) ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   283
"/        ^ aComponent orientation == #vertical
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   284
"/    ].
3143
0eb6a10e5dc8 class: UIObjectView
Stefan Vogel <sv@exept.de>
parents: 3082
diff changeset
   285
    (aComponent isKindOf:(Smalltalk classNamed:#LineSegmentMorph)) ifTrue:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   286
        ^ false
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   287
    ].
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   288
    ^ true
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   289
!
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   290
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   291
layoutType:aViewOrComponent
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   292
    "returns layout type of aView or nil"
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   293
113
1854c2e61c4e bug fixes
ca
parents: 100
diff changeset
   294
    |layout spec superView|
1854c2e61c4e bug fixes
ca
parents: 100
diff changeset
   295
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   296
    aViewOrComponent isNil ifTrue:[ ^ nil ].
3143
0eb6a10e5dc8 class: UIObjectView
Stefan Vogel <sv@exept.de>
parents: 3082
diff changeset
   297
    (aViewOrComponent isKindOf:(Smalltalk classNamed:#LineSegmentMorph)) ifTrue:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   298
        ^ nil
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   299
    ].
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   300
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   301
    layout := aViewOrComponent geometryLayout.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   302
    layout notNil ifTrue:[
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   303
        layout isLayout ifTrue:[
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   304
            layout isLayoutFrame        ifTrue:[ ^ #LayoutFrame ].
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   305
            layout isAlignmentOrigin    ifTrue:[ ^ #AlignmentOrigin ].
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   306
            layout isLayoutOrigin       ifTrue:[ ^ #LayoutOrigin ].
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   307
        ] ifFalse:[
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   308
            layout isRectangle          ifTrue:[ ^ #Rectangle ].
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   309
            layout isPoint              ifTrue:[ ^ #Point ].
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   310
        ].
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   311
    ] ifFalse:[
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   312
        (superView := aViewOrComponent superView) notNil ifTrue:[
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   313
            spec := superView specClass.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   314
            spec canResizeSubComponents ifTrue:[
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   315
                ^ #Extent
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   316
            ]
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
   317
        ]
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   318
    ].
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   319
    ^ nil
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   320
67
09e9d4b57142 alignmentLayout
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
   321
    "Modified: 28.2.1997 / 13:02:16 / cg"
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   322
! !
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   323
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   324
!UIObjectView methodsFor:'accessing'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   325
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   326
gridAlign
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   327
    "returns state of aligning to grid
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   328
    "
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   329
    ^ aligning
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   330
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   331
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   332
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   333
gridAlign:aBool
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   334
    "change state of aligning to grid
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   335
    "
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   336
    aBool ifTrue:[self alignOn]
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   337
	 ifFalse:[self alignOff]
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   338
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   339
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   340
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   341
gridParameters
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   342
    "used by defineGrid, and in a separate method for
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   343
     easier redefinition in subclasses. 
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   344
     Returns the grid parameters in an array of 7 elements,
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   345
     which control the appearance of the grid-pattern.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   346
     the elements are:
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   347
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   348
	bigStepH        number of pixels horizontally between 2 major steps
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   349
	bigStepV        number of pixels vertically between 2 major steps
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   350
	littleStepH     number of pixels horizontally between 2 minor steps
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   351
	littleStepV     number of pixels vertically between 2 minor steps
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   352
	gridAlignH      number of pixels for horizontal grid align (pointer snap)
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   353
	gridAlignV      number of pixels for vertical grid align (pointer snap)
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   354
	docBounds       true, if document boundary should be shown
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   355
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   356
     if littleStepH/V are nil, only bigSteps are drawn.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   357
    "
360
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   358
    gridParameters isNil ifTrue:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   359
	gridParameters := #(10 10 nil nil 10 10 false)
360
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   360
    ].
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   361
    ^ gridParameters
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   362
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   363
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   364
!
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   365
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   366
gridParameters:newGridParameters
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   367
    "used by defineGrid, and in a separate method for
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   368
     easier redefinition in subclasses. 
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   369
     Returns the grid parameters in an array of 7 elements,
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   370
     which control the appearance of the grid-pattern.
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   371
     the elements are:
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   372
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   373
	bigStepH        number of pixels horizontally between 2 major steps
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   374
	bigStepV        number of pixels vertically between 2 major steps
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   375
	littleStepH     number of pixels horizontally between 2 minor steps
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   376
	littleStepV     number of pixels vertically between 2 minor steps
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   377
	gridAlignH      number of pixels for horizontal grid align (pointer snap)
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   378
	gridAlignV      number of pixels for vertical grid align (pointer snap)
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   379
	docBounds       true, if document boundary should be shown
360
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   380
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   381
     if littleStepH/V are nil, only bigSteps are drawn.
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   382
    "
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   383
    newGridParameters size == 7 ifTrue:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   384
	gridParameters := newGridParameters
360
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   385
    ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   386
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   387
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   388
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   389
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   390
gridShown:aBool
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   391
    "change visibility of grid
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   392
    "
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   393
    aBool ifTrue:[self showGrid]
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   394
	 ifFalse:[self hideGrid]
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   395
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   396
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   397
hideGrid
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   398
    "hide grid
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   399
    "
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   400
    gridShown ifTrue:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   401
	self withSelectionHiddenDo:[super hideGrid]
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   402
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   403
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   404
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   405
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   406
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   407
showGrid
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   408
    "show grid
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   409
    "
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   410
    self withSelectionHiddenDo:[super showGrid]
119
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   411
! !
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   412
1399
a0687f5e1f54 category changes
Claus Gittinger <cg@exept.de>
parents: 1350
diff changeset
   413
!UIObjectView methodsFor:'accessing-behavior'!
119
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   414
1100
bf884041701f Implement common channels in View.
Stefan Vogel <sv@exept.de>
parents: 1048
diff changeset
   415
enableStateChanged
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   416
    "toggle the test mode
1100
bf884041701f Implement common channels in View.
Stefan Vogel <sv@exept.de>
parents: 1048
diff changeset
   417
    "
1102
abcdd3d5a67b testMode enable/disable
Claus Gittinger <cg@exept.de>
parents: 1100
diff changeset
   418
    self shown ifTrue:[
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   419
        enableChannel value ifFalse:[
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   420
            saveSelection := selection.
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   421
            self hideSelection.
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   422
            selection := nil.
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   423
        ] ifTrue:[
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   424
            selection := saveSelection.
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   425
            self showSelection
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   426
        ]
1100
bf884041701f Implement common channels in View.
Stefan Vogel <sv@exept.de>
parents: 1048
diff changeset
   427
    ]
bf884041701f Implement common channels in View.
Stefan Vogel <sv@exept.de>
parents: 1048
diff changeset
   428
bf884041701f Implement common channels in View.
Stefan Vogel <sv@exept.de>
parents: 1048
diff changeset
   429
    "Created: / 30.3.1999 / 16:17:24 / stefan"
bf884041701f Implement common channels in View.
Stefan Vogel <sv@exept.de>
parents: 1048
diff changeset
   430
!
bf884041701f Implement common channels in View.
Stefan Vogel <sv@exept.de>
parents: 1048
diff changeset
   431
119
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   432
enabled
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   433
    ^ enableChannel value
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   434
!
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   435
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   436
enabled:aState
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   437
    "set the modification / test mode
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   438
    "
1100
bf884041701f Implement common channels in View.
Stefan Vogel <sv@exept.de>
parents: 1048
diff changeset
   439
bf884041701f Implement common channels in View.
Stefan Vogel <sv@exept.de>
parents: 1048
diff changeset
   440
    enableChannel value:aState
bf884041701f Implement common channels in View.
Stefan Vogel <sv@exept.de>
parents: 1048
diff changeset
   441
bf884041701f Implement common channels in View.
Stefan Vogel <sv@exept.de>
parents: 1048
diff changeset
   442
    "Modified: / 30.3.1999 / 16:18:12 / stefan"
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   443
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   444
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
   445
resetModification
1918
f5e8dfe30838 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1911
diff changeset
   446
    "set modification state to false"
f5e8dfe30838 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1911
diff changeset
   447
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   448
    undoHistory resetModification.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   449
    self undoHistoryChanged.
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
   450
!
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
   451
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   452
testMode
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   453
    "returns true if running test
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   454
    "
119
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   455
    ^ enableChannel value not
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   456
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   457
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   458
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   459
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   460
testMode:aBoolean
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   461
    "change test mode
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   462
    "
1102
abcdd3d5a67b testMode enable/disable
Claus Gittinger <cg@exept.de>
parents: 1100
diff changeset
   463
    enableChannel value:(aBoolean not)
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   464
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   465
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   466
!UIObjectView methodsFor:'aspects'!
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   467
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   468
hasUndoHistoryHolder
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   469
    hasUndoHistoryHolder isNil ifTrue:[
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   470
        hasUndoHistoryHolder := false asValue
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   471
    ].
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   472
    ^ hasUndoHistoryHolder
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   473
! !
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   474
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   475
!UIObjectView methodsFor:'blocked'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   476
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   477
addObject:anObject
1746
bb4f759cf456 Do not use #halt
Stefan Vogel <sv@exept.de>
parents: 1745
diff changeset
   478
    "add the argument, anObject to the contents - with redraw"
bb4f759cf456 Do not use #halt
Stefan Vogel <sv@exept.de>
parents: 1745
diff changeset
   479
bb4f759cf456 Do not use #halt
Stefan Vogel <sv@exept.de>
parents: 1745
diff changeset
   480
    self shouldNotImplement
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   481
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   482
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   483
addObjectWithoutRedraw:anObject
1746
bb4f759cf456 Do not use #halt
Stefan Vogel <sv@exept.de>
parents: 1745
diff changeset
   484
    "add the argument, anObject to the contents - with redraw"
bb4f759cf456 Do not use #halt
Stefan Vogel <sv@exept.de>
parents: 1745
diff changeset
   485
bb4f759cf456 Do not use #halt
Stefan Vogel <sv@exept.de>
parents: 1745
diff changeset
   486
    self shouldNotImplement
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   487
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   488
2538
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
   489
!UIObjectView methodsFor:'enumerating'!
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
   490
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
   491
contentsDo:aBlock
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
   492
    self subViews do:aBlock.
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
   493
    self components do:aBlock.
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
   494
! !
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
   495
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   496
!UIObjectView methodsFor:'event handling'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   497
1833
6ad211a201cf *** empty log message ***
werner
parents: 1829
diff changeset
   498
doublePressed:pressPoint
6ad211a201cf *** empty log message ***
werner
parents: 1829
diff changeset
   499
!
6ad211a201cf *** empty log message ***
werner
parents: 1829
diff changeset
   500
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   501
elementChangedSize:aView
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   502
    "some element has changed its size; collect them while selectionHiddenLevel is on"
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   503
284
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
   504
    |spv|
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
   505
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
   506
    spv := self findContainerOfView:aView.
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
   507
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   508
    aView isView ifFalse:[
2503
36dce8c654af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2501
diff changeset
   509
"/        spv invalidate.
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   510
    ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   511
2503
36dce8c654af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2501
diff changeset
   512
"/    spv := self findContainerOfView:aView.
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   513
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   514
    selectionHiddenLevel ~~ 0 ifTrue:[
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   515
        setOfSuperViewsSizeChanged add:spv
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   516
    ] ifFalse:[
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   517
        spv sizeChanged:nil
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   518
    ]
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   519
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   520
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   521
keyPress:key x:x y:y
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   522
    "any key pressed
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   523
    "
1048
d6d4b7abfdd0 +cursorKeys to move widgets
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   524
    <resource: #keyboard ( #CursorUp #CursorDown #CursorLeft #CursorRight
1827
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   525
                           #Delete #BackSpace #Cut #Copy #Paste #Cmdu #Again) >
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   526
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   527
    |n sensor|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   528
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   529
    (key == #Cut or:[key == #Delete or:[key == #BackSpace]]) ifTrue: [
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   530
        ^ self deleteSelection
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   531
    ].
1827
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   532
    (key = #PreviousPage) ifTrue:[
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   533
        self selectNextUpInHierarchy.
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   534
    ].
78
a0a00603a8b6 keep spec in properties
ca
parents: 76
diff changeset
   535
    key == #Copy  ifTrue:[ ^ self copySelection].
a0a00603a8b6 keep spec in properties
ca
parents: 76
diff changeset
   536
    key == #Paste ifTrue:[ ^ self pasteBuffer].
360
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   537
    key == #Cmdu  ifTrue:[ ^ self undoLast ].           "/ #Undo
1a4ec4aa2c67 configuration of grid parameters
ca
parents: 353
diff changeset
   538
1827
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   539
    ( #(CursorUp CursorDown CursorRight CursorLeft)
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   540
    includes:key) ifTrue:[
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   541
        (sensor := self sensor) isNil ifTrue:[
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   542
            n := 1
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   543
        ] ifFalse:[
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   544
            n := 1 + (sensor compressKeyPressEventsWithKey:key).
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   545
            sensor shiftDown ifTrue:[
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   546
                n := n * 10.
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   547
            ].
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   548
        ].
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   549
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   550
        key == #CursorUp ifTrue:[
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   551
            ^ self moveSelectionUp:n
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   552
        ].
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   553
        key == #CursorDown ifTrue:[
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   554
            ^ self moveSelectionDown:n
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   555
        ].
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   556
        key == #CursorRight ifTrue:[
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   557
            ^ self moveSelectionRight:n
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   558
        ].
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   559
        key == #CursorLeft ifTrue:[
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   560
            ^ self moveSelectionLeft:n
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   561
        ].
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   562
    ].
374
421f8a3723f1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 360
diff changeset
   563
    super keyPress:key x:x y:y
421f8a3723f1 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 360
diff changeset
   564
1048
d6d4b7abfdd0 +cursorKeys to move widgets
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   565
    "Modified: / 6.3.1999 / 22:47:48 / cg"
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   566
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   567
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   568
processEvent:anEvent
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   569
    "catch expose events for components, and redraw its handles after
1895
b7d6683ebaca *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1861
diff changeset
   570
     the redraw when this happens.
b7d6683ebaca *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1861
diff changeset
   571
     Return true, if I have eaten the event"
b7d6683ebaca *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1861
diff changeset
   572
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   573
    |evView widget p|
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   574
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   575
    self testMode ifTrue:[^ false].
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   576
2555
322f0de7da00 changed #processEvent:
Claus Gittinger <cg@exept.de>
parents: 2554
diff changeset
   577
    anEvent isInputEvent ifFalse:[^ false].
322f0de7da00 changed #processEvent:
Claus Gittinger <cg@exept.de>
parents: 2554
diff changeset
   578
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   579
    evView := anEvent view.
2548
c3ee3b652ef7 careful to only ignore events for me
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
   580
    evView isNil ifTrue:[ ^ false].
c3ee3b652ef7 careful to only ignore events for me
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
   581
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   582
    (evView == self) ifTrue:[
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   583
        "/ new: check for a component to be hit by the event
2554
226127373d77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2550
diff changeset
   584
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   585
        components notEmptyOrNil ifTrue:[
2554
226127373d77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2550
diff changeset
   586
            anEvent x notNil ifTrue:[
226127373d77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2550
diff changeset
   587
                p := (anEvent x @ anEvent y).        
226127373d77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2550
diff changeset
   588
                widget := components detect:[:c | c bounds containsPoint:p ] ifNone:nil.
226127373d77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2550
diff changeset
   589
            ].
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   590
        ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   591
        widget isNil ifTrue:[
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   592
            ^ false
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   593
        ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   594
    ] ifFalse:[
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   595
        widget := evView.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   596
    ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   597
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   598
    (widget isComponentOf:self) ifFalse:[
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   599
        ^ false
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   600
    ].
2550
53294c69f292 oops - a halt
Claus Gittinger <cg@exept.de>
parents: 2548
diff changeset
   601
2548
c3ee3b652ef7 careful to only ignore events for me
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
   602
    "/ eat most of my events
c3ee3b652ef7 careful to only ignore events for me
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
   603
    anEvent isPointerEnterLeaveEvent ifTrue:[^ true. ^ false].
c3ee3b652ef7 careful to only ignore events for me
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
   604
    anEvent isKeyboardFocusEvent ifTrue:[^ true. ^ false].
c3ee3b652ef7 careful to only ignore events for me
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
   605
c3ee3b652ef7 careful to only ignore events for me
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
   606
    (anEvent isButtonEvent or:[anEvent isKeyEvent]) ifFalse:[ ^ true ].
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   607
2203
919b6f0753fa changed #processEvent:
ca
parents: 2041
diff changeset
   608
    anEvent isButtonMotionEvent ifTrue:[
919b6f0753fa changed #processEvent:
ca
parents: 2041
diff changeset
   609
        "/ use current point - layout of underlaying view might change
919b6f0753fa changed #processEvent:
ca
parents: 2041
diff changeset
   610
        "/ and computation dependent on origin is wrong
919b6f0753fa changed #processEvent:
ca
parents: 2041
diff changeset
   611
        p := self sensor mousePoint.
3082
e4df13b1a968 class: UIObjectView
Stefan Vogel <sv@exept.de>
parents: 3019
diff changeset
   612
        p := self graphicsDevice translatePoint:p fromView:nil toView:self.
2203
919b6f0753fa changed #processEvent:
ca
parents: 2041
diff changeset
   613
    ] ifFalse:[
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   614
        p := (anEvent x) @ (anEvent y).
3082
e4df13b1a968 class: UIObjectView
Stefan Vogel <sv@exept.de>
parents: 3019
diff changeset
   615
        p := self graphicsDevice translatePoint:p fromView:evView toView:self.
2203
919b6f0753fa changed #processEvent:
ca
parents: 2041
diff changeset
   616
    ].
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   617
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   618
    "/ patch the event
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   619
    anEvent x:p x.
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   620
    anEvent y:p y.
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   621
    anEvent view:self.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   622
    ^ false.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   623
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   624
624
26e7978936fc ignore redraws - components redraw themself.
Claus Gittinger <cg@exept.de>
parents: 543
diff changeset
   625
redrawX:nx y:ny width:nw height:nh
1911
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   626
    |redrawFrame|
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   627
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   628
    redrawFrame := Rectangle left:nx top:ny width:nw height:nh.
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   629
    "/ self clearRectangle:redrawFrame.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   630
    super redrawX:nx y:ny width:nw height:nh.
1911
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   631
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   632
    self selectionDo:[:aComponent |
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   633
        |anyHandleToRedraw|
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   634
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   635
        anyHandleToRedraw := false.
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   636
        self handlesOf:aComponent do:[:hRect :typeOfHandle |
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   637
            (hRect intersects:redrawFrame) ifTrue:[        
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   638
                anyHandleToRedraw := true.
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   639
            ].
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   640
        ].
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   641
        anyHandleToRedraw ifTrue:[
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   642
            self showSelected:aComponent
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   643
        ]
0538568157f0 handle redrawing fixed
Claus Gittinger <cg@exept.de>
parents: 1903
diff changeset
   644
    ]
2246
1422d76c54dc changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2215
diff changeset
   645
1422d76c54dc changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2215
diff changeset
   646
    "Modified: / 16-01-2008 / 17:57:09 / cg"
624
26e7978936fc ignore redraws - components redraw themself.
Claus Gittinger <cg@exept.de>
parents: 543
diff changeset
   647
!
26e7978936fc ignore redraws - components redraw themself.
Claus Gittinger <cg@exept.de>
parents: 543
diff changeset
   648
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   649
sizeChanged:how
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   650
    "size of a view(s) changed
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   651
    "
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   652
    self withSelectionHiddenDo:[
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   653
        super sizeChanged:how.
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   654
    ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   655
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   656
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   657
!UIObjectView methodsFor:'initialization'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   658
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   659
initialize
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   660
    "setup attributes
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   661
    "
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   662
    super initialize.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   663
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   664
    setOfSuperViewsSizeChanged := IdentitySet new.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   665
    self setDefaultActions.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   666
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   667
    undoHistory := UndoHistory on:self.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   668
1100
bf884041701f Implement common channels in View.
Stefan Vogel <sv@exept.de>
parents: 1048
diff changeset
   669
    self enableChannel:(true asValue).
119
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   670
    clipChildren         := true.
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   671
    selectionHiddenLevel := 0.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   672
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   673
    (self class gridShown) ifTrue:[
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   674
        super showGrid
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   675
    ].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   676
897
43f9bdc12ae4 make certain inputView is on top when restarting from a snapshot
Claus Gittinger <cg@exept.de>
parents: 777
diff changeset
   677
    "Modified: / 20.7.1998 / 18:14:51 / cg"
1100
bf884041701f Implement common channels in View.
Stefan Vogel <sv@exept.de>
parents: 1048
diff changeset
   678
    "Modified: / 30.3.1999 / 16:19:15 / stefan"
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   679
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   680
284
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
   681
map
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
   682
    "make the view visible on the screen and in case of a none empty
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
   683
     selection the selection will be shown.
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
   684
    "
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
   685
    super map.
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
   686
    self showSelection.
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
   687
!
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
   688
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   689
realize
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   690
    |windowGroup|
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   691
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   692
    super realize.
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   693
    windowGroup := self windowGroup.
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   694
    windowGroup  addPreEventHook:self.
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
   695
    windowGroup addPostEventHook:(PostEventHandler new onView:self).
897
43f9bdc12ae4 make certain inputView is on top when restarting from a snapshot
Claus Gittinger <cg@exept.de>
parents: 777
diff changeset
   696
!
43f9bdc12ae4 make certain inputView is on top when restarting from a snapshot
Claus Gittinger <cg@exept.de>
parents: 777
diff changeset
   697
43f9bdc12ae4 make certain inputView is on top when restarting from a snapshot
Claus Gittinger <cg@exept.de>
parents: 777
diff changeset
   698
remap
43f9bdc12ae4 make certain inputView is on top when restarting from a snapshot
Claus Gittinger <cg@exept.de>
parents: 777
diff changeset
   699
    "make the view visible on the screen and in case of a none empty
1746
bb4f759cf456 Do not use #halt
Stefan Vogel <sv@exept.de>
parents: 1745
diff changeset
   700
     selection the selection will be shown"
bb4f759cf456 Do not use #halt
Stefan Vogel <sv@exept.de>
parents: 1745
diff changeset
   701
bb4f759cf456 Do not use #halt
Stefan Vogel <sv@exept.de>
parents: 1745
diff changeset
   702
    self shouldNotImplement
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   703
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   704
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   705
!UIObjectView methodsFor:'misc'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   706
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   707
invertOutlineOf:something
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   708
    "invert outline of an object or collection of objects"
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   709
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   710
    ^ self.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   711
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   712
"/ cg: nope - all done via handles now.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   713
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   714
"/    |wasClipped|
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   715
"/
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   716
"/    (wasClipped := clipChildren) ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   717
"/        self clippedByChildren:(clipChildren := false).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   718
"/    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   719
"/
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   720
"/    self xoring:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   721
"/        |p|
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   722
"/
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   723
"/        something isCollection ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   724
"/            something do:[:v |
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   725
"/                p := v originRelativeTo:self.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   726
"/                self displayRectangle:(p extent:v extent).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   727
"/            ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   728
"/        ] ifFalse:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   729
"/            p := something originRelativeTo:self.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   730
"/            self displayRectangle:(p extent:something extent).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   731
"/        ]
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   732
"/    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   733
"/
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   734
"/    wasClipped ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   735
"/        self clippedByChildren:(clipChildren := true).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   736
"/    ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   737
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   738
2255
4cca07c42e74 code beautification
Claus Gittinger <cg@exept.de>
parents: 2246
diff changeset
   739
minClosedViewSetFor:setOfViews
4cca07c42e74 code beautification
Claus Gittinger <cg@exept.de>
parents: 2246
diff changeset
   740
    "return the minimum closure for a given set of view;
4cca07c42e74 code beautification
Claus Gittinger <cg@exept.de>
parents: 2246
diff changeset
   741
     That is the minimum set of views which contains the given set of views.
4cca07c42e74 code beautification
Claus Gittinger <cg@exept.de>
parents: 2246
diff changeset
   742
     Concrete: all subviews from setOfViews of which any superView is already in the set
4cca07c42e74 code beautification
Claus Gittinger <cg@exept.de>
parents: 2246
diff changeset
   743
               is excluded from the result"
4cca07c42e74 code beautification
Claus Gittinger <cg@exept.de>
parents: 2246
diff changeset
   744
78
a0a00603a8b6 keep spec in properties
ca
parents: 76
diff changeset
   745
    setOfViews isCollection ifFalse:[
1903
f409fa760169 refactored intention revealing code:
Claus Gittinger <cg@exept.de>
parents: 1895
diff changeset
   746
        setOfViews notNil ifTrue:[^ Array with:setOfViews].
f409fa760169 refactored intention revealing code:
Claus Gittinger <cg@exept.de>
parents: 1895
diff changeset
   747
        ^ nil
72
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
   748
    ].
3011
ceaec66469ff class: UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2849
diff changeset
   749
    ^ setOfViews reject:[:aView| (setOfViews contains:[:v | aView isComponentOf:v]) ]
72
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
   750
!
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
   751
624
26e7978936fc ignore redraws - components redraw themself.
Claus Gittinger <cg@exept.de>
parents: 543
diff changeset
   752
redrawObjectsInVisible:redrawFrame
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   753
    "my objects are views - they redraw themself.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   754
     - no longer - all non-views MUST be redrawn."
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   755
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   756
    super redrawObjectsInVisible:redrawFrame.
624
26e7978936fc ignore redraws - components redraw themself.
Claus Gittinger <cg@exept.de>
parents: 543
diff changeset
   757
    ^ self
26e7978936fc ignore redraws - components redraw themself.
Claus Gittinger <cg@exept.de>
parents: 543
diff changeset
   758
!
26e7978936fc ignore redraws - components redraw themself.
Claus Gittinger <cg@exept.de>
parents: 543
diff changeset
   759
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   760
setDefaultActions
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   761
    "set default actions
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   762
    "
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   763
    pressAction      := [:pressPoint | self startSelectOrMove:pressPoint].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   764
    shiftPressAction := [:pressPoint | self startSelectMoreOrMove:pressPoint].
1861
4c173871788a ctrl-action
ca
parents: 1833
diff changeset
   765
    ctrlPressAction  := [:pressPoint | self startSelectMoreOrMove:pressPoint].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   766
    motionAction     := [:movePoint  | nil].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   767
    releaseAction    := [nil].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   768
    keyPressAction   := nil.
1827
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
   769
    doublePressAction   := [:pressPoint | self doublePressed: pressPoint].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   770
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   771
    self cursor:Cursor normal.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   772
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   773
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   774
!UIObjectView methodsFor:'object moving'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   775
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   776
doObjectMove:aPoint
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   777
    "move movedOject (which is a misnomer - it's actually a collection of objects to move)"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   778
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   779
    |anyMove|
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   780
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   781
    movedObject isEmptyOrNil ifTrue:[^ self].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   782
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   783
    anyMove := false.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   784
    "/ to avoid flicker, check if this really involves a move (due to align)
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   785
    movedObject keysAndValuesDo:[:i :obj|
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   786
        |newOrigin delta|
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   787
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   788
        newOrigin := (aPoint - (moveDelta at:i)).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   789
        delta := (self alignToGrid:newOrigin) - obj computeOrigin.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   790
        delta ~= (0@0) ifTrue:[ anyMove := true ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   791
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   792
    anyMove ifFalse:[^ self ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   793
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   794
    self hideSelection.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   795
    self invertOutlineOf:movedObject.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   796
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   797
    movedObject keysAndValuesDo:[:i :v|
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   798
        self moveObject:v to:(aPoint - (moveDelta at:i)).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   799
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   800
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   801
    self invertOutlineOf:movedObject.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   802
    self showSelection.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   803
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   804
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   805
endObjectMove
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   806
    "cleanup after object(s) move
2205
0582767018d7 endObjectMove - send expose to all - workaround drawing
ca
parents: 2203
diff changeset
   807
     send expose to each view - workaround....
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   808
    "
2205
0582767018d7 endObjectMove - send expose to all - workaround drawing
ca
parents: 2203
diff changeset
   809
    |newSel|
0582767018d7 endObjectMove - send expose to all - workaround drawing
ca
parents: 2203
diff changeset
   810
0582767018d7 endObjectMove - send expose to all - workaround drawing
ca
parents: 2203
diff changeset
   811
    movedObject isNil ifTrue:[^ self].
0582767018d7 endObjectMove - send expose to all - workaround drawing
ca
parents: 2203
diff changeset
   812
0582767018d7 endObjectMove - send expose to all - workaround drawing
ca
parents: 2203
diff changeset
   813
    movedObject size == 1 ifTrue:[ newSel := movedObject first ]
0582767018d7 endObjectMove - send expose to all - workaround drawing
ca
parents: 2203
diff changeset
   814
                         ifFalse:[ newSel := movedObject ].
0582767018d7 endObjectMove - send expose to all - workaround drawing
ca
parents: 2203
diff changeset
   815
    movedObject := nil.
0582767018d7 endObjectMove - send expose to all - workaround drawing
ca
parents: 2203
diff changeset
   816
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   817
"/    self withSelectionHiddenDo:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   818
"/        self setSelection:newSel withRedraw:false.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   819
"/
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   820
"/        components notEmptyOrNil ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   821
"/            self invalidate.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   822
"/        ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   823
"/        self allSubViewsDo:[:v|
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   824
"/            v shown ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   825
"/                v fill:v viewBackground.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   826
"/                v exposeX:0 y:0 width:v width height:v height.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   827
"/            ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   828
"/        ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   829
"/    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   830
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   831
    self setDefaultActions.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   832
    self layoutChanged.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   833
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   834
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   835
moveObject:anObject to:aPoint
2514
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
   836
    "move anObject to newOrigin, aPoint"
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
   837
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   838
    |dX dY org delta|
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   839
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   840
    anObject notNil ifTrue:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   841
        org := anObject computeOrigin.
2849
e061cea3416f changed: #moveObject:to:
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
   842
        org notNil ifTrue:[
e061cea3416f changed: #moveObject:to:
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
   843
            delta := aPoint - org.
e061cea3416f changed: #moveObject:to:
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
   844
            delta := (self alignToGrid:aPoint) - org.
e061cea3416f changed: #moveObject:to:
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
   845
            dX := delta x.
e061cea3416f changed: #moveObject:to:
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
   846
            dY := delta y.
e061cea3416f changed: #moveObject:to:
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
   847
e061cea3416f changed: #moveObject:to:
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
   848
            undoHistory withoutTransactionDo:[
e061cea3416f changed: #moveObject:to:
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
   849
                self shiftLayout:anObject horizontal:dX vertical:dY
e061cea3416f changed: #moveObject:to:
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
   850
            ]
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
   851
        ]
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   852
    ]
2849
e061cea3416f changed: #moveObject:to:
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
   853
e061cea3416f changed: #moveObject:to:
Claus Gittinger <cg@exept.de>
parents: 2722
diff changeset
   854
    "Modified: / 25-07-2011 / 17:27:08 / cg"
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   855
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   856
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   857
startObjectMoveAt:aPoint
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   858
    "start object(s) move at a point"
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   859
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
   860
    self startObjectMove:(self selection) at:aPoint.
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
   861
    movedObject := self selection.
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
   862
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
   863
    movedObject isCollection ifFalse:[
1451
f7c591a04f00 drag resize: wait for expose before continue
ca
parents: 1438
diff changeset
   864
        movedObject := Array with:movedObject
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   865
    ].
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   866
"/    self setSelection:nil withRedraw:true.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   867
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   868
    moveDelta := movedObject collect:[:aView | aPoint - aView computeOrigin].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   869
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   870
    self transaction:#move objects:movedObject do:[:v|self createUndoLayout:v].
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
   871
    self invertOutlineOf:movedObject.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   872
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   873
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   874
startSelectMoreOrMove:aPoint
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   875
    "add/remove to/from selection"
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   876
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   877
    |anObject|
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   878
119
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   879
    self enabled ifFalse:[^ self].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   880
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   881
    anObject := self findObjectAt:aPoint.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   882
    anObject notNil ifTrue:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   883
	(self isSelected:anObject) ifTrue:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   884
	    self removeFromSelection:anObject
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   885
	] ifFalse:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   886
	    self addToSelection:anObject
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
   887
	]
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   888
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   889
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   890
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   891
startSelectOrMove:aPoint
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   892
    "a button is pressed at a point; start moving or selecting"
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   893
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   894
    |selectedView containerOfSelectedView
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   895
     clickedView viewOperatedUpon borderHandleSelector pView|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   896
119
39acd704ad51 testMode is now a ValueHolder
ca
parents: 113
diff changeset
   897
    self enabled ifFalse:[^ self].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   898
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   899
    selectedView := self singleSelection.
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   900
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   901
"/    clickedView := self findObjectAt:aPoint.
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   902
"/    (clickedView notNil 
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   903
"/    and:[clickedView isComponentOf:selectedView]) ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   904
"/        self unselect.
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   905
"/        selectedView := nil.    
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   906
"/    ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   907
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   908
    "/ if there is already a selection, see if user clicked onto a handle
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   909
    "/ then, this may be the start of a resize operation.
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   910
    selectedView notNil ifTrue:[
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   911
        containerOfSelectedView := self findContainerOfView:selectedView.
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   912
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   913
        containerOfSelectedView specClass canResizeSubComponents ifTrue:[
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   914
            borderHandleSelector := self whichHandleOf:selectedView isHitBy:aPoint.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   915
            (borderHandleSelector notNil and:[borderHandleSelector ~~ #view]) ifTrue:[
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
   916
                self startResizeBorder:borderHandleSelector.
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   917
                ^ self
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   918
            ]
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   919
        ].
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   920
        viewOperatedUpon := selectedView.
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   921
3082
e4df13b1a968 class: UIObjectView
Stefan Vogel <sv@exept.de>
parents: 3019
diff changeset
   922
        pView := self graphicsDevice translatePoint:aPoint fromView:self toView:selectedView superView.
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   923
        (selectedView bounds containsPoint:pView) ifFalse:[
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   924
            "/ clicked outside the selection
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   925
            (self sensor ctrlDown and:[self canChangeLayoutOfView:selectedView]) ifFalse:[
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   926
                viewOperatedUpon := nil
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   927
            ]
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   928
        ]
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   929
    ].
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
   930
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   931
    clickedView := self findObjectAt:aPoint.
2368
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   932
    clickedView notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   933
        (clickedView isComponentOf:selectedView) ifTrue:[
2530
73efe0a84f4b no need to unselect/select in startSelectOrMove (avoid flicker)
Claus Gittinger <cg@exept.de>
parents: 2528
diff changeset
   934
            "/ self unselect.
2368
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   935
            selectedView := nil.    
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   936
            viewOperatedUpon := nil
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   937
        ] ifFalse:[
2530
73efe0a84f4b no need to unselect/select in startSelectOrMove (avoid flicker)
Claus Gittinger <cg@exept.de>
parents: 2528
diff changeset
   938
            "/ self unselect.
2368
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   939
            selectedView := nil.    
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   940
            viewOperatedUpon := clickedView
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   941
        ].
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   942
    ].
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
   943
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   944
    viewOperatedUpon isNil ifTrue:[
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   945
        clickedView isNil ifTrue:[
2538
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
   946
            "/ clicked outside - start a rectangle drag.
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   947
            self select:nil.
2538
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
   948
            self startRectangleDrag:aPoint.
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   949
            ^ self.
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   950
        ].
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   951
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   952
        (self canChangeLayoutOfView:clickedView) ifFalse:[
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   953
            self select:clickedView.
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   954
            ^ self
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   955
        ].
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   956
        viewOperatedUpon := clickedView
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   957
    ].
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   958
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   959
    (self isSelected:viewOperatedUpon) ifFalse:[
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   960
        self select:viewOperatedUpon.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   961
    ].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   962
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   963
    (self numberOfSelections ~~ 1) ifTrue:[
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   964
        releaseAction := 
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   965
            [
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   966
                self setDefaultActions.
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   967
                self select:viewOperatedUpon
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   968
            ]
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   969
    ] ifFalse:[
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   970
        releaseAction := [self setDefaultActions]
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   971
    ].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   972
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   973
    "prepare move operation for an object"
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   974
    motionAction := 
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   975
        [:movePoint|
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   976
            (aPoint dist:movePoint) > 4.0 ifTrue:[
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   977
                self startObjectMoveAt:aPoint
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   978
            ]
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
   979
        ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   980
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   981
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   982
!UIObjectView methodsFor:'object resize'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   983
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   984
actionResize:anObject selector:aSelector
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   985
    "create and initialize action for resize"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   986
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   987
    |delta|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   988
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   989
    delta    := anObject container originRelativeTo:self.
543
e3f2bf2dfb59 eliminated use of Structure - added private ResizeData class instead
Claus Gittinger <cg@exept.de>
parents: 374
diff changeset
   990
    resizeData := ResizeData new
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   991
                        object:anObject 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   992
                        selector:aSelector
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
   993
                        delta:delta.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   994
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   995
"can change cursor dependent on vertical/horizontal resizing
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   996
"
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   997
    oldCursor := cursor.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   998
    self cursor:(Cursor leftHand).
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   999
543
e3f2bf2dfb59 eliminated use of Structure - added private ResizeData class instead
Claus Gittinger <cg@exept.de>
parents: 374
diff changeset
  1000
    "Modified: / 2.2.1998 / 13:40:55 / cg"
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1001
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1002
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1003
doDragResize:aPoint
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1004
    "do a widget resize drag"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1005
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1006
    |p object|
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1007
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
  1008
    object := resizeData object.
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1009
    p := (self alignToGrid:aPoint) - (resizeData delta).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1010
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1011
    (self resize:object handle:(resizeData selector) to:p check:true) ifFalse:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1012
        ^ self  "/ no real change (due to align)
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1013
    ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1014
2514
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1015
    self hideSelection.
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1016
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1017
    self invertOutlineOf:object.
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1018
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1019
    self resize:object handle:(resizeData selector) to:p check:false.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1020
1451
f7c591a04f00 drag resize: wait for expose before continue
ca
parents: 1438
diff changeset
  1021
    Delay waitForSeconds:0.05.
f7c591a04f00 drag resize: wait for expose before continue
ca
parents: 1438
diff changeset
  1022
    [self sensor hasExposeEventFor:nil] whileTrue:[
f7c591a04f00 drag resize: wait for expose before continue
ca
parents: 1438
diff changeset
  1023
        self windowGroup processExposeEvents
f7c591a04f00 drag resize: wait for expose before continue
ca
parents: 1438
diff changeset
  1024
    ].
f7c591a04f00 drag resize: wait for expose before continue
ca
parents: 1438
diff changeset
  1025
79
33212fbe9766 resize extent
ca
parents: 78
diff changeset
  1026
   "/ object geometryLayout:(object geometryLayout).
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1027
    self invertOutlineOf:object.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1028
2514
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1029
    self showSelection.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1030
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1031
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1032
endResize
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1033
    "cleanup after object resize"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1034
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1035
    |object savedSelection anyLayoutWrapper anyTransparentBox|
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1036
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
  1037
    object := resizeData object.
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
  1038
    resizeData := nil.
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1039
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1040
    "/ container objects might want to rearrange their elements after a size change;
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1041
    "/ therefore, we hide the handles while this is possibly done.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1042
    "/ however, to avoid flicker, we check for containers first.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1043
    anyLayoutWrapper := anyTransparentBox := false.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1044
    self forEach:object do:[:aViewOrComponent | 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1045
        aViewOrComponent isLayoutWrapper ifTrue:[ anyLayoutWrapper := true ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1046
        aViewOrComponent isTransparentBox ifTrue:[ anyTransparentBox := true ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1047
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1048
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1049
    (anyLayoutWrapper or:[anyTransparentBox]) ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1050
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1051
        self invertOutlineOf:object.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1052
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1053
        "/ temporarily hide the selection, in order to allow the container to move the
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1054
        "/ element around...
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1055
        savedSelection := selection.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1056
        self setSelection:nil withRedraw:true.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1057
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1058
        "/ handle any expose events (for subcomponents) before
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1059
        "/ redrawing the handles.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1060
        self windowGroup processExposeEvents.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1061
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1062
        self elementChangedSize:object.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1063
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1064
        "/ handle any expose events (for subcomponents) before
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1065
        "/ redrawing the handles.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1066
        Delay waitForSeconds:0.05.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1067
        [self sensor hasExposeEventFor:nil] whileTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1068
            self windowGroup processExposeEvents
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1069
        ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1070
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1071
        self forEach:savedSelection do:[:aView |
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1072
            self recomputeShapeIfTransparentBox:aView.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1073
        ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1074
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1075
        self setSelection:object withRedraw:true.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1076
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1077
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1078
    self layoutChanged.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1079
    self setDefaultActions.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1080
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1081
1827
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
  1082
layoutChanged
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
  1083
!
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
  1084
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1085
resize:aView bottom:aPoint
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1086
    "obsolete: resize a views bottom"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1087
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1088
    self resize:aView handle:#bottom to:aPoint check:false.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1089
"/    undoHistory withoutTransactionDo:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1090
"/        self shiftLayout:aView top:0 bottom:((aPoint y) - (aView computeCorner y))
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1091
"/    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1092
!
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1093
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1094
resize:aView bottomLeft:aPoint
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1095
    "obsolete: resize a views bottom and left"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1096
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1097
    self resize:aView handle:#bottomLeft to:aPoint check:false.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1098
"/    undoHistory withoutTransactionDo:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1099
"/        self shiftLayout:aView top:0
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1100
"/                            bottom:((aPoint y) - (aView computeCorner y))
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1101
"/                              left:((aPoint x) - (aView computeOrigin x))
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1102
"/                             right:0
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1103
"/
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1104
"/    ]
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1105
!
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1106
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1107
resize:aView corner:aPoint
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1108
    "obsolete: resize a views corner"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1109
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1110
    self resize:aView handle:#corner to:aPoint check:false.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1111
"/    |delta|
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1112
"/
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1113
"/    delta := aPoint - aView computeCorner.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1114
"/    undoHistory withoutTransactionDo:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1115
"/        self shiftLayout:aView top:0 bottom:(delta y) left:0 right:(delta x)
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1116
"/    ]
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1117
!
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1118
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1119
resize:aComponent endPoint:newEndPoint
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1120
    "obsolete: move a component's endPoint"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1121
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1122
    self resize:aComponent handle:#endPoint to:newEndPoint check:false
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1123
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1124
"/    undoHistory 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1125
"/        withoutTransactionDo:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1126
"/            self shiftLayout:aComponent startPoint:0 endPoint:(newEndPoint - (aComponent endPoint))
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1127
"/        ]
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1128
!
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1129
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1130
resize:aComponent handle:aSymbol to:aPoint check:doCheck
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1131
    "resize a views handle - if doCheck is true, only check if the handle would change
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1132
     (used to avoid flicker, when an aligned move would actually not move anything)"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1133
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1134
    |newX newY oldBottom oldTop oldLeft oldRight 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1135
     oldOrigin oldCorner shiftTop shiftBottom shiftLeft shiftRight|
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1136
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1137
    aSymbol == #startPoint ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1138
        doCheck ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1139
            ^ aPoint ~= (aComponent startPoint)
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1140
        ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1141
        self 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1142
            shiftLayout:aComponent 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1143
            startPoint:(aPoint - (aComponent startPoint)) endPoint:0.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1144
        ^ self.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1145
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1146
    aSymbol == #endPoint ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1147
        doCheck ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1148
            ^ aPoint ~= (aComponent endPoint)
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1149
        ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1150
        self 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1151
            shiftLayout:aComponent 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1152
            startPoint:0 endPoint:(aPoint - (aComponent endPoint)).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1153
        ^ self.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1154
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1155
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1156
    newX := aPoint x.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1157
    newY := aPoint y.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1158
    shiftTop := shiftBottom := shiftLeft := shiftRight := 0.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1159
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1160
    oldOrigin := aComponent computeOrigin.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1161
    oldCorner := aComponent computeCorner.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1162
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1163
    oldTop := oldOrigin y.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1164
    oldBottom := oldCorner y.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1165
    oldLeft := oldOrigin x.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1166
    oldRight := oldCorner x.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1167
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1168
    aSymbol == #bottom ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1169
        shiftBottom := newY - oldBottom.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1170
    ]. 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1171
    aSymbol == #top ifTrue:[     
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1172
        shiftTop := newY - oldTop.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1173
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1174
    aSymbol == #left ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1175
        shiftLeft := newX - oldLeft.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1176
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1177
    aSymbol == #right ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1178
        shiftRight := newX - oldRight.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1179
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1180
    aSymbol == #origin ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1181
        shiftLeft := newX - oldLeft.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1182
        shiftTop := newY - oldTop.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1183
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1184
    aSymbol == #topRight ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1185
        shiftRight := newX - oldRight.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1186
        shiftTop := newY - oldTop.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1187
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1188
    aSymbol == #corner ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1189
        shiftRight := newX - oldRight.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1190
        shiftBottom := newY - oldBottom.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1191
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1192
    aSymbol == #bottomLeft ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1193
        shiftLeft := newX - oldLeft.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1194
        shiftBottom := newY - oldBottom.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1195
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1196
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1197
    doCheck ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1198
        ^ (shiftTop ~= 0) or:[ shiftBottom ~= 0 or:[ shiftLeft ~= 0 or:[ shiftRight ~= 0 ]]]
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1199
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1200
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1201
    undoHistory withoutTransactionDo:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1202
        self 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1203
            shiftLayout:aComponent 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1204
            top:shiftTop bottom:shiftBottom 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1205
            left:shiftLeft right:shiftRight
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1206
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1207
!
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1208
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1209
resize:aView left:aPoint
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1210
    "obsolete: resize a views left"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1211
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1212
    self resize:aView handle:#left to:aPoint check:false.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1213
"/    undoHistory withoutTransactionDo:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1214
"/        self shiftLayout:aView left:((aPoint x) - (aView computeOrigin x)) right:0
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1215
"/    ]
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1216
!
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1217
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1218
resize:aView origin:aPoint
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1219
    "obsolete: resize a views origin"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1220
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1221
    self resize:aView handle:#origin to:aPoint check:false.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1222
"/    |delta|
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1223
"/
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1224
"/    delta := aPoint - aView computeOrigin.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1225
"/    undoHistory withoutTransactionDo:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1226
"/        self shiftLayout:aView top:(delta y) bottom:0 left:(delta x) right:0
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1227
"/    ]
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1228
!
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1229
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1230
resize:aView right:aPoint
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1231
    "obsolete: resize a views right"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1232
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1233
    self resize:aView handle:#right to:aPoint check:false.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1234
"/    undoHistory withoutTransactionDo:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1235
"/        self shiftLayout:aView left:0 right:((aPoint x) - (aView computeCorner x))
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1236
"/    ]
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1237
!
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1238
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1239
resize:aComponent startPoint:newStartPoint
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1240
    "obsolete: move a component's startPoint"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1241
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1242
    self resize:aComponent handle:#startPoint to:newStartPoint check:false
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1243
"/    undoHistory 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1244
"/        withoutTransactionDo:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1245
"/            self shiftLayout:aComponent startPoint:(newStartPoint - (aComponent startPoint)) endPoint:0
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1246
"/        ]
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1247
!
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1248
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1249
resize:aView top:aPoint
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1250
    "obsolete: resize a views top"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1251
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1252
    self resize:aView handle:#top to:aPoint check:false.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1253
"/    undoHistory withoutTransactionDo:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1254
"/        self shiftLayout:aView 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1255
"/                top:((aPoint y) - (aView computeOrigin y)) 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1256
"/                bottom:0
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1257
"/    ]
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1258
!
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1259
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1260
resize:aView topRight:aPoint
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1261
    "obsolete: resize a views top and right"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1262
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1263
    self resize:aView handle:#topRight to:aPoint check:false.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1264
"/    undoHistory withoutTransactionDo:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1265
"/        self shiftLayout:aView 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1266
"/                top:((aPoint y) - (aView computeOrigin y))
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1267
"/                bottom:0
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1268
"/                left:0
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1269
"/                right:((aPoint x) - (aView computeCorner x))
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1270
"/    ]
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1271
!
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1272
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1273
startResizeBorder:borderHandleSelector
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1274
    "start resizing the selected view at the given borderHandle"
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1275
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1276
    |object|
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1277
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1278
    object := self singleSelection.
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1279
    self actionResize:object selector:borderHandleSelector.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1280
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1281
    self 
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1282
        transaction:#resize 
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1283
        selectionDo:[:aView|
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1284
            self createUndoLayout:aView
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1285
        ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1286
    "/ self setSelection:nil withRedraw:true.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1287
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1288
    motionAction  := [:movePoint | self doDragResize:movePoint].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1289
    releaseAction := [self endResize].
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1290
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1291
    self invertOutlineOf:object
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1292
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1293
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  1294
!UIObjectView methodsFor:'private'!
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  1295
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  1296
undoHistoryChanged
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  1297
    self hasUndoHistoryHolder value:(self hasUndoHistory).
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  1298
! !
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  1299
1714
f57812a56d17 method category rename
Claus Gittinger <cg@exept.de>
parents: 1705
diff changeset
  1300
!UIObjectView methodsFor:'private-handles'!
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1301
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
  1302
handlesOf:aComponent do:aTwoArgAction
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1303
    "perform aTwoArgAction on each handle of a component"
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1304
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
  1305
    |dlt ext|
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
  1306
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
  1307
    dlt := (aComponent originRelativeTo:self) - aComponent origin.
1451
f7c591a04f00 drag resize: wait for expose before continue
ca
parents: 1438
diff changeset
  1308
    dlt := dlt - (4@4).
f7c591a04f00 drag resize: wait for expose before continue
ca
parents: 1438
diff changeset
  1309
    ext := 8@8.
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
  1310
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1311
    self class 
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1312
        handlesOf:aComponent 
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1313
        do:[:pnt :wht |
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1314
            aTwoArgAction value:(pnt + dlt extent:ext) value:wht
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1315
        ]
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1316
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1317
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
  1318
whichHandleOf:aComponent isHitBy:aPoint
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1319
    "returns kind of handle or nil"
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1320
175
0b0b4d99e3e7 isResizeable
ca
parents: 156
diff changeset
  1321
    self handlesOf:aComponent do:[:rectangle :what|
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1322
        (rectangle containsPoint:aPoint) ifTrue:[^ what]
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1323
    ].
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1324
    ^ nil
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1325
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1326
1714
f57812a56d17 method category rename
Claus Gittinger <cg@exept.de>
parents: 1705
diff changeset
  1327
!UIObjectView methodsFor:'private-resizing subviews'!
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1328
1827
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
  1329
recomputeShapeIfTransparentBox:aView
1829
35409df5492a *** empty log message ***
werner
parents: 1827
diff changeset
  1330
    (aView notNil and:[aView isTransparentBox]) ifTrue:[
1827
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
  1331
        aView computeShape.
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
  1332
        aView clear; redraw
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
  1333
    ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1334
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1335
1714
f57812a56d17 method category rename
Claus Gittinger <cg@exept.de>
parents: 1705
diff changeset
  1336
!UIObjectView methodsFor:'private-shift layout'!
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1337
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1338
shiftLayout:aViewOrComponent horizontal:n
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1339
    "shift layout for a view; in case of an open transaction, the undo action is registered"
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1340
2514
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1341
    self shiftLayout:aViewOrComponent horizontal:n vertical:0
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1342
!
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1343
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1344
shiftLayout:aViewOrComponent horizontal:h vertical:v
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1345
    "shift layout for a view; in case of an open transaction, the undo action is registered"
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1346
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1347
    (self specFor:aViewOrComponent) hasLayout ifTrue:[
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1348
        self shiftLayout:aViewOrComponent top:v bottom:v left:h right:h
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1349
    ] ifFalse:[
2514
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1350
        self shiftLayout:aViewOrComponent startPoint:(h @ v) endPoint:(h @ v)
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1351
    ].
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1352
!
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1353
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1354
shiftLayout:aView left:l right:r
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1355
    "shift layout for a view; in case of an open transaction, the undo action is registered"
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1356
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1357
    self shiftLayout:aView top:0 bottom:0 left:l right:r
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1358
!
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1359
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1360
shiftLayout:aComponent startPoint:deltaS endPoint:deltaE
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1361
    "shift coordinates; in case of an open transaction, the undo action is registered"
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1362
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1363
    self createUndoStartPointEndPoint:aComponent.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1364
    aComponent 
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1365
        startPoint:(aComponent startPoint + deltaS)
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1366
        endPoint:(aComponent endPoint + deltaE).
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1367
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1368
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1369
shiftLayout:aView top:t bottom:b
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1370
    "shift layout for a view; in case of an open transaction, the undo action is registered"
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1371
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1372
    self shiftLayout:aView top:t bottom:b left:0 right:0
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1373
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1374
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1375
shiftLayout:aView top:t bottom:b left:l right:r
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1376
    "shift layout for a view; in case of an open transaction, the undo action is registered"
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1377
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1378
    |type layout oldExt dX dY|
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1379
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1380
    type := self class layoutType:aView.
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1381
    type isNil ifTrue:[ ^ self ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1382
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1383
    self createUndoLayout:aView.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1384
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1385
    type == #Extent ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1386
        oldExt := aView extent.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1387
        dX := r-l.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1388
        dY := b-t.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1389
        aView extent:(oldExt + (dX @ dY)).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1390
        ^ self 
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1391
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1392
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1393
    layout := aView geometryLayout copy.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1394
    layout isLayout ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1395
        layout leftOffset:(layout leftOffset + l)
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1396
                topOffset:(layout topOffset  + t).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1397
                
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1398
        type == #LayoutFrame ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1399
            layout bottomOffset:(layout bottomOffset + b).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1400
            layout rightOffset:(layout rightOffset  + r).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1401
        ]
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1402
    ] ifFalse:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1403
        type == #Rectangle ifTrue:[
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1404
            layout left:(layout left   + l)
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1405
                  right:(layout right  + r)
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1406
                    top:(layout top    + t)
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1407
                 bottom:(layout bottom + b).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1408
        ] ifFalse:[     "POINT"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1409
            layout x:(layout x + l) y:(layout y + t).
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1410
        ]
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1411
    ].
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  1412
    aView geometryLayout:layout
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1413
!
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1414
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1415
shiftLayout:aViewOrComponent vertical:n
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1416
    "shift layout for a view; in case of an open transaction, the undo action is registered"
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  1417
2514
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1418
    self shiftLayout:aViewOrComponent horizontal:0 vertical:n
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1419
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1420
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1421
!UIObjectView methodsFor:'searching'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1422
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1423
findObjectAt:aPoint
3015
194582b8825f Fix stc compiler warnings
Stefan Vogel <sv@exept.de>
parents: 3011
diff changeset
  1424
    |componentOrView|
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1425
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1426
    componentOrView := self findObjectAt:aPoint in:self.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1427
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1428
    componentOrView == self ifTrue:[^ nil].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1429
    ^ componentOrView.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1430
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1431
"/ cg: old code, which I do not understand
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1432
"/    point := device translatePoint:aPoint fromView:self toView:rootView.
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  1433
"/
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1434
"/    viewId := rootView id.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1435
"/    [viewId notNil] whileTrue:[
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1436
"/        lastId := viewId.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1437
"/        viewId := device viewIdFromPoint:point in:lastId. "/ must be rootView coordinate
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  1438
"/    ].
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  1439
"/
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1440
"/    view := device viewFromId:lastId.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1441
"/    (view isNil or:[view == self]) ifTrue:[ 
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1442
"/        "/ used to return nil here;
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1443
"/        "/ now support a mix of views and components...
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1444
"/        components notEmptyOrNil ifTrue:[
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1445
"/            component := components detect:[:c | c bounds containsPoint:aPoint] ifNone:nil.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1446
"/            ^ component
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1447
"/        ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1448
"/        ^ nil
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  1449
"/    ].
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1450
"/    ^ view
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1451
!
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1452
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1453
findObjectAt:aPoint in:aView
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1454
    |lastHit lastRelPoint view point|
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1455
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1456
    "/ reverse search, to find covering ones first.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1457
    aView subViews reverseDo:[:aSubView |
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1458
        |innerObject relPoint|
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1459
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1460
        ((aSubView origin extent:aSubView extent) containsPoint:aPoint) ifTrue:[
3082
e4df13b1a968 class: UIObjectView
Stefan Vogel <sv@exept.de>
parents: 3019
diff changeset
  1461
            relPoint := self graphicsDevice translatePoint:aPoint fromView:aView toView:aSubView.
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1462
            innerObject := self findObjectAt:relPoint in:aSubView.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1463
            innerObject notNil ifTrue:[ ^ innerObject ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1464
            lastHit := aSubView.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1465
            lastRelPoint := relPoint.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1466
        ]
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1467
    ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1468
    view := lastHit ? aView.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1469
    point := lastRelPoint ? aPoint.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1470
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1471
    view components notEmptyOrNil ifTrue:[
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1472
        view components reverseDo:[:eachComponent |
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1473
            (eachComponent frame containsPoint:point) ifTrue:[
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1474
                ^ eachComponent
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1475
            ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1476
        ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1477
    ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1478
    ^ view
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1479
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1480
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1481
!UIObjectView methodsFor:'selections'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1482
768
2ef5b8bed914 catch expose events when unselecting
ca
parents: 624
diff changeset
  1483
hideSelection
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1484
    "hide the selection - undraw hilights - whatever that is
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1485
    "
2514
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1486
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1487
    super hideSelection.
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1488
    self repairDamage.   
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1489
"/    self showUnselected:selection.
768
2ef5b8bed914 catch expose events when unselecting
ca
parents: 624
diff changeset
  1490
!
2ef5b8bed914 catch expose events when unselecting
ca
parents: 624
diff changeset
  1491
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1492
moveableSelection
131
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1493
    "checks whether the selection is not empty and all selected instances
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1494
     can be moved. If true the selection is returned otherwise nil
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1495
    "
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1496
    |coll|
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1497
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1498
    self hasSelection ifTrue:[
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1499
        (self canMove:(coll := self selection)) ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1500
            ^ coll
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1501
        ]
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1502
    ].
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1503
    ^ nil
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1504
!
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1505
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1506
numberOfSelections
131
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1507
    "return the number of selected instances
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1508
    "
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1509
    |coll size|
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1510
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1511
    coll := self selection.
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1512
    size := coll size.
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1513
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1514
    (size ~~ 0 or:[coll isNil]) ifTrue:[^ size].
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1515
  ^ 1
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1516
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1517
2481
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1518
resizableSelection
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1519
    "checks whether the selection is not empty and all selected instances
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1520
     can be resized. If true the selection is returned otherwise nil
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1521
    "
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1522
    |coll|
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1523
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1524
    self hasSelection ifTrue:[
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1525
        coll := self selection.        
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1526
        (self canResize:coll) ifTrue:[
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1527
            ^ coll
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1528
        ]
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1529
    ].
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1530
    ^ nil
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1531
!
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  1532
1827
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
  1533
selectNextUpInHierarchy
3019
8f9d189e1c21 class: UIObjectView
Claus Gittinger <cg@exept.de>
parents: 3015
diff changeset
  1534
    self breakPoint:#ca.
1827
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
  1535
!
691d1471cd3e WOs changes
werner
parents: 1746
diff changeset
  1536
2215
b0c8d7acc690 UseViewScroller
Claus Gittinger <cg@exept.de>
parents: 2205
diff changeset
  1537
selection:newSelection
b0c8d7acc690 UseViewScroller
Claus Gittinger <cg@exept.de>
parents: 2205
diff changeset
  1538
    "change selection to newSelection"
b0c8d7acc690 UseViewScroller
Claus Gittinger <cg@exept.de>
parents: 2205
diff changeset
  1539
b0c8d7acc690 UseViewScroller
Claus Gittinger <cg@exept.de>
parents: 2205
diff changeset
  1540
    self select:newSelection
149
e652608690b1 help ...
ca
parents: 145
diff changeset
  1541
!
e652608690b1 help ...
ca
parents: 145
diff changeset
  1542
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1543
selectionDo:aBlock
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1544
    "apply block to every selected object
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1545
    "
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1546
    self forEach:(self selection) do:aBlock
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1547
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1548
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1549
!
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1550
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1551
showSelection
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1552
    "show the selection - draw handles"
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1553
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1554
    selectionHiddenLevel == 0 ifTrue:[
2514
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1555
        super showSelection.
faf45b01db30 moving non-layout objects
Claus Gittinger <cg@exept.de>
parents: 2513
diff changeset
  1556
        self repairDamage.   
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1557
    ].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1558
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1559
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1560
singleSelection
2267
f93749e64030 changed #singleSelection - make more comprehendable
Stefan Vogel <sv@exept.de>
parents: 2255
diff changeset
  1561
    "checks whether a single element is selected; in this case the element is
f93749e64030 changed #singleSelection - make more comprehendable
Stefan Vogel <sv@exept.de>
parents: 2255
diff changeset
  1562
     returned otherwise nil"
f93749e64030 changed #singleSelection - make more comprehendable
Stefan Vogel <sv@exept.de>
parents: 2255
diff changeset
  1563
f93749e64030 changed #singleSelection - make more comprehendable
Stefan Vogel <sv@exept.de>
parents: 2255
diff changeset
  1564
    |sel|
f93749e64030 changed #singleSelection - make more comprehendable
Stefan Vogel <sv@exept.de>
parents: 2255
diff changeset
  1565
f93749e64030 changed #singleSelection - make more comprehendable
Stefan Vogel <sv@exept.de>
parents: 2255
diff changeset
  1566
    sel := self selection.
f93749e64030 changed #singleSelection - make more comprehendable
Stefan Vogel <sv@exept.de>
parents: 2255
diff changeset
  1567
    sel isCollection ifTrue:[
f93749e64030 changed #singleSelection - make more comprehendable
Stefan Vogel <sv@exept.de>
parents: 2255
diff changeset
  1568
        sel := sel size == 1 ifTrue:[sel first] ifFalse:[nil].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1569
    ].
2267
f93749e64030 changed #singleSelection - make more comprehendable
Stefan Vogel <sv@exept.de>
parents: 2255
diff changeset
  1570
    ^ sel
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1571
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1572
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1573
singleSelectionDo:aBlock
131
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1574
    "checks whether one element is selected; in this case the block
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1575
     with argument the selected instance will be processed
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1576
    "
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1577
    |view|
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1578
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1579
    (view := self singleSelection) notNil ifTrue:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  1580
	aBlock value:view
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1581
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1582
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1583
1230
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1584
twoElementSelection
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1585
    "checks whether exactly two elements are selected; 
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1586
     in this case, return the selection collection.
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1587
     otherwise return nil
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1588
    "
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1589
    |coll|
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1590
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1591
    (coll := self selection) isCollection ifFalse:[
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1592
        ^ nil "/ single
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1593
    ].
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1594
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1595
    coll size == 2 ifTrue:[ ^ coll].
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1596
    ^ nil
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1597
!
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1598
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1599
unselect
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1600
    "clear selection
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1601
    "
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1602
    self select:nil
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1603
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1604
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1605
withSelectionHiddenDo:aBlock
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
  1606
    "apply block with selection hidden (no handles)"
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
  1607
78
a0a00603a8b6 keep spec in properties
ca
parents: 76
diff changeset
  1608
    |coll|
a0a00603a8b6 keep spec in properties
ca
parents: 76
diff changeset
  1609
138
ca
parents: 134
diff changeset
  1610
    selectionHiddenLevel == 0 ifTrue:[
1555
4ecde43a73d6 #valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents: 1521
diff changeset
  1611
        self hideSelection.
3082
e4df13b1a968 class: UIObjectView
Stefan Vogel <sv@exept.de>
parents: 3019
diff changeset
  1612
        self flush.
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1613
    ].
138
ca
parents: 134
diff changeset
  1614
    selectionHiddenLevel := selectionHiddenLevel + 1.
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1615
2516
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1616
    aBlock 
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1617
        ensure:[
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1618
            selectionHiddenLevel == 1 ifTrue:[
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1619
                "/ careful to decrement selectionHiddenLevel AFTER the sizeChanged;
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1620
                "/ otherwise, we get endless recursion here.
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1621
                setOfSuperViewsSizeChanged notEmpty ifTrue:[
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1622
                    coll := self minClosedViewSetFor:setOfSuperViewsSizeChanged.
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1623
                    coll do:[:aView| aView sizeChanged:nil].
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1624
                    setOfSuperViewsSizeChanged := IdentitySet new
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1625
                ].
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1626
                selectionHiddenLevel := selectionHiddenLevel - 1.
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1627
                self showSelection.
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1628
            ] ifFalse:[
6c0bc4ed2d88 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2514
diff changeset
  1629
                selectionHiddenLevel := selectionHiddenLevel - 1.
1555
4ecde43a73d6 #valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents: 1521
diff changeset
  1630
            ].
4ecde43a73d6 #valueNowOrOnUnwindDo: -> #ensure:
Claus Gittinger <cg@exept.de>
parents: 1521
diff changeset
  1631
        ]
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1632
!
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1633
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1634
withoutSelectionDo:aBlock
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1635
    "evaluate aBlock while selection is nilled
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1636
    "
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1637
    |sel|
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1638
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1639
    self hasSelection ifFalse:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  1640
	aBlock value
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1641
    ] ifTrue:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  1642
	sel := self selection.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  1643
	self setSelection:nil withRedraw:true.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  1644
	aBlock value.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  1645
	self setSelection:sel withRedraw:true.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1646
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1647
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1648
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1649
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1650
1717
32ab910cb20c method category rename
Claus Gittinger <cg@exept.de>
parents: 1715
diff changeset
  1651
!UIObjectView methodsFor:'selections-basic'!
131
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1652
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1653
recursiveRepair:theDamages startIn:aView
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1654
    "repair all views and contained views, which intersects the damage.
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1655
     !!!! all damages repaired are removed from the list of damages !!!!
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1656
    "
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1657
    |color isRepaired relOrg damage
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1658
     bwWidth    "{ Class:SmallInteger }"
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1659
     x          "{ Class:SmallInteger }"
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1660
     y          "{ Class:SmallInteger }"
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1661
     w          "{ Class:SmallInteger }"
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1662
     h          "{ Class:SmallInteger }"
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1663
     relOrgX    "{ Class:SmallInteger }"
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1664
     relOrgY    "{ Class:SmallInteger }"
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1665
     width      "{ Class:SmallInteger }"
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1666
     height     "{ Class:SmallInteger }"
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1667
     size       "{ Class:SmallInteger }"
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1668
    |
1438
9255d2e6226b checkin from browser
ca
parents: 1437
diff changeset
  1669
    aView isInputOnly ifTrue:[^ self ].
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1670
1437
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  1671
    (aView shown and:[theDamages notEmpty]) ifFalse:[ ^ self ].
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1672
2513
1c2ac34566ab changed #recursiveRepair:startIn:
Claus Gittinger <cg@exept.de>
parents: 2510
diff changeset
  1673
    aView components notEmptyOrNil ifTrue:[ 
1c2ac34566ab changed #recursiveRepair:startIn:
Claus Gittinger <cg@exept.de>
parents: 2510
diff changeset
  1674
        aView invalidate 
1c2ac34566ab changed #recursiveRepair:startIn:
Claus Gittinger <cg@exept.de>
parents: 2510
diff changeset
  1675
    ].
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1676
    aView subViews notNil ifTrue:[
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1677
        aView subViews reverseDo:[:v| self recursiveRepair:theDamages startIn:v ].
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1678
        theDamages isEmpty ifTrue:[ ^ self ].
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1679
    ].
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1680
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1681
    relOrg  := aView originRelativeTo:self.
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1682
    bwWidth := aView borderWidth.
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1683
    size    := theDamages size.
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1684
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1685
    "/ compute relative origin starting from border left@top
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1686
    relOrgX := relOrg x - bwWidth.
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1687
    relOrgY := relOrg y - bwWidth.
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1688
    width   := aView width  + bwWidth + bwWidth.
2482
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1689
    height  := aView height + bwWidth + bwWidth.
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1690
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1691
    size to:1 by:-1 do:[:anIndex|
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1692
        damage := theDamages at:anIndex.
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1693
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1694
        "/ compute the rectangle into the view
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1695
        y := damage top  - relOrgY.
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1696
        x := damage left - relOrgX.
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1697
        w := damage width.
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1698
        h := damage height.
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1699
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1700
        isRepaired := true.
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1701
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1702
        x     < 0      ifTrue:[ w := w + x. x := 0. isRepaired := false ].
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1703
        y     < 0      ifTrue:[ h := h + y. y := 0. isRepaired := false ].
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1704
        x + w > width  ifTrue:[ w := width  - x.    isRepaired := false ].
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1705
        y + h > height ifTrue:[ h := height - y.    isRepaired := false ].
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1706
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1707
        (w > 0 and:[h > 0]) ifTrue:[
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1708
            bwWidth ~~ 0 ifTrue:[
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1709
                color isNil ifTrue:[
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1710
                    "/ must force redraw of border
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1711
                    color := aView borderColor.
2688
98d48fa622b4 comment/format in: #recursiveRepair:startIn:
Claus Gittinger <cg@exept.de>
parents: 2555
diff changeset
  1712
                    aView borderColor:(Color colorId:1).  "/ kludge to force a redraw
2482
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1713
                    aView borderColor:color.
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1714
                ].
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1715
                w := w - bwWidth.
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1716
                h := h - bwWidth.
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1717
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1718
                (x := x - bwWidth) < 0 ifTrue:[w := w + x. x := 0].
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1719
                (y := y - bwWidth) < 0 ifTrue:[h := h + y. y := 0].
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1720
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1721
                (w > 0 and:[h > 0])  ifFalse:[w := 0].
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1722
            ].
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1723
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1724
            w > 0 ifTrue:[
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1725
                aView clearRectangleX:x y:y width:w height:h.
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1726
                aView exposeX:x y:y width:w height:h
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1727
            ].
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1728
            isRepaired ifTrue:[ theDamages removeIndex:anIndex ].
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1729
        ]
62831852b487 Incomplete source in last rev
Stefan Vogel <sv@exept.de>
parents: 2481
diff changeset
  1730
    ].
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1731
!
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1732
131
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1733
selection
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1734
    "returns the current selection
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1735
    "
2528
a6df49dfb157 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2516
diff changeset
  1736
a6df49dfb157 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2516
diff changeset
  1737
    "/ Q to ca: why redefine the collection building???
a6df49dfb157 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2516
diff changeset
  1738
    ^ super selection.
a6df49dfb157 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2516
diff changeset
  1739
131
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1740
    ^ selection
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1741
!
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1742
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1743
setSelection:newSelection withRedraw:doRedraw
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1744
    "set a new selection without change notifications"
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1745
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1746
    | sel |
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1747
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1748
    (sel := newSelection) == self ifTrue:[
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1749
        sel := nil
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1750
    ].
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1751
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1752
    doRedraw ifTrue:[
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1753
        self hideSelection.
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1754
        selection := sel.
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1755
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1756
        self forEach:selection do:[:aView |
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1757
            |superView|
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1758
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1759
            superView := aView superView. 
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1760
            self recomputeShapeIfTransparentBox:superView.
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1761
        ].
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1762
        self showSelection.
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1763
    ] ifFalse:[
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1764
        selection := sel
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1765
    ]
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1766
!
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  1767
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1768
showUnselected:something
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1769
    "show a component or list of components unselected"
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1770
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1771
    |damages oldClipped savedSelection|
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1772
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1773
    (selectionHiddenLevel ~~ 0 or:[something isNil]) ifTrue:[
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1774
        ^ self
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1775
    ].
1438
9255d2e6226b checkin from browser
ca
parents: 1437
diff changeset
  1776
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1777
    damages := OrderedCollection new.
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1778
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1779
    self forEach:something do:[:v|
1437
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  1780
        self handlesOf:v do:[:aDamage :wht|
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  1781
            damages reverseDo:[:el|
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  1782
                (el intersects:aDamage) ifTrue:[
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  1783
                    damages removeIdentical:el.
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  1784
2503
36dce8c654af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2501
diff changeset
  1785
                    aDamage left:(aDamage left   min:el left) floor
36dce8c654af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2501
diff changeset
  1786
                           right:(aDamage right  max:el right) ceiling
36dce8c654af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2501
diff changeset
  1787
                             top:(aDamage top    min:el top) floor
36dce8c654af *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2501
diff changeset
  1788
                          bottom:(aDamage bottom max:el bottom) ceiling
1437
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  1789
                ]
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  1790
            ].                        
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  1791
            damages add:aDamage
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1792
        ]
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1793
    ].
1438
9255d2e6226b checkin from browser
ca
parents: 1437
diff changeset
  1794
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1795
    damages do:[:el| self clearRectangle:el. ].
1438
9255d2e6226b checkin from browser
ca
parents: 1437
diff changeset
  1796
9255d2e6226b checkin from browser
ca
parents: 1437
diff changeset
  1797
    (oldClipped := clipChildren) ifFalse:[
9255d2e6226b checkin from browser
ca
parents: 1437
diff changeset
  1798
        self clippedByChildren:(clipChildren := true)
9255d2e6226b checkin from browser
ca
parents: 1437
diff changeset
  1799
    ].
1451
f7c591a04f00 drag resize: wait for expose before continue
ca
parents: 1438
diff changeset
  1800
    self subViews reverseDo:[:v| self recursiveRepair:damages startIn:v].
1437
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  1801
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1802
    oldClipped ~~ clipChildren ifTrue:[
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1803
        self clippedByChildren:(clipChildren := oldClipped).
85b9b5da0b8d optimize: undraw selection
ca
parents: 1399
diff changeset
  1804
    ].
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1805
3082
e4df13b1a968 class: UIObjectView
Stefan Vogel <sv@exept.de>
parents: 3019
diff changeset
  1806
    self flush.
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1807
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1808
    savedSelection := selection.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1809
    [
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1810
        selection := nil.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1811
        damages do:[:el| self invalidate:el ].
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1812
        self repairDamage.
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1813
    ] ensure:[
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1814
        selection := savedSelection
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  1815
    ].
131
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1816
! !
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  1817
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1818
!UIObjectView methodsFor:'testing'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1819
284
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
  1820
hasSelection
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
  1821
    "returns true if any widget is selected
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1822
    "
284
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
  1823
    ^ self numberOfSelections ~~ 0
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1824
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1825
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1826
284
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
  1827
hasSingleSelection
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
  1828
    "returns true if one widget is selected
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  1829
    "
284
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
  1830
    ^ self numberOfSelections == 1
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
  1831
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
  1832
!
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
  1833
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
  1834
hasUndoHistory
1918
f5e8dfe30838 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1911
diff changeset
  1835
    "returns true if undos exists"
f5e8dfe30838 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1911
diff changeset
  1836
2722
647dfae127cd changed: #hasUndoHistory
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  1837
    ^ undoHistory notEmpty
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1838
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1839
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  1840
isModified
1918
f5e8dfe30838 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1911
diff changeset
  1841
    "returns true if painter is modified"
f5e8dfe30838 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1911
diff changeset
  1842
f5e8dfe30838 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1911
diff changeset
  1843
    ^ undoHistory isModified
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  1844
!
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  1845
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1846
isSelected:anObject
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1847
    "return true, if the argument, anObject is selected
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1848
    "
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1849
    anObject notNil ifTrue:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  1850
	self selectionDo:[:el| el == anObject ifTrue:[^ true]]
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1851
    ].
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1852
  ^ false
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1853
2538
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
  1854
!
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
  1855
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
  1856
object:anObject isContainedIn:aRectangle
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
  1857
    ^ anObject bounds isContainedIn:aRectangle
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1858
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1859
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1860
!UIObjectView methodsFor:'transaction'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1861
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  1862
createUndoLayout:aView
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  1863
    "prepare undo action for a view changing its layout
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  1864
    "
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  1865
    self subclassResponsibility
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  1866
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  1867
!
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  1868
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1869
transaction:aType objects:something do:aOneArgBlock
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1870
    "opens a transaction and evaluates a block within the transaction; the
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1871
     argument to the block is a view from derived from something
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1872
    "
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1873
    self subclassResponsibility
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1874
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1875
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1876
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1877
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1878
transaction:aType selectionDo:aOneArgBlock
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1879
    "opens a transaction and evaluates a block within the transaction; the
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1880
     argument to the block is a view from the selection
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1881
    "
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  1882
    self transaction:aType objects:(self selection) do:aOneArgBlock
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1883
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1884
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1885
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1886
1715
9eebdb3802aa method category rename
Claus Gittinger <cg@exept.de>
parents: 1714
diff changeset
  1887
!UIObjectView methodsFor:'user actions-dimension'!
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1888
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1889
copyExtent
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1890
    "copy the extent from the selected object"
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1891
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1892
    |object|
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1893
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1894
    object := self singleSelection.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1895
    object notNil ifTrue:[
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1896
        CopiedExtent := object computeExtent
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1897
    ] ifFalse:[
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1898
        self warn:'Exactly one element must be selected!!'.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1899
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1900
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1901
89
35c5711729c2 so far so good
ca
parents: 84
diff changeset
  1902
copyLayout
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1903
    "copy the layout from the selected object"
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1904
89
35c5711729c2 so far so good
ca
parents: 84
diff changeset
  1905
    |object|
35c5711729c2 so far so good
ca
parents: 84
diff changeset
  1906
35c5711729c2 so far so good
ca
parents: 84
diff changeset
  1907
    object := self singleSelection.
35c5711729c2 so far so good
ca
parents: 84
diff changeset
  1908
    object notNil ifTrue:[
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1909
        CopiedLayout := object geometryLayout copy
89
35c5711729c2 so far so good
ca
parents: 84
diff changeset
  1910
    ] ifFalse:[
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1911
        self warn:'Exactly one element must be selected!!'.
89
35c5711729c2 so far so good
ca
parents: 84
diff changeset
  1912
    ]
35c5711729c2 so far so good
ca
parents: 84
diff changeset
  1913
!
35c5711729c2 so far so good
ca
parents: 84
diff changeset
  1914
1230
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1915
exchangeLayouts
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1916
    "exchange the layout of two elements 
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1917
     (useful to change the order of radiobuttons or checkBoxes)
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1918
    "
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1919
    |objects l1 l2|
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1920
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1921
    objects := self twoElementSelection.
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1922
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1923
    objects notNil ifTrue:[
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1924
        l1 := (objects at:1) geometryLayout copy.
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1925
        l2 := (objects at:2) geometryLayout copy.
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1926
        self transaction:#exchangeLayout dimensionDo:[:v|
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1927
            v == (objects at:1) ifTrue:[
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1928
                v geometryLayout:(l2 copy)
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1929
            ] ifFalse:[
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1930
                v geometryLayout:(l1 copy).
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1931
            ]
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1932
        ]    
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1933
    ] ifFalse:[    
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1934
        self warn:'exactly two elements must be selected'.
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1935
    ]
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1936
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1937
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1938
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1939
!
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1222
diff changeset
  1940
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1941
pasteExtent
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1942
    "paste the copied extent to all objects in the selection"
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1943
2398
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1944
    |heightToPaste widthToPaste|
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1945
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1946
    CopiedExtent notNil ifTrue:[
2398
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1947
        widthToPaste := CopiedExtent x.
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1948
        heightToPaste := CopiedExtent y.
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1949
    ] ifFalse:[
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1950
        CopiedLayout notNil ifTrue:[
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1951
            CopiedLayout leftFraction = CopiedLayout rightFraction ifTrue:[
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1952
                CopiedLayout topFraction = CopiedLayout bottomFraction ifTrue:[
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1953
                    widthToPaste := (CopiedLayout rightOffset - CopiedLayout leftOffset). 
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1954
                    heightToPaste := (CopiedLayout bottomOffset - CopiedLayout topOffset). 
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1955
                ]
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1956
            ]
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1957
        ].
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1958
    ].
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1959
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1960
    widthToPaste notNil ifTrue:[
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1961
        heightToPaste notNil ifTrue:[
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1962
            self transaction:#pasteExtent dimensionDo:[:v|
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1963
                self resize:v corner:(v computeOrigin + (widthToPaste@heightToPaste))
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1964
            ]    
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1965
        ]    
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1966
    ]    
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1967
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1968
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1969
pasteHeight
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1970
    "paste the copied extent's height to all objects in the selection"
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1971
2398
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1972
    |heightToPaste|
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1973
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1974
    CopiedExtent notNil ifTrue:[
2398
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1975
        heightToPaste := CopiedExtent y.
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1976
    ] ifFalse:[
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1977
        CopiedLayout notNil ifTrue:[
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1978
            CopiedLayout topFraction = CopiedLayout bottomFraction ifTrue:[
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1979
                heightToPaste := (CopiedLayout bottomOffset - CopiedLayout topOffset) 
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1980
            ]
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1981
        ].
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1982
    ].
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1983
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1984
    heightToPaste notNil ifTrue:[
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1985
        self transaction:#pasteHeight dimensionDo:[:v|
2398
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1986
            self resize:v bottom:(v computeOrigin + heightToPaste)
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1987
        ].
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  1988
    ].    
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1989
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1990
89
35c5711729c2 so far so good
ca
parents: 84
diff changeset
  1991
pasteLayout
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1992
    "paste the layout to all objects in the selection"
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1993
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1994
    CopiedLayout notNil ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1995
        self transaction:#pasteLayout dimensionDo:[:v|
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1996
            v geometryLayout:(CopiedLayout copy)
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  1997
        ]    
89
35c5711729c2 so far so good
ca
parents: 84
diff changeset
  1998
    ]    
35c5711729c2 so far so good
ca
parents: 84
diff changeset
  1999
!
35c5711729c2 so far so good
ca
parents: 84
diff changeset
  2000
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2001
pasteWidth
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2002
    "paste the copied extent's width to all objects in the selection"
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2003
2398
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  2004
    |widthToPaste|
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  2005
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2006
    CopiedExtent notNil ifTrue:[
2398
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  2007
        widthToPaste := CopiedExtent x.
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  2008
    ] ifFalse:[
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  2009
        CopiedLayout notNil ifTrue:[
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  2010
            CopiedLayout leftFraction = CopiedLayout rightFraction ifTrue:[
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  2011
                widthToPaste := (CopiedLayout rightOffset - CopiedLayout leftOffset) 
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  2012
            ]
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  2013
        ].
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  2014
    ].
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  2015
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  2016
    widthToPaste notNil ifTrue:[
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2017
        self transaction:#pasteWidth dimensionDo:[:v|
2398
bdefc2be920a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2394
diff changeset
  2018
            self resize:v right:(v computeOrigin + widthToPaste)
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2019
        ]    
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2020
    ]    
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2021
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2022
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2023
setExtent:anExtent
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2024
    "change extent for all selected objects
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2025
    "
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2026
    self transaction:#extent dimensionDo:[:v|
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2027
	v geometryLayout:nil.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2028
	v extent:anExtent.
67
09e9d4b57142 alignmentLayout
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
  2029
    ].
09e9d4b57142 alignmentLayout
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
  2030
09e9d4b57142 alignmentLayout
Claus Gittinger <cg@exept.de>
parents: 63
diff changeset
  2031
    "Modified: 28.2.1997 / 12:49:00 / cg"
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2032
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2033
149
e652608690b1 help ...
ca
parents: 145
diff changeset
  2034
setLayout:aLayout
e652608690b1 help ...
ca
parents: 145
diff changeset
  2035
    "change layout for all selected objects
e652608690b1 help ...
ca
parents: 145
diff changeset
  2036
    "
e652608690b1 help ...
ca
parents: 145
diff changeset
  2037
    self transaction:#layout dimensionDo:[:v|
2501
43386f544f3d cleaned up the code and fixed many bugs;
Claus Gittinger <cg@exept.de>
parents: 2485
diff changeset
  2038
        v geometryLayout:(aLayout copy)
149
e652608690b1 help ...
ca
parents: 145
diff changeset
  2039
    ].    
e652608690b1 help ...
ca
parents: 145
diff changeset
  2040
!
e652608690b1 help ...
ca
parents: 145
diff changeset
  2041
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2042
setToDefaultExtent
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2043
    "change extent of all selected views to their default extent
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2044
    "
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2045
    self transaction:#defaultExtent dimensionDo:[:v|
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2046
	self resize:v corner:(v computeOrigin + (v preferredExtent)).
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2047
    ]    
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2048
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2049
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2050
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2051
setToDefaultHeight
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2052
    "change height of all selected views to their default height
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2053
    "
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2054
    self transaction:#defaultHeight dimensionDo:[:v|
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2055
	self resize:v bottom:(v computeOrigin + (v preferredExtent))
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2056
    ]    
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2057
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2058
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2059
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2060
setToDefaultWidth
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2061
    "change width of all selected views to their default width
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2062
    "
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2063
    self transaction:#defaultWidth dimensionDo:[:v|
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2064
	self resize:v right:(v computeOrigin + (v preferredExtent))
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2065
    ]    
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2066
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2067
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2068
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2069
transaction:aType dimensionDo:aOneArgBlock
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2070
    "change dimension within a transaction for the selected elements by evaluating
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2071
     the block with the argument a view.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2072
    "
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2073
    self withSelectionHiddenDo:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2074
	self transaction:aType selectionDo:[:aView|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2075
	    (self class layoutType:aView) notNil ifTrue:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2076
		self createUndoLayout:aView.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2077
		aOneArgBlock value:aView.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2078
		self elementChangedSize:aView.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2079
	    ]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2080
	]
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2081
    ].
225
a40d26ed5e74 change selection behavior caused by new tree view
ca
parents: 208
diff changeset
  2082
    self layoutChanged
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2083
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2084
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2085
1715
9eebdb3802aa method category rename
Claus Gittinger <cg@exept.de>
parents: 1714
diff changeset
  2086
!UIObjectView methodsFor:'user actions-move'!
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2087
2394
664ca922a80a autorepeat of move fixed
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2088
moveDo:aOneArgBlock 
664ca922a80a autorepeat of move fixed
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2089
    "perform a move operation (with auto repeat)"
664ca922a80a autorepeat of move fixed
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2090
138
ca
parents: 134
diff changeset
  2091
    |sensor tm|
ca
parents: 134
diff changeset
  2092
ca
parents: 134
diff changeset
  2093
    self moveableSelection isNil ifTrue:[
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2094
        ^ self
138
ca
parents: 134
diff changeset
  2095
    ].
ca
parents: 134
diff changeset
  2096
    sensor := self sensor.
ca
parents: 134
diff changeset
  2097
2394
664ca922a80a autorepeat of move fixed
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2098
    tm := ButtonController defaultInitialDelay.
138
ca
parents: 134
diff changeset
  2099
ca
parents: 134
diff changeset
  2100
    self withSelectionHiddenDo:[
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2101
        self transaction:#move selectionDo:[:aView|self createUndoLayout:aView].
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2102
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2103
        [
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2104
            self selectionDo:[:aView| aOneArgBlock value:aView ].
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2105
2394
664ca922a80a autorepeat of move fixed
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2106
            sensor leftButtonPressed ifTrue:[
664ca922a80a autorepeat of move fixed
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2107
                self windowGroup processExposeEvents.
664ca922a80a autorepeat of move fixed
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2108
                Delay waitForSeconds:tm.
664ca922a80a autorepeat of move fixed
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2109
                self windowGroup processExposeEvents.
664ca922a80a autorepeat of move fixed
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2110
                tm := ButtonController defaultRepeatDelay.
664ca922a80a autorepeat of move fixed
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2111
                self layoutChanged.
664ca922a80a autorepeat of move fixed
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2112
            ].
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2113
            sensor leftButtonPressed.
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2114
        ] whileTrue.
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2115
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2116
        "/ handle any expose events (for subcomponents) before
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2117
        "/ redrawing the handles.
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2118
        Delay waitForSeconds:0.1.
2394
664ca922a80a autorepeat of move fixed
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2119
        self windowGroup processExposeEvents
138
ca
parents: 134
diff changeset
  2120
    ].
ca
parents: 134
diff changeset
  2121
!
ca
parents: 134
diff changeset
  2122
113
1854c2e61c4e bug fixes
ca
parents: 100
diff changeset
  2123
moveSelectionDown
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2124
    "move selection down
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2125
    "
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2126
    self moveSelectionDown:1
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2127
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2128
!
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2129
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2130
moveSelectionDown:howMany
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2131
    "move selection down (pixelwise or aligned-grid wise)"
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2132
138
ca
parents: 134
diff changeset
  2133
    |gridY n|
ca
parents: 134
diff changeset
  2134
ca
parents: 134
diff changeset
  2135
    gridAlign notNil ifTrue:[gridY := gridAlign y]
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2136
                    ifFalse:[gridY := 1].
138
ca
parents: 134
diff changeset
  2137
ca
parents: 134
diff changeset
  2138
    self moveDo:[:aView|
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2139
        aligning ifTrue:[
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2140
            n := ((aView computeCorner y) \\ gridY).
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2141
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2142
            n ~~ 0 ifTrue:[
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2143
                n := gridY - n + 1.
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2144
            ] ifFalse:[
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2145
                n := gridY
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2146
            ]
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2147
        ] ifFalse:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2148
            n := 1.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2149
            self sensor shiftDown ifTrue:[
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2150
                n := 8.    
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2151
            ].
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2152
        ].
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2153
        n := n * howMany.
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2154
        self shiftLayout:aView vertical:n
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2155
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2156
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2157
113
1854c2e61c4e bug fixes
ca
parents: 100
diff changeset
  2158
moveSelectionLeft
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2159
    "move selection left
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2160
    "
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2161
    self moveSelectionLeft:1
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2162
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2163
!
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2164
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2165
moveSelectionLeft:howMany
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2166
    "move selection to the left (pixelwise or aligned-grid wise)"
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2167
113
1854c2e61c4e bug fixes
ca
parents: 100
diff changeset
  2168
    |gridX n|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2169
138
ca
parents: 134
diff changeset
  2170
    gridAlign notNil ifTrue:[gridX := gridAlign x]
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2171
                    ifFalse:[gridX := 1].
138
ca
parents: 134
diff changeset
  2172
ca
parents: 134
diff changeset
  2173
    self moveDo:[:aView|
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2174
        aligning ifTrue:[
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2175
            n := ((aView computeOrigin x) \\ gridX).
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2176
            n == 0 ifTrue:[n := gridX].
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2177
        ] ifFalse:[
2538
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
  2178
            n := 1.
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2179
            self sensor shiftDown ifTrue:[
2538
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
  2180
                n := 8.    
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2181
            ].
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2182
        ].
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2183
        n := n * howMany.
2538
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
  2184
        self shiftLayout:aView horizontal:n negated
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2185
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2186
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2187
113
1854c2e61c4e bug fixes
ca
parents: 100
diff changeset
  2188
moveSelectionRight
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2189
    "move the selection to the right"
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2190
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2191
    self moveSelectionRight:1
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2192
!
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2193
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2194
moveSelectionRight:howMany
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2195
    "move selection to the right (pixelwise or aligned-grid wise)"
2356
bb961692c387 clicking on an already selected object for move
Claus Gittinger <cg@exept.de>
parents: 2349
diff changeset
  2196
113
1854c2e61c4e bug fixes
ca
parents: 100
diff changeset
  2197
    |gridX n|
1854c2e61c4e bug fixes
ca
parents: 100
diff changeset
  2198
138
ca
parents: 134
diff changeset
  2199
    gridAlign notNil ifTrue:[gridX := gridAlign x]
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2200
                    ifFalse:[gridX := 1].
138
ca
parents: 134
diff changeset
  2201
ca
parents: 134
diff changeset
  2202
    self moveDo:[:aView|
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2203
        aligning ifTrue:[
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2204
            n := ((aView computeCorner x) \\ gridX).
2538
ded6eb784054 refactored selectAll to allow for rectangle-drag in UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2536
diff changeset
  2205
            n == 0 ifTrue:[n := gridX].
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2206
        ] ifFalse:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2207
            n := 1.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2208
            self sensor shiftDown ifTrue:[
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2209
                n := 8.    
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2210
            ].
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2211
        ].
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2212
        n := n * howMany.
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2213
        self shiftLayout:aView horizontal:n
113
1854c2e61c4e bug fixes
ca
parents: 100
diff changeset
  2214
    ]
1854c2e61c4e bug fixes
ca
parents: 100
diff changeset
  2215
!
1854c2e61c4e bug fixes
ca
parents: 100
diff changeset
  2216
1854c2e61c4e bug fixes
ca
parents: 100
diff changeset
  2217
moveSelectionUp
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2218
    "move selection up
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2219
    "
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2220
    self moveSelectionUp:1
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2221
!
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2223
moveSelectionUp:howMany
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2224
    "move selection up (pixelwise or aligned-grid wise)"
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2225
113
1854c2e61c4e bug fixes
ca
parents: 100
diff changeset
  2226
    |gridY n|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2227
138
ca
parents: 134
diff changeset
  2228
    gridAlign notNil ifTrue:[gridY := gridAlign y]
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2229
                    ifFalse:[gridY := 1].
138
ca
parents: 134
diff changeset
  2230
ca
parents: 134
diff changeset
  2231
    self moveDo:[:aView|
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2232
        aligning ifTrue:[
2485
59ecb1305177 changed #moveSelectionUp: fix moving bug
Stefan Vogel <sv@exept.de>
parents: 2482
diff changeset
  2233
            n := ((aView computeOrigin y) \\ gridY).
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2234
            n == 0 ifTrue:[n := gridY].
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2235
            n := n negated.
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2236
        ] ifFalse:[
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2237
            n := -1.
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2238
            self sensor shiftDown ifTrue:[
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2239
                n := -8.    
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2240
            ].
1222
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2241
        ].
bcb8b0ec295c collect cursor events for widget move;
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
  2242
        n := n * howMany.
2510
0760bec5f1e3 code cleanup
Claus Gittinger <cg@exept.de>
parents: 2503
diff changeset
  2243
        self shiftLayout:aView vertical:n
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2244
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2245
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2246
1715
9eebdb3802aa method category rename
Claus Gittinger <cg@exept.de>
parents: 1714
diff changeset
  2247
!UIObjectView methodsFor:'user actions-position'!
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2248
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2249
alignResizeSelectionLeft
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2250
    "resize the selection on the left to align their left edge with the 
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2251
     of the first object in the selection; 
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2252
     in case of a single object selection, the objects left edge is aligned with the left of its superview"
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2253
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2254
    |lmost delta sel|
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2255
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2256
    (sel := self moveableSelection) notNil ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2257
        self withSelectionHiddenDo:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2258
            self numberOfSelections > 1 ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2259
                lmost := (sel first) computeOrigin x.
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2260
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2261
                self transaction:#alignResizeLeft selectionDo:[:v|
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2262
                    (delta := lmost - (v computeOrigin x)) ~~ 0 ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2263
                        self shiftLayout:v left:delta right:0
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2264
                    ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2265
                ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2266
            ] ifFalse:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2267
                self extentToFrame:#Left do:[:aLayout|
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2268
                    aLayout leftFraction:0.0 offset:0.
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2269
                ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2270
            ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2271
        ].
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2272
        self layoutChanged
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2273
    ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2274
!
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2275
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2276
alignResizeSelectionRight
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2277
    "align selection to the right of the first object in the selection; 
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2278
     in case of one selection the object is aligned to the right of its superview"
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2279
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2280
    |rmost delta sel|
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2281
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2282
    (sel := self moveableSelection) notNil ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2283
        self withSelectionHiddenDo:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2284
            self numberOfSelections > 1 ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2285
                rmost := (sel first) computeCorner x.
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2286
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2287
                self transaction:#alignRight selectionDo:[:v|
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2288
                    (delta := rmost - (v computeCorner x)) ~~ 0 ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2289
                        self shiftLayout:v left:0 right:delta
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2290
                    ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2291
                ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2292
            ] ifFalse:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2293
                self extentToFrame:#Right do:[:aLayout|
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2294
                    aLayout rightOffset:0.
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2295
                    aLayout rightFraction:1.0.
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2296
                ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2297
            ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2298
        ].
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2299
        self layoutChanged
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2300
    ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2301
!
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2302
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2303
alignSelectionBottom
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2304
    "align selection to the bottom of the first object in the selection; in case
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2305
     of one selection the object is aligned to the bottom of its superview
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2306
    "
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2307
    |bmost delta sel|
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2308
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2309
    (sel := self moveableSelection) notNil ifTrue:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2310
	self withSelectionHiddenDo:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2311
	    self numberOfSelections > 1 ifTrue:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2312
		bmost := (sel first) computeCorner y.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2313
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2314
		self transaction:#alignBottom selectionDo:[:v|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2315
		    (delta := bmost - (v computeCorner y)) ~~ 0 ifTrue:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2316
			self shiftLayout:v top:delta bottom:delta.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2317
		    ]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2318
		]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2319
	    ] ifFalse:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2320
		self extentToFrame:#Bottom do:[:aLayout|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2321
		    aLayout bottomOffset:0.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2322
		    aLayout bottomFraction:1.0
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2323
		]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2324
	    ]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2325
	].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2326
	self layoutChanged
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2327
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2328
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2329
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2330
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2331
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2332
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2333
alignSelectionCenterHor
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2334
    "align selection to the center/horizontal of the first object in the selection; in case
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2335
     of one selection the object is aligned to the center/horizontal of its superview
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2336
    "
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2337
    |view center sel|
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2338
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2339
    (sel := self moveableSelection) notNil ifTrue:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2340
	self withSelectionHiddenDo:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2341
	    view := self singleSelection.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2342
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2343
	    view notNil ifTrue:[
284
995078a58977 show the selection after mapping the view
ca
parents: 251
diff changeset
  2344
                
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2345
		view   := self findContainerOfView:view.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2346
		center := view computeExtent
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2347
	    ] ifFalse:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2348
		view   := sel first.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2349
		center := view computeCorner + view computeOrigin.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2350
	    ].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2351
	    center := center x // 2.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2352
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2353
	    self transaction:#alignCenterHorizontal selectionDo:[:v|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2354
		|newX oldX delta|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2355
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2356
		oldX  := v computeOrigin x.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2357
		newX  := center - ((v computeCorner x - oldX) // 2).
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2358
		delta := newX - oldX.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2359
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2360
		self shiftLayout:v left:delta right:delta
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2361
	    ]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2362
	].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2363
	self layoutChanged
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2364
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2365
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2366
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2367
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2368
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2369
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2370
alignSelectionCenterVer
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2371
    "align selection to the center/vertical of the first object in the selection; in case
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2372
     of one selection the object is aligned to the center/vertical of its superview
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2373
    "
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2374
    |view center sel|
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2375
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2376
    (sel := self moveableSelection) notNil ifTrue:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2377
	self withSelectionHiddenDo:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2378
	    view := self singleSelection.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2379
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2380
	    view notNil ifTrue:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2381
		view   := self findContainerOfView:view.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2382
		center := view computeExtent
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2383
	    ] ifFalse:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2384
		view   := sel first.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2385
		center := view computeCorner + view computeOrigin.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2386
	    ].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2387
	    center := center y // 2.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2388
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2389
	    self transaction:#alignCenterVertical selectionDo:[:v|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2390
		|newY oldY delta|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2391
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2392
		oldY  := v computeOrigin y.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2393
		newY  := center - ((v computeCorner y - oldY) // 2).
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2394
		delta := newY - oldY.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2395
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2396
		self shiftLayout:v top:delta bottom:delta
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2397
	    ]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2398
	].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2399
	self layoutChanged
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2400
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2401
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2402
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2403
alignSelectionLeft
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2404
    "align the selection with the left edge of the first object in the selection.
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2405
     in case of a single object selection, the object is moved to the left of its superview"
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2406
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2407
    |dominantLeft delta sel|
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2408
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2409
    (sel := self moveableSelection) notNil ifTrue:[
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2410
        self withSelectionHiddenDo:[
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2411
            dominantLeft := (sel first) computeOrigin x.
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2412
            self numberOfSelections > 1 ifTrue:[
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2413
                self transaction:#alignLeft selectionDo:[:v|
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2414
                    (delta := dominantLeft - (v computeOrigin x)) ~~ 0 ifTrue:[
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2415
                        self shiftLayout:v left:delta right:delta
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2416
                    ]
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2417
                ]
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2418
            ] ifFalse:[
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2419
                self transaction:#alignLeft selectionDo:[:v|
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2420
                    self shiftLayout:v left:dominantLeft negated right:dominantLeft negated
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2421
                ].
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2422
            ]
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2423
        ].
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2424
        self layoutChanged
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2425
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2426
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2427
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2428
alignSelectionLeftAndRight
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2429
    "align selection to the left/right of the first object in the selection; in case
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2430
     of one selection the object is aligned to the left/right of its superview
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2431
    "
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2432
    |lmost rmost sel|
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2433
2481
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2434
    (sel := self resizableSelection) notNil ifTrue:[
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2435
        self withSelectionHiddenDo:[
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2436
            self numberOfSelections > 1 ifTrue:[
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2437
                lmost := (sel first) computeOrigin x.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2438
                rmost := (sel first) computeCorner x.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2439
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2440
                self transaction:#alignLeftRight selectionDo:[:aView|
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2441
                    |layout|
2481
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2442
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2443
                    aView superView isLayoutWrapper ifTrue:[
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2444
                        "change size only"
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2445
                        self createUndoLayout:aView.
2481
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2446
                        aView width:sel first width.
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2447
                        self elementChangedSize:aView
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2448
                    ] ifFalse:[
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2449
                        layout := self class asLayoutFrameFromView:aView.
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2450
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2451
                        layout notNil ifTrue:[
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2452
                            self createUndoLayout:aView.
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2453
                            aView geometryLayout:layout.
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2454
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2455
                            undoHistory withoutTransactionDo:[
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2456
                                self shiftLayout:aView left:(lmost - (aView computeOrigin x))
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2457
                                                      right:(rmost - (aView computeCorner x)).
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2458
                            ].
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2459
                            self elementChangedSize:aView
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2460
                        ].
2481
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2461
                    ].
1581
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2462
                ]
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2463
            ] ifFalse:[
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2464
                self extentToFrame:#LeftRight do:[:aLayout|
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2465
                    aLayout leftFraction:0.0 offset:0.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2466
                    aLayout rightFraction:1.0 offset:0.
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2467
                ]
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2468
            ]
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2469
        ].
d7afe06ebbae *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1577
diff changeset
  2470
        self layoutChanged
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2471
    ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2472
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2473
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2474
alignSelectionRight
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2475
    "align selection to the right of the first object in the selection; in case
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2476
     of one selection the object is aligned to the right of its superview
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2477
    "
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2478
    |dominantRight delta sel|
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2479
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2480
    (sel := self moveableSelection) notNil ifTrue:[
2364
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2481
        self withSelectionHiddenDo:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2482
            dominantRight := (sel first) computeCorner x.
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2483
            self numberOfSelections > 1 ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2484
                self transaction:#alignRight selectionDo:[:v|
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2485
                    (delta := dominantRight - (v computeCorner x)) ~~ 0 ifTrue:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2486
                        self shiftLayout:v left:delta right:delta
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2487
                    ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2488
                ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2489
            ] ifFalse:[
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2490
                self transaction:#alignRight selectionDo:[:v|
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2491
                    delta := v superView width - dominantRight.
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2492
                    self shiftLayout:v left:delta right:delta
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2493
                ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2494
"/                self extentToFrame:#Right do:[:aLayout|
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2495
"/                    aLayout rightOffset:0.
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2496
"/                    aLayout rightFraction:1.0.
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2497
"/                ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2498
            ]
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2499
        ].
121c79884983 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2356
diff changeset
  2500
        self layoutChanged
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2501
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2502
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2503
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2504
alignSelectionTop
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2505
    "align selection to the top of the first object in the selection; in case
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2506
     of one selection the object is aligned to the top of its superview
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2507
    "
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2508
    |tmost delta sel|
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2509
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2510
    (sel := self moveableSelection) notNil ifTrue:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2511
	self withSelectionHiddenDo:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2512
	    self numberOfSelections > 1 ifTrue:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2513
		tmost := (sel first) computeOrigin y.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2514
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2515
		self transaction:#alignTop selectionDo:[:v|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2516
		    (delta := tmost - (v computeOrigin y)) ~~ 0 ifTrue:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2517
			self shiftLayout:v top:delta bottom:delta
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2518
		    ]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2519
		]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2520
	    ] ifFalse:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2521
		self extentToFrame:#Top do:[:aLayout|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2522
		    aLayout topOffset:0.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2523
		    aLayout topFraction:0.0.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2524
		]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2525
	    ]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2526
	].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2527
	self layoutChanged
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2528
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2529
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2530
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2531
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2532
alignSelectionTopAndBottom
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2533
    "align selection to the top/bottom of the first object in the selection; in case
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2534
     of one selection the object is aligned to the top/bottom of its superview
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2535
    "
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2536
    |tmost bmost sel|
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2537
2481
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2538
    (sel := self resizableSelection) notNil ifTrue:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2539
        self withSelectionHiddenDo:[
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2540
            self numberOfSelections > 1 ifTrue:[
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2541
                tmost := (sel first) computeOrigin y.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2542
                bmost := (sel first) computeCorner y.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2543
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2544
                self transaction:#alignTopBottom selectionDo:[:aView|
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2545
                    |layout|
2481
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2546
                    aView superView isLayoutWrapper ifTrue:[
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2547
                        "change size only"
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2548
                        self createUndoLayout:aView.
2481
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2549
                        aView height:sel first height.
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2550
                        self elementChangedSize:aView
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2551
                    ] ifFalse:[
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2552
                        layout := self class asLayoutFrameFromView:aView.
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2553
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2554
                        layout notNil ifTrue:[
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2555
                            self createUndoLayout:aView.
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2556
                            aView geometryLayout:layout.
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2557
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2558
                            undoHistory withoutTransactionDo:[
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2559
                                self shiftLayout:aView top:(tmost - (aView computeOrigin y))
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2560
                                                    bottom:(bmost - (aView computeCorner y)).
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2561
                            ].
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2562
                            self elementChangedSize:aView
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2563
                        ].
2481
b8999543e2b4 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2422
diff changeset
  2564
                    ].
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2565
                ]
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2566
            ] ifFalse:[
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2567
                self extentToFrame:#TopBottom do:[:aLayout|
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2568
                    aLayout topOffset:0.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2569
                    aLayout topFraction:0.0.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2570
                    aLayout bottomOffset:0.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2571
                    aLayout bottomFraction:1.0.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2572
                ]
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2573
            ]
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2574
        ].
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2575
        self layoutChanged
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2576
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2577
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2578
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2579
centerSelection:aOneArgBlockXorY orientation:orientation
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2580
    "center selection horizontal or vertical dependant on the block result( x or y).
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2581
     The argument to the block is the point.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2582
    "
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2583
    |superview min max delta val|
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2584
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2585
    (self moveableSelection) isNil ifTrue:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2586
	^ self
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2587
    ].
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2588
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2589
    self withSelectionHiddenDo:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2590
	max := 0.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2591
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2592
	self selectionDo:[:aView |
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2593
	    superview isNil ifTrue:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2594
		superview := self findContainerOfView:aView
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2595
	    ] ifFalse:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2596
		(self findContainerOfView:aView) == superview ifFalse:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2597
		    ^ self notify:'views must have same superview'.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2598
		]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2599
	    ].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2600
	    val := aOneArgBlockXorY value:(aView computeOrigin).    
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2601
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2602
	    min isNil ifTrue:[min := val]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2603
		     ifFalse:[min := min min:val].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2604
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2605
	    val := aOneArgBlockXorY value:(aView computeCorner).
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2606
	    max := max max:val.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2607
	].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2608
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2609
	val := aOneArgBlockXorY value:(superview computeExtent).
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2610
	max := (min + val - max) // 2.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2611
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2612
	max == min ifFalse:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2613
	    |type|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2614
	    (orientation == #y) ifTrue:[type := #centerVertical]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2615
			       ifFalse:[type := #centerHorizontal].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2616
	    delta := max - min.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2617
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2618
	    self transaction:type selectionDo:[:v|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2619
		orientation == #y ifTrue:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2620
		    self shiftLayout:v top:delta bottom:delta
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2621
		] ifFalse:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2622
		    self shiftLayout:v left:delta right:delta
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2623
		]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2624
	    ]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2625
	].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2626
	self layoutChanged
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2627
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2628
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2629
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2630
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2631
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2632
centerSelectionHor
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2633
    "center selection horizontal
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2634
    "
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2635
    self centerSelection:[:aPoint| aPoint x] orientation:#x
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2636
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2637
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2638
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2639
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2640
centerSelectionVer
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2641
    "center selection vertical
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2642
    "
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2643
    self centerSelection:[:aPoint| aPoint y] orientation:#y
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2644
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2645
72
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2646
extentToFrame:toWhat do:aBlock
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2647
    "align to frame (Left Right ...) and perform the block on a frameLayout
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2648
    "
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2649
    |layout type|
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2650
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2651
    type := ('extent', toWhat asString) asSymbol.
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2652
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2653
    self transaction:type selectionDo:[:aView|
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2654
	layout := self class asLayoutFrameFromView:aView.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2655
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2656
	layout notNil ifTrue:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2657
	    self createUndoLayout:aView.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2658
	    aBlock value:layout.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2659
	    aView geometryLayout:layout.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2660
	    self elementChangedSize:aView.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2661
	]
72
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2662
    ]
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2663
!
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2664
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2665
spreadSelectionHor
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2666
    "spread multiple selection horizontal
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2667
    "
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2668
    |sumWidths min max viewsInOrder topsInOrder count space sel|
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2669
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2670
    sel := self moveableSelection.
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2671
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2672
    (sel notNil and:[self numberOfSelections > 1]) ifFalse:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2673
	^ self
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2674
    ].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2675
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2676
    self withSelectionHiddenDo:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2677
	count := 0.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2678
	sumWidths := 0.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2679
	max := 0.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2680
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2681
	self selectionDo:[:aView |
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2682
	    sumWidths := sumWidths + aView width.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2683
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2684
	    min isNil ifTrue:[min := aView left]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2685
		     ifFalse:[min := min min:(aView left)].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2686
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2687
	    max := max max:(aView right).
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2688
	    count := count + 1
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2689
	].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2690
	viewsInOrder := Array withAll:sel.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2691
	topsInOrder  := viewsInOrder collect:[:aView | aView left].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2692
	topsInOrder sortWith:viewsInOrder.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2693
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2694
	space := (((max - min) - sumWidths) / (count - 1)) rounded asInteger.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2695
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2696
	self transaction:#spreadHorizontal objects:viewsInOrder do:[:aView|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2697
	    |delta|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2698
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2699
	    delta := min - aView computeOrigin x.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2700
	    self shiftLayout:aView left:delta right:delta.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2701
	    min := min + aView computeExtent x + space
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2702
	]
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2703
    ].
225
a40d26ed5e74 change selection behavior caused by new tree view
ca
parents: 208
diff changeset
  2704
    self layoutChanged
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2705
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2706
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2707
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2708
spreadSelectionVer
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2709
    "spread multiple selection vertical
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2710
    "
128
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2711
    |sumHeights min max viewsInOrder topsInOrder count space sel|
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2712
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2713
    sel := self moveableSelection.
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2714
9779b7459a1c selection and update from selection
ca
parents: 123
diff changeset
  2715
    (sel notNil and:[self numberOfSelections > 1]) ifFalse:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2716
	^ self
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2717
    ].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2718
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2719
    self withSelectionHiddenDo:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2720
	count := 0.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2721
	sumHeights := 0.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2722
	max := 0.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2723
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2724
	self selectionDo:[:aView |
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2725
	    sumHeights := sumHeights + aView height.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2726
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2727
	    min isNil ifTrue:[min := aView top]
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2728
		     ifFalse:[min := min min:(aView top)].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2729
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2730
	    max   := max max:(aView bottom).
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2731
	    count := count + 1
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2732
	].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2733
	viewsInOrder := Array withAll:sel.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2734
	topsInOrder  := viewsInOrder collect:[:aView|aView top].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2735
	topsInOrder sortWith:viewsInOrder.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2736
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2737
	space := (((max - min) - sumHeights) / (count - 1)) rounded asInteger.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2738
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2739
	self transaction:#spreadVertical objects:viewsInOrder do:[:aView|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2740
	    |delta|
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2741
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2742
	    delta := min - aView computeOrigin y.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2743
	    self shiftLayout:aView top:delta bottom:delta.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2744
	    min := min + aView height + space
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2745
	]
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2746
    ].
225
a40d26ed5e74 change selection behavior caused by new tree view
ca
parents: 208
diff changeset
  2747
    self layoutChanged
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2748
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2749
1715
9eebdb3802aa method category rename
Claus Gittinger <cg@exept.de>
parents: 1714
diff changeset
  2750
!UIObjectView methodsFor:'user actions-undo history'!
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2751
72
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2752
enableUndoHistory:aState
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2753
    "enable or disable undo history"
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2754
72
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2755
    undoHistory enabled:aState
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2756
!
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2757
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2758
openUndoMenu
149
e652608690b1 help ...
ca
parents: 145
diff changeset
  2759
    self select:nil.
138
ca
parents: 134
diff changeset
  2760
    undoHistory openUndoMenu
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2761
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2762
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2763
removeUndoHistory
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2764
    "delete total undo history"
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2765
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2766
    undoHistory initializeFor:self.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2767
    self undoHistoryChanged
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2768
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2769
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2770
undoLast
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2771
    "undo last action"
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2772
138
ca
parents: 134
diff changeset
  2773
    |newSel oldSel|
ca
parents: 134
diff changeset
  2774
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2775
    undoHistory notEmpty ifTrue:[
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2776
        self hasSelection ifTrue:[
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2777
            oldSel := OrderedCollection new.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2778
            newSel := OrderedCollection new.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2779
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2780
            self selectionDo:[:aView||p|
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2781
                (p := self propertyOfView:aView) notNil ifTrue:[
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2782
                    oldSel add:(p identifier)
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2783
                ]
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2784
            ].
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2785
            self setSelection:nil withRedraw:true.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2786
        ].
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2787
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2788
        self withSelectionHiddenDo:[undoHistory undoLast:1].
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2789
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2790
        oldSel notNil ifTrue:[
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2791
            oldSel do:[:id||v|
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2792
                (v := self findViewWithId:id) notNil ifTrue:[newSel add:v]
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2793
            ].
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2794
            self select:newSel.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2795
        ].
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2796
        self undoHistoryChanged.
61
85ef247db6b1 so far so good ...
ca
parents: 60
diff changeset
  2797
    ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2798
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2799
1672
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2800
!UIObjectView::PostEventHandler methodsFor:'event handling'!
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2801
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2802
processEvent:anEvent
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2803
    |evView|
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2804
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2805
    anEvent isDamage ifTrue:[
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2806
        onView testMode ifFalse:[
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2807
            evView := anEvent view.
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2808
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2809
            (onView isSelected:evView) ifTrue:[
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2810
                onView showSelected:evView.
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2811
            ]
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2812
        ]
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2813
    ].
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2814
    ^ false
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2815
! !
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2816
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2817
!UIObjectView::PostEventHandler methodsFor:'instance creation'!
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2818
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2819
onView:aView
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2820
    onView := aView.
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2821
! !
5e89f5959780 no longer use InputView
ca
parents: 1581
diff changeset
  2822
1437
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2823
!UIObjectView::ResizeData methodsFor:'accessing'!
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2824
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  2825
checkForChangeSelector
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  2826
    ^ checkForChangeSelector
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  2827
!
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  2828
1437
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2829
delta
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2830
    ^ delta
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2831
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2832
    "Created: / 2.2.1998 / 13:40:32 / cg"
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2833
!
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2834
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2835
object
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2836
    ^ object
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2837
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2838
    "Created: / 2.2.1998 / 13:40:24 / cg"
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2839
!
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2840
2536
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  2841
object:anObject selector:selectorArg checkForChangeSelector:checkForChangeSelectorArg delta:anInteger
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  2842
    object := anObject.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  2843
    selector := selectorArg.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  2844
    checkForChangeSelector := checkForChangeSelectorArg.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  2845
    delta := anInteger.
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  2846
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  2847
    "Created: / 2.2.1998 / 13:39:22 / cg"
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  2848
!
408cba0cbef4 many redraw changes to avoid flicker when resizing or moving
Claus Gittinger <cg@exept.de>
parents: 2535
diff changeset
  2849
1437
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2850
object:anObject selector:aSymbol delta:anInteger
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2851
    object := anObject.
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2852
    selector := aSymbol.
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2853
    delta := anInteger.
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2854
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2855
    "Created: / 2.2.1998 / 13:39:22 / cg"
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2856
!
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2857
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2858
selector
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2859
    ^ selector
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2860
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2861
    "Created: / 2.2.1998 / 13:40:42 / cg"
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2862
! !
daaf701ab6a2 *** empty log message ***
ca
parents: 1427
diff changeset
  2863
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2864
!UIObjectView::UndoHistory class methodsFor:'constants'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2865
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2866
maxHistorySize
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2867
    "returns maximum size of history before removing oldest
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2868
     record
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2869
    "
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2870
    ^ 100
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2871
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2872
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2873
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2874
131
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2875
!UIObjectView::UndoHistory class methodsFor:'documentation'!
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2876
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2877
documentation
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2878
"
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2879
    undo history used by the UIPainter-Tool; to each operation, an undo block
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2880
    and some text is stored. In case of a required undo, the corresponding
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2881
    undo block will be performed.
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2882
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2883
    [see also:]
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2884
	UIObjectView
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2885
	UIPainterView
156
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
  2886
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
  2887
    [author:]
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  2888
	Claus Atzkern
131
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2889
"
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2890
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2891
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2892
! !
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  2893
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2894
!UIObjectView::UndoHistory class methodsFor:'instance creation'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2895
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2896
on:aPainter
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2897
    |history|
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2898
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2899
    history := self new.
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2900
    history initializeFor:aPainter.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2901
    ^ history
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2902
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2903
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2904
!UIObjectView::UndoHistory methodsFor:'accessing'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2905
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2906
addUndoSelector:aSelector withArgs:anArray
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2907
    "add a selector with arguments to the current opened transaction; in case that no
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2908
     transaction is opened or disabled the block will not be kept in the history."
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2909
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2910
    self isTransactionOpen ifTrue:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2911
        transaction add:(Association key:aSelector value:anArray)
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2912
    ]
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2913
! !
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2914
1399
a0687f5e1f54 category changes
Claus Gittinger <cg@exept.de>
parents: 1350
diff changeset
  2915
!UIObjectView::UndoHistory methodsFor:'accessing-behavior'!
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2916
72
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2917
enabled
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2918
    ^ enabled
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2919
!
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2920
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2921
enabled:aState
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2922
    enabled := aState
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2923
!
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2924
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2925
resetModification
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
  2926
    "set the modification state to false"
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2927
1342
75be821d97c3 fixed resetModified
Claus Gittinger <cg@exept.de>
parents: 1230
diff changeset
  2928
"/    startIdentifier := identifier
75be821d97c3 fixed resetModified
Claus Gittinger <cg@exept.de>
parents: 1230
diff changeset
  2929
75be821d97c3 fixed resetModified
Claus Gittinger <cg@exept.de>
parents: 1230
diff changeset
  2930
    identifier := startIdentifier := 0.
75be821d97c3 fixed resetModified
Claus Gittinger <cg@exept.de>
parents: 1230
diff changeset
  2931
    history    := OrderedCollection new.
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2932
! !
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2933
1721
9c2fba503547 method category rename
Claus Gittinger <cg@exept.de>
parents: 1717
diff changeset
  2934
!UIObjectView::UndoHistory methodsFor:'activation & deactivation'!
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2935
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2936
withinTransaction:aType text:aTextOrNil do:aBlock
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
  2937
    "open a transaction; perform the block; finally close the transaction"
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2938
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2939
    (enabled and:[transaction isNil]) ifTrue:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2940
        transaction := Transaction type:aType text:aTextOrNil.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2941
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2942
        aBlock value.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2943
2041
80ddafc474fb isEmpty ifFalse -> notEmpty
Claus Gittinger <cg@exept.de>
parents: 1964
diff changeset
  2944
        transaction notEmpty ifTrue:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2945
            identifier := identifier + 1.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2946
            transaction identifier:identifier.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2947
            history addLast:transaction.
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
  2948
            history size > (self class maxHistorySize) ifTrue:[history removeFirst].
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2949
        ].
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2950
        transaction := nil
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2951
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2952
    ] ifFalse:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2953
        aBlock value
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2954
    ]
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2955
!
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2956
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2957
withoutTransactionDo:aNoArgBlock
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2958
    "evaluate the block without opening a transaction or keeping changes
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2959
     within a still opened transaction"
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2960
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2961
    |oldState|
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2962
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2963
    oldState := enabled.
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2964
    enabled  := false.
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2965
    aNoArgBlock value.
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2966
    enabled  := oldState.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2967
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2968
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2969
!UIObjectView::UndoHistory methodsFor:'initialization'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2970
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2971
initializeFor:aPainter
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2972
    "setup for a painter and delete all existing history records"
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2973
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2974
    identifier      := 0.
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2975
    startIdentifier := 0.
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2976
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  2977
    painter     := aPainter.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2978
    history     := OrderedCollection new.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2979
    transaction := nil.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2980
    enabled     := true.
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2981
!
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2982
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2983
on:aPainter
3019
8f9d189e1c21 class: UIObjectView
Claus Gittinger <cg@exept.de>
parents: 3015
diff changeset
  2984
    self breakPoint:#ca.
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  2985
    self initializeFor:aPainter
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2986
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2987
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2988
!UIObjectView::UndoHistory methodsFor:'menu'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2989
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2990
openUndoMenu
72
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  2991
    |list tabs top slv hzp inset selection okButton|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2992
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2993
    history isEmpty ifTrue:[
2349
6fdcf778c5ab preferredX
Claus Gittinger <cg@exept.de>
parents: 2267
diff changeset
  2994
        ^ self
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2995
    ].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2996
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2997
    top  := StandardSystemView new label:'undo history'; extent:250@350.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2998
    slv  := ScrollableView for:SelectionInListView origin:0.0@0.0 corner:1.0@1.0 in:top.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2999
    hzp  := HorizontalPanelView origin:0.0@1.0 corner:1.0@1.0 in:top.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3000
    hzp horizontalLayout:#fitSpace.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3001
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3002
    (Button abortButtonIn:hzp) action:[ selection := nil. top destroy ].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3003
    okButton := Button okButtonIn:hzp.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3004
    okButton label:'undo to end'.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3005
    okButton action:[ top destroy ].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3006
2349
6fdcf778c5ab preferredX
Claus Gittinger <cg@exept.de>
parents: 2267
diff changeset
  3007
    inset := hzp preferredHeight.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3008
    hzp topInset:(inset negated).
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3009
    slv   bottomInset:inset.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3010
    slv := slv scrolledView.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3011
72
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3012
    tabs := TabulatorSpecification new.
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3013
    tabs unit:#cm.
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3014
    tabs positions:#(0 5).
208
d6107fdfe5ce *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 194
diff changeset
  3015
    tabs align:#(#left #left).
72
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3016
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3017
    list := history collect:[:aTrans||e|
2349
6fdcf778c5ab preferredX
Claus Gittinger <cg@exept.de>
parents: 2267
diff changeset
  3018
        e := MultiColListEntry new.
6fdcf778c5ab preferredX
Claus Gittinger <cg@exept.de>
parents: 2267
diff changeset
  3019
        e colAt:1 put:(aTrans typeAsString).
6fdcf778c5ab preferredX
Claus Gittinger <cg@exept.de>
parents: 2267
diff changeset
  3020
        e colAt:2 put:(aTrans text ? '').
6fdcf778c5ab preferredX
Claus Gittinger <cg@exept.de>
parents: 2267
diff changeset
  3021
        e tabulatorSpecification:tabs.
6fdcf778c5ab preferredX
Claus Gittinger <cg@exept.de>
parents: 2267
diff changeset
  3022
        e
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3023
    ].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3024
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3025
    slv list:list.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3026
    slv action:[:index | selection := index ].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3027
    top openModal.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3028
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3029
    selection notNil ifTrue:[
2349
6fdcf778c5ab preferredX
Claus Gittinger <cg@exept.de>
parents: 2267
diff changeset
  3030
        self undoLast:(history size - selection + 1).
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3031
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3032
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3033
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3034
!UIObjectView::UndoHistory methodsFor:'testing'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3035
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3036
isEmpty
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
  3037
    "returns true if the undo history is empty"
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3038
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3039
    ^ history isEmpty
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3040
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3041
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3042
isModified
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
  3043
    "returns true if the history is modified"
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3044
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3045
    self isEmpty ifTrue:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3046
        ^ false
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3047
    ].
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3048
    ^ history last identifier ~~ startIdentifier
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3049
!
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3050
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3051
isTransactionOpen
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3052
    ^ (enabled and:[transaction notNil])
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3053
!
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3054
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3055
notEmpty
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
  3056
    "returns true if the undo history is not empty"
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3057
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3058
    ^ history notEmpty
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3059
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3060
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3061
!UIObjectView::UndoHistory methodsFor:'undo'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3062
1521
2efd2b9419c4 undo: show type of undo in menu;
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  3063
labelOfLastUndo
2efd2b9419c4 undo: show type of undo in menu;
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  3064
    "return astring describing the last undo-action (for the menu)"
2efd2b9419c4 undo: show type of undo in menu;
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  3065
2efd2b9419c4 undo: show type of undo in menu;
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  3066
    history size = 0 ifTrue:[^ '* nothing to undo *'].
2efd2b9419c4 undo: show type of undo in menu;
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  3067
    ^ history last "actions" type
2efd2b9419c4 undo: show type of undo in menu;
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  3068
2efd2b9419c4 undo: show type of undo in menu;
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  3069
    "Created: / 30.10.2001 / 13:45:28 / cg"
2efd2b9419c4 undo: show type of undo in menu;
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  3070
    "Modified: / 30.10.2001 / 13:46:33 / cg"
2efd2b9419c4 undo: show type of undo in menu;
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  3071
!
2efd2b9419c4 undo: show type of undo in menu;
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  3072
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3073
undoLast:nTransactions
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
  3074
    "undo the last n transactions; an open transaction will be closed;
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3075
     transactions during undo are disabled"
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3076
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3077
    |repeatTimes transaction actions|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3078
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3079
    transaction := nil.
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3080
    enabled     := false.
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3081
    repeatTimes := nTransactions min:(history size).
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3082
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3083
    repeatTimes timesRepeat:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3084
        transaction := history removeLast.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3085
        actions     := transaction actions.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3086
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3087
        actions isCollection ifTrue:[
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3088
            actions reverseDo:[:aBlock|
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3089
                painter perform:(aBlock key) with:(aBlock value)
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3090
            ]
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3091
        ] ifFalse:[
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3092
            painter perform:(actions key) with:(actions value)
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1918
diff changeset
  3093
        ]
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3094
    ].
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3095
    enabled := true.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3096
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3097
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3098
!UIObjectView::UndoHistory::Transaction class methodsFor:'documentation'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3099
131
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  3100
documentation
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  3101
"
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  3102
    represents one undo record, keeping the associated type and printable text
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  3103
    and the undo action performed on an undo request
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  3104
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  3105
    [see also:]
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3106
	UndoHistory
156
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
  3107
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
  3108
    [author:]
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3109
	Claus Atzkern
131
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  3110
"
715b3dbba87d selection handling changed
ca
parents: 128
diff changeset
  3111
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3112
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3113
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3114
!UIObjectView::UndoHistory::Transaction class methodsFor:'instance creation'!
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3115
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3116
type:aType text:aTextOrNil
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3117
    ^ self new type:aType text:aTextOrNil
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3118
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3119
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3120
! !
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3121
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3122
!UIObjectView::UndoHistory::Transaction methodsFor:'accessing'!
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3123
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3124
actions
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3125
    "returns actions associated with transaction
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3126
    "
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3127
  ^ actions
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3128
!
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3129
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3130
identifier
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3131
    "gets my identifier
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3132
    "
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3133
  ^ identifier
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3134
!
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3135
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3136
identifier:anIdentifier
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3137
    "sets my identifier
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3138
    "
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3139
    identifier := anIdentifier
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3140
!
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3141
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3142
text
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3143
    "returns text or nil assigned to transaction
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3144
    "
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3145
    ^ text
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3146
!
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3147
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3148
type
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3149
    "returns type assigned to transaction
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3150
    "
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3151
    ^ type
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3152
!
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3153
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3154
type:aType
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3155
    "change type assigned to transaction
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3156
    "
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3157
    type := aType
72
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3158
!
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3159
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3160
typeAsString
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3161
    "returns type as printable string
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3162
    "
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3163
    |line name size sep|
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3164
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3165
    line := type asString.
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3166
    size := 0.
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3167
    line do:[:c| (c isUppercase) ifTrue:[size := size+1] ].
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3168
    name := String new:(line size + size).
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3169
    size := 1.
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3170
    sep  := Character space.
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3171
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3172
    line do:[:c|
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3173
	(c isUppercase) ifFalse:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3174
	    name at:size put:c
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3175
	] ifTrue:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3176
	    name at:size put:sep.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3177
	    sep  := $&.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3178
	    size := size + 1.
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3179
	    name at:size put:(c asLowercase)
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3180
	].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3181
	size := size + 1
72
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3182
    ].
a5a7054e2b7d *** empty log message ***
ca
parents: 68
diff changeset
  3183
    ^ name
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3184
! !
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3185
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3186
!UIObjectView::UndoHistory::Transaction methodsFor:'adding'!
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3187
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3188
add:anUndoBlock
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3189
    "add an undo action to the current transaction
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3190
    "
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3191
    actions isNil ifTrue:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3192
	actions := anUndoBlock
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3193
    ] ifFalse:[
1120
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3194
	actions isCollection ifFalse:[
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3195
	    actions := OrderedCollection with:actions
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3196
	].
230fe13c4e51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1112
diff changeset
  3197
	actions add:anUndoBlock.
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3198
    ]
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3199
! !
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3200
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3201
!UIObjectView::UndoHistory::Transaction methodsFor:'initialization'!
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3202
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3203
type:aType text:aTextOrNil
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 132
diff changeset
  3204
    "initialize transaction
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3205
    "
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3206
    type := aType.
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3207
    text := aTextOrNil.
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3208
! !
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3209
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3210
!UIObjectView::UndoHistory::Transaction methodsFor:'testing'!
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3211
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3212
isEmpty
2041
80ddafc474fb isEmpty ifFalse -> notEmpty
Claus Gittinger <cg@exept.de>
parents: 1964
diff changeset
  3213
    "returns true if no undo action is registered"
80ddafc474fb isEmpty ifFalse -> notEmpty
Claus Gittinger <cg@exept.de>
parents: 1964
diff changeset
  3214
54
d0b5a33e6df0 *** empty log message ***
ca
parents: 52
diff changeset
  3215
    ^ actions isNil
2041
80ddafc474fb isEmpty ifFalse -> notEmpty
Claus Gittinger <cg@exept.de>
parents: 1964
diff changeset
  3216
!
80ddafc474fb isEmpty ifFalse -> notEmpty
Claus Gittinger <cg@exept.de>
parents: 1964
diff changeset
  3217
80ddafc474fb isEmpty ifFalse -> notEmpty
Claus Gittinger <cg@exept.de>
parents: 1964
diff changeset
  3218
notEmpty
80ddafc474fb isEmpty ifFalse -> notEmpty
Claus Gittinger <cg@exept.de>
parents: 1964
diff changeset
  3219
    "returns true if no undo action is registered"
80ddafc474fb isEmpty ifFalse -> notEmpty
Claus Gittinger <cg@exept.de>
parents: 1964
diff changeset
  3220
80ddafc474fb isEmpty ifFalse -> notEmpty
Claus Gittinger <cg@exept.de>
parents: 1964
diff changeset
  3221
    ^ actions notNil
47
5e4319953a0b *** empty log message ***
ca
parents: 44
diff changeset
  3222
! !
5e4319953a0b *** empty log message ***
ca
parents: 44
diff changeset
  3223
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3224
!UIObjectView class methodsFor:'documentation'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3225
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3226
version
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3227
    ^ '$Header$'
2688
98d48fa622b4 comment/format in: #recursiveRepair:startIn:
Claus Gittinger <cg@exept.de>
parents: 2555
diff changeset
  3228
!
98d48fa622b4 comment/format in: #recursiveRepair:startIn:
Claus Gittinger <cg@exept.de>
parents: 2555
diff changeset
  3229
98d48fa622b4 comment/format in: #recursiveRepair:startIn:
Claus Gittinger <cg@exept.de>
parents: 2555
diff changeset
  3230
version_CVS
98d48fa622b4 comment/format in: #recursiveRepair:startIn:
Claus Gittinger <cg@exept.de>
parents: 2555
diff changeset
  3231
    ^ '$Header$'
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3232
! !
3011
ceaec66469ff class: UIObjectView
Claus Gittinger <cg@exept.de>
parents: 2849
diff changeset
  3233