UIPainterView.st
author Claus Gittinger <cg@exept.de>
Sun, 01 Feb 2015 14:16:33 +0100
changeset 3178 58100b56595d
parent 3136 146b6f9e139c
child 3223 38d493fcc782
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:
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
     1
"
156
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 154
diff changeset
     2
 COPYRIGHT (c) 1995 by Claus Gittinger / eXept Software AG
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
     3
	      All Rights Reserved
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
     4
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
     5
 This software is furnished under a license and may be used
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
     6
 only in accordance with the terms of that license and with the
742
688fd0a0b0fd code generation comment
tz
parents: 723
diff changeset
     7
 inclusion of the above copyright notice. This software may not
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
     8
 be provided or otherwise made available to, or used by, any
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
     9
 other person.  No title to or ownership of the software is
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    10
 hereby transferred.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    11
"
1387
65c9df9cb1ad change selection behaviour after delete
ca
parents: 1366
diff changeset
    12
"{ Package: 'stx:libtool2' }"
65c9df9cb1ad change selection behaviour after delete
ca
parents: 1366
diff changeset
    13
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    14
UIObjectView subclass:#UIPainterView
278
5b7dfe33b497 drag & drop offset
Claus Gittinger <cg@exept.de>
parents: 238
diff changeset
    15
	instanceVariableNames:'treeView listHolder superclassName className methodName
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
    16
		categoryName handleColorBlack handleColorWhite handleMasterColor
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
    17
		sketchPainter listOfAspectsHolder'
3097
766d2055ce4a class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3092
diff changeset
    18
	classVariableNames:'HandCursor RedefineAspectMethods AspectsAsInstances'
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
211
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
    23
Object subclass:#ViewProperty
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
    24
	instanceVariableNames:'view spec identifier'
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
    25
	classVariableNames:'Identifier'
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
    26
	poolDictionaries:''
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
    27
	privateIn:UIPainterView
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
    28
!
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
    29
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    30
!UIPainterView class methodsFor:'documentation'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    31
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    32
copyright
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    33
"
156
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 154
diff changeset
    34
 COPYRIGHT (c) 1995 by Claus Gittinger / eXept Software AG
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
    35
	      All Rights Reserved
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    36
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    37
 This software is furnished under a license and may be used
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    38
 only in accordance with the terms of that license and with the
742
688fd0a0b0fd code generation comment
tz
parents: 723
diff changeset
    39
 inclusion of the above copyright notice. This software may not
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    40
 be provided or otherwise made available to, or used by, any
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    41
 other person.  No title to or ownership of the software is
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    42
 hereby transferred.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    43
"
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    44
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    45
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    46
documentation
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    47
"
128
9779b7459a1c selection and update from selection
ca
parents: 121
diff changeset
    48
    buildIn view used by the UIPainter; from this view, the layout of the
9779b7459a1c selection and update from selection
ca
parents: 121
diff changeset
    49
    new application derives from.
9779b7459a1c selection and update from selection
ca
parents: 121
diff changeset
    50
9779b7459a1c selection and update from selection
ca
parents: 121
diff changeset
    51
    [see also:]
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
    52
	UIBuilder
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
    53
	UIObjectView
156
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 154
diff changeset
    54
b332d7117c40 added copyrights
Claus Gittinger <cg@exept.de>
parents: 154
diff changeset
    55
    [author:]
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
    56
	Claus Gittinger
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
    57
	Claus Atzkern
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    58
"
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    59
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
    60
1225
0aa39cc5f0a3 Initialize class vars.
Stefan Vogel <sv@exept.de>
parents: 1201
diff changeset
    61
!UIPainterView class methodsFor:'initialization'!
0aa39cc5f0a3 Initialize class vars.
Stefan Vogel <sv@exept.de>
parents: 1201
diff changeset
    62
0aa39cc5f0a3 Initialize class vars.
Stefan Vogel <sv@exept.de>
parents: 1201
diff changeset
    63
initialize
0aa39cc5f0a3 Initialize class vars.
Stefan Vogel <sv@exept.de>
parents: 1201
diff changeset
    64
1494
115ae5972b27 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1474
diff changeset
    65
    AspectsAsInstances := true. "/ false.
1225
0aa39cc5f0a3 Initialize class vars.
Stefan Vogel <sv@exept.de>
parents: 1201
diff changeset
    66
    RedefineAspectMethods := false.
0aa39cc5f0a3 Initialize class vars.
Stefan Vogel <sv@exept.de>
parents: 1201
diff changeset
    67
0aa39cc5f0a3 Initialize class vars.
Stefan Vogel <sv@exept.de>
parents: 1201
diff changeset
    68
    "Created: / 22.9.1999 / 12:32:31 / stefan"
0aa39cc5f0a3 Initialize class vars.
Stefan Vogel <sv@exept.de>
parents: 1201
diff changeset
    69
! !
0aa39cc5f0a3 Initialize class vars.
Stefan Vogel <sv@exept.de>
parents: 1201
diff changeset
    70
698
5bf234e0e451 redefine methods flag
tz
parents: 662
diff changeset
    71
!UIPainterView class methodsFor:'code generation mode'!
5bf234e0e451 redefine methods flag
tz
parents: 662
diff changeset
    72
925
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    73
generateAspectsAsInstanceVariables
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    74
    "if on, aspects are held as instance variables;
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
    75
     if off (the default), they are kept in the bindings dictionary."
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
    76
925
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    77
    ^ AspectsAsInstances
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    78
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    79
    "Created: / 29.7.1998 / 11:21:38 / cg"
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    80
    "Modified: / 29.7.1998 / 11:22:01 / cg"
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    81
!
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    82
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    83
generateAspectsAsInstanceVariables:aBoolean
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    84
    "if on, aspects are held as instance variables;
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
    85
     if off (the default), they are kept in the bindings dictionary."
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
    86
925
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    87
    AspectsAsInstances := aBoolean
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    88
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    89
    "Created: / 29.7.1998 / 11:21:26 / cg"
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    90
    "Modified: / 29.7.1998 / 11:22:11 / cg"
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    91
!
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
    92
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
    93
generateCommentedCode
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
    94
    "comments in generated aspect methods; yes or no."
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
    95
2714
abaae556bec8 commentCode flags now in userPrefs
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
    96
    ^ UserPreferences current generateComments
abaae556bec8 commentCode flags now in userPrefs
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
    97
    and:[ UserPreferences current generateCommentsForAspectMethods ]
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
    98
!
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
    99
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   100
generateCommentedCode:aBoolean
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   101
    "comments in generated aspect methods; yes or no."
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   102
2716
ed0006640fb4 changed: #generateCommentedCode:
Claus Gittinger <cg@exept.de>
parents: 2714
diff changeset
   103
    UserPreferences current generateComments ifFalse:[
ed0006640fb4 changed: #generateCommentedCode:
Claus Gittinger <cg@exept.de>
parents: 2714
diff changeset
   104
        aBoolean ifTrue:[
ed0006640fb4 changed: #generateCommentedCode:
Claus Gittinger <cg@exept.de>
parents: 2714
diff changeset
   105
            UserPreferences current generateComments:true
ed0006640fb4 changed: #generateCommentedCode:
Claus Gittinger <cg@exept.de>
parents: 2714
diff changeset
   106
        ].
ed0006640fb4 changed: #generateCommentedCode:
Claus Gittinger <cg@exept.de>
parents: 2714
diff changeset
   107
    ].
ed0006640fb4 changed: #generateCommentedCode:
Claus Gittinger <cg@exept.de>
parents: 2714
diff changeset
   108
2714
abaae556bec8 commentCode flags now in userPrefs
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   109
    UserPreferences current 
2716
ed0006640fb4 changed: #generateCommentedCode:
Claus Gittinger <cg@exept.de>
parents: 2714
diff changeset
   110
        generateCommentsForAspectMethods:aBoolean.
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   111
!
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   112
742
688fd0a0b0fd code generation comment
tz
parents: 723
diff changeset
   113
redefineAspectMethods
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   114
    "redefine methods yes or no. 
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   115
     If a method is defined in super class should the message be reinstalled ?"
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   116
1225
0aa39cc5f0a3 Initialize class vars.
Stefan Vogel <sv@exept.de>
parents: 1201
diff changeset
   117
    ^ RedefineAspectMethods
698
5bf234e0e451 redefine methods flag
tz
parents: 662
diff changeset
   118
1225
0aa39cc5f0a3 Initialize class vars.
Stefan Vogel <sv@exept.de>
parents: 1201
diff changeset
   119
    "Modified: / 22.9.1999 / 12:33:03 / stefan"
698
5bf234e0e451 redefine methods flag
tz
parents: 662
diff changeset
   120
!
5bf234e0e451 redefine methods flag
tz
parents: 662
diff changeset
   121
742
688fd0a0b0fd code generation comment
tz
parents: 723
diff changeset
   122
redefineAspectMethods:aBoolean
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   123
    "redefine methods yes or no.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   124
     If a method is defined in super class should the message be reinstalled ?"
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   125
742
688fd0a0b0fd code generation comment
tz
parents: 723
diff changeset
   126
    RedefineAspectMethods := aBoolean
698
5bf234e0e451 redefine methods flag
tz
parents: 662
diff changeset
   127
! !
5bf234e0e451 redefine methods flag
tz
parents: 662
diff changeset
   128
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   129
!UIPainterView class methodsFor:'defaults'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   130
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   131
defaultMenuMessage
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   132
    "This message is the default yo be sent to the menuHolder to get a menu
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   133
    "
121
96d6feeeb049 middleButtonMen:
ca
parents: 119
diff changeset
   134
    ^ #showMiddleButtonMenu
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   135
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   136
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   137
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   138
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   139
!UIPainterView methodsFor:'accessing'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   140
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   141
application
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   142
    ^ nil
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   143
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   144
    "Modified: 6.9.1995 / 00:46:44 / claus"
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   145
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   146
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   147
applicationName
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   148
    ^ self className
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   149
!
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   150
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   151
applicationName:aName
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   152
    self className:aName
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   153
!
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   154
1977
cf8a54d02ac0 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
   155
class:aClass superclassName:aSuperclassName selector:aSelector
cf8a54d02ac0 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
   156
    self assert:(aClass isBehavior).
cf8a54d02ac0 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
   157
    className      := aClass name.
cf8a54d02ac0 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
   158
    superclassName := aSuperclassName.
cf8a54d02ac0 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
   159
    methodName     := aSelector.
cf8a54d02ac0 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
   160
!
cf8a54d02ac0 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
   161
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   162
className
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   163
    ^ className
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   164
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   165
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   166
className:aName
1977
cf8a54d02ac0 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
   167
    self assert:(aName isString).
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   168
    className := aName
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   169
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   170
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   171
className:aClassName superclassName:aSuperclassName selector:aSelector
1977
cf8a54d02ac0 code cleanup & refactoring
Claus Gittinger <cg@exept.de>
parents: 1959
diff changeset
   172
    self assert:(aClassName isString).
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   173
    className      := aClassName.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   174
    superclassName := aSuperclassName.
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   175
    methodName     := aSelector.
60
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
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
   178
listOfAspectsHolder:something
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
   179
    listOfAspectsHolder := something.
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
   180
!
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
   181
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   182
methodName
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   183
    ^ methodName
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
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   186
methodName:aName
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   187
    methodName := aName
60
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
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   190
selectNames:aStringOrCollection
1031
7ce4b97f2c43 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   191
    |prop coll s n newSel|
7ce4b97f2c43 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   192
7ce4b97f2c43 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   193
    (aStringOrCollection size == 0) ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   194
	newSel := nil.
1031
7ce4b97f2c43 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   195
    ] ifFalse:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   196
	(s := aStringOrCollection) isString ifFalse:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   197
	    s size == 1 ifTrue:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   198
		s := s first
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   199
	    ] ifFalse:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   200
		coll := OrderedCollection new.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   201
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   202
		s do:[:aName|
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   203
		    (prop := self propertyOfName:aName) notNil ifTrue:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   204
			coll add:(prop view)
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   205
		    ]
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   206
		].
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   207
		(n := coll size) == 1 ifTrue:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   208
		    newSel := coll at:1
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   209
		] ifFalse:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   210
		    n == 0 ifTrue:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   211
			newSel := nil
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   212
		    ] ifFalse:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   213
			newSel := coll
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   214
		    ]
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   215
		].
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   216
		^ self select:newSel.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   217
	    ]
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   218
	].
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   219
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   220
	prop := self propertyOfName:s.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   221
	prop isNil ifTrue:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   222
	    newSel := nil
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   223
	] ifFalse:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   224
	    newSel := prop view
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   225
	].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   226
    ].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   227
1031
7ce4b97f2c43 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
   228
    ^ self select:newSel
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   229
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   230
111
ca
parents: 103
diff changeset
   231
!UIPainterView methodsFor:'change & update'!
ca
parents: 103
diff changeset
   232
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   233
layoutChanged
1445
d2654a3b1e3a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1441
diff changeset
   234
    treeView notNil ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   235
	treeView layoutChanged
1445
d2654a3b1e3a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1441
diff changeset
   236
    ]
111
ca
parents: 103
diff changeset
   237
! !
ca
parents: 103
diff changeset
   238
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   239
!UIPainterView methodsFor:'copy & cut & paste'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   240
2221
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   241
changeSelectionAfterPasteOf:sel
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   242
    sel notNil ifTrue:[
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   243
        self select:sel.
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   244
    ].
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   245
!
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   246
1744
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   247
commonContainerOf:someComponents
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   248
    |container|
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   249
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   250
    container := someComponents first container.
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   251
    [container notNil
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   252
     and:[ (someComponents conform:[:eachComponent | eachComponent isComponentOf:container]) not]]
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   253
	whileTrue:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   254
	container := container container.
1744
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   255
    ].
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   256
    ^ container
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   257
!
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   258
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   259
copySelection
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
   260
    "copy the selection into the cut & paste-buffer"
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
   261
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   262
    |specs coll|
71
407d25aca670 checkin from browser
ca
parents: 69
diff changeset
   263
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   264
    coll := self minClosedViewSetFor:(self selection).
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   265
71
407d25aca670 checkin from browser
ca
parents: 69
diff changeset
   266
    coll notNil ifTrue:[
776
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   267
"/        self select:nil.
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   268
        specs := coll collect:[:eachView | self fullSpecWithAbsolutePositionFor:eachView].
1870
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
   269
        self setClipboardObject:specs.
776
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   270
"/        treeView selection: sel
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   271
    ].
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   272
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   273
723
60e8ffac2f38 #deleteSelection in #deleteTotalSelection renamed
tz
parents: 712
diff changeset
   274
deleteSelection
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
   275
    "delete the selection buffered"
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
   276
887
79a6e12e1d0f after deleting a widget do select the neighbour then the parent (step 2)
tz
parents: 886
diff changeset
   277
    self deleteSelectionBuffered: true
79a6e12e1d0f after deleting a widget do select the neighbour then the parent (step 2)
tz
parents: 886
diff changeset
   278
!
79a6e12e1d0f after deleting a widget do select the neighbour then the parent (step 2)
tz
parents: 886
diff changeset
   279
2396
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   280
deleteSelectionBuffered:buffered
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   281
    "cut the selection. If buffered is true, place it into the cut&paste-buffer"
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   282
2396
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   283
    |specs viewsToRemove newSelection firstView|
71
407d25aca670 checkin from browser
ca
parents: 69
diff changeset
   284
1621
112670159075 cg: check if selection change is allowed BEFORE changing the
tm
parents: 1574
diff changeset
   285
    treeView askForSelectionChangeAllowed ifFalse:[^ self].
112670159075 cg: check if selection change is allowed BEFORE changing the
tm
parents: 1574
diff changeset
   286
2396
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   287
    viewsToRemove := self minClosedViewSetFor:(self selection).
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   288
    viewsToRemove isEmptyOrNil ifTrue:[ ^ self].
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   289
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   290
    buffered ifTrue:[
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   291
        specs := viewsToRemove collect:[:aView| self fullSpecWithAbsolutePositionFor:aView ].
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   292
        self setClipboardObject:specs
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   293
    ].
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   294
    firstView    := viewsToRemove first.
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   295
    newSelection := self findContainerOfView:firstView.
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   296
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   297
    newSelection isNil ifTrue:[
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   298
        newSelection := self.
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   299
    ] ifFalse:[
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   300
        viewsToRemove size == 1 ifTrue:[
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   301
            |subviews index|
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   302
2508
d9dc378aaf8d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2505
diff changeset
   303
            "/ newSelection components notEmptyOrNil ifTrue:[ self halt ].
2396
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   304
            subviews := newSelection subViews.
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   305
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   306
            subviews size > 1 ifTrue:[
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   307
                index := subviews findFirst:[:eachView| eachView isSameOrComponentOf:firstView ].
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   308
                index > 0 ifTrue:[
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   309
                    newSelection := subviews
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   310
                            at:(index + 1)
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   311
                            ifAbsent:[subviews at:index -1].
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   312
                ].
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   313
            ].
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   314
        ].
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   315
    ].
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   316
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   317
    self withSelectionHiddenDo:[
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   318
        self select:newSelection.
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   319
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   320
        treeView canvasEventsDisabledDo:[
2396
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   321
            self withinTransaction:#cut objects:viewsToRemove do:[
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   322
                viewsToRemove reverseDo:[:aView|
1870
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
   323
                    self createUndoRemove:aView.
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
   324
                    self remove:aView.
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
   325
                ]
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
   326
            ].
2396
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   327
        ].
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   328
        self windowGroup processRealExposeEvents.
042e31fded4f *** empty log message ***
ca
parents: 2395
diff changeset
   329
    ].
698
5bf234e0e451 redefine methods flag
tz
parents: 662
diff changeset
   330
!
5bf234e0e451 redefine methods flag
tz
parents: 662
diff changeset
   331
723
60e8ffac2f38 #deleteSelection in #deleteTotalSelection renamed
tz
parents: 712
diff changeset
   332
deleteTotalSelection
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
   333
    "delete the selection"
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
   334
887
79a6e12e1d0f after deleting a widget do select the neighbour then the parent (step 2)
tz
parents: 886
diff changeset
   335
    self deleteSelectionBuffered: false
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   336
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   337
1832
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
   338
getSelectedViewsAndSpecs
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
   339
    "return an array filed with selected views and corresponding specs.
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
   340
     Nil if there is none."
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
   341
1832
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
   342
    |specs coll sel|
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
   343
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
   344
    sel := treeView selection.
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
   345
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   346
    coll := self minClosedViewSetFor:(self selection).
1832
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
   347
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
   348
    coll isNil ifTrue:[^ nil].
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
   349
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
   350
    specs := coll collect:[:aView| self fullSpecFor:aView ].
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
   351
    ^ Array with: coll with: specs
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
   352
!
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
   353
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   354
pasteBuffer
2311
67811bdeb0f5 Support sorting of items in tree
Stefan Vogel <sv@exept.de>
parents: 2295
diff changeset
   355
    "add the objects in the paste-buffer to the object view; 
67811bdeb0f5 Support sorting of items in tree
Stefan Vogel <sv@exept.de>
parents: 2295
diff changeset
   356
     don't change the layout if more than a single item has been selected"
67811bdeb0f5 Support sorting of items in tree
Stefan Vogel <sv@exept.de>
parents: 2295
diff changeset
   357
67811bdeb0f5 Support sorting of items in tree
Stefan Vogel <sv@exept.de>
parents: 2295
diff changeset
   358
    |sel clipboard|
67811bdeb0f5 Support sorting of items in tree
Stefan Vogel <sv@exept.de>
parents: 2295
diff changeset
   359
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   360
    self enabled ifFalse:[
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   361
        Dialog warn:'Operation currently disabled (In geometry test mode)'.
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   362
        ^ self
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   363
    ]. 
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   364
2311
67811bdeb0f5 Support sorting of items in tree
Stefan Vogel <sv@exept.de>
parents: 2295
diff changeset
   365
    clipboard := self getClipboardObject.
2951
c2b24bf7b967 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2853
diff changeset
   366
    clipboard isString ifTrue:[
c2b24bf7b967 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2853
diff changeset
   367
        Dialog warn:'can only paste widgets here'.
c2b24bf7b967 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2853
diff changeset
   368
    ] ifFalse:[
c2b24bf7b967 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2853
diff changeset
   369
        sel := self pasteSpecifications:clipboard keepLayout:true "(clipboard size > 1)".
c2b24bf7b967 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2853
diff changeset
   370
        self changeSelectionAfterPasteOf:sel.
c2b24bf7b967 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2853
diff changeset
   371
    ].
89
35c5711729c2 so far so good
ca
parents: 86
diff changeset
   372
!
35c5711729c2 so far so good
ca
parents: 86
diff changeset
   373
1338
3c1a528c50db added paste-keeping-absolute-position function
Claus Gittinger <cg@exept.de>
parents: 1308
diff changeset
   374
pasteKeepingPosition
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   375
    "add the objects in the paste-buffer to the object view;
1338
3c1a528c50db added paste-keeping-absolute-position function
Claus Gittinger <cg@exept.de>
parents: 1308
diff changeset
   376
     translate the layout as appropriate, to position the component
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
   377
     at the same absolute position (relative to topView) as before"
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
   378
1338
3c1a528c50db added paste-keeping-absolute-position function
Claus Gittinger <cg@exept.de>
parents: 1308
diff changeset
   379
    |sel|
3c1a528c50db added paste-keeping-absolute-position function
Claus Gittinger <cg@exept.de>
parents: 1308
diff changeset
   380
3c1a528c50db added paste-keeping-absolute-position function
Claus Gittinger <cg@exept.de>
parents: 1308
diff changeset
   381
    sel := self
