GraphColumnView.st
author ca
Mon, 09 Feb 1998 11:31:27 +0100
changeset 749 18179e2bfff4
parent 741 1d91a0437471
child 754 c55a5727bf04
permissions -rw-r--r--
added text and new functionality
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
     1
View subclass:#GraphColumnView
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
     2
	instanceVariableNames:'columns vLines listHolder vLinesHolder zoomYHolder oldMenuMessage
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
     3
		windowSizeHolder windowSize gridColor showGrid fgColor bgColor
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
     4
		vLinesColor zoomY scrollUpdatesOriginX graphOriginX
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
     5
		graphOriginXHolder'
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
     6
	classVariableNames:'DefaultBackgroundColor DefaultGridColor DefaultForegroundColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
     7
		DefaultVLinesColor'
1d91a0437471 initial checkin
ca
parents:
diff changeset
     8
	poolDictionaries:''
1d91a0437471 initial checkin
ca
parents:
diff changeset
     9
	category:'Views-Graphs'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    10
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    11
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    12
!GraphColumnView class methodsFor:'documentation'!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    13
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    14
documentation
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    15
"
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    16
    The class describes the common interface supported by the 2D or 3D GraphColumnView.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    17
    This Viewclasses provide a lot of functionality for showing and manipulating graphs
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    18
    described through to a GraphColumn description. Each change in a graph description
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    19
    immediately take affect in the garph view.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    20
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    21
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    22
    [See also:]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    23
        GraphColumn
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    24
        GraphColumnView2D
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    25
        GraphColumnView3D
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    26
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    27
    [Author:]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    28
        Claus Atzkern
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    29
"
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    30
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    31
! !
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    32
1d91a0437471 initial checkin
ca
parents:
diff changeset
    33
!GraphColumnView class methodsFor:'defaults'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    34
1d91a0437471 initial checkin
ca
parents:
diff changeset
    35
defaultMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    36
    "redefined by subclass: should return the default middle button menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    37
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    38
    ^ nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
    39
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    40
1d91a0437471 initial checkin
ca
parents:
diff changeset
    41
updateStyleCache
1d91a0437471 initial checkin
ca
parents:
diff changeset
    42
    "extract values from the styleSheet and cache them in class variables
1d91a0437471 initial checkin
ca
parents:
diff changeset
    43
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    44
    DefaultForegroundColor := Color black.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    45
    DefaultBackgroundColor := Color veryLightGray.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    46
    DefaultGridColor       := Color lightGray.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    47
    DefaultVLinesColor     := DefaultForegroundColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
    48
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
    49
 self updateStyleCache
1d91a0437471 initial checkin
ca
parents:
diff changeset
    50
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
    51
1d91a0437471 initial checkin
ca
parents:
diff changeset
    52
1d91a0437471 initial checkin
ca
parents:
diff changeset
    53
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
    54
1d91a0437471 initial checkin
ca
parents:
diff changeset
    55
!GraphColumnView methodsFor:'accessing'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    56
1d91a0437471 initial checkin
ca
parents:
diff changeset
    57
columns
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    58
    "returns the list of column descriptions
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    59
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    60
    ^ columns
1d91a0437471 initial checkin
ca
parents:
diff changeset
    61
1d91a0437471 initial checkin
ca
parents:
diff changeset
    62
1d91a0437471 initial checkin
ca
parents:
diff changeset
    63
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    64
1d91a0437471 initial checkin
ca
parents:
diff changeset
    65
