UISpecificationTool.st
author ca
Sat, 21 Jun 1997 14:33:31 +0200
changeset 169 3a8b51cfb609
parent 164 1bc26edd0d3e
child 172 10e8e0510baa
permissions -rw-r--r--
removed container
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
164
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
     1
"
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
     2
 COPYRIGHT (c) 1995 by eXept Software AG
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
     3
              All Rights Reserved
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
     4
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
     5
 This software is furnished under a license and may be used
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    10
 hereby transferred.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    11
"
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    12
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    13
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    14
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    15
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    16
ApplicationModel subclass:#UISpecificationTool
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    17
	instanceVariableNames:'modifiedHolder aspects specClass specEdited specChannel'
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    18
	classVariableNames:''
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    19
	poolDictionaries:''
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    20
	category:'Interface-UIPainter'
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    21
!
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    22
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    23
!UISpecificationTool class methodsFor:'documentation'!
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    24
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    25
copyright
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    26
"
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    27
 COPYRIGHT (c) 1995 by eXept Software AG
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    28
              All Rights Reserved
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    29
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    30
 This software is furnished under a license and may be used
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    31
 only in accordance with the terms of that license and with the
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    33
 be provided or otherwise made available to, or used by, any
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    34
 other person.  No title to or ownership of the software is
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    35
 hereby transferred.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    36
"
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    37
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    38
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    39
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    40
!
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    41
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    42
documentation
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    43
"
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    44
    used by the UIPainter to manipulate the specifications of the selected component
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    45
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    46
    [author:]
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    47
        Claus Atzkern
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    48
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    49
    [see also:]
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    50
        UIPainter
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    51
        UILayoutTool
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    52
        UIHelpTool
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    53
"
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    54
! !
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    55
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    56
!UISpecificationTool class methodsFor:'interface specs'!
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    57
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    58
windowSpec
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    59
    "this window spec was automatically generated by the ST/X UIPainter"
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    60
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    61
    "do not manually edit this - the painter/builder may not be able to
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    62
     handle the specification if its corrupted."
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    63
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    64
    "
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    65
     UIPainter new openOnClass:UISpecificationTool andSelector:#windowSpec
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    66
     UISpecificationTool new openInterface:#windowSpec
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    67
    "
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    68
    "UISpecificationTool open"
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    69
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    70
    <resource: #canvas>
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    71
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    72
    ^
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    73
     
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    74
       #(#FullSpec
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    75
          #'window:' 
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    76
           #(#WindowSpec
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    77
              #'name:' 'uIPainterView'
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    78
              #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    79
              #'label:' 'unnamed canvas'
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    80
              #'bounds:' #(#Rectangle 0 0 300 300)
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    81
          )
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    82
          #'component:' 
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    83
           #(#SpecCollection
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    84
              #'collection:' 
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    85
               #(
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    86
                 #(#ViewSpec
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    87
                    #'name:' 'Frame'
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    88
                    #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    89
                )
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    90
              )
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    91
          )
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    92
      )
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    93
! !
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    94
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    95
!UISpecificationTool methodsFor:'accessing'!
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    96
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    97
modifiedHolder:aValueHolder
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    98
    "set the value holder set to true in case of modifying attributes
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
    99
    "
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   100
    modifiedHolder notNil ifTrue:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   101
        modifiedHolder removeDependent:self. 
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   102
    ].
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   103
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   104
    (modifiedHolder := aValueHolder) notNil ifTrue:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   105
        modifiedHolder addDependent:self.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   106
    ].
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   107
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   108
!
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   109
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   110
update
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   111
    "reload specification
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   112
    "
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   113
    specChannel notNil ifTrue:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   114
        specChannel value:specEdited.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   115
    ]
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   116
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   117
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   118
! !
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   119
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   120
!UISpecificationTool methodsFor:'bindings'!
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   121
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   122
aspectFor:aKey
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   123
    "returns aspect for a key or nil
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   124
    "
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   125
    aspects notNil ifTrue:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   126
        ^ aspects at:aKey ifAbsent:nil
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   127
    ].
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   128
    ^ super aspectFor:aKey
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   129
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   130
!
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   131
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   132
specEdited
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   133
    "gets current edit specification
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   134
    "
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   135
    ^ specEdited
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   136
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   137
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   138
!
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   139
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   140
specEdited:aSpec
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   141
    "sets current edit specification
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   142
    "
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   143
    aSpec isNil ifTrue:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   144
        specChannel := nil.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   145
        specEdited  := nil.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   146
        aspects     := nil.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   147
    ] ifFalse:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   148
        specEdited class == aSpec class ifTrue:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   149
            specEdited := aSpec.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   150
          ^ specChannel value:specEdited.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   151
        ].
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   152
        specEdited  := aSpec.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   153
        aspects     := IdentityDictionary new.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   154
        specChannel := specEdited asValue.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   155
        specEdited class addBindingsTo:aspects for:specEdited channel:specChannel.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   156
        aspects do:[:el| el addDependent:self ].
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   157
    ].
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   158
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   159
    specClass notNil ifTrue:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   160
        (builder componentAt:#Frame) destroySubViews.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   161
        specClass := nil.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   162
    ].
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   163
! !
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   164
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   165
!UISpecificationTool methodsFor:'change & update'!
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   166
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   167
update:something with:someArgument from:someone
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   168
    "any attribute changed its state in the current specification
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   169
    "
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   170
    someone ~~ modifiedHolder ifTrue:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   171
        modifiedHolder value ~~ true ifTrue:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   172
            modifiedHolder value:true
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   173
        ]
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   174
    ]
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   175
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   176
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   177
! !
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   178
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   179
!UISpecificationTool methodsFor:'selection'!
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   180
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   181
selection:something
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   182
    |slices idx spec frame|
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   183
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   184
    specEdited notNil ifTrue:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   185
        slices := specEdited class slices.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   186
        idx:= slices findFirst:[:aSlice| aSlice first = something ].
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   187
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   188
        idx ~~ 0 ifTrue:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   189
            spec := specEdited class perform:((slices at:idx) last).
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   190
        ].
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   191
    ].
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   192
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   193
    spec ~= specClass ifTrue:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   194
        frame := builder componentAt:#Frame.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   195
        frame destroySubViews.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   196
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   197
        spec notNil ifTrue:[
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   198
            builder buildFromSpec:spec in:frame.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   199
            frame allViewBackground:(frame viewBackground).
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   200
            frame realizeAllSubViews.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   201
        ]
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   202
    ].
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   203
    specClass := spec.
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   204
! !
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   205
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   206
!UISpecificationTool class methodsFor:'documentation'!
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   207
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   208
version
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   209
    ^ '$Header$'
1bc26edd0d3e intitial checkin
ca
parents:
diff changeset
   210
! !