1872
ab5cc43b193a get selection interface changed
ca
parents: 1870
diff changeset
   382
        pasteSpecifications:(self getClipboardObject)
ab5cc43b193a get selection interface changed
ca
parents: 1870
diff changeset
   383
        keepLayout:true
ab5cc43b193a get selection interface changed
ca
parents: 1870
diff changeset
   384
        keepPosition:true
3055
db492f86c9b1 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3038
diff changeset
   385
        at:#keep.
1338
3c1a528c50db added paste-keeping-absolute-position function
Claus Gittinger <cg@exept.de>
parents: 1308
diff changeset
   386
2221
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   387
    self changeSelectionAfterPasteOf:sel.
1338
3c1a528c50db added paste-keeping-absolute-position function
Claus Gittinger <cg@exept.de>
parents: 1308
diff changeset
   388
!
3c1a528c50db added paste-keeping-absolute-position function
Claus Gittinger <cg@exept.de>
parents: 1308
diff changeset
   389
2395
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   390
pasteSpecifications:aSpecificationOrList into:aContainerOrNil beforeIndex:anIndexOrNil keepLayout:keepLayout keepPosition:keepPosition at:aPointOrNilOrKeep
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   391
    "add the specs to the object view; 
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   392
     if given a collection of specs, returns a list of pasted widgets;
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   393
     if given a single spec, returns that view (sigh - a stupid bw-compatibility kludge)"
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   394
2494
43400c4e5196 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   395
    |sensor specsToPaste pasteOffset builder newSel 
2560
efad0ef440c7 oops - need repairDamage for shown to be set (under unix; it used to
Michael Beyl <mb@exept.de>
parents: 2537
diff changeset
   396
     bounds containerToPasteInto pastePoint beforeIndex count|
1621
112670159075 cg: check if selection change is allowed BEFORE changing the
tm
parents: 1574
diff changeset
   397
112670159075 cg: check if selection change is allowed BEFORE changing the
tm
parents: 1574
diff changeset
   398
    treeView askForSelectionChangeAllowed ifFalse:[^ nil].
112670159075 cg: check if selection change is allowed BEFORE changing the
tm
parents: 1574
diff changeset
   399
2494
43400c4e5196 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   400
    sensor := self window sensor.
43400c4e5196 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   401
2387
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   402
    containerToPasteInto := aContainerOrNil.
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   403
2366
Claus Gittinger <cg@exept.de>
parents: 2362
diff changeset
   404
    (aPointOrNilOrKeep == #keep
2494
43400c4e5196 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   405
    or:[ sensor shiftDown
43400c4e5196 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   406
    or:[ sensor ctrlDown ]]) ifTrue:[
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   407
        "/ paste into the selection
2387
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   408
        containerToPasteInto isNil ifTrue:[
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   409
            containerToPasteInto := self singleSelection.
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   410
        ].
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   411
    ] ifFalse:[
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   412
        "/ ignore the selection and paste where we drop!!
2366
Claus Gittinger <cg@exept.de>
parents: 2362
diff changeset
   413
        pastePoint := aPointOrNilOrKeep.
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   414
        pastePoint isNil ifTrue:[
3083
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
   415
            pastePoint := self graphicsDevice 
2494
43400c4e5196 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2483
diff changeset
   416
                                translatePoint:(sensor mousePoint)
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   417
                                fromView:nil
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   418
                                toView:self.
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   419
        ].
2387
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   420
        containerToPasteInto isNil ifTrue:[
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   421
            containerToPasteInto := self findObjectAt:pastePoint.
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   422
        ].
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   423
    ].
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   424
1744
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   425
    containerToPasteInto isNil ifTrue:[
1878
6ae0cf83738f Use #setClipboardText: instead of obsolete #setTextSelection:
Stefan Vogel <sv@exept.de>
parents: 1872
diff changeset
   426
        self selection size > 0 ifTrue:[
6ae0cf83738f Use #setClipboardText: instead of obsolete #setTextSelection:
Stefan Vogel <sv@exept.de>
parents: 1872
diff changeset
   427
            containerToPasteInto := self commonContainerOf:self selection
6ae0cf83738f Use #setClipboardText: instead of obsolete #setTextSelection:
Stefan Vogel <sv@exept.de>
parents: 1872
diff changeset
   428
        ] ifFalse:[
6ae0cf83738f Use #setClipboardText: instead of obsolete #setTextSelection:
Stefan Vogel <sv@exept.de>
parents: 1872
diff changeset
   429
            containerToPasteInto := self
6ae0cf83738f Use #setClipboardText: instead of obsolete #setTextSelection:
Stefan Vogel <sv@exept.de>
parents: 1872
diff changeset
   430
        ].
2221
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   431
"/        self selection:containerToPasteInto.
1744
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   432
    ].
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   433
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   434
    "/ search up parent list for something we can paste into
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   435
    [containerToPasteInto notNil and:[(self canPasteInto:containerToPasteInto) not]] whileTrue:[
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   436
        containerToPasteInto == self ifTrue:[
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   437
            containerToPasteInto := nil
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   438
        ] ifFalse:[
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   439
            containerToPasteInto := containerToPasteInto container.
1878
6ae0cf83738f Use #setClipboardText: instead of obsolete #setTextSelection:
Stefan Vogel <sv@exept.de>
parents: 1872
diff changeset
   440
        ].
1621
112670159075 cg: check if selection change is allowed BEFORE changing the
tm
parents: 1574
diff changeset
   441
    ].
1752
78d47dc11501 oops - dropping specs
Claus Gittinger <cg@exept.de>
parents: 1746
diff changeset
   442
    containerToPasteInto isNil ifTrue:[
1878
6ae0cf83738f Use #setClipboardText: instead of obsolete #setTextSelection:
Stefan Vogel <sv@exept.de>
parents: 1872
diff changeset
   443
        containerToPasteInto := self
1752
78d47dc11501 oops - dropping specs
Claus Gittinger <cg@exept.de>
parents: 1746
diff changeset
   444
    ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   445
2221
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   446
    (self canPaste:aSpecificationOrList into:containerToPasteInto)
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   447
    ifFalse:[
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   448
        self enabled ifTrue:[
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   449
            Dialog warn:'Cannot paste into selected component (not a container ?)'.
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   450
        ] ifFalse:[
2951
c2b24bf7b967 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2853
diff changeset
   451
            Dialog warn:'Operation currently disabled (In geometry test mode)'.
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   452
        ]. 
1878
6ae0cf83738f Use #setClipboardText: instead of obsolete #setTextSelection:
Stefan Vogel <sv@exept.de>
parents: 1872
diff changeset
   453
        ^ nil
89
35c5711729c2 so far so good
ca
parents: 86
diff changeset
   454
    ].
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   455
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   456
    self hideSelection.
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   457
776
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   458
    aSpecificationOrList isCollection ifTrue:[
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   459
        specsToPaste := aSpecificationOrList
776
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   460
    ] ifFalse:[
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   461
        specsToPaste := Array with:aSpecificationOrList
776
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   462
    ].
2221
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   463
"/    self setClipboardObject:nil.
776
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   464
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   465
    newSel  := OrderedCollection new.
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   466
    builder := UIBuilder new isEditing:true.
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   467
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   468
    className notNil ifTrue:[
1878
6ae0cf83738f Use #setClipboardText: instead of obsolete #setTextSelection:
Stefan Vogel <sv@exept.de>
parents: 1872
diff changeset
   469
        builder applicationClass:(self resolveName:className)
776
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   470
    ].
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   471
    bounds := Rectangle origin:0@0 extent:(containerToPasteInto bounds extent).
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   472
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   473
    pasteOffset := 0.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   474
2395
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   475
    (anIndexOrNil notNil and:[anIndexOrNil > 0]) ifTrue:[
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   476
        beforeIndex := anIndexOrNil.
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   477
    ].
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   478
    specsToPaste do:[:eachSpec|
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   479
        |view newOrigin uiPainterAttributes thisAbsOrigin|
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   480
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   481
        uiPainterAttributes := eachSpec otherAttributeAt:#uiPainterAttributes.
2388
17bbaf777e08 *** empty log message ***
sr
parents: 2387
diff changeset
   482
        eachSpec otherAttributeAt:#uiPainterAttributes put:nil.
1878
6ae0cf83738f Use #setClipboardText: instead of obsolete #setTextSelection:
Stefan Vogel <sv@exept.de>
parents: 1872
diff changeset
   483
2395
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   484
        view := self addSpec:eachSpec builder:builder in:containerToPasteInto beforeIndex:beforeIndex.
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   485
        beforeIndex notNil ifTrue:[
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   486
            beforeIndex := beforeIndex + 1
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   487
        ].
3129
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   488
        eachSpec keepUILayout ifTrue:[
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   489
            view layout:eachSpec layout.
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   490
        ] ifFalse:[
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   491
            (keepPosition and:[ uiPainterAttributes notNil ]) ifTrue:[
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   492
                aPointOrNilOrKeep == #keep ifTrue:[
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   493
                    newOrigin := uiPainterAttributes at:#origin.
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   494
                ] ifFalse:[
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   495
                    thisAbsOrigin := uiPainterAttributes at:#absOrigin.
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   496
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   497
                    newOrigin := self graphicsDevice 
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   498
                                        translatePoint:thisAbsOrigin
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   499
                                        fromView:self
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   500
                                        toView:containerToPasteInto.
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   501
                ].
2386
4471bede7939 bugfix - copy & paste with layout
ca
parents: 2376
diff changeset
   502
            ] ifFalse:[
3129
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   503
                pastePoint isNil ifTrue:[ pastePoint := 0@0 ].
3083
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
   504
                newOrigin := self graphicsDevice 
3129
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   505
                                    translatePoint:pastePoint
2386
4471bede7939 bugfix - copy & paste with layout
ca
parents: 2376
diff changeset
   506
                                    fromView:self
4471bede7939 bugfix - copy & paste with layout
ca
parents: 2376
diff changeset
   507
                                    toView:containerToPasteInto.
4471bede7939 bugfix - copy & paste with layout
ca
parents: 2376
diff changeset
   508
            ].
3129
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   509
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   510
            (bounds containsPoint:newOrigin) ifFalse:[
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   511
                newOrigin := pasteOffset asPoint.
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   512
                pasteOffset := pasteOffset + 4.
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   513
            ].
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   514
            newOrigin notNil ifTrue:[
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   515
                self moveObject:view to:newOrigin.
9a90a9d52bc6 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3097
diff changeset
   516
            ].
1878
6ae0cf83738f Use #setClipboardText: instead of obsolete #setTextSelection:
Stefan Vogel <sv@exept.de>
parents: 1872
diff changeset
   517
        ].
2395
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   518
        view realized ifFalse:[
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   519
            view realize.
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   520
        ].
1878
6ae0cf83738f Use #setClipboardText: instead of obsolete #setTextSelection:
Stefan Vogel <sv@exept.de>
parents: 1872
diff changeset
   521
        newSel add:view.
776
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   522
    ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   523
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   524
    self 
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   525
        withinTransaction:#paste 
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   526
        objects:newSel 
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   527
        do:[
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   528
            undoHistory 
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   529
                addUndoSelector:#undoCreate:
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   530
                withArgs:(newSel collect:[:v| (self propertyOfView:v) identifier]).
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   531
            self undoHistoryChanged.
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   532
        ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   533
776
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   534
    self realizeAllSubViews.
2395
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   535
    "/ newSel do:[:v| v raise].
1744
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
   536
    self elementChangedSize:containerToPasteInto.
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
   537
2818
6d5a0ea87cb7 changed: #pasteSpecifications:into:beforeIndex:keepLayout:keepPosition:at:
Claus Gittinger <cg@exept.de>
parents: 2716
diff changeset
   538
    "/ nil wg if embedded in a browser
6d5a0ea87cb7 changed: #pasteSpecifications:into:beforeIndex:keepLayout:keepPosition:at:
Claus Gittinger <cg@exept.de>
parents: 2716
diff changeset
   539
    self windowGroup notNil ifTrue:[
6d5a0ea87cb7 changed: #pasteSpecifications:into:beforeIndex:keepLayout:keepPosition:at:
Claus Gittinger <cg@exept.de>
parents: 2716
diff changeset
   540
        "/ because the new-created view will destroy the handles, when it redraws itself,
6d5a0ea87cb7 changed: #pasteSpecifications:into:beforeIndex:keepLayout:keepPosition:at:
Claus Gittinger <cg@exept.de>
parents: 2716
diff changeset
   541
        "/ give it a chance to do so, before we return. (bail out after half a second, in case of trouble)
6d5a0ea87cb7 changed: #pasteSpecifications:into:beforeIndex:keepLayout:keepPosition:at:
Claus Gittinger <cg@exept.de>
parents: 2716
diff changeset
   542
        count := 0.
6d5a0ea87cb7 changed: #pasteSpecifications:into:beforeIndex:keepLayout:keepPosition:at:
Claus Gittinger <cg@exept.de>
parents: 2716
diff changeset
   543
        [ (newSel conform:[:v | v shown]) or:[count > 50] ] whileFalse:[
6d5a0ea87cb7 changed: #pasteSpecifications:into:beforeIndex:keepLayout:keepPosition:at:
Claus Gittinger <cg@exept.de>
parents: 2716
diff changeset
   544
            self windowGroup repairDamage.
6d5a0ea87cb7 changed: #pasteSpecifications:into:beforeIndex:keepLayout:keepPosition:at:
Claus Gittinger <cg@exept.de>
parents: 2716
diff changeset
   545
            Delay waitForSeconds:0.01.
6d5a0ea87cb7 changed: #pasteSpecifications:into:beforeIndex:keepLayout:keepPosition:at:
Claus Gittinger <cg@exept.de>
parents: 2716
diff changeset
   546
            count := count+1.
6d5a0ea87cb7 changed: #pasteSpecifications:into:beforeIndex:keepLayout:keepPosition:at:
Claus Gittinger <cg@exept.de>
parents: 2716
diff changeset
   547
        ].
6d5a0ea87cb7 changed: #pasteSpecifications:into:beforeIndex:keepLayout:keepPosition:at:
Claus Gittinger <cg@exept.de>
parents: 2716
diff changeset
   548
        Delay waitForSeconds:0.01.
2560
efad0ef440c7 oops - need repairDamage for shown to be set (under unix; it used to
Michael Beyl <mb@exept.de>
parents: 2537
diff changeset
   549
        self windowGroup repairDamage.
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   550
    ].
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   551
776
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
   552
    newSel size == 1 ifTrue:[newSel := newSel at:1].
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   553
    ^ newSel
1500
36c0b4b268b8 use new translatePoint:fromView:toView:
Claus Gittinger <cg@exept.de>
parents: 1494
diff changeset
   554
2818
6d5a0ea87cb7 changed: #pasteSpecifications:into:beforeIndex:keepLayout:keepPosition:at:
Claus Gittinger <cg@exept.de>
parents: 2716
diff changeset
   555
    "Modified: / 03-11-2010 / 07:20:06 / cg"
89
35c5711729c2 so far so good
ca
parents: 86
diff changeset
   556
!
35c5711729c2 so far so good
ca
parents: 86
diff changeset
   557
3055
db492f86c9b1 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3038
diff changeset
   558
pasteSpecifications:aSpecificationOrList into:aContainerOrNil keepLayout:keepLayout keepPosition:keepPosition at:aPointOrNilOrKeep 
2395
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   559
    "add the specs to the object view; returns list of pasted widgets"
3055
db492f86c9b1 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3038
diff changeset
   560
    
db492f86c9b1 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3038
diff changeset
   561
    ^ self 
db492f86c9b1 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3038
diff changeset
   562
        pasteSpecifications:aSpecificationOrList
db492f86c9b1 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3038
diff changeset
   563
        into:aContainerOrNil
db492f86c9b1 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3038
diff changeset
   564
        beforeIndex:nil
db492f86c9b1 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3038
diff changeset
   565
        keepLayout:keepLayout
db492f86c9b1 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3038
diff changeset
   566
        keepPosition:keepPosition
db492f86c9b1 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3038
diff changeset
   567
        at:aPointOrNilOrKeep
2395
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   568
!
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   569
2387
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   570
pasteSpecifications:aSpecificationOrList keepLayout:keepLayout
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   571
    "add the specs to the object view; returns list of pasted widgets"
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   572
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   573
    ^ self
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   574
        pasteSpecifications:aSpecificationOrList
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   575
        keepLayout:keepLayout
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   576
        keepPosition:true
2627
07d40cde2ac9 changed: #pasteSpecifications:keepLayout:
Claus Gittinger <cg@exept.de>
parents: 2583
diff changeset
   577
        at:#keep "/ nil
2387
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   578
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   579
    "Modified: 11.8.1997 / 01:00:35 / cg"
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   580
!
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   581
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   582
pasteSpecifications:aSpecificationOrList keepLayout:keepLayout at:aPointOrNil
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   583
    "add the specs to the object view; returns list of pasted widgets"
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   584
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   585
    ^ self
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   586
        pasteSpecifications:aSpecificationOrList
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   587
        keepLayout:keepLayout
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   588
        keepPosition:true
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   589
        at:aPointOrNil
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   590
!
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   591
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   592
pasteSpecifications:aSpecificationOrList keepLayout:keepLayout keepPosition:keepPosition at:aPointOrNilOrKeep
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   593
    "add the specs to the object view; returns list of pasted widgets"
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   594
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   595
    ^ self pasteSpecifications:aSpecificationOrList
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   596
        into:nil
2395
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   597
        beforeIndex:nil
2387
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   598
        keepLayout:keepLayout
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   599
        keepPosition:keepPosition
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   600
        at:aPointOrNilOrKeep
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   601
!
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   602
2315
c301d0caf97b changed #pasteWithLayout
Stefan Vogel <sv@exept.de>
parents: 2312
diff changeset
   603
pasteWithLayout
2369
Claus Gittinger <cg@exept.de>
parents: 2367
diff changeset
   604
    "add the objects in the paste-buffer to the object view - keep the old layout"
2315
c301d0caf97b changed #pasteWithLayout
Stefan Vogel <sv@exept.de>
parents: 2312
diff changeset
   605
c301d0caf97b changed #pasteWithLayout
Stefan Vogel <sv@exept.de>
parents: 2312
diff changeset
   606
    |sel|
c301d0caf97b changed #pasteWithLayout
Stefan Vogel <sv@exept.de>
parents: 2312
diff changeset
   607
2366
Claus Gittinger <cg@exept.de>
parents: 2362
diff changeset
   608
    sel := self 
Claus Gittinger <cg@exept.de>
parents: 2362
diff changeset
   609
            pasteSpecifications:(self getClipboardObject)
Claus Gittinger <cg@exept.de>
parents: 2362
diff changeset
   610
            keepLayout:true
Claus Gittinger <cg@exept.de>
parents: 2362
diff changeset
   611
            keepPosition:true
Claus Gittinger <cg@exept.de>
parents: 2362
diff changeset
   612
            at:#keep.
2315
c301d0caf97b changed #pasteWithLayout
Stefan Vogel <sv@exept.de>
parents: 2312
diff changeset
   613
    self changeSelectionAfterPasteOf:sel.
c301d0caf97b changed #pasteWithLayout
Stefan Vogel <sv@exept.de>
parents: 2312
diff changeset
   614
!
c301d0caf97b changed #pasteWithLayout
Stefan Vogel <sv@exept.de>
parents: 2312
diff changeset
   615
2311
67811bdeb0f5 Support sorting of items in tree
Stefan Vogel <sv@exept.de>
parents: 2295
diff changeset
   616
pasteWithoutLayout
2369
Claus Gittinger <cg@exept.de>
parents: 2367
diff changeset
   617
    "add the objects in the paste-buffer to the object view - do not keep the old layout"
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
   618
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   619
    |sel|
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   620
2367
6684f50b22cd changed #pasteWithoutLayout
Claus Gittinger <cg@exept.de>
parents: 2366
diff changeset
   621
    sel := self 
6684f50b22cd changed #pasteWithoutLayout
Claus Gittinger <cg@exept.de>
parents: 2366
diff changeset
   622
            pasteSpecifications:(self getClipboardObject)
6684f50b22cd changed #pasteWithoutLayout
Claus Gittinger <cg@exept.de>
parents: 2366
diff changeset
   623
            keepLayout:false
6684f50b22cd changed #pasteWithoutLayout
Claus Gittinger <cg@exept.de>
parents: 2366
diff changeset
   624
            keepPosition:true
6684f50b22cd changed #pasteWithoutLayout
Claus Gittinger <cg@exept.de>
parents: 2366
diff changeset
   625
            at:#keep.
2221
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   626
    self changeSelectionAfterPasteOf:sel.
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   627
!
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   628
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   629
replaceSelectionBy:aNewSpec
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   630
    "replace the selected widget by another one."
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   631
2395
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   632
    |oldSelection treeModel newView oldView container specs|
2387
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   633
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   634
    (self singleSelection notNil and:[treeView askForSelectionChangeAllowed]) ifFalse:[
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   635
        ^ self
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   636
    ].
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   637
    treeModel    := treeView model.
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
   638
    oldSelection := treeModel selectedNodes at:1 ifAbsent: nil.
2387
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   639
    oldSelection isNil ifTrue:[^ self].
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   640
2395
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   641
    oldView := oldSelection contents view.
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   642
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   643
    (oldSelection hasChildren and:[aNewSpec class supportsSubComponents]) ifTrue:[
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   644
        specs := oldSelection children collect:[:each|
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   645
            self fullSpecWithAbsolutePositionFor:(each contents view)
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   646
        ].
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   647
    ].
2387
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   648
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   649
    aNewSpec
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   650
        otherAttributeAt:#uiPainterAttributes 
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   651
        put:(Dictionary new
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   652
                at:#origin put:oldView origin;
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   653
                at:#extent put:oldView extent;
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   654
                at:#absOrigin put:(oldView originRelativeTo:self);
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   655
                yourself).
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   656
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   657
    container := self singleSelection container.
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   658
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   659
    self withinTransaction:#replaceBy objects:(Array with:oldView) do:[
2395
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   660
        self withSelectionHiddenDo:[
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   661
            newView := self 
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   662
                    pasteSpecifications:(Array with:aNewSpec)
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   663
                    into:container
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   664
                    beforeIndex:1
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   665
                    keepLayout:true
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   666
                    keepPosition:true
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   667
                    at:#keep.
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   668
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   669
            self deleteSelectionBuffered:false.
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   670
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   671
            specs size > 0 ifTrue:[
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   672
                self pasteSpecifications:specs 
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   673
                            into:newView
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   674
                            keepLayout:(aNewSpec class canResizeSubComponents)
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   675
                            keepPosition:(aNewSpec class isLayoutContainer not)
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   676
                            at:nil.
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   677
            ].
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   678
            self select:newView.
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   679
       ].
2387
050c6d4d427d bugfix - replaceSelectionBy: (1)
ca
parents: 2386
diff changeset
   680
    ].
2395
9f9cf71a311c *** empty log message ***
ca
parents: 2392
diff changeset
   681
    ^ newView.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   682
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   683
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   684
!UIPainterView methodsFor:'drag & drop'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   685
2116
90fc11105f36 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2112
diff changeset
   686
canDrop:aDropContext
90fc11105f36 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2112
diff changeset
   687
    ^ self canDropObjects:aDropContext dropObjects
90fc11105f36 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2112
diff changeset
   688
90fc11105f36 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2112
diff changeset
   689
    "Created: / 13-10-2006 / 17:46:11 / cg"
90fc11105f36 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2112
diff changeset
   690
!
90fc11105f36 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2112
diff changeset
   691
90fc11105f36 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2112
diff changeset
   692
canDropObjects:aCollectionOfDropObjects
1914
229b3e455c98 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   693
    "returns true if something can be dropped"
229b3e455c98 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   694
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   695
    ^ (true "aCollectionOfDropObjects size == 1" 
2112
74dfb69c88d4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2039
diff changeset
   696
    and:[ self enabled 
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   697
    and:[ true "self numberOfSelections <= 1"
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   698
    and:[ aCollectionOfDropObjects conform:[:each| each theObject isKindOf:UISpecification]
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
   699
              ]]])
2112
74dfb69c88d4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2039
diff changeset
   700
2116
90fc11105f36 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2112
diff changeset
   701
    "Created: / 13-10-2006 / 16:09:24 / cg"
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   702
!
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   703
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
   704
canPaste
1914
229b3e455c98 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   705
    "returns true if there is something which can be pasted in the clipboard"
229b3e455c98 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   706
1872
ab5cc43b193a get selection interface changed
ca
parents: 1870
diff changeset
   707
    ^ self canPaste:(self getClipboardObject)
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
   708
!
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
   709
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   710
canPaste:something
1914
229b3e455c98 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   711
    "returns true if something could be pasted"
229b3e455c98 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   712
2221
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   713
    ^ self canPaste:something into:(self singleSelection)
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   714
!
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   715
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   716
canPaste:something into:containerToPasteInto
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   717
    "returns true if something could be pasted"
8ac60d4545ad selection after paste
Claus Gittinger <cg@exept.de>
parents: 2212
diff changeset
   718
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
   719
    (self enabled) ifFalse:[
1914
229b3e455c98 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   720
        ^ false
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   721
    ].
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
   722
    something isCollection ifTrue:[
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
   723
        something isEmpty ifTrue:[ ^ false].
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
   724
        ^ something conform:[:el | (self canPaste:el into:containerToPasteInto)]
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
   725
    ].
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
   726
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
   727
    (something isKindOf:UISpecification) ifFalse:[
1914
229b3e455c98 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   728
        ^ false
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   729
    ].
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   730
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
   731
    ^ self canPasteInto:containerToPasteInto
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   732
!
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   733
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
   734
canPasteInto:aView
1914
229b3e455c98 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   735
    "return true, if I can paste into a view"
229b3e455c98 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1894
diff changeset
   736
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
   737
    |prop|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   738
1870
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
   739
    aView isNil ifTrue:[ ^ false ].
2265
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
   740
    aView == self ifTrue:[ ^ true ].
1870
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
   741
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
   742
    (prop := self propertyOfView:aView) notNil ifTrue:[
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
   743
        ^ prop spec class supportsSubComponents
89
35c5711729c2 so far so good
ca
parents: 86
diff changeset
   744
    ].
1870
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
   745
    ^ aView specClass supportsSubComponents.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   746
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   747
2116
90fc11105f36 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2112
diff changeset
   748
dropObjects:aCollectionOfDropObjects at:aPoint
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   749
    |spec newSel oldSel dragOffset dropPoint widg|
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   750
288
675327dd4d7d change drop mechanism:
ca
parents: 285
diff changeset
   751
    self selection notNil ifTrue:[
1953
3b5022bccca4 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   752
        oldSel := self singleSelection.
3b5022bccca4 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   753
3b5022bccca4 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   754
        "/ search selections hierarchy for a widget into which we can paste
3b5022bccca4 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   755
        widg := oldSel.
3b5022bccca4 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   756
        [widg isNil or:[self canPasteInto:widg]] whileFalse:[
3b5022bccca4 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   757
            widg notNil ifTrue:[
3b5022bccca4 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   758
                widg := widg container
3b5022bccca4 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   759
            ].
3b5022bccca4 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   760
        ].
3b5022bccca4 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   761
3b5022bccca4 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   762
        oldSel := nil.
3b5022bccca4 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   763
        self setSelection:widg withRedraw:true.
231
75de472d579f check whether selection is a view or a collection
ca
parents: 223
diff changeset
   764
    ].
1953
3b5022bccca4 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 1914
diff changeset
   765
    spec := (aCollectionOfDropObjects at:1) theObject.
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   766
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   767
    dragOffset := DragAndDropManager dragOffsetQuerySignal query.
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   768
    aPoint isNil ifTrue:[
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   769
        dropPoint := #keep.
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   770
    ] ifFalse:[
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   771
        dropPoint := aPoint - dragOffset.
1833
6ad211a201cf *** empty log message ***
werner
parents: 1832
diff changeset
   772
    ].
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   773
    newSel := self pasteSpecifications:spec keepLayout:false keepPosition:false at:dropPoint.
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   774
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
   775
    self select:(oldSel ? newSel).
1060
0332a41de5c5 Use #query instead of #raise when invoking QuerySignals
Stefan Vogel <sv@exept.de>
parents: 1058
diff changeset
   776
2116
90fc11105f36 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2112
diff changeset
   777
    "Modified: / 18-03-1999 / 18:29:43 / stefan"
90fc11105f36 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2112
diff changeset
   778
    "Created: / 13-10-2006 / 16:09:27 / cg"
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   779
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   780
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   781
!UIPainterView methodsFor:'drawing'!
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   782
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   783
clearRectangle:visRect
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   784
    super clearRectangle:visRect.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   785
    sketchPainter notNil ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   786
        sketchPainter redrawInTargetView
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   787
    ].
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   788
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   789
    "Created: / 16-01-2008 / 17:52:27 / cg"
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   790
!
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   791
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   792
clearView
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   793
    super clearView.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   794
    sketchPainter notNil ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   795
        sketchPainter redrawInTargetView
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   796
    ].
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   797
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   798
    "Created: / 16-01-2008 / 17:46:08 / cg"
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   799
!
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   800
2248
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   801
useSketchFile:aFilename 
2443
a181aa6d60b4 comment
Claus Gittinger <cg@exept.de>
parents: 2421
diff changeset
   802
    "a little neat goody: allow for a tablet-sketch file (WALTROP digital notepad)
a181aa6d60b4 comment
Claus Gittinger <cg@exept.de>
parents: 2421
diff changeset
   803
     to be used as a background of the UIPainter window. This allows for sketches to
a181aa6d60b4 comment
Claus Gittinger <cg@exept.de>
parents: 2421
diff changeset
   804
     be drawn, shown in the UIPainter, and then used as a placement hint (manual placement)
a181aa6d60b4 comment
Claus Gittinger <cg@exept.de>
parents: 2421
diff changeset
   805
     for the user. Not a high-tech solution, but helped a lot, when we protoyped GUIs."
a181aa6d60b4 comment
Claus Gittinger <cg@exept.de>
parents: 2421
diff changeset
   806
2248
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   807
    |mime sketchPainterClass|
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   808
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   809
    mime := aFilename asFilename mimeTypeFromName.
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   810
    mime isNil ifTrue:[
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   811
        mime := aFilename asFilename mimeTypeOfContents.
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   812
    ].
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   813
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   814
    mime notNil ifTrue:[
2278
8ff3bd6f0820 Allow to load background from image file #useSketchFile:
Stefan Vogel <sv@exept.de>
parents: 2276
diff changeset
   815
        (mime startsWith:'image') ifTrue:[
8ff3bd6f0820 Allow to load background from image file #useSketchFile:
Stefan Vogel <sv@exept.de>
parents: 2276
diff changeset
   816
            self viewBackground:(ImageReader fromFile:aFilename).
8ff3bd6f0820 Allow to load background from image file #useSketchFile:
Stefan Vogel <sv@exept.de>
parents: 2276
diff changeset
   817
            ^ self.
8ff3bd6f0820 Allow to load background from image file #useSketchFile:
Stefan Vogel <sv@exept.de>
parents: 2276
diff changeset
   818
        ].
2444
3e1e97529487 comment
Claus Gittinger <cg@exept.de>
parents: 2443
diff changeset
   819
        mime = 'application/x-waltop-digital-notepad' ifTrue:[
3e1e97529487 comment
Claus Gittinger <cg@exept.de>
parents: 2443
diff changeset
   820
            sketchPainterClass := TOPFileDrawer.
3e1e97529487 comment
Claus Gittinger <cg@exept.de>
parents: 2443
diff changeset
   821
        ].
2248
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   822
    ].
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   823
    sketchPainterClass isNil ifTrue:[
2444
3e1e97529487 comment
Claus Gittinger <cg@exept.de>
parents: 2443
diff changeset
   824
        self error:'Unsupported sketch file format'
2248
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   825
    ].
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   826
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
   827
    sketchPainter := sketchPainterClass new.
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   828
    sketchPainter targetView:self.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   829
    sketchPainter readFile:aFilename.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   830
    sketchPainter ajustSketch.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   831
    self invalidate.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   832
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   833
    "Created: / 16-01-2008 / 17:46:26 / cg"
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   834
! !
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   835
361
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
   836
!UIPainterView methodsFor:'event handling'!
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
   837
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
   838
keyPress:key x:x y:y view:aView
376
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
   839
    "a delegated keyEvent from aView"
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
   840
361
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
   841
    self keyPress:key x:x y:y
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
   842
376
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
   843
    "Modified: / 31.10.1997 / 20:27:22 / cg"
361
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
   844
!
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
   845
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
   846
keyRelease:key x:x y:y view:aView
376
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
   847
    "a delegated keyEvent from aView"
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
   848
361
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
   849
    self keyRelease:key x:x y:y
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
   850
376
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
   851
    "Modified: / 31.10.1997 / 20:27:32 / cg"
754
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
   852
!
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
   853
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
   854
sizeChanged:how
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
   855
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   856
    super sizeChanged:how.
754
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
   857
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
   858
    self layoutChanged
361
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
   859
! !
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
   860
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   861
!UIPainterView methodsFor:'generating output'!
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
   862
352
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   863
aspectMethods
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   864
    "extract a list of aspect methods - for browsing"
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   865
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   866
    |cls methods|
352
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   867
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   868
    className isNil ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   869
	self warn:'No class defined !!'.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   870
	^ #()
352
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   871
    ].
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   872
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   873
    cls := self resolveName:className.
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   874
    methods := IdentitySet new.
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   875
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   876
    self aspectSelectorsAndTypesDo:
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   877
	[:selector :typeSymbol |
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   878
	    |skip|
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   879
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   880
	    (cls includesSelector:selector) ifTrue:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   881
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   882
		skip := false.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   883
		(typeSymbol == #modelAspect) ifTrue:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   884
		    (cls isSubclassOf:SimpleDialog) ifTrue:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   885
			skip := SimpleDialog includesSelector:(selector asSymbol)
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   886
		    ].
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   887
		].
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   888
		skip ifFalse:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   889
		    methods add:(cls compiledMethodAt:selector)
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   890
		].
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   891
	    ]
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   892
	].
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   893
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   894
    ^ methods
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   895
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   896
    "Created: / 25.10.1997 / 18:58:25 / cg"
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   897
    "Modified: / 26.10.1997 / 15:06:18 / cg"
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   898
!
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   899
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   900
aspectSelectorsAndTypesDo:aTwoArgBlock
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   901
    "evaluate aBlock for every aspect methods selector; 2nd arg describes the aspects type"
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   902
1726
7117789f3020 Remove unused vars
Stefan Vogel <sv@exept.de>
parents: 1714
diff changeset
   903
    |cls selector protoSpec|
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   904
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   905
    className isNil ifTrue:[
2195
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   906
        self warn:'No class defined !!'.
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   907
        ^ self
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   908
    ].
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   909
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   910
    cls := self resolveName:className.
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
   911