columns:aList
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    66
    "set the list of columns descriptions
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    67
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    68
    columns notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
    69
        columns do:[:aCol| aCol removeDependent:self ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
    70
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
    71
1d91a0437471 initial checkin
ca
parents:
diff changeset
    72
    aList size ~~ 0 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
    73
        columns := OrderedCollection new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    74
1d91a0437471 initial checkin
ca
parents:
diff changeset
    75
        aList do:[:aColumn| 
1d91a0437471 initial checkin
ca
parents:
diff changeset
    76
            aColumn addDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    77
            columns add:aColumn
1d91a0437471 initial checkin
ca
parents:
diff changeset
    78
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
    79
    ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
    80
        columns := nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
    81
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
    82
    self recomputeWholeGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
    83
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    84
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    85
graphOriginX
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    86
    "returns the logical index X of the first visible row; this number is used for
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    87
     accessing Y values from the GraphColumn description. On default, the value
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    88
     is set to 1.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    89
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    90
    ^ graphOriginX
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    91
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    92
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    93
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    94
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    95
graphOriginX:aNumber
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    96
    "set the logical index X of the first visible row; this number is used for
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    97
     accessing Y values from the GraphColumn description. On default, the value
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    98
     is set to 1.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    99
     Changing the number, a scroll left or right is triggered.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   100
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   101
    |newX state|
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   102
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   103
    aNumber isNumber ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   104
        newX := aNumber isInteger ifTrue:[aNumber]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   105
                                 ifFalse:[(aNumber asFloat) rounded].   "/ no fractions
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   106
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   107
        newX ~~ graphOriginX ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   108
            state := scrollUpdatesOriginX.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   109
            scrollUpdatesOriginX := true.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   110
            self scroll:(graphOriginX - newX).
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   111
            scrollUpdatesOriginX := state.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   112
        ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   113
    ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   114
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   115
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   116
scrollUpdatesOriginX
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   117
    "returns true, if the graphOriginX automatically is updated by
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   118
     any scroll action. The default is set to false.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   119
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   120
    ^ scrollUpdatesOriginX
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   121
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   122
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   123
scrollUpdatesOriginX:aBool
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   124
    "set to true if the graphOriginX automatically should be updated by any
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   125
     scroll action. Otherwise a scroll has no influnce to the current
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   126
     graphOriginX.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   127
     The default is set to false.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   128
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   129
    scrollUpdatesOriginX := aBool
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   130
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   131
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   132
showDefaultMenu
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   133
    "returns true, if the middleButton menu is set to the default menu
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   134
     provided by the graph.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   135
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   136
    ^ self menuMessage == #defaultMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   137
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   138
1d91a0437471 initial checkin
ca
parents:
diff changeset
   139
showDefaultMenu:aBool
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   140
    "enable or disable the default menu provided by the graph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   141
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   142
    |currMsg|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   143
1d91a0437471 initial checkin
ca
parents:
diff changeset
   144
    currMsg := self menuMessage.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   145
1d91a0437471 initial checkin
ca
parents:
diff changeset
   146
    aBool ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   147
        oldMenuMessage := currMsg.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   148
        self menuMessage:#defaultMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   149
    ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   150
        currMsg == #defaultMenu ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   151
            self menuMessage:oldMenuMessage
1d91a0437471 initial checkin
ca
parents:
diff changeset
   152
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   153
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   154
1d91a0437471 initial checkin
ca
parents:
diff changeset
   155
1d91a0437471 initial checkin
ca
parents:
diff changeset
   156
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   157
1d91a0437471 initial checkin
ca
parents:
diff changeset
   158
!GraphColumnView methodsFor:'accessing dimensions'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   159
1d91a0437471 initial checkin
ca
parents:
diff changeset
   160
windowSize
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   161
    "get the number of horizontal steps ( X )
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   162
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   163
    ^ windowSize
1d91a0437471 initial checkin
ca
parents:
diff changeset
   164
1d91a0437471 initial checkin
ca
parents:
diff changeset
   165
1d91a0437471 initial checkin
ca
parents:
diff changeset
   166
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   167
1d91a0437471 initial checkin
ca
parents:
diff changeset
   168
windowSize:aValue
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   169
    "set the number of horizontal steps ( X )
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   170
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   171
    |sz|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   172
1d91a0437471 initial checkin
ca
parents:
diff changeset
   173
    sz := (self unsignedIntegerFrom:aValue onError:[101]) max:5.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   174
1d91a0437471 initial checkin
ca
parents:
diff changeset
   175
    sz ~~ windowSize ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   176
        windowSize := sz.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   177
        self recomputeWholeGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   178
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   179
1d91a0437471 initial checkin
ca
parents:
diff changeset
   180
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   181
1d91a0437471 initial checkin
ca
parents:
diff changeset
   182
zoomY
1d91a0437471 initial checkin
ca
parents:
diff changeset
   183
    "returns current y-zoom factor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   184
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   185
    ^ zoomY
1d91a0437471 initial checkin
ca
parents:
diff changeset
   186
1d91a0437471 initial checkin
ca
parents:
diff changeset
   187
1d91a0437471 initial checkin
ca
parents:
diff changeset
   188
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   189
1d91a0437471 initial checkin
ca
parents:
diff changeset
   190
zoomY:aValue
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   191
    "set the current y-zoom factor; if the argument is nil,
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   192
     the y-zoom is set to 1.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   193
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   194
    |zY|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   195
1d91a0437471 initial checkin
ca
parents:
diff changeset
   196
    (zY := self floatFrom:aValue onError:[1]) <= 0 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   197
        zY := 1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   198
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   199
1d91a0437471 initial checkin
ca
parents:
diff changeset
   200
    zY = zoomY ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   201
        zoomY := zY.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   202
        self invalidateGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   203
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   204
1d91a0437471 initial checkin
ca
parents:
diff changeset
   205
1d91a0437471 initial checkin
ca
parents:
diff changeset
   206
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   207
1d91a0437471 initial checkin
ca
parents:
diff changeset
   208
!GraphColumnView methodsFor:'accessing look'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   209
1d91a0437471 initial checkin
ca
parents:
diff changeset
   210
backgroundColor
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   211
    "returns the current background color of the graph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   212
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   213
    ^ bgColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   214
1d91a0437471 initial checkin
ca
parents:
diff changeset
   215
1d91a0437471 initial checkin
ca
parents:
diff changeset
   216
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   217
1d91a0437471 initial checkin
ca
parents:
diff changeset
   218
backgroundColor:aColor
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   219
    "set the background color of the graph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   220
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   221
    (aColor isColor and:[bgColor ~= aColor]) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   222
        shown ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   223
            bgColor := aColor on:device.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   224
            self colorChanged:#background.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   225
        ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   226
            bgColor := aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   227
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   228
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   229
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   230
1d91a0437471 initial checkin
ca
parents:
diff changeset
   231
foregroundColor
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   232
    "returns the default foreground color used to draw graphs which
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   233
     has no foreground color specified.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   234
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   235
    ^ fgColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   236
1d91a0437471 initial checkin
ca
parents:
diff changeset
   237
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   238
1d91a0437471 initial checkin
ca
parents:
diff changeset
   239
foregroundColor:aColor
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   240
    "set the default foreground color used to draw graphs which
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   241
     has no foreground color specified.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   242
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   243
    (aColor isColor and:[fgColor ~= aColor]) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   244
        shown ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   245
            fgColor := aColor on:device.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   246
            self colorChanged:#foreground
1d91a0437471 initial checkin
ca
parents:
diff changeset
   247
        ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   248
            fgColor := aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   249
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   250
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   251
1d91a0437471 initial checkin
ca
parents:
diff changeset
   252
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   253
1d91a0437471 initial checkin
ca
parents:
diff changeset
   254
gridColor
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   255
    "returns the foreground color of the grid
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   256
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   257
    ^ gridColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   258
1d91a0437471 initial checkin
ca
parents:
diff changeset
   259
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   260
1d91a0437471 initial checkin
ca
parents:
diff changeset
   261
gridColor:aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   262
    "set the foreground color of the grid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   263
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   264
    (aColor isColor and:[gridColor ~= aColor]) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   265
        shown ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   266
            gridColor := aColor on:device.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   267
1d91a0437471 initial checkin
ca
parents:
diff changeset
   268
            showGrid ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   269
                self colorChanged:#grid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   270
            ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   271
        ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   272
            gridColor := aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   273
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   274
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   275
1d91a0437471 initial checkin
ca
parents:
diff changeset
   276
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   277
1d91a0437471 initial checkin
ca
parents:
diff changeset
   278
showGrid
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   279
    "returns true if the grid is enabled
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   280
    "
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   281
    ^ showGrid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   282
1d91a0437471 initial checkin
ca
parents:
diff changeset
   283
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   284
1d91a0437471 initial checkin
ca
parents:
diff changeset
   285
showGrid:aBool
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   286
    "set the visibility state of the grid
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   287
    "
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   288
    |hasGrid|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   289
1d91a0437471 initial checkin
ca
parents:
diff changeset
   290
    showGrid ~~ aBool ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   291
        showGrid := aBool.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   292
1d91a0437471 initial checkin
ca
parents:
diff changeset
   293
        shown ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   294
            self invalidateGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   295
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   296
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   297
1d91a0437471 initial checkin
ca
parents:
diff changeset
   298
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   299
1d91a0437471 initial checkin
ca
parents:
diff changeset
   300
vLinesColor
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   301
    "returns the foreground color used to draw vertical lines
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   302
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   303
    ^ vLinesColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   304
1d91a0437471 initial checkin
ca
parents:
diff changeset
   305
1d91a0437471 initial checkin
ca
parents:
diff changeset
   306
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   307
1d91a0437471 initial checkin
ca
parents:
diff changeset
   308
vLinesColor:aColor
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   309
    "set the foreground color used to draw vertical lines
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   310
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   311
    (aColor isColor and:[vLinesColor ~= aColor]) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   312
        shown ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   313
            vLinesColor := aColor on:device.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   314
            self colorChanged:#vLines
1d91a0437471 initial checkin
ca
parents:
diff changeset
   315
        ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   316
            vLinesColor := aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   317
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   318
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   319
1d91a0437471 initial checkin
ca
parents:
diff changeset
   320
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   321
1d91a0437471 initial checkin
ca
parents:
diff changeset
   322
!GraphColumnView methodsFor:'accessing mvc'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   323
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   324
graphOriginXHolder
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   325
    "returns the valueHolder, which keeps the current graphOriginX (see: #graphOriginX:)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   326
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   327
    ^ graphOriginXHolder
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   328
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   329
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   330
graphOriginXHolder:aHolder
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   331
    "set the valueHolder, which keeps the current graphOriginX (see: #graphOriginX:)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   332
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   333
    graphOriginXHolder == aHolder ifFalse:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   334
        graphOriginXHolder notNil ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   335
            graphOriginXHolder removeDependent:self
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   336
        ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   337
        (graphOriginXHolder := aHolder) notNil ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   338
            graphOriginXHolder addDependent:self
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   339
        ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   340
    ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   341
    self graphOriginX:(graphOriginXHolder value)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   342
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   343
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   344
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   345
listHolder
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   346
    "returns the valueHolder, which keeps the list of column descriptions (see: #column:)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   347
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   348
    ^ listHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   349
1d91a0437471 initial checkin
ca
parents:
diff changeset
   350
1d91a0437471 initial checkin
ca
parents:
diff changeset
   351
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   352
1d91a0437471 initial checkin
ca
parents:
diff changeset
   353
listHolder:aHolder
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   354
    "set the valueHolder, which keeps the list of column descriptions (see: #column:)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   355
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   356
    listHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   357
        listHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   358
            listHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   359
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   360
        (listHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   361
            listHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   362
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   363
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   364
    self columns:(listHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   365
1d91a0437471 initial checkin
ca
parents:
diff changeset
   366
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   367
1d91a0437471 initial checkin
ca
parents:
diff changeset
   368
model:aModel
1d91a0437471 initial checkin
ca
parents:
diff changeset
   369
    "set the valueHolder which holds the selection and maybe the list of columnms
1d91a0437471 initial checkin
ca
parents:
diff changeset
   370
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   371
    (model respondsTo:#list) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   372
        (model list == listHolder) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   373
            self listHolder:nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   374
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   375
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   376
    super model:aModel.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   377
1d91a0437471 initial checkin
ca
parents:
diff changeset
   378
    aModel notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   379
        (aModel respondsTo:#list) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   380
            self listHolder:model list
1d91a0437471 initial checkin
ca
parents:
diff changeset
   381
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   382
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   383
1d91a0437471 initial checkin
ca
parents:
diff changeset
   384
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   385
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   386
vLinesHolder
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   387
    "returns the valueHolder, which keeps the list of vLines (see: #vLines:)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   388
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   389
    ^ vLinesHolder
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   390
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   391
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   392
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   393
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   394
vLinesHolder:aHolder
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   395
    "set the valueHolder, which keeps the list of vLines (see: #vLines:)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   396
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   397
    vLinesHolder == aHolder ifFalse:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   398
        vLinesHolder notNil ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   399
            vLinesHolder removeDependent:self
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   400
        ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   401
        (vLinesHolder := aHolder) notNil ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   402
            vLinesHolder addDependent:self
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   403
        ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   404
    ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   405
    self vLines:(vLinesHolder value)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   406
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   407
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   408
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   409
windowSizeHolder
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   410
    "returns the valueHolder, which keeps the windowSize (see: #windowSize:)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   411
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   412
    ^ windowSizeHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   413
1d91a0437471 initial checkin
ca
parents:
diff changeset
   414
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   415
1d91a0437471 initial checkin
ca
parents:
diff changeset
   416
windowSizeHolder:aHolder
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   417
    "set the valueHolder, which keeps the windowSize (see: #windowSize:)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   418
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   419
    windowSizeHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   420
        windowSizeHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   421
            windowSizeHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   422
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   423
        (windowSizeHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   424
            windowSizeHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   425
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   426
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   427
    self windowSize:(windowSizeHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   428
1d91a0437471 initial checkin
ca
parents:
diff changeset
   429
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   430
1d91a0437471 initial checkin
ca
parents:
diff changeset
   431
zoomYHolder
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   432
    "returns the valueHolder, which keeps the zoom Y factor (see: #zoomY:)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   433
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   434
    ^ zoomYHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   435
1d91a0437471 initial checkin
ca
parents:
diff changeset
   436
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   437
1d91a0437471 initial checkin
ca
parents:
diff changeset
   438
zoomYHolder:aHolder
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   439
    "set the valueHolder, which keeps the zoom Y factor (see: #zoomY:)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   440
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   441
    zoomYHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   442
        zoomYHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   443
            zoomYHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   444
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   445
        (zoomYHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   446
            zoomYHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   447
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   448
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   449
    self zoomY:(zoomYHolder value).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   450
1d91a0437471 initial checkin
ca
parents:
diff changeset
   451
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   452
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   453
!GraphColumnView methodsFor:'accessing vLines'!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   454
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   455
vLineAdd:aLineIndex
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   456
    "add vertical line index to end of list
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   457
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   458
    ^ self vLineAdd:aLineIndex beforeIndex:(vLines size + 1)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   459
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   460
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   461
vLineAdd:aLineIndex beforeIndex:anIndex
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   462
    "add a vertical line index before an index
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   463
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   464
    |x|
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   465
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   466
    vLines add:aLineIndex beforeIndex:anIndex.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   467
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   468
    (shown and:[aLineIndex > graphOriginX]) ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   469
        (x := ((aLineIndex - 1) * self stepX) rounded) < width ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   470
            self vLinesSizeChanged:#insert: atX:x.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   471
        ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   472
    ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   473
    ^ aLineIndex
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   474
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   475
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   476
vLineAddAll:aCollection beforeIndex:anIndex
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   477
    "add a collection of vertical line indices before an index
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   478
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   479
    aCollection size ~~ 0 ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   480
        vLines size == 0 ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   481
            self vLines:aCollection
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   482
        ] ifFalse:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   483
            vLines addAll:aCollection beforeIndex:anIndex.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   484
            self recomputeWholeGraph.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   485
        ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   486
    ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   487
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   488
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   489
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   490
vLineRemove:aLineIndex
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   491
    "remove a vertical line index
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   492
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   493
    ^ self vLineRemoveIndex:(vLines identityIndexOf:aLineIndex)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   494
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   495
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   496
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   497
vLineRemoveAll
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   498
    "remove all vertical line indices
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   499
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   500
    self vLines:nil
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   501
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   502
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   503
vLineRemoveIndex:anIndex
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   504
    "remove the vertical line index at an index
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   505
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   506
    |lineIndex x|
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   507
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   508
    lineIndex := vLines removeAtIndex:anIndex.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   509
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   510
    (shown and:[lineIndex > graphOriginX]) ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   511
        (x := ((lineIndex - 1) * self stepX) rounded) < width ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   512
            self vLinesSizeChanged:#remove: atX:x.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   513
        ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   514
    ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   515
    ^ lineIndex
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   516
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   517
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   518
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   519
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   520
vLines
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   521
    "returns list of vertical lines
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   522
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   523
    ^ vLines
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   524
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   525
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   526
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   527
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   528
vLines:aListOfIndices
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   529
    "set list of vertical lines
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   530
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   531
    aListOfIndices size == 0 ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   532
        vLines isEmpty ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   533
            ^ self
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   534
        ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   535
    ] ifFalse:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   536
        vLines := OrderedCollection new.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   537
        aListOfIndices do:[:i| vLines add:i ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   538
    ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   539
    shown ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   540
        self recomputeWholeGraph
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   541
    ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   542
! !
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   543
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   544
!GraphColumnView methodsFor:'adding & removing'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   545
1d91a0437471 initial checkin
ca
parents:
diff changeset
   546
add:aColumn
1d91a0437471 initial checkin
ca
parents:
diff changeset
   547
    "insert a column at end; returns the inserted column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   548
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   549
    ^ self add:aColumn beforeIndex:(1 + columns size)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   550
1d91a0437471 initial checkin
ca
parents:
diff changeset
   551
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   552
1d91a0437471 initial checkin
ca
parents:
diff changeset
   553
add:aColumn afterIndex:anIndex
1d91a0437471 initial checkin
ca
parents:
diff changeset
   554
    "add a new column after an index; returns the inserted column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   555
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   556
    ^ self add:aColumn beforeIndex:(anIndex + 1)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   557
1d91a0437471 initial checkin
ca
parents:
diff changeset
   558
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   559
1d91a0437471 initial checkin
ca
parents:
diff changeset
   560
add:aColumn beforeIndex:anIndex
1d91a0437471 initial checkin
ca
parents:
diff changeset
   561
    "add a column before an index; returns the inserted column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   562
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   563
    aColumn isNil ifTrue:[^ nil].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   564
1d91a0437471 initial checkin
ca
parents:
diff changeset
   565
    columns isNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   566
        self columns:(Array with:aColumn).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   567
        ^ aColumn.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   568
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   569
    columns add:aColumn beforeIndex:anIndex.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   570
    aColumn addDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   571
1d91a0437471 initial checkin
ca
parents:
diff changeset
   572
    aColumn shown ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   573
        self listSizeChanged:#insert: from:aColumn.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   574
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   575
1d91a0437471 initial checkin
ca
parents:
diff changeset
   576
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   577
1d91a0437471 initial checkin
ca
parents:
diff changeset
   578
addAll:aCollection beforeIndex:anIndex
1d91a0437471 initial checkin
ca
parents:
diff changeset
   579
    "add a collection of columns before an index
1d91a0437471 initial checkin
ca
parents:
diff changeset
   580
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   581
    aCollection size ~~ 0 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   582
        columns size == 0 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   583
            self columns:aCollection
1d91a0437471 initial checkin
ca
parents:
diff changeset
   584
        ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   585
            columns addAll:aCollection beforeIndex:anIndex.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   586
            self recomputeWholeGraph.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   587
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   588
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   589
1d91a0437471 initial checkin
ca
parents:
diff changeset
   590
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   591
1d91a0437471 initial checkin
ca
parents:
diff changeset
   592
addFirst:aColumn
1d91a0437471 initial checkin
ca
parents:
diff changeset
   593
    "insert a column at start; returns the inserted column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   594
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   595
    ^ self add:aColumn beforeIndex:1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   596
1d91a0437471 initial checkin
ca
parents:
diff changeset
   597
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   598
1d91a0437471 initial checkin
ca
parents:
diff changeset
   599
removeAll
1d91a0437471 initial checkin
ca
parents:
diff changeset
   600
    "remove all columns
1d91a0437471 initial checkin
ca
parents:
diff changeset
   601
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   602
    self columns:nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   603
1d91a0437471 initial checkin
ca
parents:
diff changeset
   604
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   605
1d91a0437471 initial checkin
ca
parents:
diff changeset
   606
removeFirst
1d91a0437471 initial checkin
ca
parents:
diff changeset
   607
    "remove first column; returns the removed column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   608
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   609
    ^ self removeIndex:1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   610
1d91a0437471 initial checkin
ca
parents:
diff changeset
   611
1d91a0437471 initial checkin
ca
parents:
diff changeset
   612
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   613
1d91a0437471 initial checkin
ca
parents:
diff changeset
   614
removeIndex:anIndex
1d91a0437471 initial checkin
ca
parents:
diff changeset
   615
    "remove column at an index; returns the removed column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   616
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   617
    |col|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   618
1d91a0437471 initial checkin
ca
parents:
diff changeset
   619
    col := columns removeAtIndex:anIndex.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   620
    col removeDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   621
1d91a0437471 initial checkin
ca
parents:
diff changeset
   622
    columns size == 0 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   623
        columns := nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   624
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   625
    col shown ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   626
        self listSizeChanged:#remove: from:col
1d91a0437471 initial checkin
ca
parents:
diff changeset
   627
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   628
  ^ col
1d91a0437471 initial checkin
ca
parents:
diff changeset
   629
1d91a0437471 initial checkin
ca
parents:
diff changeset
   630
1d91a0437471 initial checkin
ca
parents:
diff changeset
   631
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   632
1d91a0437471 initial checkin
ca
parents:
diff changeset
   633
removeLast
1d91a0437471 initial checkin
ca
parents:
diff changeset
   634
    "remove last column; the removed column is returned
1d91a0437471 initial checkin
ca
parents:
diff changeset
   635
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   636
    ^ self removeIndex:(columns size)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   637
1d91a0437471 initial checkin
ca
parents:
diff changeset
   638
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   639
1d91a0437471 initial checkin
ca
parents:
diff changeset
   640
!GraphColumnView methodsFor:'change & update'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   641
1d91a0437471 initial checkin
ca
parents:
diff changeset
   642
update:what with:aPara from:chgObj
1d91a0437471 initial checkin
ca
parents:
diff changeset
   643
    "catch and handle a change notification of any object
1d91a0437471 initial checkin
ca
parents:
diff changeset
   644
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   645
    |list start size stop|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   646
1d91a0437471 initial checkin
ca
parents:
diff changeset
   647
    chgObj == windowSizeHolder ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   648
        ^ self windowSize:(windowSizeHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   649
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   650
1d91a0437471 initial checkin
ca
parents:
diff changeset
   651
    chgObj == zoomYHolder ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   652
        ^ self zoomY:(zoomYHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   653
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   654
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   655
    chgObj == graphOriginXHolder ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   656
        ^ self graphOriginX:(graphOriginXHolder value)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   657
    ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   658
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   659
    chgObj == vLinesHolder ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   660
        (what == #insert:) ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   661
            self vLineAdd:(list at:aPara) beforeIndex:aPara
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   662
        ] ifFalse:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   663
            (what == #remove:) ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   664
                self vLineRemoveIndex:aPara
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   665
            ] ifFalse:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   666
                (what == #insertCollection:) ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   667
                    start := aPara first.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   668
                    size  := aPara last.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   669
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   670
                    size ~~ 0 ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   671
                        size == 1 ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   672
                            self vLineAdd:(list at:start) beforeIndex:start
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   673
                        ] ifFalse:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   674
                            stop := start + size - 1.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   675
                            self vLineAddAll:(list copyFrom:start to:stop) beforeIndex:start
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   676
                        ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   677
                    ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   678
                ] ifFalse:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   679
                    self vLinesHolder:chgObj
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   680
                ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   681
            ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   682
        ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   683
        ^ self        
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   684
    ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   685
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   686
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   687
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   688
    chgObj == model ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   689
        (what == #selectionIndex or:[what == #selection]) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   690
            ^ self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   691
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   692
        what == #list ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   693
            ^ self listHolder:model list
1d91a0437471 initial checkin
ca
parents:
diff changeset
   694
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   695
        model == listHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   696
            ^ self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   697
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   698
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   699
1d91a0437471 initial checkin
ca
parents:
diff changeset
   700
    chgObj == listHolder ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   701
        list := listHolder value.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   702
1d91a0437471 initial checkin
ca
parents:
diff changeset
   703
        (what == #insert:) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   704
            self add:(list at:aPara) beforeIndex:aPara
1d91a0437471 initial checkin
ca
parents:
diff changeset
   705
        ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   706
            (what == #remove:) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   707
                self removeIndex:aPara
1d91a0437471 initial checkin
ca
parents:
diff changeset
   708
            ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   709
                (what == #insertCollection:) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   710
                    start := aPara first.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   711
                    size  := aPara last.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   712
1d91a0437471 initial checkin
ca
parents:
diff changeset
   713
                    size ~~ 0 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   714
                        size == 1 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   715
                            self add:(list at:start) beforeIndex:start
1d91a0437471 initial checkin
ca
parents:
diff changeset
   716
                        ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   717
                            stop := start + size - 1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   718
                            self addAll:(list copyFrom:start to:stop) beforeIndex:start
1d91a0437471 initial checkin
ca
parents:
diff changeset
   719
                        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   720
                    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   721
                ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   722
                    self listHolder:chgObj
1d91a0437471 initial checkin
ca
parents:
diff changeset
   723
                ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   724
            ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   725
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   726
        ^ self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   727
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   728
1d91a0437471 initial checkin
ca
parents:
diff changeset
   729
    columns notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   730
        (columns includesIdentical:chgObj) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   731
            ^ self columnChanged:what with:aPara from:chgObj
1d91a0437471 initial checkin
ca
parents:
diff changeset
   732
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   733
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   734
1d91a0437471 initial checkin
ca
parents:
diff changeset
   735
    super update:what with:aPara from:chgObj
1d91a0437471 initial checkin
ca
parents:
diff changeset
   736
1d91a0437471 initial checkin
ca
parents:
diff changeset
   737
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   738
1d91a0437471 initial checkin
ca
parents:
diff changeset
   739
!GraphColumnView methodsFor:'conversion'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   740
1d91a0437471 initial checkin
ca
parents:
diff changeset
   741
floatFrom:aValue onError:aBlock
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   742
    "converts something to a float, on error the result of the block is returned
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   743
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   744
    ^ aValue isNumber ifTrue:[aValue asFloat] ifFalse:[aBlock value]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   745
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   746
1d91a0437471 initial checkin
ca
parents:
diff changeset
   747
unsignedIntegerFrom:aValue onError:aBlock
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   748
    "converts something to an unsigned integer, on error the result of the block is returned
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   749
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   750
    |v|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   751
1d91a0437471 initial checkin
ca
parents:
diff changeset
   752
    aValue isNumber ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   753
        v := aValue isInteger ifTrue:[aValue] ifFalse:[(aValue asFloat) rounded].       "/ no fractions
1d91a0437471 initial checkin
ca
parents:
diff changeset
   754
1d91a0437471 initial checkin
ca
parents:
diff changeset
   755
        v >= 0 ifTrue:[ ^ v ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   756
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   757
    ^ aBlock value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   758
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   759
1d91a0437471 initial checkin
ca
parents:
diff changeset
   760
!GraphColumnView methodsFor:'initialization'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   761
1d91a0437471 initial checkin
ca
parents:
diff changeset
   762
create
1d91a0437471 initial checkin
ca
parents:
diff changeset
   763
    "set color on device
1d91a0437471 initial checkin
ca
parents:
diff changeset
   764
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   765
    super create.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   766
1d91a0437471 initial checkin
ca
parents:
diff changeset
   767
    fgColor     := (fgColor     ? DefaultForegroundColor) on:device.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   768
    bgColor     := (bgColor     ? DefaultBackgroundColor) on:device.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   769
    gridColor   := (gridColor   ? DefaultGridColor)       on:device.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   770
    vLinesColor := (vLinesColor ? DefaultVLinesColor)     on:device.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   771
1d91a0437471 initial checkin
ca
parents:
diff changeset
   772
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   773
1d91a0437471 initial checkin
ca
parents:
diff changeset
   774
destroy
1d91a0437471 initial checkin
ca
parents:
diff changeset
   775
    "remove dependencies
1d91a0437471 initial checkin
ca
parents:
diff changeset
   776
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   777
    super destroy.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   778
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   779
    listHolder         removeDependent:self.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   780
    vLinesHolder       removeDependent:self.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   781
    windowSizeHolder   removeDependent:self.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   782
    zoomYHolder        removeDependent:self.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   783
    graphOriginXHolder removeDependent:self.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   784
1d91a0437471 initial checkin
ca
parents:
diff changeset
   785
    columns notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   786
        columns do:[:aCol| aCol removeDependent:self ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   787
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   788
1d91a0437471 initial checkin
ca
parents:
diff changeset
   789
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   790
1d91a0437471 initial checkin
ca
parents:
diff changeset
   791
initialize
1d91a0437471 initial checkin
ca
parents:
diff changeset
   792
    "setup default values
1d91a0437471 initial checkin
ca
parents:
diff changeset
   793
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   794
    super initialize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   795
1d91a0437471 initial checkin
ca
parents:
diff changeset
   796
    DefaultGridColor isNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   797
        self class updateStyleCache
1d91a0437471 initial checkin
ca
parents:
diff changeset
   798
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   799
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   800
    vLines       := OrderedCollection new.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   801
    windowSize   := 101.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   802
    showGrid     := false.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   803
    zoomY        := 1.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   804
    graphOriginX := 1.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   805
    scrollUpdatesOriginX := false.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   806
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   807
1d91a0437471 initial checkin
ca
parents:
diff changeset
   808
!GraphColumnView methodsFor:'menu & submenus'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   809
1d91a0437471 initial checkin
ca
parents:
diff changeset
   810
defaultMenu
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   811
    "returns the default middle button menu provided by the graph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   812
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   813
    |menu|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   814
1d91a0437471 initial checkin
ca
parents:
diff changeset
   815
    menu := self class defaultMenu decodeAsLiteralArray.
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   816
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   817
    menu notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   818
        menu receiver:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   819
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   820
  ^ menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   821
1d91a0437471 initial checkin
ca
parents:
diff changeset
   822
1d91a0437471 initial checkin
ca
parents:
diff changeset
   823
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   824
1d91a0437471 initial checkin
ca
parents:
diff changeset
   825
doZoomY:aValue
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   826
    "triggered by the default menu to change the current zoom Y factor;
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   827
     on change, the corresponding model (zoomYHolder) is updated.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   828
    "
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   829
    |old|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   830
1d91a0437471 initial checkin
ca
parents:
diff changeset
   831
    old := self zoomY.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   832
    self zoomY:aValue.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   833
1d91a0437471 initial checkin
ca
parents:
diff changeset
   834
    self zoomYHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   835
        zoomYHolder value:(self zoomY)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   836
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   837
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   838
1d91a0437471 initial checkin
ca
parents:
diff changeset
   839
subMenuZoomY
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   840
    "returns the submenu to configure the zoom Y factor
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   841
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   842
    ^ GraphColumn zoomMenuSelector:#doZoomY:
1d91a0437471 initial checkin
ca
parents:
diff changeset
   843
1d91a0437471 initial checkin
ca
parents:
diff changeset
   844
1d91a0437471 initial checkin
ca
parents:
diff changeset
   845
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   846
1d91a0437471 initial checkin
ca
parents:
diff changeset
   847
!GraphColumnView methodsFor:'protocol'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   848
1d91a0437471 initial checkin
ca
parents:
diff changeset
   849
colorChanged:what
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   850
    "called if any color changed; the argument to the change notification
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   851
     specifies the color which has changed:
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   852
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   853
        #foreground     the foreground color 
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   854
        #background     the background color
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   855
        #grid           the color of the grid
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   856
        #vLines         the color of the vertical lines
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   857
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   858
    self recomputeWholeGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   859
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   860
1d91a0437471 initial checkin
ca
parents:
diff changeset
   861
columnChanged:what with:aPara from:aColumn
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   862
    "a column has changed one of its attributes; the arguments to the
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   863
     notification are passed by the column.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   864
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   865
    self recomputeWholeGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   866
1d91a0437471 initial checkin
ca
parents:
diff changeset
   867
1d91a0437471 initial checkin
ca
parents:
diff changeset
   868
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   869
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   870
graphOriginXChanged:deltaX
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   871
    "scroll left or right n x-steps. A positive value scrolls to the right
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   872
     a negative value to the left.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   873
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   874
    self recomputeWholeGraph
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   875
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   876
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   877
invalidateGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   878
    "called to redraw the graph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   879
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   880
    self recomputeWholeGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   881
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   882
1d91a0437471 initial checkin
ca
parents:
diff changeset
   883
listSizeChanged:what from:aColumn
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   884
    "called if a column description is inserted (#insert:) or removed (#remove:)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   885
     from the list of columns.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   886
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   887
    self recomputeWholeGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   888
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   889
1d91a0437471 initial checkin
ca
parents:
diff changeset
   890
recomputeWholeGraph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   891
    "called if the whole graph should be recomputed
1d91a0437471 initial checkin
ca
parents:
diff changeset
   892
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   893
    self subclassResponsibility
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   894
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   895
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   896
vLinesSizeChanged:what atX:aPhysX
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   897
    "called if the list of vertical lines changed; a new lineIndex is inserted (#insert:)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   898
     or removed (#remove:) from the list
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   899
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   900
    self recomputeWholeGraph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   901
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   902
1d91a0437471 initial checkin
ca
parents:
diff changeset
   903
!GraphColumnView methodsFor:'queries'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   904
1d91a0437471 initial checkin
ca
parents:
diff changeset
   905
numberOfVisibleColumns
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   906
    "returns the number of visible Columns (shown is true)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   907
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   908
    |no|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   909
1d91a0437471 initial checkin
ca
parents:
diff changeset
   910
    no := 0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   911
1d91a0437471 initial checkin
ca
parents:
diff changeset
   912
    columns notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   913
        columns do:[:aCol| aCol shown ifTrue:[no := no + 1]]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   914
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   915
    ^ no
1d91a0437471 initial checkin
ca
parents:
diff changeset
   916
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   917
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   918
!GraphColumnView methodsFor:'scrolling'!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   919
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   920
halfWindowSizeLeft
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   921
    "scroll left half window size
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   922
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   923
    self scrollLeft:(windowSize // 2)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   924
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   925
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   926
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   927
halfWindowSizeRight
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   928
    "scroll right half window size
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   929
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   930
    self scrollRight:(windowSize // 2)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   931
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   932
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   933
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   934
scroll:nIndices
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   935
    "scroll left or right n x-steps. a positive value scrolls to the right
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   936
     a negative value to the left.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   937
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   938
    |max|
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   939
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   940
    nIndices ~~ 0 ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   941
        scrollUpdatesOriginX ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   942
            graphOriginX := graphOriginX - nIndices
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   943
        ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   944
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   945
        shown ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   946
            max := 2 * (windowSize // 3).
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   947
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   948
            (nIndices abs) > max ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   949
                self recomputeWholeGraph                "/ full redraw
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   950
            ] ifFalse:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   951
                self graphOriginXChanged:nIndices       "/ scroll
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   952
            ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   953
        ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   954
    ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   955
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   956
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   957
scrollLeft:nIndices
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   958
    "scroll n indices left
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   959
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   960
    self scroll:(nIndices negated)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   961
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   962
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   963
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   964
scrollRight:nIndices
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   965
    "scroll n indices right
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   966
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   967
    self scroll:nIndices
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   968
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   969
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   970
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   971
windowSizeLeft
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   972
    "scroll left window size
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   973
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   974
    self scrollLeft:windowSize
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   975
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   976
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   977
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   978
windowSizeRight
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   979
    "scroll right window size
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   980
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   981
    self scrollRight:windowSize
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   982
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   983
! !
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   984
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   985
!GraphColumnView class methodsFor:'documentation'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   986
1d91a0437471 initial checkin
ca
parents:
diff changeset
   987
version
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   988
    ^ '$Header: /cvs/stx/stx/libwidg2/GraphColumnView.st,v 1.2 1998-02-09 10:31:27 ca Exp $'
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   989
! !