352
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   912
    treeView propertiesDo:[:aProp|
2195
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   913
        |selector|
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   914
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   915
        (selector := aProp model) notNil ifTrue:[
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   916
            selector isArray ifFalse:[
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   917
                aTwoArgBlock value:(selector asSymbol) value:#modelAspect
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   918
            ].
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   919
        ].
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   920
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   921
        (selector := aProp menu) notNil ifTrue:[
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   922
            selector isArray ifFalse:[
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   923
                aTwoArgBlock value:(selector asSymbol) value:#menu
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   924
            ].
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   925
        ].
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   926
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   927
        (aProp spec aspectSelectors) do:[:aSel |
2250
e65b8bf6224b care for non-symbolic aspects (false)
Claus Gittinger <cg@exept.de>
parents: 2248
diff changeset
   928
            (aSel isString or:[aSel isSymbol]) ifTrue:[
2195
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   929
                aTwoArgBlock value:(aSel asSymbol) value:#channelAspect
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   930
            ].
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   931
        ].
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   932
        aProp spec actionSelectors do:[:aSel|
2250
e65b8bf6224b care for non-symbolic aspects (false)
Claus Gittinger <cg@exept.de>
parents: 2248
diff changeset
   933
            (aSel isString or:[aSel isSymbol]) ifTrue:[
2195
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   934
                aTwoArgBlock value:(aSel asSymbol) value:#actionSelector
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   935
            ].
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   936
        ].
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   937
        aProp spec valueSelectors do:[:aSel|
2250
e65b8bf6224b care for non-symbolic aspects (false)
Claus Gittinger <cg@exept.de>
parents: 2248
diff changeset
   938
            (aSel isString or:[aSel isSymbol]) ifTrue:[
2195
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   939
                aTwoArgBlock value:(aSel asSymbol) value:#valueSelector
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   940
            ].
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   941
        ]
352
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   942
    ].
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   943
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   944
    protoSpec := treeView canvasSpec.
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   945
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   946
    (selector := protoSpec menu) notNil ifTrue:[
2195
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   947
        selector isArray ifFalse:[
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   948
            aTwoArgBlock value:(selector asSymbol) value:#menu
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
   949
        ].
352
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   950
    ].
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   951
!
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
   952
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
   953
generateActionMethodFor:aspect spec:protoSpec inClass:targetClass
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   954
    |selector args showIt codeStream alreadyInSuperclass numArgs method|
288
675327dd4d7d change drop mechanism:
ca
parents: 285
diff changeset
   955
675327dd4d7d change drop mechanism:
ca
parents: 285
diff changeset
   956
    selector := aspect asSymbol.
141
d06c04391233 generate actions with argument
ca
parents: 137
diff changeset
   957
288
675327dd4d7d change drop mechanism:
ca
parents: 285
diff changeset
   958
    alreadyInSuperclass := targetClass superclass canUnderstand:selector.
675327dd4d7d change drop mechanism:
ca
parents: 285
diff changeset
   959
568
7c4482bf37cf allow more than 1 numArg for an action
ca
parents: 511
diff changeset
   960
    numArgs := selector numArgs.
7c4482bf37cf allow more than 1 numArg for an action
ca
parents: 511
diff changeset
   961
    method  := aspect.
7c4482bf37cf allow more than 1 numArg for an action
ca
parents: 511
diff changeset
   962
7c4482bf37cf allow more than 1 numArg for an action
ca
parents: 511
diff changeset
   963
    numArgs == 1 ifTrue:[
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   964
        args := 'anArgument'.
2295
79edbe5882c6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2278
diff changeset
   965
        showIt := ''' , anArgument printString , ''...''.'.
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
   966
    ] ifFalse:[
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   967
        args := ''.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   968
        showIt := ' ...''.'.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   969
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   970
        numArgs ~~ 0 ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   971
            method := ''.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   972
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   973
            selector keywords keysAndValuesDo:[:i :key|
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   974
                method := method, key, 'arg', i printString, ' '
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   975
            ]
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   976
        ]
149
e652608690b1 help ...
ca
parents: 146
diff changeset
   977
    ].
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   978
    codeStream := WriteStream on:(String new:100).
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   979
    codeStream  
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   980
        nextPutLine:('!!',targetClass name,' methodsFor:''actions''!!');
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   981
        nextPutLine:(method,args);
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   982
        nextPutLine:'    <resource: #uiCallback>';
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   983
        cr.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   984
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   985
    self class generateCommentedCode ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   986
        codeStream
2295
79edbe5882c6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2278
diff changeset
   987
            nextPutAll:'    "automatically generated by UIPainter..."
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   988
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   989
    "*** the code below performs no action"
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   990
    "*** (except for some feedback on the Transcript)"
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   991
    "*** Please change as required and accept in the browser."
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   992
    "*** (and replace this comment by something more useful ;-)"
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   993
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   994
'.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   995
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   996
        alreadyInSuperclass ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   997
            codeStream  
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   998
                nextPutLine:'    "action for ' , aspect , ' is already provided in a superclass."';
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
   999
                nextPutLine:'    "It may be redefined here..."';
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1000
                cr.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1001
        ] ifFalse:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1002
            codeStream  
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1003
                nextPutLine:'    "action to be defined here..."';
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1004
                cr.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1005
        ].
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1006
    ].
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1007
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1008
    codeStream  
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1009
        nextPutAll:'    Transcript showCR:self class name, '': '.
288
675327dd4d7d change drop mechanism:
ca
parents: 285
diff changeset
  1010
675327dd4d7d change drop mechanism:
ca
parents: 285
diff changeset
  1011
    alreadyInSuperclass ifTrue:[
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1012
        codeStream  
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1013
            nextPutAll:'inherited '.
288
675327dd4d7d change drop mechanism:
ca
parents: 285
diff changeset
  1014
    ].
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1015
    codeStream  
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1016
        nextPutAll:'action for ';
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1017
        nextPutAll:aspect;
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1018
        nextPutLine:showIt.
288
675327dd4d7d change drop mechanism:
ca
parents: 285
diff changeset
  1019
675327dd4d7d change drop mechanism:
ca
parents: 285
diff changeset
  1020
    alreadyInSuperclass ifTrue:[
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1021
        codeStream  
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1022
            nextPutAll:'    super ';
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1023
            nextPutAll:aspect;
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1024
            nextPutAll:args;
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1025
            nextPutLine:'.'.
288
675327dd4d7d change drop mechanism:
ca
parents: 285
diff changeset
  1026
    ].
675327dd4d7d change drop mechanism:
ca
parents: 285
diff changeset
  1027
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1028
    codeStream  
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1029
        nextPutLine:'!! !!'; cr.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1030
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1031
    ^ codeStream contents.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1032
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1033
    "Modified: / 12-01-2008 / 10:21:52 / cg"
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1034
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1035
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1036
generateAspectMethodCode
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1037
    "generate aspect, action & menu methods
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1038
     - but do not overwrite existing ones.
2714
abaae556bec8 commentCode flags now in userPrefs
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  1039
     Return a string ready to compile into the application class.
abaae556bec8 commentCode flags now in userPrefs
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  1040
     TODO: refactor and move to CodeGenerator"
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1041
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1042
    ^ self generateAspectMethodCodeFiltering:nil
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1043
!
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1044
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1045
generateAspectMethodCodeFiltering:aFilterOrEmpty
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1046
    "generate aspect, action & menu methods
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1047
     - but do not overwrite existing ones.
2714
abaae556bec8 commentCode flags now in userPrefs
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  1048
     Return a string ready to compile into the application class.
abaae556bec8 commentCode flags now in userPrefs
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  1049
     TODO: refactor and move to CodeGenerator"
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1050
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1051
    |cls codePieces skip protoSpec thisCode
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1052
     definedMethodSelectors iVars t exportSels|
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1053
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1054
    cls := self targetClass.
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1055
    cls isNil ifTrue:[
2024
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1056
        ^ nil
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1057
    ].
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1058
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1059
    codePieces := OrderedCollection new.
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1060
    definedMethodSelectors := IdentitySet new.
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1061
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1062
    treeView propertiesDo:[:aProp|
2024
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1063
        |modelSelector|
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1064
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1065
        protoSpec := aProp spec.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1066
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1067
        (modelSelector := aProp model) notNil ifTrue:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1068
            self generateCodeFrom:(Array with:modelSelector) in:cls
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1069
                do:[:aSel|
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1070
                    (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1071
                        skip := false.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1072
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1073
                        (cls isSubclassOf:SimpleDialog) ifTrue:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1074
                            skip := SimpleDialog includesSelector:aSel
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1075
                        ].
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1076
                        (definedMethodSelectors includes:aSel) ifTrue:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1077
                            skip := true.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1078
                        ].
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1079
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1080
                        skip ifFalse:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1081
                            "/ kludge ..
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1082
                            "/ (protoSpec isKindOf:ActionButtonSpec)
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1083
                            (protoSpec defaultModelIsCallBackMethodSelector:aSel)
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1084
                            ifTrue:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1085
                                thisCode := (self generateActionMethodFor:aSel spec:protoSpec inClass:cls).
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1086
                            ] ifFalse:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1087
                                thisCode := (self generateAspectMethodFor:aSel spec:protoSpec inClass:cls).
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1088
                            ].
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1089
                            codePieces add:thisCode.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1090
                            definedMethodSelectors add:aSel.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1091
                            Transcript showCR:'code generated for aspect: ' , aSel
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1092
                        ] ifTrue:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1093
                            Transcript showCR:'*** no code generated for aspect: ' , aSel , ' (method already exists)'
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1094
                        ].
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1095
                    ].
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1096
                ].
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1097
        ].
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1098
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1099
        "/ for each aspect, generate getter (if not yet implemented)
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1100
        self generateCodeFrom:(aProp spec aspectSelectors) in:cls
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1101
                do:[:aSel|
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1102
                    (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1103
                        (definedMethodSelectors includes:aSel) ifFalse:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1104
                            thisCode := (self generateAspectMethodFor:aSel spec:protoSpec inClass:cls).
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1105
                            codePieces add:thisCode.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1106
                            definedMethodSelectors add:aSel.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1107
                            Transcript showCR:'code generated for aspect: ' , aSel
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1108
                        ]
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1109
                    ]
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1110
                ].
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1111
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1112
        "/ exported aspects - need setter methods
3092
c327e636e6a3 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3083
diff changeset
  1113
        exportSels := (treeView exportedAspects ? #()) collect:[:entry | (entry subAspect) asMutator].
2024
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1114
        self generateCodeFrom:exportSels in:cls
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1115
                do:[:aSel|
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1116
                    |aspect|
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1117
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1118
                    (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1119
                        (definedMethodSelectors includes:aSel) ifFalse:[
3136
146b6f9e139c class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3129
diff changeset
  1120
                            aspect := (aSel copyButLast) asSymbol.
2024
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1121
                            thisCode := (self generateAspectSetMethodFor:aspect spec:protoSpec inClass:cls).
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1122
                            codePieces add:thisCode.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1123
                            definedMethodSelectors add:aSel.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1124
                            Transcript showCR:'export code generated for aspect: ' , aSel
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1125
                        ]
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1126
                    ]
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1127
                ].
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1128
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1129
        self generateCodeFrom:(aProp spec actionSelectors) in:cls
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1130
                do:[:aSel|
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1131
                    (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1132
                        (definedMethodSelectors includes:aSel) ifFalse:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1133
                            thisCode := (self generateActionMethodFor:aSel spec:protoSpec inClass:cls).
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1134
                            codePieces add:thisCode.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1135
                            definedMethodSelectors add:aSel.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1136
                            Transcript showCR:'action generated for aspect: ' , aSel
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1137
                        ]
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1138
                    ]
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1139
                ].
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1140
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1141
        self generateCodeFrom:(aProp spec valueSelectors) in:cls
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1142
                do:[:aSel|
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1143
                    (aFilterOrEmpty isNil or:[aFilterOrEmpty includes:aSel]) ifTrue:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1144
                        (definedMethodSelectors includes:aSel) ifFalse:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1145
                            "/ uppercase: - assume its a globals name.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1146
                            aSel isUppercaseFirst ifFalse:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1147
                                thisCode := (self generateValueMethodFor:aSel spec:protoSpec inClass:cls).
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1148
                                codePieces add:thisCode.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1149
                                definedMethodSelectors add:aSel.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1150
                                Transcript showCR:'code generated for aspect: ' , aSel
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1151
                            ]
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1152
                        ]
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1153
                    ]
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1154
                ].
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1155
    ].
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1156
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1157
    AspectsAsInstances ifTrue:[
2024
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1158
        iVars := cls instVarNames asOrderedCollection.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1159
        definedMethodSelectors do:[:ivar |
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1160
            (iVars includes:ivar) ifFalse:[
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1161
                iVars add:ivar
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1162
            ]
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1163
        ].
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1164
        iVars := iVars asArray.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1165
        t := cls shallowCopy.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1166
        t setInstanceVariableString:iVars asStringCollection asString.
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1167
        codePieces addFirst:(t definition , '!!\' withCRs).
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1168
    ].
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1169
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1170
    ^ String
2024
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1171
        streamContents:
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1172
            [:codeStream |
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1173
                codePieces do:[:eachPiece | codeStream nextPutAll:eachPiece].
6e9f614d6c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1977
diff changeset
  1174
            ].
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1175
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1176
    "Modified: / 29.7.1998 / 12:21:19 / cg"
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1177
!
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1178
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1179
generateAspectMethodFor:aspect spec:protoSpec inClass:targetClass
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1180
    |modelClass modelValueString modelValue modelGen codeStream|
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  1181
149
e652608690b1 help ...
ca
parents: 146
diff changeset
  1182
    modelClass := protoSpec defaultModelClassFor:aspect.
1257
acb8c0a58ef3 dataSPec defaultValue when generating aspects
Claus Gittinger <cg@exept.de>
parents: 1252
diff changeset
  1183
    modelValueString := protoSpec defaultModelValueStringFor:aspect.
acb8c0a58ef3 dataSPec defaultValue when generating aspects
Claus Gittinger <cg@exept.de>
parents: 1252
diff changeset
  1184
    modelValueString notNil ifTrue:[
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1185
        modelGen := modelValueString
1257
acb8c0a58ef3 dataSPec defaultValue when generating aspects
Claus Gittinger <cg@exept.de>
parents: 1252
diff changeset
  1186
    ] ifFalse:[
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1187
        modelValue := protoSpec defaultModelValueFor:aspect.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1188
        modelValue isNil ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1189
            modelGen := modelClass name , ' new'
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1190
        ] ifFalse:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1191
            modelGen := modelValue storeString , ' asValue'
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1192
        ].
352
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
  1193
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
  1194
    ].
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  1195
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1196
    codeStream := WriteStream on:(String new:100).
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1197
    codeStream  
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1198
        nextPutLine:('!!' , targetClass name , ' methodsFor:''aspects''!!');
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1199
        nextPutLine:aspect;
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1200
        nextPutLine:'    <resource: #uiAspect>';
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1201
        cr.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1202
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1203
    self class generateCommentedCode ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1204
        codeStream  
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1205
            nextPutAll:'    "automatically generated by UIPainter ..."
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1206
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1207
    "*** the code below creates a default model when invoked."
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1208
    "*** (which may not be the one you wanted)"
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1209
    "*** Please change as required and accept it in the browser."
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1210
    "*** (and replace this comment by something more useful ;-)"
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1211
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1212
'.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1213
    ].
1474
d2ee565fa32a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1467
diff changeset
  1214
925
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
  1215
    AspectsAsInstances ifTrue:[
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1216
        codeStream
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1217
            nextPutLine:('    ',aspect,' isNil ifTrue:[');
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1218
            nextPutLine:('        ',aspect,' := ',modelGen,'.').
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1219
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1220
        modelClass ~~ TriggerValue ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1221
            self class generateCommentedCode ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1222
                codeStream
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1223
                    nextPutLine:'"/ if your app needs to be notified of changes, uncomment one of the lines below:'.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1224
            ].
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1225
            codeStream
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1226
                nextPutLine:'"/       ',aspect,' addDependent:self.';
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1227
                nextPutLine:'"/       ',aspect,' onChangeSend:#',aspect,'Changed to:self.'.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1228
        ].
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1229
        codeStream
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1230
            nextPutLine:'    ].';
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1231
            nextPutLine:'    ^ ',aspect,'.'.
925
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
  1232
    ] ifFalse:[
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1233
        codeStream
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1234
            nextPutLine:('    |holder|');
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1235
            cr;
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1236
            nextPutLine:('    (holder := builder bindingAt:#',aspect,') isNil ifTrue:[');
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1237
            nextPutLine:('        holder := ',modelGen,'.');
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1238
            nextPutLine:('        builder aspectAt:#',aspect,' put:holder.').
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1239
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1240
        modelClass ~~ TriggerValue ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1241
            self class generateCommentedCode ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1242
                codeStream
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1243
                    nextPutLine:'"/ if your app needs to be notified of changes, uncomment one of the lines below:'.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1244
            ].
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1245
            codeStream
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1246
                nextPutLine:'"/       holder addDependent:self.';
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1247
                nextPutLine:'"/       holder onChangeSend:#',aspect,'Changed to:self.'.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1248
        ].
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1249
        codeStream
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1250
            nextPutLine:'    ].';
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1251
            nextPutLine:'    ^ holder.'.
925
e6ddd46581c3 added option of generating aspects as instvars.
Claus Gittinger <cg@exept.de>
parents: 887
diff changeset
  1252
    ].
1361
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1253
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1254
    codeStream
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1255
        nextPutLine:'!! !!'; cr.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1256
"/ self halt.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1257
    ^ codeStream contents.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1258
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1259
    "Modified: / 22-09-1999 / 12:33:47 / stefan"
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1260
    "Modified: / 12-01-2008 / 10:21:43 / cg"
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1261
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1262
1358
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1263
generateAspectSelectorsMethod
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1264
    "generate aspectSelectors method.
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1265
     Return a string ready to compile into the application class."
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1266
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1267
    |cls code spec|
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1268
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1269
    cls := self targetClass.
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1270
    cls isNil ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1271
	^ nil
1358
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1272
    ].
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1273
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1274
    spec := treeView exportedAspects.
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1275
    spec size == 0 ifTrue:[^ nil].
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1276
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1277
    "/ make it an array ...
1362
b710bba663cb fixed generateAspectSelectors code generator
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
  1278
    spec := spec collect:[:entry | |subAspect type|
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1279
		subAspect := entry subAspect asSymbol.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1280
		(type := entry type) isNil ifTrue:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1281
		    subAspect
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1282
		] ifFalse:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1283
		    Array with:subAspect with:type asSymbol
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1284
		].
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1285
	    ].
1358
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1286
    spec := spec asArray.
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1287
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1288
    code := '!!' , cls name , ' class methodsFor:''plugIn spec''!!\\' .
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1289
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1290
    code := code , 'aspectSelectors
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1291
    "This resource specification was automatically generated
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1292
     by the UIPainter of ST/X."
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1293
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1294
    "Do not manually edit this. If it is corrupted,
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1295
     the UIPainter may not be able to read the specification."
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1296
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1297
    "Return a description of exported aspects;
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1298
     these can be connected to aspects of an embedding application
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1299
     (if this app is embedded in a subCanvas)."
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1300
1362
b710bba663cb fixed generateAspectSelectors code generator
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
  1301
    ^ #(\'.
b710bba663cb fixed generateAspectSelectors code generator
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
  1302
    spec do:[:el | code := code , ('        ' , el storeString , '\') ].
b710bba663cb fixed generateAspectSelectors code generator
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
  1303
    code := code , '      ).\'.
b710bba663cb fixed generateAspectSelectors code generator
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
  1304
    code := code , '\!!\'.
1358
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1305
    code := code withCRs.
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1306
    ^ code
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1307
1362
b710bba663cb fixed generateAspectSelectors code generator
Claus Gittinger <cg@exept.de>
parents: 1361
diff changeset
  1308
    "Modified: / 18.2.2000 / 02:08:34 / cg"
1358
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1309
!
c0116e25a2ac generateAspectSelectorsMethod
ca
parents: 1347
diff changeset
  1310
1361
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1311
generateAspectSetMethodFor:aspect spec:protoSpec inClass:targetClass
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1312
    |code|
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1313
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1314
    code := '!!' , targetClass name , ' methodsFor:''aspects - exported''!!\\' ,
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1315
      aspect , ':something\' ,
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1316
      '    "automatically generated by UIPainter ..."\\' ,
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1317
      '    "This method is used when I am embedded as subApplication,"\' ,
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1318
      '    "and the mainApp wants to connect its aspects to mine."\'.
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1319
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1320
    AspectsAsInstances ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1321
	code := (code , '\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1322
	  '"/     ' , aspect , ' notNil ifTrue:[\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1323
	  '"/        ' , aspect , ' removeDependent:self.\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1324
	  '"/     ].\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1325
	  '    ' , aspect ,' := something.\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1326
	  '"/     ' , aspect ,' notNil ifTrue:[\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1327
	  '"/        ' , aspect , ' addDependent:self.\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1328
	  '"/     ].\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1329
	  '    ^ self.\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1330
	  '!! !!\\')
1361
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1331
    ] ifFalse:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1332
	code := (code , '\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1333
	  '"/     |holder|\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1334
	  '\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1335
	  '"/     (holder := builder bindingAt:#' , aspect , ') notNil ifTrue:[\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1336
	  '"/         holder removeDependent:self.\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1337
	  '"/     ].\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1338
	  '    builder aspectAt:#' , aspect , ' put:something.\',
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1339
	  '"/     something notNil ifTrue:[\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1340
	  '"/         something addDependent:self.\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1341
	  '"/     ].\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1342
	  '    ^ self.\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1343
	  '!! !!\\')
1361
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1344
    ].
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1345
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1346
    ^ code withCRs
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1347
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1348
    "Modified: / 29.7.1998 / 11:29:16 / cg"
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1349
    "Modified: / 22.9.1999 / 12:33:47 / stefan"
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1350
!
9020214f03e6 generate aspect-setters for exported aspects
Claus Gittinger <cg@exept.de>
parents: 1358
diff changeset
  1351
698
5bf234e0e451 redefine methods flag
tz
parents: 662
diff changeset
  1352
generateCodeFrom:aListOfSelectors in:aClass do:aBlock
1696
0cb66a26b156 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1683
diff changeset
  1353
    |realSelectors redefCondition redefMessage|
0cb66a26b156 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1683
diff changeset
  1354
2250
e65b8bf6224b care for non-symbolic aspects (false)
Claus Gittinger <cg@exept.de>
parents: 2248
diff changeset
  1355
    realSelectors := aListOfSelectors select:[:sel | sel isString or:[sel isSymbol]].
698
5bf234e0e451 redefine methods flag
tz
parents: 662
diff changeset
  1356
744
20cbba6d7e96 oops - no #redefineMethods found
tz
parents: 742
diff changeset
  1357
    self class redefineAspectMethods ifTrue:[
2195
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
  1358
        redefCondition := [:cls :sel | (cls includesSelector:sel) not].
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
  1359
        redefMessage := ' skipped - already implemented in the class'.
698
5bf234e0e451 redefine methods flag
tz
parents: 662
diff changeset
  1360
    ] ifFalse:[
2195
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
  1361
        redefCondition := [:cls :sel | (cls canUnderstand:sel) not].
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
  1362
        redefMessage := ' skipped - already implemented in the class (or superclass)'.
1696
0cb66a26b156 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1683
diff changeset
  1363
    ].
0cb66a26b156 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1683
diff changeset
  1364
0cb66a26b156 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1683
diff changeset
  1365
    realSelectors do:[:aSelector|
2195
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
  1366
        (redefCondition value:aClass value:aSelector) ifTrue:[
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
  1367
            aBlock value:aSelector asSymbol
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
  1368
        ] ifFalse:[
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
  1369
            Transcript showCR:('#' , aSelector , redefMessage)
bb6de5f8fd03 Take care of true or false as pseudo-aspect-selectors
Stefan Vogel <sv@exept.de>
parents: 2191
diff changeset
  1370
        ]
698
5bf234e0e451 redefine methods flag
tz
parents: 662
diff changeset
  1371
    ]
376
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1372
!
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1373
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1374
generateHookMethodFor:selectorSpec comment:commentWhen note:noteOrNil defaultCode:defaultCode inClass:targetClass
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1375
    ^ ('!!' , targetClass name , ' methodsFor:''hooks''!!\\' ,
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1376
      selectorSpec , '\' ,
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1377
      '    "automatically generated by UIPainter ..."\\' ,
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1378
      '    "*** the code here does nothing. It is invoked when"\' ,
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1379
      '    "*** ' , commentWhen , '"\' ,
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1380
      '    "*** Please change as required and accept in the browser."\' ,
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1381
      '\' ,
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1382
      '    "specific code to be added below ..."\' ,
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1383
      '    "' , (noteOrNil ? '') , '"\' ,
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1384
      '\' ,
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1385
      (defaultCode ? '^ self.') ,
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1386
      '!! !!\\') withCRs
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1387
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1388
    "Modified: / 25.10.1997 / 19:22:17 / cg"
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1389
    "Created: / 31.10.1997 / 17:31:53 / cg"
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1390
!
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1391
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1392
generateHookMethods
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1393
    "generate hook methods
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1394
     - but do not overwrite existing ones.
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1395
     Return a string ready to compile into the application class."
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1396
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1397
    |cls|
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1398
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1399
    cls := self targetClass.
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1400
    cls isNil ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1401
	^ nil
376
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1402
    ].
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1403
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1404
    ^ self generateHookMethodsInClass:cls.
376
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1405
!
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1406
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1407
generateHookMethodsInClass:targetClass
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1408
    |code|
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1409
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1410
    code := ''.
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1411
1554
d5e4612bf7cf implements -> includesSelector
Claus Gittinger <cg@exept.de>
parents: 1543
diff changeset
  1412
    (targetClass includesSelector:#postBuildWith:) ifFalse:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1413
	code := code
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1414
		, (self
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1415
		    generateHookMethodFor:'postBuildWith:aBuilder'
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1416
		    comment:'the widgets have been built, but before the view is opened'
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1417
		    note:'or after the super send'
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1418
		    defaultCode:'    super postBuildWith:aBuilder'
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1419
		    inClass:targetClass)
376
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1420
    ].
1554
d5e4612bf7cf implements -> includesSelector
Claus Gittinger <cg@exept.de>
parents: 1543
diff changeset
  1421
    (targetClass includesSelector:#postOpenWith:) ifFalse:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1422
	code := code
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1423
		, (self
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1424
		    generateHookMethodFor:'postOpenWith:aBuilder'
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1425
		    comment:'the topView has been opened, but before events are dispatched for it'
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1426
		    note:'or after the super send'
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1427
		    defaultCode:'    super postOpenWith:aBuilder'
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1428
		    inClass:targetClass)
376
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1429
    ].
1554
d5e4612bf7cf implements -> includesSelector
Claus Gittinger <cg@exept.de>
parents: 1543
diff changeset
  1430
    (targetClass includesSelector:#closeRequest) ifFalse:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1431
	code := code
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1432
		, (self
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1433
		    generateHookMethodFor:'closeRequest'
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1434
		    comment:'the topView has been asked to close'
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1435
		    note:'return without the ''super closeRequest'' to stay open'
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1436
		    defaultCode:'    ^super closeRequest'
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1437
		    inClass:targetClass)
376
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1438
    ].
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1439
    ^ code
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1440
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1441
    "Modified: / 31.10.1997 / 17:30:34 / cg"
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  1442
    "Created: / 31.10.1997 / 17:32:49 / cg"
316
053e2d3089b7 support of menu performer
ca
parents: 315
diff changeset
  1443
!
053e2d3089b7 support of menu performer
ca
parents: 315
diff changeset
  1444
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1445
generateMenuMethodFor:menuSel inClass:targetClass
1805
cf1a9d636bf7 category and comment flags now in Userprefs
Claus Gittinger <cg@exept.de>
parents: 1785
diff changeset
  1446
    |selector args showIt code alreadyInSuperclass numArgs method category|
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1447
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1448
    selector := menuSel asSymbol.
1805
cf1a9d636bf7 category and comment flags now in Userprefs
Claus Gittinger <cg@exept.de>
parents: 1785
diff changeset
  1449
    category := UserPreferences current categoryForMenuActionsMethods.
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1450
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1451
    alreadyInSuperclass := targetClass superclass canUnderstand:selector.
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1452
1805
cf1a9d636bf7 category and comment flags now in Userprefs
Claus Gittinger <cg@exept.de>
parents: 1785
diff changeset
  1453
    code := '!!' , targetClass name , ' methodsFor:''' , category , '''!!\\'.
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1454
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1455
    selector = 'openAboutThisApplication' ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1456
	code := code ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1457
		'openAboutThisApplication\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1458
		'    "opens an about box for this application."\\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1459
		'    "automatically generated by UIPainter ..."\\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1460
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1461
		'    |rev box myClass clsRev image msg|\\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1462
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1463
		'    rev := ''''.\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1464
		'    myClass := self class.\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1465
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1466
		'    (clsRev := myClass revision) notNil ifTrue:[\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1467
		'       rev := ''  (rev: '', clsRev printString, '')''].\\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1468
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1469
		'    msg := Character cr asString , myClass name asBoldText, rev.\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1470
		'    msg := (msg , ''\\*** add more info here ***\\'') withCRs.\\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1471
		'    box := AboutBox title:msg.\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1472
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1473
		'    "/ *** add a #defaultIcon method in the class\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1474
		'    "/ *** and uncomment the following line:\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1475
		'    "/ image := self class defaultIcon.\\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1476
		'    image notNil ifTrue:[\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1477
		'        box image:image\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1478
		'    ].\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1479
		'    box   label:(resources string:''About %1'' with:myClass name).\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1480
		'    box   autoHideAfter:10 with:[].\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1481
		'    box   showAtPointer.\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1482
		'!! !!\\'.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1483
	^ code withCRs
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1484
    ].
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1485
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1486
    selector = 'menuOpen' ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1487
	code := code ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1488
		'menuOpen\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1489
		'    "automatically generated by UIPainter ..."\\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1490
		'    "*** the code below opens a dialog for file selection"\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1491
		'    "*** and invokes the #doOpen: method with the selected file."\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1492
		'    "*** Please change as required and accept in the browser."\\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1493
		'    |file|\\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1494
		'    file :=\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1495
		'        (FileSelectionBrowser\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1496
		'            request: ''Open''\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1497
		'            fileName: ''''\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1498
		'            "/ inDirectory: lastOpenDirectory\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1499
		'            withFileFilters: #(''*'')).\\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1500
		'    file notNil ifTrue:[\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1501
		'       "/ lastOpenDirectory := file asFilename directory.\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1502
		'       self doOpen:file\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1503
		'    ]\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1504
		'!! !!\'.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1505
	^ code withCRs
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1506
    ].
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1507
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1508
    numArgs := selector numArgs.
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1509
    method  := selector.
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1510
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1511
    numArgs == 1 ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1512
	args := 'anArgument'.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1513
	showIt := ''' , anArgument printString , '' ...''.\'.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1514
    ] ifFalse:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1515
	args := ''.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1516
	showIt := ' ...''.\'.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1517
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1518
	numArgs ~~ 0 ifTrue:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1519
	    method := ''.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1520
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1521
	    selector keywords keysAndValuesDo:[:i :key|
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1522
		method := method, key, 'arg', i printString, ' '
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1523
	    ]
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1524
	]
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1525
    ].
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1526
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1527
    code := code ,
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1528
		method , args , '\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1529
		'    "automatically generated by UIPainter ..."\\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1530
		'    "*** the code below performs no action"\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1531
		'    "*** (except for some feedback on the Transcript)"\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1532
		'    "*** Please change as required and accept in the browser."\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1533
		'\' .
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1534
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1535
    alreadyInSuperclass ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1536
	code := code ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1537
		    '    "action for ' , selector , ' is already provided in a superclass."\' ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1538
		    '    "It may be redefined here ..."\\'.
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1539
    ] ifFalse:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1540
	code := code ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1541
		    '    "action to be added ..."\\'.
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1542
    ].
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1543
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1544
    code := code ,
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1545
		'    Transcript showCR:self class name, '': '.
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1546
    alreadyInSuperclass ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1547
	code := code , 'inherited '.
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1548
    ].
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1549
    code := code , 'menu action for ' , selector , showIt.
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1550
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1551
    alreadyInSuperclass ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1552
	code := code ,
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1553
			'    super ' , selector , args , '.\'.
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1554
    ].
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1555
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1556
    code := code ,
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1557
		'!! !!\\'.
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1558
    ^ code withCRs
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1559
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1560
    "Created: / 23.8.1998 / 16:46:51 / cg"
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1561
    "Modified: / 23.8.1998 / 18:13:05 / cg"
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1562
!
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1563
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1564
generateMenuMethods
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1565
    "generate menu methods
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1566
     - but do not overwrite existing ones.
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1567
     Return a string ready to compile into the application class."
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1568
1069
7196ca547f5d code cleanup
Claus Gittinger <cg@exept.de>
parents: 1060
diff changeset
  1569
    |cls code menuSelector thisCode
7196ca547f5d code cleanup
Claus Gittinger <cg@exept.de>
parents: 1060
diff changeset
  1570
     definedMethodSelectors
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1571
     spec specArray fullSpec winSpec menuSpec|
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1572
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1573
    cls := self targetClass.
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1574
    cls isNil ifTrue:[
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1575
        ^ nil
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1576
    ].
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1577
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1578
    spec := treeView generateFullSpecForComponents:#() named:nil.
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1579
    specArray := spec literalArrayEncoding.
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1580
    fullSpec := specArray decodeAsLiteralArray.
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1581
    winSpec := fullSpec window.
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1582
    menuSelector := winSpec menu.
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1583
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1584
    (menuSelector notNil
1069
7196ca547f5d code cleanup
Claus Gittinger <cg@exept.de>
parents: 1060
diff changeset
  1585
    and:[ (cls respondsTo:menuSelector) ]) ifFalse:[
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1586
        self warn:'No menu defined (yet)'.
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1587
        ^ nil.
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1588
    ].
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1589
    menuSpec := cls perform:menuSelector.
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1590
    menuSpec := menuSpec decodeAsLiteralArray.
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1591
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1592
    definedMethodSelectors := IdentitySet new.
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1593
    code := ''.
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1594
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1595
    menuSpec allItemsDo:[:item |
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1596
        |sel|
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1597
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1598
        (sel := item value) notNil ifTrue:[
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1599
            (definedMethodSelectors includes:sel) ifFalse:[
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1600
                self generateCodeFrom:(Array with:sel) in:cls do:[:aSel|
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1601
                    thisCode := (self generateMenuMethodFor:aSel inClass:cls).
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1602
                    code := code, thisCode.
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1603
                ].
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1604
                definedMethodSelectors add:sel.
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1605
            ].
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1606
        ]
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1607
    ].
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1608
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1609
    (definedMethodSelectors includes:#menuOpen) ifTrue:[
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1610
        self generateCodeFrom:(Array with:#doOpen:) in:cls do:[:aSel|
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1611
            thisCode := (self generateMenuMethodFor:aSel inClass:cls).
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1612
            code := code, thisCode.
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1613
        ].
965
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1614
    ].
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1615
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1616
    ^ code
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1617
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1618
    "Created: / 23.8.1998 / 16:12:09 / cg"
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1619
    "Modified: / 23.8.1998 / 18:12:23 / cg"
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1620
!
4f786b46a569 added menu-action code generation
Claus Gittinger <cg@exept.de>
parents: 925
diff changeset
  1621
188
8091a35bccf1 generateValueMethodFor:aspect spec:protoSpec inClass:targetClass
ca
parents: 180
diff changeset
  1622
generateValueMethodFor:aspect spec:protoSpec inClass:targetClass
8091a35bccf1 generateValueMethodFor:aspect spec:protoSpec inClass:targetClass
ca
parents: 180
diff changeset
  1623
    ^ ('!!' , targetClass name , ' methodsFor:''values''!!\\' ,
8091a35bccf1 generateValueMethodFor:aspect spec:protoSpec inClass:targetClass
ca
parents: 180
diff changeset
  1624
      aspect , '\' ,
352
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
  1625
      '    "automatically generated by UIPainter ..."\\' ,
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
  1626
      '    "*** the code below returns a default value when invoked."\' ,
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
  1627
      '    "*** (which may not be the one you wanted)"\' ,
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
  1628
      '    "*** Please change as required and accept in the browser."\' ,
188
8091a35bccf1 generateValueMethodFor:aspect spec:protoSpec inClass:targetClass
ca
parents: 180
diff changeset
  1629
      '\' ,
8091a35bccf1 generateValueMethodFor:aspect spec:protoSpec inClass:targetClass
ca
parents: 180
diff changeset
  1630
      '    "value to be added below ..."\' ,
8091a35bccf1 generateValueMethodFor:aspect spec:protoSpec inClass:targetClass
ca
parents: 180
diff changeset
  1631
      '    Transcript showCR:self class name , '': no value yet for ' , aspect , ' ...''.\' ,
8091a35bccf1 generateValueMethodFor:aspect spec:protoSpec inClass:targetClass
ca
parents: 180
diff changeset
  1632
      '\' ,
8091a35bccf1 generateValueMethodFor:aspect spec:protoSpec inClass:targetClass
ca
parents: 180
diff changeset
  1633
      '^ nil.' ,
8091a35bccf1 generateValueMethodFor:aspect spec:protoSpec inClass:targetClass
ca
parents: 180
diff changeset
  1634
      '!! !!\\') withCRs
8091a35bccf1 generateValueMethodFor:aspect spec:protoSpec inClass:targetClass
ca
parents: 180
diff changeset
  1635
352
088174fc1e71 support for constant lists;
Claus Gittinger <cg@exept.de>
parents: 335
diff changeset
  1636
    "Modified: / 25.10.1997 / 19:22:17 / cg"
188
8091a35bccf1 generateValueMethodFor:aspect spec:protoSpec inClass:targetClass
ca
parents: 180
diff changeset
  1637
!
8091a35bccf1 generateValueMethodFor:aspect spec:protoSpec inClass:targetClass
ca
parents: 180
diff changeset
  1638
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1639
generateWindowSpec
3038
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  1640
    |spec addToSpec specsAlready|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1641
310
a68c182d050f support of scrollers and menu for the canvas
ca
parents: 288
diff changeset
  1642
    spec := OrderedCollection new.
3038
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  1643
    specsAlready := IdentitySet new.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1644
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1645
    addToSpec :=
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1646
        [:aView|
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1647
            |vSpec|
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1648
            "/ care for wrapped views ...
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1649
            vSpec := self fullSpecFor:aView.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1650
            vSpec isNil ifTrue:[
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1651
                aView subViews size == 1 ifTrue:[
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1652
                    vSpec := self fullSpecFor:(aView subViews first).
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1653
                ]
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1654
            ].
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1655
            vSpec isNil ifTrue:[
2505
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  1656
                (Dialog 
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  1657
                    confirm:('Oops - could not create spec for view: %1\\Continue ?' bindWith:aView printString) withCRs
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  1658
                    noLabel:'Abort')
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  1659
                ifFalse:[
3067
4fc07457aef3 AbortSignal -> AbortOperationRequest
Stefan Vogel <sv@exept.de>
parents: 3055
diff changeset
  1660
                    AbortOperationRequest raise
2505
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  1661
                ].
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1662
            ].
3038
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  1663
            (specsAlready includes:vSpec) ifTrue:[self halt].
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  1664
            specsAlready add:vSpec.
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1665
            spec add:vSpec
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1666
        ].
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1667
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1668
    self subViews do:addToSpec.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  1669
    self components do:addToSpec.
1058
243d945b1daf name the (full-)spec
tm
parents: 1050
diff changeset
  1670
    spec := treeView generateFullSpecForComponents:spec named:methodName.
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1671
    ^ spec
3038
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  1672
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  1673
    "Modified: / 30-07-2013 / 09:13:13 / cg"
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1674
!
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1675
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1676
generateWindowSpecMethodSource
3031
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  1677
    ^ self 
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  1678
        generateWindowSpecMethodSourceFor:(self generateWindowSpec) 
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  1679
        class:className 
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  1680
        selector:methodName
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  1681
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  1682
    "Modified: / 5.9.1995 / 21:01:35 / claus"
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  1683
    "Modified: / 15.10.1998 / 11:29:53 / cg"
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  1684
!
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  1685
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  1686
generateWindowSpecMethodSourceFor:spec class:className selector:methodName
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  1687
    |specArray str code category cls mthd specCode|
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  1688
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1689
    specArray := spec literalArrayEncoding.
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1690
310
a68c182d050f support of scrollers and menu for the canvas
ca
parents: 288
diff changeset
  1691
    str  := WriteStream on:String new.
3031
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  1692
    UISpecification prettyPrintSpecArray:specArray on:str indent:4.
464
Claus Gittinger <cg@exept.de>
parents: 458
diff changeset
  1693
    specCode := str contents.
457
0b39d43d4324 care for exclas in spec-code
Claus Gittinger <cg@exept.de>
parents: 445
diff changeset
  1694
0b39d43d4324 care for exclas in spec-code
Claus Gittinger <cg@exept.de>
parents: 445
diff changeset
  1695
    (specCode includes:$!!) ifTrue:[
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1696
        "/ oops - must be chunk format ...
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1697
        str  := WriteStream on:String new.
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1698
        str nextPutAllAsChunk:specCode.
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1699
        specCode := str contents.
457
0b39d43d4324 care for exclas in spec-code
Claus Gittinger <cg@exept.de>
parents: 445
diff changeset
  1700
    ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1701
178
fb8451053c96 keep windowSpec methods category if it already exists
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
  1702
    "/ if that method already exists, do not overwrite the category
fb8451053c96 keep windowSpec methods category if it already exists
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
  1703
fb8451053c96 keep windowSpec methods category if it already exists
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
  1704
    category := 'interface specs'.
330
ca
parents: 327
diff changeset
  1705
    cls := self resolveName:className.
ca
parents: 327
diff changeset
  1706
ca
parents: 327
diff changeset
  1707
    cls notNil ifTrue:[
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1708
        (mthd := cls class compiledMethodAt:methodName asSymbol) notNil ifTrue:[
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1709
            category := mthd category.
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1710
        ]
178
fb8451053c96 keep windowSpec methods category if it already exists
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
  1711
    ].
fb8451053c96 keep windowSpec methods category if it already exists
Claus Gittinger <cg@exept.de>
parents: 175
diff changeset
  1712
238
882be7e03af4 renamed claus instVar (;-)
Claus Gittinger <cg@exept.de>
parents: 231
diff changeset
  1713
    code := '!!'
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1714
            , className , ' class methodsFor:' , category storeString
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1715
            , '!!' , '\\'
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1716
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1717
            , methodName , '\'
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1718
            , ((ResourceSpecEditor codeGenerationCommentForClass: UIPainter) replChar:$!! withString:'!!!!')
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1719
            , '\\    "\'
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1720
            , ('     UIPainter new openOnClass:' , className , ' andSelector:#' , methodName , '\').
1013
c6428ebd2f0d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 995
diff changeset
  1721
1050
355a8ff451b6 care for as-yet-unspecified class in show-spec menu item.
Claus Gittinger <cg@exept.de>
parents: 1039
diff changeset
  1722
    (cls notNil and:[cls isSubclassOf:ApplicationModel]) ifTrue:[
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1723
        code := code
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1724
            , ('     ' , className , ' new openInterface:#' , methodName , '\').
1013
c6428ebd2f0d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 995
diff changeset
  1725
    ].
c6428ebd2f0d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 995
diff changeset
  1726
c6428ebd2f0d checkin from browser
Claus Gittinger <cg@exept.de>
parents: 995
diff changeset
  1727
    code := code
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1728
            ,(methodName = 'windowSpec'
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1729
                ifTrue:['     ' , className , ' open\'] ifFalse: [''])
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1730
            , '    "\'.
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1731
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1732
    code := code
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1733
            , '\'
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1734
            , '    <resource: #canvas>\\'
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1735
            , '    ^ ' , specCode
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1736
            , '\'
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1737
            , '!! !!'
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1738
            , '\\'.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1739
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1740
    ^ code withCRs
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1741
!
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1742
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1743
listOfAspects
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1744
    |cls aspects|
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1745
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1746
    listOfAspectsHolder notNil ifTrue:[
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1747
        ^ listOfAspectsHolder value
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1748
    ].
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  1749
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1750
    aspects := IdentitySet new.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1751
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1752
    cls := self targetClass.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1753
    cls notNil ifTrue:[
2265
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  1754
        cls withAllSuperclassesDo:[:cls |
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  1755
            cls methodsDo:[:m |
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  1756
                ((m resources ? #()) includesAny:#(uiAspect)) ifTrue:[
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  1757
                    aspects add:m selector
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  1758
                ].                  
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  1759
            ]
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1760
        ]
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1761
    ].
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1762
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1763
    treeView propertiesDo:[:aProp|
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1764
        |modelSelector|
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1765
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1766
        (modelSelector := aProp model) notNil ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1767
            aspects add:modelSelector asSymbol
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1768
        ].
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1769
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1770
"/        aspects addAll:aProp spec actionSelectors.
2250
e65b8bf6224b care for non-symbolic aspects (false)
Claus Gittinger <cg@exept.de>
parents: 2248
diff changeset
  1771
e65b8bf6224b care for non-symbolic aspects (false)
Claus Gittinger <cg@exept.de>
parents: 2248
diff changeset
  1772
        aspects addAll:(aProp spec valueSelectors select:[:a | a isString or:[a isSymbol]]).
e65b8bf6224b care for non-symbolic aspects (false)
Claus Gittinger <cg@exept.de>
parents: 2248
diff changeset
  1773
        aspects addAll:(aProp spec aspectSelectors select:[:a | a isString or:[a isSymbol]]).
2244
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1774
    ].
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1775
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1776
    ^ aspects asOrderedCollection sort.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1777
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1778
    "Created: / 12-01-2008 / 19:24:45 / cg"
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1779
!
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1780
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1781
listOfCallbacks
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1782
    |cls aspects|
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1783
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1784
    aspects := IdentitySet new.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1785
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1786
    cls := self targetClass.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1787
    cls notNil ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1788
        cls methodsDo:[:m |
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1789
            ((m resources ? #()) includesAny:#(uiCallback)) ifTrue:[
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1790
                aspects add:m selector
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1791
            ].                  
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1792
        ]
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1793
    ].
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1794
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1795
    treeView propertiesDo:[:aProp|
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1796
        |modelSelector|
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1797
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1798
        aspects addAll:aProp spec actionSelectors.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1799
"/        aspects addAll:aProp spec valueSelectors.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1800
"/        aspects addAll:aProp spec aspectSelectors.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1801
    ].
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1802
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1803
    ^ aspects asOrderedCollection sort.
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1804
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1805
    "Created: / 12-01-2008 / 19:25:19 / cg"
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1806
!
580cac31c444 changed #initialize
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  1807
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1808
targetClass
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1809
    |cls|
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1810
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1811
    className isNil ifTrue:[
2248
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
  1812
        self warn:'No TargetClass defined !!'.
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
  1813
        ^ nil
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1814
    ].
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1815
    (cls := self resolveName:className) isNil ifTrue:[
2248
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
  1816
"/        self warn:('Class ', className asString, ' does not exist !!').
720b0784c6f2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2244
diff changeset
  1817
        ^ nil
1683
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1818
    ].
f95658463570 added selective aspect method generation.
Claus Gittinger <cg@exept.de>
parents: 1671
diff changeset
  1819
    ^ cls.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1820
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1821
754
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1822
!UIPainterView methodsFor:'grid manipulation'!
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1823
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1824
newGrid
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1825
    "define a new grid - this is a private helper which has to be
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1826
     called after any change in the grid. It (re)creates the gridPixmap,
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1827
     clears the view and redraws all visible objects."
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1828
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1829
    |defaultViewBackground|
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1830
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1831
    gridPixmap := nil.
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1832
    defaultViewBackground := self class defaultViewBackgroundColor.
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1833
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1834
    shown ifTrue:[
3083
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
  1835
        self viewBackground: (defaultViewBackground isColor
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
  1836
            ifTrue: [defaultViewBackground]
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
  1837
            ifFalse:[self blackColor]).
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
  1838
        self clear.
754
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1839
    ].
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1840
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1841
    gridShown ifTrue:[
3083
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
  1842
        self defineGrid.
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
  1843
        gridPixmap colorMap: (defaultViewBackground isColor
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
  1844
            ifTrue: [Array with:defaultViewBackground with:Color darkGray]
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
  1845
            ifFalse:[Array with:self whiteColor with:self blackColor]).
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
  1846
        self viewBackground:gridPixmap.
754
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1847
    ].
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1848
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1849
    self invalidate
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1850
! !
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  1851
1832
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1852
!UIPainterView methodsFor:'group & ungroup'!
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1853
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1854
group
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1855
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1856
    self groupSelectionWithLayout: false
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1857
!
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1858
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1859
groupSelectionWithLayout: withLayout
2392
ca
parents: 2390
diff changeset
  1860
    |minViews specs spec menu newView target keepLyt keepPos rectangle|
ca
parents: 2390
diff changeset
  1861
ca
parents: 2390
diff changeset
  1862
    self canGroup ifFalse:[^ self ].
ca
parents: 2390
diff changeset
  1863
ca
parents: 2390
diff changeset
  1864
    keepLyt := withLayout.
ca
parents: 2390
diff changeset
  1865
    keepPos := true.
1832
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1866
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1867
    menu := Menu new.
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1868
    menu receiver: self.
3021
3cdebdf0071d class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2997
diff changeset
  1869
    menu addItem:(MenuItem label:'Box' itemValue:[spec := ViewSpec new]).
3cdebdf0071d class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2997
diff changeset
  1870
    menu addItem:(MenuItem label:'TBox' itemValue:[spec := TBoxSpec new]).
3cdebdf0071d class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2997
diff changeset
  1871
    menu addItem:(MenuItem label:'FramedBox' itemValue:[spec := FramedBoxSpec new]).
3cdebdf0071d class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2997
diff changeset
  1872
3cdebdf0071d class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2997
diff changeset
  1873
    menu addItem:(MenuItem 
3cdebdf0071d class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2997
diff changeset
  1874
                    label:'HorizontalPanel'
3cdebdf0071d class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2997
diff changeset
  1875
                    itemValue:[
2392
ca
parents: 2390
diff changeset
  1876
                        keepLyt := keepPos := false.
ca
parents: 2390
diff changeset
  1877
                        spec := HorizontalPanelViewSpec new.
ca
parents: 2390
diff changeset
  1878
                        spec verticalLayout: #fit.
ca
parents: 2390
diff changeset
  1879
                        spec horizontalLayout: #leftSpace.
ca
parents: 2390
diff changeset
  1880
                    ]).
3021
3cdebdf0071d class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2997
diff changeset
  1881
    menu addItem:(MenuItem 
3cdebdf0071d class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2997
diff changeset
  1882
                    label:'VerticalPanel'
3cdebdf0071d class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2997
diff changeset
  1883
                    itemValue:[
2392
ca
parents: 2390
diff changeset
  1884
                        keepLyt := keepPos := false.
ca
parents: 2390
diff changeset
  1885
                        spec := VerticalPanelViewSpec new.
ca
parents: 2390
diff changeset
  1886
                        spec verticalLayout: #topSpace.
ca
parents: 2390
diff changeset
  1887
                        spec horizontalLayout: #fit.
ca
parents: 2390
diff changeset
  1888
                    ]).
ca
parents: 2390
diff changeset
  1889
ca
parents: 2390
diff changeset
  1890
    menu startUp.
ca
parents: 2390
diff changeset
  1891
    spec isNil ifTrue:[^ self].
ca
parents: 2390
diff changeset
  1892
ca
parents: 2390
diff changeset
  1893
    minViews := self minClosedViewSetFor:(self selection).
ca
parents: 2390
diff changeset
  1894
    minViews size > 1 ifFalse:[^ self].
ca
parents: 2390
diff changeset
  1895
ca
parents: 2390
diff changeset
  1896
    specs     := OrderedCollection new.
ca
parents: 2390
diff changeset
  1897
    rectangle := minViews first frame copy.
ca
parents: 2390
diff changeset
  1898
ca
parents: 2390
diff changeset
  1899
    minViews do:[:eachView|
ca
parents: 2390
diff changeset
  1900
        specs add:(self fullSpecWithAbsolutePositionFor:eachView).
ca
parents: 2390
diff changeset
  1901
        rectangle := rectangle quickMerge:(eachView frame).
1832
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1902
    ].
2392
ca
parents: 2390
diff changeset
  1903
    spec layout:rectangle.
ca
parents: 2390
diff changeset
  1904
ca
parents: 2390
diff changeset
  1905
    target := self findContainerOfView:(minViews first).
ca
parents: 2390
diff changeset
  1906
ca
parents: 2390
diff changeset
  1907
    self withinTransaction:#group objects:(Array with:target) do:[ |widgets|
ca
parents: 2390
diff changeset
  1908
        self deleteSelectionBuffered:false.
ca
parents: 2390
diff changeset
  1909
ca
parents: 2390
diff changeset
  1910
        spec otherAttributeAt:#uiPainterAttributes put:(Dictionary new
ca
parents: 2390
diff changeset
  1911
                at:#origin put:(rectangle origin);
ca
parents: 2390
diff changeset
  1912
                at:#extent put:(rectangle extent);
ca
parents: 2390
diff changeset
  1913
                at:#absOrigin put:(rectangle origin);
ca
parents: 2390
diff changeset
  1914
                yourself).
ca
parents: 2390
diff changeset
  1915
ca
parents: 2390
diff changeset
  1916
        newView := self pasteSpecifications:(Array with:spec) 
ca
parents: 2390
diff changeset
  1917
                    into:target
ca
parents: 2390
diff changeset
  1918
                    keepLayout:true
ca
parents: 2390
diff changeset
  1919
                    keepPosition:true
ca
parents: 2390
diff changeset
  1920
                    at:#keep.
ca
parents: 2390
diff changeset
  1921
ca
parents: 2390
diff changeset
  1922
        widgets := self pasteSpecifications:specs
ca
parents: 2390
diff changeset
  1923
                into:newView
ca
parents: 2390
diff changeset
  1924
                keepLayout:keepLyt
ca
parents: 2390
diff changeset
  1925
                keepPosition:keepPos
ca
parents: 2390
diff changeset
  1926
                at:nil.
1832
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1927
    ].
2392
ca
parents: 2390
diff changeset
  1928
    self select:newView.
1832
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1929
!
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1930
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1931
groupWithLayout
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1932
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1933
    self groupSelectionWithLayout: true
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1934
!
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1935
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1936
ungroup
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1937
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1938
    self ungroupSelectionWithLayout: false
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1939
!
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1940
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1941
ungroupSelectionWithLayout: withLayout
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1942
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1943
    | canvas cS views specs frame view layout superView|
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1944
2392
ca
parents: 2390
diff changeset
  1945
    self canUngroup ifFalse:[^ self ].
ca
parents: 2390
diff changeset
  1946
1832
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1947
    canvas := self painter.
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1948
    cS := canvas getSelectedViewsAndSpecs.
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1949
    cS isNil ifTrue:[^self].
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1950
    views := cS first first subViews copy.
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1951
    superView := cS first first superView.
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1952
    cS last first component isNil ifTrue:[^self].
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1953
    cS last first component collection isEmpty ifTrue:[^self].
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1954
    specs := cS last first component collection copy.
1832
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1955
    frame := cS first first frame.
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1956
    canvas deleteSelection.
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1957
    withLayout ifFalse:[
2392
ca
parents: 2390
diff changeset
  1958
        1 to: specs size do:[:i|
ca
parents: 2390
diff changeset
  1959
            view := views at: i.
ca
parents: 2390
diff changeset
  1960
            layout :=  LayoutFrame leftFraction:0.0 offset: (view origin x + frame origin x)
ca
parents: 2390
diff changeset
  1961
                                  rightFraction:0.0 offset: (view corner x + frame origin x + 1)
ca
parents: 2390
diff changeset
  1962
                                    topFraction:0.0 offset: (view origin y + frame origin y )
ca
parents: 2390
diff changeset
  1963
                                 bottomFraction:0.0 offset: (view corner y + frame origin y + 1).
ca
parents: 2390
diff changeset
  1964
            (specs at: i) layout: layout.
ca
parents: 2390
diff changeset
  1965
        ].
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  1966
    ].
1832
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1967
    canvas selection: superView.
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1968
    canvas pasteSpecifications:specs keepLayout:true.
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1969
    canvas selection: superView.
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1970
!
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1971
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1972
ungroupWithLayout
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1973
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1974
    self ungroupSelectionWithLayout: true
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1975
! !
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  1976
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1977
!UIPainterView methodsFor:'initialization'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1978
770
96f106b0a61e set color on device
ca
parents: 768
diff changeset
  1979
create
1959
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
  1980
    "colors on device"
fd6bf76e712a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1954
diff changeset
  1981
    
770
96f106b0a61e set color on device
ca
parents: 768
diff changeset
  1982
    super create.
3083
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
  1983
    handleColorBlack := handleColorBlack onDevice:self graphicsDevice.
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
  1984
    handleColorWhite := handleColorWhite onDevice:self graphicsDevice.
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
  1985
    handleMasterColor := handleMasterColor onDevice:self graphicsDevice.
770
96f106b0a61e set color on device
ca
parents: 768
diff changeset
  1986
!
96f106b0a61e set color on device
ca
parents: 768
diff changeset
  1987
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1988
initialize
62
0e8573b4329a so far so good ...
ca
parents: 60
diff changeset
  1989
    "setup attributes
0e8573b4329a so far so good ...
ca
parents: 60
diff changeset
  1990
    "
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  1991
    super initialize.
770
96f106b0a61e set color on device
ca
parents: 768
diff changeset
  1992
    superclassName    := 'ApplicationModel'.
96f106b0a61e set color on device
ca
parents: 768
diff changeset
  1993
    className         := 'NewApplication'.
96f106b0a61e set color on device
ca
parents: 768
diff changeset
  1994
    methodName        := 'windowSpec'.
96f106b0a61e set color on device
ca
parents: 768
diff changeset
  1995
    categoryName      := 'Applications'.
96f106b0a61e set color on device
ca
parents: 768
diff changeset
  1996
    HandCursor        := Cursor leftHand.
1467
b46624bb6994 use white handles, if the views background color is dark.
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
  1997
    handleColorBlack  := Color black.
b46624bb6994 use white handles, if the views background color is dark.
Claus Gittinger <cg@exept.de>
parents: 1450
diff changeset
  1998
    handleColorWhite  := Color white.
770
96f106b0a61e set color on device
ca
parents: 768
diff changeset
  1999
    handleMasterColor := Color red.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2000
712
bf8aa59e82b6 user friendly names
tz
parents: 708
diff changeset
  2001
    self backgroundColor: self class defaultViewBackgroundColor.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2002
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2003
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2004
setupFromSpec:specOrSpecArray
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2005
    |spec builder specWindow|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2006
784
9ae2b94658e5 wait cursor
tz
parents: 776
diff changeset
  2007
    Cursor wait showWhile: [
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2008
        self removeAll.
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2009
        specOrSpecArray notNil ifTrue:[
2526
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2010
            spec := UISpecification from:specOrSpecArray.
2197
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2011
        ].
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2012
        builder := UIBuilder new isEditing:true.
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2013
        "set applicationClass, in order that subspecifications may be resolved"
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2014
        className notNil ifTrue:[
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2015
            builder applicationClass:(self resolveName:className).
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2016
        ].
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2017
        spec notNil ifTrue:[
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2018
            specWindow := spec window.
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2019
        ].
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2020
        specWindow notNil ifTrue:[
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2021
            specWindow setupView:self topView for:builder.
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2022
            self addSpec:(spec component) builder:builder in:self.
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2023
        ].
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2024
        self realizeAllSubViews.
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2025
        specWindow notNil ifTrue:[
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2026
            treeView setAttributesFromWindowSpec:specWindow
873c7b960233 slightly refactored to allow for more redefinition in a subclass
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  2027
        ].
1671
493e0430518e no longer use InputView
ca
parents: 1664
diff changeset
  2028
    ].
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2029
!
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2030
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2031
treeView:aTreeView
361
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
  2032
    treeView := aTreeView.
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
  2033
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
  2034
    treeView delegate:(
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2035
	"/
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2036
	"/ I want to handle everything typed
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2037
	"/ in the treeView, except for Return and Cursor-keys
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2038
	"/
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2039
	KeyboardForwarder
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2040
	    toView:self
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2041
	    condition:nil
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2042
	    filter:[:k | (k isSymbol
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2043
			 and:[k ~~ #Return
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2044
			 and:[k ~~ #Tab
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2045
			 and:[(k startsWith:#Cursor) not]]])
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2046
		   ]
361
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
  2047
    )
6624bb5d9a1a configuration of grid parameters
ca
parents: 352
diff changeset
  2048
376
3023fc08ee35 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 361
diff changeset
  2049
    "Modified: / 31.10.1997 / 20:22:09 / cg"
60
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
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2052
!UIPainterView methodsFor:'menus'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2053
121
96d6feeeb049 middleButtonMen:
ca
parents: 119
diff changeset
  2054
showMiddleButtonMenu
2191
88d55c87942d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2180
diff changeset
  2055
    "show the middle button menu; this returns nil"
1635
116bf6f0ff62 can now specify if menu action is to be performed by
ca
parents: 1621
diff changeset
  2056
116bf6f0ff62 can now specify if menu action is to be performed by
ca
parents: 1621
diff changeset
  2057
    |m|
116bf6f0ff62 can now specify if menu action is to be performed by
ca
parents: 1621
diff changeset
  2058
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2059
    self enabled ifTrue:[
2191
88d55c87942d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2180
diff changeset
  2060
        m := MenuPanel fromSpec:(UIPainter menuEdit) receiver:self superView application.
88d55c87942d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2180
diff changeset
  2061
        self startUpMenu:m
111
ca
parents: 103
diff changeset
  2062
    ].
2191
88d55c87942d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2180
diff changeset
  2063
    ^ nil
88d55c87942d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2180
diff changeset
  2064
88d55c87942d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2180
diff changeset
  2065
    "Modified: / 31-10-2007 / 11:10:10 / cg"
60
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
1714
f57812a56d17 method category rename
Claus Gittinger <cg@exept.de>
parents: 1696
diff changeset
  2068
!UIPainterView methodsFor:'private-handles'!
754
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  2069
1832
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  2070
painter
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  2071
    ^ treeView canvas
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  2072
!
ba152306fbf5 group & ungroup
werner
parents: 1830
diff changeset
  2073
754
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  2074
showSelected:aComponent
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  2075
    "show object selected
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  2076
    "
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2077
    |wasClipped sel hInsideColor hOutsideColor bg|
754
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  2078
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  2079
    selectionHiddenLevel == 0 ifTrue:[
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2080
        sel := treeView selection.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2081
        (sel size > 1 and: [(treeView model list at: sel first) contents view == aComponent])
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2082
        ifTrue: [
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2083
            hInsideColor := handleMasterColor.
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2084
        ] ifFalse:[
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2085
            bg := aComponent viewBackground.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2086
            bg isColor ifTrue:[
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2087
                bg brightness < 0.5 ifTrue:[
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2088
                    hInsideColor := handleColorWhite
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2089
                ] ifFalse:[
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2090
                    hInsideColor := handleColorBlack
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2091
                ]
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2092
            ] ifFalse:[
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2093
                hInsideColor := handleColorBlack
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2094
            ]
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2095
        ].
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2096
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2097
        hInsideColor brightness < 0.5 ifTrue:[
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2098
            hOutsideColor := handleColorWhite
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2099
        ] ifFalse:[
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2100
            hOutsideColor := handleColorBlack
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2101
        ].
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2102
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2103
        (wasClipped := clipChildren) ifTrue:[
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2104
            self clippedByChildren:(clipChildren := false).
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2105
        ].
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2106
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2107
        self handlesOf:aComponent do:[:aRectangle :what| 
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2108
            |l t w h|
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2109
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2110
            l := aRectangle left.
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2111
            t := aRectangle top.
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2112
            w := aRectangle width.
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2113
            h := aRectangle height.
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2114
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2115
            self paint:hOutsideColor.
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2116
            self displayRectangleX:l y:t width:w height:h.
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2117
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2118
            self paint:hInsideColor.
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2119
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2120
            what == #view ifTrue:[
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2121
                self displayRectangleX:l+1 y:t+1 width:w-2 height:h-2
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2122
            ] ifFalse:[
2537
12e3b32befe4 handle changes
Claus Gittinger <cg@exept.de>
parents: 2526
diff changeset
  2123
                self fillRectangleX:l+1 y:t+1 width:w-2 height:h-2
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2124
            ]
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2125
        ].
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2126
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2127
        wasClipped ifTrue:[
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2128
            self clippedByChildren:(clipChildren := true).
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2129
        ]
754
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  2130
    ]
1543
bg
parents: 1520
diff changeset
  2131
bg
parents: 1520
diff changeset
  2132
    "Modified: / 6.12.2001 / 00:00:16 / cg"
754
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  2133
! !
04e802a6a920 color master selection in red + grid background colored
tz
parents: 744
diff changeset
  2134
335
9f048ededd7d resolveName:
ca
parents: 330
diff changeset
  2135
!UIPainterView methodsFor:'queries'!
9f048ededd7d resolveName:
ca
parents: 330
diff changeset
  2136
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  2137
isEditingSpecOnly
2583
5f737789adee changed #isEditingSpecOnly
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
  2138
    "/ should not be invoked
2421
2504941c00c2 leftOver halt.
Claus Gittinger <cg@exept.de>
parents: 2396
diff changeset
  2139
    self breakPoint:#ca.
2582
f34eb91780f4 changed #isEditingSpecOnly
Claus Gittinger <cg@exept.de>
parents: 2560
diff changeset
  2140
    ^ false.
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  2141
!
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  2142
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  2143
isNotEditingSpecOnly
2583
5f737789adee changed #isEditingSpecOnly
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
  2144
    "/ should not be invoked
2421
2504941c00c2 leftOver halt.
Claus Gittinger <cg@exept.de>
parents: 2396
diff changeset
  2145
    self breakPoint:#ca.
2583
5f737789adee changed #isEditingSpecOnly
Claus Gittinger <cg@exept.de>
parents: 2582
diff changeset
  2146
    ^ true.
2276
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  2147
!
485bda17023f more changes to allow for non-class/selector (i.e. spec-only) use
Claus Gittinger <cg@exept.de>
parents: 2265
diff changeset
  2148
335
9f048ededd7d resolveName:
ca
parents: 330
diff changeset
  2149
resolveName:aName
9f048ededd7d resolveName:
ca
parents: 330
diff changeset
  2150
    |appl|
9f048ededd7d resolveName:
ca
parents: 330
diff changeset
  2151
9f048ededd7d resolveName:
ca
parents: 330
diff changeset
  2152
    appl := self application.
9f048ededd7d resolveName:
ca
parents: 330
diff changeset
  2153
9f048ededd7d resolveName:
ca
parents: 330
diff changeset
  2154
    appl notNil ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2155
	^ appl resolveName:aName
335
9f048ededd7d resolveName:
ca
parents: 330
diff changeset
  2156
    ].
9f048ededd7d resolveName:
ca
parents: 330
diff changeset
  2157
    ^ Smalltalk resolveName:aName inClass:self class
9f048ededd7d resolveName:
ca
parents: 330
diff changeset
  2158
! !
9f048ededd7d resolveName:
ca
parents: 330
diff changeset
  2159
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2160
!UIPainterView methodsFor:'removing components'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2161
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2162
remove:anObject
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2163
    "remove anObject from the contents do redraw
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2164
    "
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2165
    anObject notNil ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2166
	treeView removeView:anObject.
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2167
    ]
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2168
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2169
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2170
removeAll
62
0e8573b4329a so far so good ...
ca
parents: 60
diff changeset
  2171
    "remove all objects and properties
0e8573b4329a so far so good ...
ca
parents: 60
diff changeset
  2172
    "
776
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
  2173
    self select:nil.
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
  2174
    treeView removeAll.
1df0525eeec9 reuse methods provided by the model
ca
parents: 770
diff changeset
  2175
    self removeUndoHistory.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2176
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2177
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2178
!UIPainterView methodsFor:'searching'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2179
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2180
findContainerOfView:aView
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2181
    "returns the super view assigned to a view
89
35c5711729c2 so far so good
ca
parents: 86
diff changeset
  2182
    "
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2183
    |p|
89
35c5711729c2 so far so good
ca
parents: 86
diff changeset
  2184
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2185
    (p := self propertyOfParentForView:aView) isNil ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2186
	^ self
89
35c5711729c2 so far so good
ca
parents: 86
diff changeset
  2187
    ].
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2188
    ^ p view
89
35c5711729c2 so far so good
ca
parents: 86
diff changeset
  2189
!
35c5711729c2 so far so good
ca
parents: 86
diff changeset
  2190
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2191
findObjectAt:aPoint
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2192
    |view prop|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2193
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2194
    view := super findObjectAt:aPoint.
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2195
    view isNil ifTrue:[^ nil].
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2196
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2197
    "/ stupid check, if I know about this view
1870
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
  2198
    prop := self propertyOfView:view.
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2199
    prop notNil ifTrue:[^ prop view].
2963
7df17046fc89 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2951
diff changeset
  2200
    self halt:'nil property'.
1870
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
  2201
    ^ nil
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2202
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2203
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2204
findViewWithId:aViewId
62
0e8573b4329a so far so good ...
ca
parents: 60
diff changeset
  2205
    "finds view assigned to identifier and returns the view or nil
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2206
    "
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2207
    |prop|
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2208
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2209
    prop := self propertyOfIdentifier:aViewId.
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2210
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2211
    prop notNil ifTrue:[^ prop view]
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2212
	       ifFalse:[^ nil]
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2213
!
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2214
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2215
propertyOfIdentifier:anId
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2216
    "returns property assigned to unique identifier
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2217
    "
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2218
    anId notNil ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2219
	^ treeView propertyDetect:[:p| p identifier == anId ]
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2220
    ].
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2221
    ^ nil
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2222
!
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2223
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2224
propertyOfName:aString
2231
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2225
    "returns the property for a given widgets name (name in tree)"
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2226
111
ca
parents: 103
diff changeset
  2227
    |name|
ca
parents: 103
diff changeset
  2228
ca
parents: 103
diff changeset
  2229
    aString isNil ifFalse:[
2231
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2230
        name := aString string withoutSeparators.
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2231
        ^ treeView propertyDetect:[:p| p name = name ].
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2232
    ].
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2233
    ^ nil
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2234
!
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2235
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2236
propertyOfParentForView:aSubView
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2237
    "returns the property of the parent or nil
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2238
    "
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2239
    |item|
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2240
1870
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
  2241
    (item := treeView detectItemCorespondingToView:aSubView) notNil ifTrue:[
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
  2242
        (item := item parent) notNil ifTrue:[^ item contents]
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2243
    ].
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2244
    ^ nil
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2245
!
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2246
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2247
propertyOfView:aView
1870
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
  2248
    "detect the property for the argument, a view. The property of the view or
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2249
     the first subview providing the properties is returned. If no property is detected
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2250
     nil is returned.
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2251
    "
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2252
    |item|
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2253
1870
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
  2254
    item := treeView detectItemCorespondingToView:aView.
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2255
    (item notNil and:[item parent notNil]) ifTrue:[
1870
771fcc38ecb8 set selection interface changed
ca
parents: 1869
diff changeset
  2256
        ^ item contents
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2257
    ].
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2258
    ^ nil
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2259
!
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2260
111
ca
parents: 103
diff changeset
  2261
uniqueNameFor:aSpecOrString
2231
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2262
    "generate and return a unique name for a specClass or an items name.
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2263
     (unique name in the tree)"
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2264
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2265
    |maxUsedIndex name nameLen|
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2266
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2267
    name := aSpecOrString isString 
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2268
                ifFalse:[aSpecOrString userFriendlyName]
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2269
                ifTrue:[aSpecOrString].
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2270
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2271
    nameLen := name size.
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2272
    maxUsedIndex := 0.
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2273
238
882be7e03af4 renamed claus instVar (;-)
Claus Gittinger <cg@exept.de>
parents: 231
diff changeset
  2274
    treeView propertiesDo:[:p|
2231
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2275
        |thisName|
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2276
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2277
        thisName := p name.
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2278
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2279
        (thisName size > nameLen and:[thisName startsWith:name]) ifTrue:[
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2280
            maxUsedIndex := maxUsedIndex max:(p extractNumberStartingAt:nameLen+1)
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2281
        ]
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2282
    ].
2231
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2283
    ^ name, (maxUsedIndex+1) printString.
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2284
!
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2285
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2286
uniqueNameOf:aView
111
ca
parents: 103
diff changeset
  2287
    |prop|
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2288
111
ca
parents: 103
diff changeset
  2289
    (prop := self propertyOfView:aView) notNil ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2290
	prop name isNil ifTrue:[
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2291
	    prop name:(self uniqueNameFor:(prop spec)).
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2292
	].
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2293
	^ prop name
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2294
    ].
111
ca
parents: 103
diff changeset
  2295
    ^ 'self'
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2296
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2297
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2298
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2299
!UIPainterView methodsFor:'selection basics'!
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2300
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2301
addToSelection:anObject
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2302
    "add an object to the selection
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2303
    "
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2304
    (self enabled and:[(self isSelected:anObject) not]) ifTrue:[
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2305
        selection isCollection ifFalse:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2306
            selection isNil ifTrue:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2307
                selection := anObject
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2308
            ] ifFalse:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2309
                selection := OrderedCollection with:selection with:anObject
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2310
            ]
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2311
        ] ifTrue:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2312
            "/ to enforce the change-message (value is identical to oldValue)
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2313
            selection isList ifTrue:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2314
                selection add:anObject
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2315
            ] ifFalse:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2316
                selection := selection asOrderedCollection.
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2317
                selection := selection copyWith:anObject
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2318
            ]
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2319
        ].
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2320
        self showSelected:anObject.
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2321
        treeView canvasSelectionAdd:anObject.
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2322
    ]
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2323
1347
c4046d0b638e care for multiSelect into a non-list;
Claus Gittinger <cg@exept.de>
parents: 1338
diff changeset
  2324
    "Modified: / 11.2.2000 / 01:39:05 / cg"
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2325
!
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2326
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2327
removeFromSelection:anObject
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2328
    "remove an object from the selection
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2329
    "
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2330
    (self isSelected:anObject) ifTrue:[
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2331
        self showUnselected:anObject.
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2332
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2333
        selection size > 1 ifTrue:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2334
            selection isList ifTrue:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2335
                selection remove:anObject ifAbsent:nil
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2336
            ] ifFalse:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2337
                "/ to enforce the change-message (value is identical to oldValue)
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2338
                selection := selection asOrderedCollection.
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2339
                selection := selection copyWithout:anObject
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2340
            ].
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2341
            self showSelection.
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2342
        ] ifFalse:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2343
            selection := nil
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2344
        ].
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2345
        treeView canvasSelectionRemove:anObject.
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2346
    ]
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2347
1347
c4046d0b638e care for multiSelect into a non-list;
Claus Gittinger <cg@exept.de>
parents: 1338
diff changeset
  2348
    "Modified: / 11.2.2000 / 01:41:11 / cg"
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2349
!
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2350
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2351
select:something
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2352
    "change selection to something
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2353
    "
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2354
    (self enabled and:[something ~= self selection]) ifTrue:[
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2355
        something isNil
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2356
            ifTrue: [treeView selection: (Array with: 1)]
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2357
            ifFalse:[treeView canvasSelection:something].
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2358
        self setSelection:something withRedraw:true
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2359
    ]
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2360
!
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2361
1830
78a5cf39dc0e nextUpInHier
werner
parents: 1805
diff changeset
  2362
selectNextUpInHierarchy
78a5cf39dc0e nextUpInHier
werner
parents: 1805
diff changeset
  2363
    | sel |
78a5cf39dc0e nextUpInHier
werner
parents: 1805
diff changeset
  2364
78a5cf39dc0e nextUpInHier
werner
parents: 1805
diff changeset
  2365
    (sel := self selection) isNil ifTrue:[^self].
78a5cf39dc0e nextUpInHier
werner
parents: 1805
diff changeset
  2366
    sel isCollection ifTrue:[
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2367
        sel := self selection first.
1830
78a5cf39dc0e nextUpInHier
werner
parents: 1805
diff changeset
  2368
    ].
78a5cf39dc0e nextUpInHier
werner
parents: 1805
diff changeset
  2369
    sel := sel superView.
78a5cf39dc0e nextUpInHier
werner
parents: 1805
diff changeset
  2370
    sel isNil ifTrue:[^self].
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2371
    treeView canvasSelection: sel.
1830
78a5cf39dc0e nextUpInHier
werner
parents: 1805
diff changeset
  2372
    self selection: sel.
78a5cf39dc0e nextUpInHier
werner
parents: 1805
diff changeset
  2373
!
78a5cf39dc0e nextUpInHier
werner
parents: 1805
diff changeset
  2374
2392
ca
parents: 2390
diff changeset
  2375
selectedNodes
ca
parents: 2390
diff changeset
  2376
    ^ treeView model selectedNodes
ca
parents: 2390
diff changeset
  2377
!
ca
parents: 2390
diff changeset
  2378
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2379
updateSelectionFromModel:aSelOrNil
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2380
    "update selection from a new selection
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2381
    "
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1402
diff changeset
  2382
    |list|
768
2ef5b8bed914 catch expose events when unselecting
ca
parents: 760
diff changeset
  2383
2180
0912680e1fa7 changed #updateSelectionFromModel:
ab
parents: 2116
diff changeset
  2384
    "/ do not return here if not shown - we NEED the correct selection
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2385
    selectionHiddenLevel == 0 ifTrue:[
2039
d91eaf783502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2024
diff changeset
  2386
        aSelOrNil size ~~ 0 ifTrue:[
d91eaf783502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2024
diff changeset
  2387
            list := OrderedCollection new.
d91eaf783502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2024
diff changeset
  2388
d91eaf783502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2024
diff changeset
  2389
            self selectionDo:[:el|
d91eaf783502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2024
diff changeset
  2390
                (aSelOrNil includes:el) ifFalse:[list add:el]
d91eaf783502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2024
diff changeset
  2391
            ].
2180
0912680e1fa7 changed #updateSelectionFromModel:
ab
parents: 2116
diff changeset
  2392
            self shown ifTrue:[self showUnselected:list].
2039
d91eaf783502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2024
diff changeset
  2393
        ] ifFalse:[
2180
0912680e1fa7 changed #updateSelectionFromModel:
ab
parents: 2116
diff changeset
  2394
            self shown ifTrue:[self hideSelection].
2039
d91eaf783502 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2024
diff changeset
  2395
        ]
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2396
    ].
2515
d77b8df4f65a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2509
diff changeset
  2397
    self repairDamage.
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2398
    self setSelection:aSelOrNil withRedraw:false.
2515
d77b8df4f65a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2509
diff changeset
  2399
    self showSelection.
223
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2400
! !
203460df426e change selection handling caused by new tree view
ca
parents: 219
diff changeset
  2401
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2402
!UIPainterView methodsFor:'specification'!
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2403
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2404
addSpec:aSpecification builder:aBuilder in:aFrame
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2405
    "build view and subviews from aSpecification into a frame. The top view
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2406
     is returned. The contained components of a spec are set to nil
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2407
    "
2390
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2408
    ^ self addSpec:aSpecification builder:aBuilder in:aFrame beforeIndex:nil.
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2409
!
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2410
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2411
addSpec:aSpecification builder:aBuilder in:aFrame beforeIndex:anIndexOrNil
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2412
    "build view and subviews from aSpecification into a frame. The top view
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2413
     is returned. The contained components of a spec are set to nil
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2414
    "
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2415
    |cls newView viewPosition subviewToRealize|
212
1836a16763cc oops again
Claus Gittinger <cg@exept.de>
parents: 211
diff changeset
  2416
330
ca
parents: 327
diff changeset
  2417
    cls := self resolveName:className.
ca
parents: 327
diff changeset
  2418
ca
parents: 327
diff changeset
  2419
    cls notNil ifTrue:[
2226
5917585724c6 comment
Claus Gittinger <cg@exept.de>
parents: 2221
diff changeset
  2420
        aBuilder applicationClass:cls.
212
1836a16763cc oops again
Claus Gittinger <cg@exept.de>
parents: 211
diff changeset
  2421
    ].
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2422
2390
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2423
    (     anIndexOrNil notNil
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2424
     and:[anIndexOrNil between:1 and:(aFrame subViews size)]
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2425
    ) ifTrue:[
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2426
        viewPosition := anIndexOrNil.
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2427
    ].
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2428
2229
21727bdd8221 comment
Claus Gittinger <cg@exept.de>
parents: 2226
diff changeset
  2429
    "/ remember view<->spec associations to tree
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2430
    aBuilder 
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2431
        componentCreationHook:[:aView :aSpec :builder|
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2432
            |newProperty copyOfSpec nameOfSpec beforeIndex|
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2433
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2434
            (viewPosition notNil and:[aSpecification == aSpec]) ifTrue:[
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2435
                subviewToRealize := aView.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2436
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2437
                [ (subviewToRealize notNil and:[subviewToRealize superView ~~ aFrame]) ] whileTrue:[
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2438
                    subviewToRealize := subviewToRealize superView.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2439
                ].
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2440
                subviewToRealize notNil ifTrue:[
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2441
                    beforeIndex := viewPosition.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2442
                    aFrame changeSequenceOrderFor:subviewToRealize to:viewPosition.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2443
                ].
2390
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2444
            ].
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2445
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2446
            newProperty := ViewProperty new.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2447
            copyOfSpec := aSpec copy.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2448
            newProperty spec:copyOfSpec.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2449
            newProperty view:aView.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2450
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2451
            "/ break refs to child-specs
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2452
            "/ (not needed, as we keep the child info in the view hierarchy)
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2453
            copyOfSpec class supportsSubComponents ifTrue:[
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2454
                copyOfSpec component:nil
2390
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2455
            ].
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2456
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2457
            nameOfSpec := copyOfSpec name.
2853
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2458
            "/ old: enforce a name
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2459
            "/ (nameOfSpec isNil or:[(self propertyOfName:nameOfSpec) notNil]) ifTrue:[
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2460
            "/     copyOfSpec name:(nameOfSpec := self uniqueNameFor:copyOfSpec)
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2461
            "/ ].
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2462
            "/ aView name:nameOfSpec.
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2463
            "/ new:
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2464
            (nameOfSpec isNil "notEmptyOrNil" or:[ (self propertyOfName:nameOfSpec) notNil]) ifTrue:[
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2465
                copyOfSpec name:(nameOfSpec := self uniqueNameFor:copyOfSpec).
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2466
                aView name:nameOfSpec.
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2467
            ].
2853
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2468
            "/ end
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2469
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2470
            treeView addProperty:newProperty beforeIndex:beforeIndex.
2390
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2471
        ].
2231
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  2472
2390
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2473
    newView := aSpecification buildViewWithLayoutFor:aBuilder in:aFrame.
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2474
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2475
    subviewToRealize notNil ifTrue:[
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2476
        subviewToRealize realize.
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2477
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2478
        aFrame components notEmptyOrNil ifTrue:[ self halt ].
2390
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2479
        aFrame subViews from:(viewPosition + 1 ) do:[:v|
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2480
            v shown ifTrue:[v raise]
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2481
        ].
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2482
    ].
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2483
    ^ newView
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2484
2853
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2485
    "Modified: / 17-08-2011 / 13:56:24 / cg"
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2486
!
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2487
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2488
fullSpecFor:aView
3031
a301eabbab46 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3021
diff changeset
  2489
    "generate a full spec for aView (or component)"
2526
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2490
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2491
    |mySpec subSpecs|
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2492
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2493
    mySpec := self specFor:aView.
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2494
    (mySpec notNil and:[mySpec class supportsSubComponents]) ifTrue:[
2505
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2495
        subSpecs isNil ifTrue:[
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2496
            subSpecs := OrderedCollection new
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2497
        ].
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2498
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2499
        ((aView components ? #()) , (aView subViews ? #())) do:[:aSubViewOrComponent |
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2500
            |spec|
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2501
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2502
            spec := self fullSpecFor:aSubViewOrComponent.
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2503
            spec notNil ifTrue:[
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2504
                subSpecs add:spec.
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2505
            ].
2505
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2506
        ].
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2507
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2508
        subSpecs notEmptyOrNil ifTrue:[
2d43dbc0e86c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2499
diff changeset
  2509
            mySpec component:(SpecCollection new collection:subSpecs)
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2510
        ]
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2511
    ].
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2512
    ^ mySpec
3038
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  2513
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  2514
    "Modified: / 30-07-2013 / 09:12:18 / cg"
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2515
!
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2516
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2517
fullSpecWithAbsolutePositionFor:aView
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2518
    |spec|
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2519
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2520
    spec := self fullSpecFor:aView.
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2521
    spec 
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2522
        otherAttributeAt:#uiPainterAttributes 
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2523
        put:(Dictionary new
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2524
                at:#origin put:aView origin;
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2525
                at:#extent put:aView extent;
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2526
                at:#absOrigin put:(aView originRelativeTo:self);
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2527
                yourself).
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2528
    ^ spec
60
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
1173
7b5f40822819 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
  2531
rebuildView:aView fromSpec:aSpec withBuilder:aBuilderOrNil
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2532
    self
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2533
        rebuildView:aView fromSpec:aSpec withBuilder:aBuilderOrNil forceNewView:false
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2534
!
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2535
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2536
rebuildView:aView fromSpec:aSpec withBuilder:aBuilderOrNil forceNewView:forceNewView
1173
7b5f40822819 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
  2537
    |v builder|
7b5f40822819 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
  2538
7b5f40822819 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
  2539
    (builder := aBuilderOrNil) isNil ifTrue:[
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2540
        "/ create a dummy builder
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2541
        builder := UIBuilder new isEditing:true.
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2542
        className notNil ifTrue:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2543
            builder applicationClass:(self resolveName:className).
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2544
        ].
1173
7b5f40822819 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
  2545
    ].
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2546
1252
f886528c2b35 when changing a layoutContainer
Claus Gittinger <cg@exept.de>
parents: 1230
diff changeset
  2547
    aSpec class isLayoutContainer ifTrue:[
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2548
        "/ TODO:
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2549
        "/ go through subviews and let them resize to their default/preferred
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2550
        "/ needed if we change a containers layout from fit to non-fit.
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2551
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2552
        (aView subViews ? #()) do:[:aSubView |
2265
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  2553
            |fix spec prop container|
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2554
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2555
            (prop := self propertyOfView:aSubView) notNil ifTrue:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2556
                spec := prop spec.
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2557
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2558
                spec useDefaultExtent ifTrue:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2559
                    fix := aSubView sizeFixed:false.
2265
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  2560
                    aView class == VerticalPanelView ifTrue:[
2348
a9c60093561a added preferredWidth & preferredHeight
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2561
                        aSubView height:aSubView preferredHeight.
2265
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  2562
                    ] ifFalse:[
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  2563
                        aView class == HorizontalPanelView ifTrue:[
2348
a9c60093561a added preferredWidth & preferredHeight
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
  2564
                            aSubView width:aSubView preferredWidth.
2265
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  2565
                        ] ifFalse:[
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  2566
                            aSubView extent:aSubView preferredExtent.
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  2567
                        ].
f6fbbcdd3764 still debugging replaceBy:
Claus Gittinger <cg@exept.de>
parents: 2257
diff changeset
  2568
                    ].
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2569
                    aSubView sizeFixed:fix
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2570
                ]
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2571
            ]
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2572
        ].
1252
f886528c2b35 when changing a layoutContainer
Claus Gittinger <cg@exept.de>
parents: 1230
diff changeset
  2573
    ].
f886528c2b35 when changing a layoutContainer
Claus Gittinger <cg@exept.de>
parents: 1230
diff changeset
  2574
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2575
    (forceNewView or:[aSpec needsRebuildForAttributes]) ifTrue:[
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2576
        "/ needs a full rebuild (in case view class depends upon spec-attribute)
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2577
        v := aSpec buildViewWithLayoutFor:builder in:(self findContainerOfView:aView).
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2578
        v realize.
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2579
        aView destroy.
3083
0d6e497eb85f class: UIPainterView
Stefan Vogel <sv@exept.de>
parents: 3067
diff changeset
  2580
        self sync.
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2581
        aView becomeSameAs:v.
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2582
        "/ inputView raise.
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2583
    ] ifFalse:[
2257
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2584
        aSpec setAttributesIn:aView with:builder.
badd429a2a2a code beautification; reasonable methodNames;
Claus Gittinger <cg@exept.de>
parents: 2250
diff changeset
  2585
        self elementChangedSize:aView.
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2586
    ].
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2587
!
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2588
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2589
specFor:aView
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2590
    "returns a copy of the spec assigned to an object"
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2591
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2592
    |prop spec|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2593
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2594
    (prop := self propertyOfView:aView) isNil ifTrue:[^ nil].
3038
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  2595
    "/ attention: the above prop may be a superview's prop,
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  2596
    "/ for subviews which have not been built by me
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  2597
    "/ (for example, in a box with a given viewClass like Inspector,
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  2598
    "/ we would return the boxes spec for the subviews.
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  2599
    "/ This is definitely NOT what we want (as it generates wrong specs).
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  2600
    "/ therefore check:
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  2601
    prop view == aView ifFalse:[^ nil].
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2602
1744
c59a91953b64 paste with no container selected: search for a good one
Claus Gittinger <cg@exept.de>
parents: 1733
diff changeset
  2603
    spec := prop spec copy.
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2604
    spec layoutFromView:aView.
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2605
    ^ spec
3038
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  2606
52374621e04b class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 3031
diff changeset
  2607
    "Modified (comment): / 30-07-2013 / 09:47:51 / cg"
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2608
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2609
146
ae84facd80be checkin from browser
ca
parents: 141
diff changeset
  2610
specForSelection
2526
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2611
    "returns the spec assigned to current single selection or nil.
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2612
     Nil is also returned for multiple selections (sigh)"
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2613
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2614
    |theSpec|
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2615
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2616
    theSpec := self specFor:(self singleSelection).
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2617
    theSpec isNil ifTrue:[
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2618
        treeView isCanvasSelected ifTrue:[
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2619
            theSpec := treeView canvasSpec.
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2620
        ]
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2621
    ].
29b49d1b4d53 selection handling
Claus Gittinger <cg@exept.de>
parents: 2515
diff changeset
  2622
    ^ theSpec
146
ae84facd80be checkin from browser
ca
parents: 141
diff changeset
  2623
!
ae84facd80be checkin from browser
ca
parents: 141
diff changeset
  2624
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2625
updateFromSpec:aSpec
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2626
    "update current selected view from specification
62
0e8573b4329a so far so good ...
ca
parents: 60
diff changeset
  2627
    "
1173
7b5f40822819 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
  2628
    |props name|
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2629
281
aabb4037f6a3 window spec
ca
parents: 279
diff changeset
  2630
    aSpec class == WindowSpec ifTrue:[
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2631
         ^ treeView canvasSpec:aSpec
281
aabb4037f6a3 window spec
ca
parents: 279
diff changeset
  2632
    ].
aabb4037f6a3 window spec
ca
parents: 279
diff changeset
  2633
78
a0a00603a8b6 keep spec in properties
ca
parents: 75
diff changeset
  2634
    self singleSelection notNil ifTrue:[
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2635
        self withSelectionHiddenDo:[
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2636
            self transaction:#specification selectionDo:[:aView|
2853
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2637
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2638
                props   := self propertyOfView:aView.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2639
                name    := (aSpec name) withoutSeparators.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2640
2853
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2641
                name isNil ifTrue:[
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2642
                    "/ not yet given a name
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2643
                    (name ~= props name) ifTrue:[
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2644
                        (self propertyOfName:name) notNil ifTrue:[
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2645
                            name := props name
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2646
                        ]
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2647
                    ].
2499
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2648
                ].
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2649
                aSpec name:name.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2650
                self createUndoSpecModify:props.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2651
                self rebuildView:aView fromSpec:aSpec withBuilder:nil.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2652
                props spec:(aSpec copy).
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2653
                treeView propertyChanged:props.
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2654
            ]
11be77599ca9 added component handling;
Claus Gittinger <cg@exept.de>
parents: 2494
diff changeset
  2655
        ]
82
99dc76d66eab checkin from browser
ca
parents: 80
diff changeset
  2656
    ]
212
1836a16763cc oops again
Claus Gittinger <cg@exept.de>
parents: 211
diff changeset
  2657
2853
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2658
    "Modified: / 17-08-2011 / 13:56:38 / cg"
1eadca551eed changed:
Claus Gittinger <cg@exept.de>
parents: 2818
diff changeset
  2659
    "Modified (format): / 18-08-2011 / 02:19:01 / cg"
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2660
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2661
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2662
!UIPainterView methodsFor:'testing'!
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2663
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2664
canChangeLayoutOfView:aView
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2665
    "returns true if the view can change its layout.
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2666
     This is dependent on its parent view."
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2667
2483
3edd36775899 Consider direct subviews of the cancas in canResizeView:
Stefan Vogel <sv@exept.de>
parents: 2480
diff changeset
  2668
    |item parent|
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2669
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2670
    item := treeView itemOfView:aView.
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2671
    item isNil ifTrue:[
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2672
        "/ I dont know anything about that view (cg: how can this happen ?)
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2673
        "/ self breakPoint:#cg.
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2674
        ^ false
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2675
    ].
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2676
    parent := item parent.
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2677
    parent isNil ifTrue:[
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2678
        "/ that view has no parent (cg: does this mean its the canvas itself ?)
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2679
        "/ self breakPoint:#cg.
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2680
        ^ false
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2681
    ].
2483
3edd36775899 Consider direct subviews of the cancas in canResizeView:
Stefan Vogel <sv@exept.de>
parents: 2480
diff changeset
  2682
    parent contents view == self ifTrue:[
3edd36775899 Consider direct subviews of the cancas in canResizeView:
Stefan Vogel <sv@exept.de>
parents: 2480
diff changeset
  2683
        "aView is a direct subview of the canvas
3edd36775899 Consider direct subviews of the cancas in canResizeView:
Stefan Vogel <sv@exept.de>
parents: 2480
diff changeset
  2684
         -- and the canvas supports layout changes of its subviews"
3edd36775899 Consider direct subviews of the cancas in canResizeView:
Stefan Vogel <sv@exept.de>
parents: 2480
diff changeset
  2685
        ^ true.
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2686
    ].
2480
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2687
    ^ parent contents spec class isLayoutContainer not
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2688
!
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2689
1230
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1225
diff changeset
  2690
canExchangeSelectionLayouts
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1225
diff changeset
  2691
    "returns true if the selection size is exactly 2
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1225
diff changeset
  2692
     and all elements in the selection can be moved or aligned
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1225
diff changeset
  2693
    "
2480
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2694
    selection size ~~ 2 ifTrue:[
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2695
        ^ false
1230
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1225
diff changeset
  2696
    ].
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1225
diff changeset
  2697
    ^ self canMoveOrAlignSelection
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1225
diff changeset
  2698
!
23e5d0c133e8 added exchangeLayouts function
Claus Gittinger <cg@exept.de>
parents: 1225
diff changeset
  2699
2392
ca
parents: 2390
diff changeset
  2700
canGroup
ca
parents: 2390
diff changeset
  2701
    "test whether selected elements can be grouped; minimum two elements
ca
parents: 2390
diff changeset
  2702
     must be selected and all must have the same parent"
ca
parents: 2390
diff changeset
  2703
ca
parents: 2390
diff changeset
  2704
    |selectedNodes parent|
ca
parents: 2390
diff changeset
  2705
ca
parents: 2390
diff changeset
  2706
    selectedNodes := self selectedNodes.
ca
parents: 2390
diff changeset
  2707
ca
parents: 2390
diff changeset
  2708
    selectedNodes size < 2ifTrue:[ ^ false ].
ca
parents: 2390
diff changeset
  2709
ca
parents: 2390
diff changeset
  2710
    parent := selectedNodes first parent.
ca
parents: 2390
diff changeset
  2711
    parent isNil ifTrue:[ ^ false ].    "/ test whether not the canvas itself is selected
ca
parents: 2390
diff changeset
  2712
ca
parents: 2390
diff changeset
  2713
    selectedNodes do:[:each|
ca
parents: 2390
diff changeset
  2714
        each parent ~~ parent ifTrue:[^ false ].
ca
parents: 2390
diff changeset
  2715
    ].
ca
parents: 2390
diff changeset
  2716
ca
parents: 2390
diff changeset
  2717
    ^true
ca
parents: 2390
diff changeset
  2718
!
ca
parents: 2390
diff changeset
  2719
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2720
canKeepLayoutInSelection
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2721
    "returns true if layout can be kept during a paste operation
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2722
    "
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2723
    |prop|
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2724
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2725
    prop := self propertyOfView:(self singleSelection).
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2726
  ^ (prop isNil or:[prop spec class isLayoutContainer not])
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2727
!
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2728
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2729
canMove:something
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2730
    "checks whether something is not nil and if all widgets derived from
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2731
     something can change their layout ( move, align, ... operation ).
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2732
    "
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2733
    something notNil ifTrue:[
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2734
        self forEach:something do:[:aView|
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2735
            (self canChangeLayoutOfView:aView) ifFalse:[^ false]
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2736
        ].
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2737
        ^ true
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2738
    ].
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2739
    ^ false
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2740
!
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2741
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2742
canMoveOrAlignSelection
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2743
    "returns true if a selection exists and all elements in the selection
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2744
     can be moved or aligned
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2745
    "
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2746
    ^ self canMove:(self selection)
2392
ca
parents: 2390
diff changeset
  2747
!
ca
parents: 2390
diff changeset
  2748
2480
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2749
canResize:something
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2750
    "checks whether something is not nil and if all widgets derived from
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2751
     something can be resized."
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2752
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2753
    something notNil ifTrue:[
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2754
        self forEach:something do:[:aView|
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2755
            (self canResizeView:aView) ifFalse:[^ false]
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2756
        ].
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2757
        ^ true
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2758
    ].
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2759
    ^ false
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2760
!
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2761
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2762
canResizeSelection
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2763
    "returns true if a selection exists and all elements in the selection
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2764
     can be resized"
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2765
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2766
    ^ self canResize:(self selection)
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2767
!
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2768
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2769
canResizeView:aView
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2770
    "returns true if the view can be resized.
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2771
     This is dependent on its parent view."
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2772
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2773
    |item parent|
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2774
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2775
    item := treeView itemOfView:aView.
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2776
    item isNil ifTrue:[
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2777
        "/ I dont know anything about that view (cg: how can this happen ?)
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2778
        "/ self breakPoint:#cg.
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2779
        ^ false
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2780
    ].
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2781
    parent := item parent.
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2782
    parent isNil ifTrue:[
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2783
        "/ that view has no parent (cg: does this mean its the canvas itself ?)
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2784
        "/ self breakPoint:#cg.
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2785
        ^ false
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2786
    ].
2483
3edd36775899 Consider direct subviews of the cancas in canResizeView:
Stefan Vogel <sv@exept.de>
parents: 2480
diff changeset
  2787
    parent contents view == self ifTrue:[
3edd36775899 Consider direct subviews of the cancas in canResizeView:
Stefan Vogel <sv@exept.de>
parents: 2480
diff changeset
  2788
        "aView is a direct subview of the canvas
3edd36775899 Consider direct subviews of the cancas in canResizeView:
Stefan Vogel <sv@exept.de>
parents: 2480
diff changeset
  2789
         -- and the canvas supports resizing of its subviews"
3edd36775899 Consider direct subviews of the cancas in canResizeView:
Stefan Vogel <sv@exept.de>
parents: 2480
diff changeset
  2790
        ^ true.
3edd36775899 Consider direct subviews of the cancas in canResizeView:
Stefan Vogel <sv@exept.de>
parents: 2480
diff changeset
  2791
    ].
2480
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2792
    ^ parent contents spec class canResizeSubComponents
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2793
!
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2794
2392
ca
parents: 2390
diff changeset
  2795
canUngroup
ca
parents: 2390
diff changeset
  2796
    "test whether the selected element can be ungrouped; only one
ca
parents: 2390
diff changeset
  2797
     element is selected and has children"
ca
parents: 2390
diff changeset
  2798
ca
parents: 2390
diff changeset
  2799
    "/ the #ungroupSelectionWithLayout: dosnot work yet - so disable
ca
parents: 2390
diff changeset
  2800
ca
parents: 2390
diff changeset
  2801
"/    |selectedNodes node|
ca
parents: 2390
diff changeset
  2802
"/
ca
parents: 2390
diff changeset
  2803
"/    selectedNodes := self selectedNodes.
ca
parents: 2390
diff changeset
  2804
"/
ca
parents: 2390
diff changeset
  2805
"/
ca
parents: 2390
diff changeset
  2806
"/    selectedNodes size == 1 ifTrue:[
ca
parents: 2390
diff changeset
  2807
"/        node := selectedNodes first.
ca
parents: 2390
diff changeset
  2808
"/        node parent isNil ifTrue:[ ^ false ].    "/ test whether not the canvas itself is selected
ca
parents: 2390
diff changeset
  2809
"/
ca
parents: 2390
diff changeset
  2810
"/        ^ node hasChildren
ca
parents: 2390
diff changeset
  2811
"/    ].
ca
parents: 2390
diff changeset
  2812
    ^ false
285
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2813
! !
d80b3c6a4373 don't use superView instead parent properties derived
ca
parents: 281
diff changeset
  2814
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2815
!UIPainterView methodsFor:'transaction'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2816
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2817
transaction:aType objects:something do:aOneArgBlock
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2818
    "opens a transaction and evaluates a block within the transaction; the
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2819
     argument to the block is a view from derived from something
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2820
    "
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2821
    self withinTransaction:aType objects:something do:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2822
	self forEach:something do:aOneArgBlock
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2823
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2824
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2825
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2826
withinTransaction:aType objects:objects do:aNoArgBlock
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2827
    "evaluate a block within a transaction"
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2828
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2829
    |text size prop|
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2830
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2831
    objects isNil ifTrue:[ ^ self ].
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2832
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2833
    size := objects size.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2834
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2835
    objects isCollection ifTrue:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2836
        size == 0 ifTrue:[ ^ self ].
2362
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2837
        size == 1 ifTrue:[ 
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2838
            prop := self propertyOfView:(objects first) 
a6a7ef98fdc3 can resize - allow resizing all;
Claus Gittinger <cg@exept.de>
parents: 2358
diff changeset
  2839
        ]
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2840
    ] ifFalse:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2841
        prop := self propertyOfView:objects
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2842
    ].
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2843
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2844
    prop notNil ifTrue:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2845
        text := prop name
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2846
    ] ifFalse:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2847
        text := size printString, ' elements'
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2848
    ].
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2849
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2850
    undoHistory withinTransaction:aType text:text do:aNoArgBlock.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2851
    self undoHistoryChanged.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2852
! !
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2853
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2854
!UIPainterView methodsFor:'undo actions'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2855
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2856
createUndoLayout:aView
2509
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2857
    "create undo action before changing a views layout"
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2858
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2859
    |lyt args prop|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2860
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2861
    undoHistory isTransactionOpen ifTrue:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2862
        prop := self propertyOfView:aView.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2863
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2864
        prop notNil ifTrue:[
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2865
            args := Array new:3.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2866
            args at:1 put:(prop identifier).
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2867
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2868
            (lyt := aView geometryLayout) notNil ifTrue:[
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2869
                args at:2 put:#geometryLayout:
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2870
            ] ifFalse:[
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2871
                lyt := aView extent.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2872
                args at:2 put:#extent:
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2873
            ].
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2874
            args at:3 put:(lyt copy).
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2875
            undoHistory addUndoSelector:#undoLayout: withArgs:args.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2876
            self undoHistoryChanged.
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2877
        ]
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2878
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2879
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2880
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2881
createUndoRemove:aView
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2882
    "create undo method before deleting views
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2883
    "
2390
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2884
    |item itemParent prop args|
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2885
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2886
    item := treeView detectItemCorespondingToView:aView.
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2887
    item isNil ifTrue:[^ self ].
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2888
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2889
    itemParent := item parent.
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2890
    itemParent isNil ifTrue:[^ self ].
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2891
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2892
    prop  := item contents.
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2893
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2894
    args := Array
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2895
            with:(self fullSpecFor:aView)
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2896
            with:(prop identifier)
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2897
            with:(itemParent contents identifier)
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2898
            with:(itemParent indexOfChild:item).
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2899
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2900
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2901
    undoHistory addUndoSelector:#'undoRemove:' withArgs:args.
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2902
    self undoHistoryChanged.
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2903
!
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2904
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2905
createUndoSpecModify:aProp
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2906
    "undo method when changing the specification for an object
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2907
    "
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2908
    aProp notNil ifTrue:[
1954
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2909
        undoHistory addUndoSelector:#undoSpecModify:
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2910
                           withArgs:(Array with:(aProp spec) with:(aProp identifier)).
1344ec1f99eb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1953
diff changeset
  2911
        self undoHistoryChanged.
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2912
    ]
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2913
!
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2914
2509
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2915
createUndoStartPointEndPoint:aComponent
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2916
    "create an undo action before changing aComponent"
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2917
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2918
    |args prop|
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2919
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2920
    undoHistory isTransactionOpen ifTrue:[
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2921
        prop := self propertyOfView:aComponent.
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2922
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2923
        prop notNil ifTrue:[
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2924
            args := Array new:4.
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2925
            args at:1 put:(prop identifier).
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2926
            args at:2 put:#'startPoint:endPoint:'.
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2927
            args at:3 put:(aComponent startPoint).
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2928
            args at:4 put:(aComponent endPoint).
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2929
            undoHistory addUndoSelector:#undoStartPointEndPoint: withArgs:args.
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2930
            self undoHistoryChanged.
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2931
        ]
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2932
    ]
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2933
!
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2934
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2935
undoCreate:something
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2936
    "undo method for creating or pasting an object
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2937
    "
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2938
    self forEach:something do:[:anId|self remove:(self findViewWithId:anId)].
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2939
!
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2940
1520
eb77c52704c7 drop: paste in surrounding view if not possible to drop in selected.
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  2941
undoHistory
eb77c52704c7 drop: paste in surrounding view if not possible to drop in selected.
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  2942
    ^ undoHistory
eb77c52704c7 drop: paste in surrounding view if not possible to drop in selected.
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  2943
eb77c52704c7 drop: paste in surrounding view if not possible to drop in selected.
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  2944
    "Created: / 30.10.2001 / 13:42:45 / cg"
eb77c52704c7 drop: paste in surrounding view if not possible to drop in selected.
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  2945
!
eb77c52704c7 drop: paste in surrounding view if not possible to drop in selected.
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
  2946
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2947
undoLayout:args
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2948
    "undo method to set the old layout; see 'createUndoLayout:'
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2949
    "
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2950
    |view|
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2951
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2952
    (view := self findViewWithId:(args at:1)) notNil ifTrue:[
2480
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2953
        view perform:(args at:2) with:(args at:3).
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2954
        self elementChangedSize:view.
6effcbfba4e3 UIPainter can now resize subviews of PanelViews
Stefan Vogel <sv@exept.de>
parents: 2444
diff changeset
  2955
        self layoutChanged.
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2956
    ]
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2957
!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2958
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2959
undoRemove:args
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2960
    "undo method when removing an object; see 'createUndoRemove:'
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2961
    "
2390
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2962
    |frame prop view position parentId|
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2963
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2964
    position := args at:4 ifAbsent:nil.
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2965
    parentId := args at:3 ifAbsent:nil.
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2966
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2967
    parentId notNil ifTrue:[
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2968
        frame := self findViewWithId:parentId.
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2969
    ].
2390
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2970
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2971
    frame isNil ifTrue:[ frame := self. ].
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2972
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2973
    view := self addSpec:(args at:1)
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2974
                 builder:(UIBuilder new isEditing:true)
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2975
                      in:frame 
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2976
             beforeIndex:position.
07303d4b4e78 restore position of view during undo delete
ca
parents: 2388
diff changeset
  2977
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2978
    view realize.
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2979
    prop := self propertyOfView:view.
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2980
    prop identifier:(args at:2).
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2981
!
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2982
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2983
undoSpecModify:args
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2984
    "undo method when changing a spec; see 'createUndoSpecModify:'
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2985
    "
1173
7b5f40822819 code cleanup
Claus Gittinger <cg@exept.de>
parents: 1092
diff changeset
  2986
    |view spec props|
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2987
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2988
    props := self propertyOfIdentifier:(args at:2).
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  2989
134
d5ab85ec27fd undo history; keep view identifier
ca
parents: 131
diff changeset
  2990
    props notNil ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2991
	view    := props view.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2992
	spec    := args at:1.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2993
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2994
	props spec:spec.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2995
	self rebuildView:view fromSpec:spec withBuilder:nil.
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  2996
	treeView propertyChanged:props.
211
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  2997
    ]
2509
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2998
!
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2999
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  3000
undoStartPointEndPoint:args
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  3001
    "undo method to set the old start/endPoint; see 'createUndoStartPointEndPoint:'
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  3002
    "
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  3003
    |view|
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  3004
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  3005
    (view := self findViewWithId:(args at:1)) notNil ifTrue:[
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  3006
        view perform:(args at:2) with:(args at:3) with:(args at:4).
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  3007
        self elementChangedSize:view.
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  3008
        self layoutChanged.
89612a372d8b code cleanup
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  3009
    ]
211
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3010
! !
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3011
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3012
!UIPainterView::ViewProperty class methodsFor:'instance creation'!
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3013
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3014
new
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3015
    Identifier notNil ifTrue:[Identifier := Identifier + 1]
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  3016
		     ifFalse:[Identifier := 1].
211
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3017
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3018
  ^ self basicNew initialize
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3019
! !
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3020
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3021
!UIPainterView::ViewProperty methodsFor:'accessing'!
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3022
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3023
identifier
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3024
    "return the unique identifier assigned to property
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3025
    "
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3026
    ^ identifier
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3027
!
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3028
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3029
identifier:anIdentifier
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3030
    "set the unique identifier assigned to property; called after an restore of
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3031
     a deleted instance
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3032
    "
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3033
    identifier := anIdentifier
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3034
!
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3035
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3036
spec
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3037
    "return the value of the instance variable 'spec' (automatically generated)"
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3038
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1402
diff changeset
  3039
    ^ spec
85b9b5da0b8d optimize: undraw selection
ca
parents: 1402
diff changeset
  3040
!
211
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3041
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3042
spec:something
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3043
    "set the value of the instance variable 'spec' (automatically generated)"
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3044
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1402
diff changeset
  3045
    spec := something.
85b9b5da0b8d optimize: undraw selection
ca
parents: 1402
diff changeset
  3046
!
211
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3047
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3048
view
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3049
    "return the value of the instance variable 'view' (automatically generated)"
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3050
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1402
diff changeset
  3051
    ^ view
85b9b5da0b8d optimize: undraw selection
ca
parents: 1402
diff changeset
  3052
!
211
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3053
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3054
view:something
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3055
    "set the value of the instance variable 'view' (automatically generated)"
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3056
1427
85b9b5da0b8d optimize: undraw selection
ca
parents: 1402
diff changeset
  3057
    view := something.
85b9b5da0b8d optimize: undraw selection
ca
parents: 1402
diff changeset
  3058
! !
211
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3059
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3060
!UIPainterView::ViewProperty methodsFor:'initialization'!
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3061
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3062
initialize
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3063
    super initialize.
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3064
    identifier := Identifier
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3065
! !
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3066
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3067
!UIPainterView::ViewProperty methodsFor:'misc'!
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3068
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3069
extractNumberStartingAt:anIndex
2231
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3070
    "return the number from the name starting at anIndex (or 0 if there is no number)."
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3071
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3072
    "/ cg: code cleanup.
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3073
    ^ Integer 
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3074
        readFrom:(self name readStream skip:(anIndex-1))
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3075
        onError:0
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3076
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3077
"/    |val|
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3078
"/
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3079
"/    val := 0.
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3080
"/
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3081
"/    self name from:anIndex do:[:c|
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3082
"/        c isDigit ifTrue:[val := val * 10 + c digitValue]
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3083
"/                 ifFalse:[^ 0]
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3084
"/    ].
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3085
"/    ^ val
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3086
211
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3087
    "
2231
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3088
     (self basicNew spec:(ButtonSpec new name:'button12')) extractNumberStartingAt:7 
ae58d3ccbbfd refactorings & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2229
diff changeset
  3089
    "
211
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3090
! !
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3091
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3092
!UIPainterView::ViewProperty methodsFor:'spec messages'!
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3093
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3094
doesNotUnderstand:aMessage
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3095
    spec notNil ifTrue:[
1834
2c640b5f7fa9 *** empty log message ***
werner
parents: 1833
diff changeset
  3096
	(spec respondsTo:(aMessage selector)) ifTrue:[^ aMessage sendTo:spec]
211
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3097
    ].
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3098
    ^ nil
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3099
!
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3100
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3101
layout
1664
782f3bda3c88 bugfix in #layout
ca
parents: 1635
diff changeset
  3102
    ^ spec layout
211
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3103
!
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3104
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3105
layout:aLayout
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3106
    spec layout:aLayout
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3107
!
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3108
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3109
name
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3110
    ^ spec name
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3111
!
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3112
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3113
name:aName
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3114
    spec name:aName
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3115
! !
Claus Gittinger <cg@exept.de>
parents: 210
diff changeset
  3116
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3117
!UIPainterView class methodsFor:'documentation'!
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3118
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3119
version
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3120
    ^ '$Header$'
2627
07d40cde2ac9 changed: #pasteSpecifications:keepLayout:
Claus Gittinger <cg@exept.de>
parents: 2583
diff changeset
  3121
!
07d40cde2ac9 changed: #pasteSpecifications:keepLayout:
Claus Gittinger <cg@exept.de>
parents: 2583
diff changeset
  3122
07d40cde2ac9 changed: #pasteSpecifications:keepLayout:
Claus Gittinger <cg@exept.de>
parents: 2583
diff changeset
  3123
version_CVS
07d40cde2ac9 changed: #pasteSpecifications:keepLayout:
Claus Gittinger <cg@exept.de>
parents: 2583
diff changeset
  3124
    ^ '$Header$'
60
7542ab7fbbfe *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 59
diff changeset
  3125
! !
1621
112670159075 cg: check if selection change is allowed BEFORE changing the
tm
parents: 1574
diff changeset
  3126
2951
c2b24bf7b967 class: UIPainterView
Claus Gittinger <cg@exept.de>
parents: 2853
diff changeset
  3127
1225
0aa39cc5f0a3 Initialize class vars.
Stefan Vogel <sv@exept.de>
parents: 1201
diff changeset
  3128
UIPainterView initialize!