GraphColumnView.st
author ca
Mon, 09 Mar 1998 17:09:47 +0100
changeset 813 ede4f0fa4168
parent 754 c55a5727bf04
child 1062 3be6b8b6a875
permissions -rw-r--r--
change notification for grid changed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
     1
View subclass:#GraphColumnView
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
     2
	instanceVariableNames:'columns listHolder references referenceHolder referenceSelector
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
     3
		referenceColor showReferences zoomY zoomYHolder oldMenuMessage
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
     4
		windowSize windowSizeHolder gridColor showGrid fgColor bgColor
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
     5
		scrollUpdatesOriginX graphOriginX graphOriginXHolder'
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
     6
	classVariableNames:'DefaultBackgroundColor DefaultGridColor DefaultForegroundColor
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
     7
		DefaultReferenceColor'
741
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.
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
    45
    DefaultReferenceColor  := Color darkGray.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    46
    DefaultGridColor       := Color lightGray.
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
    47
    DefaultBackgroundColor := Color veryLightGray.
741
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
!GraphColumnView methodsFor:'accessing'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    55
1d91a0437471 initial checkin
ca
parents:
diff changeset
    56
columns
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    57
    "returns the list of column descriptions
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    58
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    59
    ^ columns
1d91a0437471 initial checkin
ca
parents:
diff changeset
    60
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
columns:aList
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    65
    "set the list of columns descriptions
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    66
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    67
    columns notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
    68
        columns do:[:aCol| aCol removeDependent:self ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
    69
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
    70
1d91a0437471 initial checkin
ca
parents:
diff changeset
    71
    aList size ~~ 0 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
    72
        columns := OrderedCollection new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    73
1d91a0437471 initial checkin
ca
parents:
diff changeset
    74
        aList do:[:aColumn| 
1d91a0437471 initial checkin
ca
parents:
diff changeset
    75
            aColumn addDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    76
            columns add:aColumn
1d91a0437471 initial checkin
ca
parents:
diff changeset
    77
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
    78
    ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
    79
        columns := nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
    80
    ].
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
    81
    self doRecomputeGraph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    82
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    83
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    84
graphOriginX
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    85
    "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
    86
     accessing Y values from the GraphColumn description. On default, the value
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    87
     is set to 1.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    88
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    89
    ^ graphOriginX
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    90
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
graphOriginX:aNumber
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    95
    "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
    96
     accessing Y values from the GraphColumn description. On default, the value
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    97
     is set to 1.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    98
     Changing the number, a scroll left or right is triggered.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
    99
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   100
    |newX state|
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   101
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   102
    aNumber isNumber ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   103
        newX := aNumber isInteger ifTrue:[aNumber]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   104
                                 ifFalse:[(aNumber asFloat) rounded].   "/ no fractions
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   105
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   106
        newX ~~ graphOriginX ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   107
            state := scrollUpdatesOriginX.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   108
            scrollUpdatesOriginX := true.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   109
            self scroll:(graphOriginX - newX).
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   110
            scrollUpdatesOriginX := state.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   111
        ]
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
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   115
referenceSelector
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   116
    "returns the selector how to access the X value of an instance into
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   117
     the reference list. If the selector is nil (default), the entry is
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   118
     assumed to be the X value.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   119
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   120
    ^ referenceSelector
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   121
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   122
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   123
referenceSelector:aSelector
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   124
    "set the selector how to access the X value of an instance into the
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   125
     reference list. If the selector is nil (default), the entry is
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   126
     assumed to be the X value.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   127
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   128
    referenceSelector := (aSelector size == 0) ifTrue:[ #value ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   129
                                              ifFalse:[ aSelector asSymbol ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   130
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   131
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   132
references
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   133
    "returns list of references
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   134
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   135
    ^ references
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   136
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   137
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   138
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   139
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   140
references:aListOfReferences
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   141
    "change the list of references
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   142
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   143
    aListOfReferences size == 0 ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   144
        references isEmpty ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   145
            ^ self                      "/ nothing changed
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   146
        ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   147
        references := OrderedCollection new.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   148
    ] ifFalse:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   149
        references := OrderedCollection new.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   150
        aListOfReferences do:[:i| references add:i ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   151
    ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   152
    self updateReferences:#size atRelX:nil
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   153
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   154
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   155
scrollUpdatesOriginX
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   156
    "returns true, if the graphOriginX automatically is updated by
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   157
     any scroll action. The default is set to false.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   158
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   159
    ^ scrollUpdatesOriginX
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   160
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   161
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   162
scrollUpdatesOriginX:aBool
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   163
    "set to true if the graphOriginX automatically should be updated by any
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   164
     scroll action. Otherwise a scroll has no influnce to the current
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   165
     graphOriginX.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   166
     The default is set to false.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   167
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   168
    scrollUpdatesOriginX := aBool
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   169
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   170
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   171
showDefaultMenu
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   172
    "returns true, if the middleButton menu is set to the default menu
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   173
     provided by the graph.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   174
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   175
    ^ self menuMessage == #defaultMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   176
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   177
1d91a0437471 initial checkin
ca
parents:
diff changeset
   178
showDefaultMenu:aBool
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   179
    "enable or disable the default menu provided by the graph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   180
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   181
    |currMsg|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   182
1d91a0437471 initial checkin
ca
parents:
diff changeset
   183
    currMsg := self menuMessage.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   184
1d91a0437471 initial checkin
ca
parents:
diff changeset
   185
    aBool ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   186
        oldMenuMessage := currMsg.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   187
        self menuMessage:#defaultMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   188
    ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   189
        currMsg == #defaultMenu ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   190
            self menuMessage:oldMenuMessage
1d91a0437471 initial checkin
ca
parents:
diff changeset
   191
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   192
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   193
1d91a0437471 initial checkin
ca
parents:
diff changeset
   194
1d91a0437471 initial checkin
ca
parents:
diff changeset
   195
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   196
1d91a0437471 initial checkin
ca
parents:
diff changeset
   197
!GraphColumnView methodsFor:'accessing dimensions'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   198
1d91a0437471 initial checkin
ca
parents:
diff changeset
   199
windowSize
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   200
    "get the number of horizontal steps ( X )
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   201
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   202
    ^ windowSize
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
windowSize:aValue
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   208
    "set the number of horizontal steps ( X )
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   209
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   210
    |sz|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   211
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   212
    sz := (self unsignedIntegerFrom:aValue onError:[101]) max:2.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   213
1d91a0437471 initial checkin
ca
parents:
diff changeset
   214
    sz ~~ windowSize ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   215
        windowSize := sz.
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   216
        self doRecomputeGraph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   217
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   218
1d91a0437471 initial checkin
ca
parents:
diff changeset
   219
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   220
1d91a0437471 initial checkin
ca
parents:
diff changeset
   221
zoomY
1d91a0437471 initial checkin
ca
parents:
diff changeset
   222
    "returns current y-zoom factor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   223
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   224
    ^ zoomY
1d91a0437471 initial checkin
ca
parents:
diff changeset
   225
1d91a0437471 initial checkin
ca
parents:
diff changeset
   226
1d91a0437471 initial checkin
ca
parents:
diff changeset
   227
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   228
1d91a0437471 initial checkin
ca
parents:
diff changeset
   229
zoomY:aValue
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   230
    "set the current y-zoom factor; if the argument is nil,
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   231
     the y-zoom is set to 1.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   232
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   233
    |zY|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   234
1d91a0437471 initial checkin
ca
parents:
diff changeset
   235
    (zY := self floatFrom:aValue onError:[1]) <= 0 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   236
        zY := 1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   237
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   238
1d91a0437471 initial checkin
ca
parents:
diff changeset
   239
    zY = zoomY ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   240
        zoomY := zY.
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   241
        self doInvalidateGraph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   242
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   243
1d91a0437471 initial checkin
ca
parents:
diff changeset
   244
1d91a0437471 initial checkin
ca
parents:
diff changeset
   245
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   246
1d91a0437471 initial checkin
ca
parents:
diff changeset
   247
!GraphColumnView methodsFor:'accessing look'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   248
1d91a0437471 initial checkin
ca
parents:
diff changeset
   249
backgroundColor
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   250
    "returns the current background color of the graph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   251
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   252
    ^ bgColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   253
1d91a0437471 initial checkin
ca
parents:
diff changeset
   254
1d91a0437471 initial checkin
ca
parents:
diff changeset
   255
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   256
1d91a0437471 initial checkin
ca
parents:
diff changeset
   257
backgroundColor:aColor
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   258
    "set the background color of the graph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   259
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   260
    (aColor isColor and:[bgColor ~= aColor]) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   261
        shown ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   262
            bgColor := aColor on:device.
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   263
            self doInvalidateGraph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   264
        ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   265
            bgColor := aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   266
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   267
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   268
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   269
1d91a0437471 initial checkin
ca
parents:
diff changeset
   270
foregroundColor
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   271
    "returns the default foreground color used to draw graphs which
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   272
     has no foreground color specified.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   273
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   274
    ^ fgColor
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
foregroundColor:aColor
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   279
    "set the default foreground color used to draw graphs which
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   280
     has no foreground color specified.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   281
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   282
    (aColor isColor and:[fgColor ~= aColor]) ifTrue:[
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   283
        shown ifTrue:[ fgColor := aColor on:device ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   284
             ifFalse:[ fgColor := aColor ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   285
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   286
        columns notNil ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   287
            self updateColumns:#color with:nil from:nil
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   288
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   289
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   290
1d91a0437471 initial checkin
ca
parents:
diff changeset
   291
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   292
1d91a0437471 initial checkin
ca
parents:
diff changeset
   293
gridColor
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   294
    "returns the foreground color of the grid
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   295
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   296
    ^ gridColor
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
gridColor:aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   301
    "set the foreground color of the grid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   302
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   303
    (aColor isColor and:[gridColor ~= aColor]) ifTrue:[
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   304
        shown ifTrue:[ gridColor := aColor on:device ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   305
             ifFalse:[ gridColor := aColor ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   306
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   307
        self updateGrid:#color
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   308
    ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   309
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   310
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   311
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   312
referenceColor
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   313
    "returns the foreground color used to draw the references
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   314
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   315
    ^ referenceColor
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   316
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   317
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   318
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   319
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   320
referenceColor:aColor
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   321
    "set the foreground color used to draw the references
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   322
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   323
    (aColor isColor and:[referenceColor ~= aColor]) ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   324
        shown ifTrue:[referenceColor := aColor on:device]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   325
             ifFalse:[referenceColor := aColor].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   326
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   327
        references notEmpty ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   328
            self updateReferences:#color atRelX:nil
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   329
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   330
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   331
1d91a0437471 initial checkin
ca
parents:
diff changeset
   332
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   333
1d91a0437471 initial checkin
ca
parents:
diff changeset
   334
showGrid
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   335
    "returns true if the grid is enabled
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   336
    "
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   337
    ^ showGrid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   338
1d91a0437471 initial checkin
ca
parents:
diff changeset
   339
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   340
1d91a0437471 initial checkin
ca
parents:
diff changeset
   341
showGrid:aBool
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   342
    "set the visibility state of the grid
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   343
    "
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   344
    |hasGrid|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   345
1d91a0437471 initial checkin
ca
parents:
diff changeset
   346
    showGrid ~~ aBool ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   347
        showGrid := aBool.
813
ede4f0fa4168 change notification for grid changed
ca
parents: 754
diff changeset
   348
        self updateGrid:#state
741
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
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   353
showReferences
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   354
    "returns the visibility state of the references
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   355
    "
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   356
    ^ showReferences
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   357
1d91a0437471 initial checkin
ca
parents:
diff changeset
   358
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   359
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   360
showReferences:aBool
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   361
    "set the visibility state of the references
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   362
    "
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   363
    |hasGrid|
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   364
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   365
    showReferences ~~ aBool ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   366
        showReferences := aBool.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   367
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   368
        references notEmpty ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   369
            self updateReferences:#state atRelX:nil
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   370
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   371
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   372
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   373
1d91a0437471 initial checkin
ca
parents:
diff changeset
   374
!GraphColumnView methodsFor:'accessing mvc'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   375
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   376
graphOriginXHolder
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   377
    "returns the valueHolder, which keeps the current graphOriginX (see: #graphOriginX:)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   378
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   379
    ^ graphOriginXHolder
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   380
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   381
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   382
graphOriginXHolder:aHolder
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   383
    "set the valueHolder, which keeps the current graphOriginX (see: #graphOriginX:)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   384
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   385
    graphOriginXHolder == aHolder ifFalse:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   386
        graphOriginXHolder notNil ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   387
            graphOriginXHolder removeDependent:self
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   388
        ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   389
        (graphOriginXHolder := aHolder) notNil ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   390
            graphOriginXHolder addDependent:self
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
    self graphOriginX:(graphOriginXHolder value)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   394
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   395
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   396
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   397
listHolder
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   398
    "returns the valueHolder, which keeps the list of column descriptions (see: #column:)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   399
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   400
    ^ listHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   401
1d91a0437471 initial checkin
ca
parents:
diff changeset
   402
1d91a0437471 initial checkin
ca
parents:
diff changeset
   403
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   404
1d91a0437471 initial checkin
ca
parents:
diff changeset
   405
listHolder:aHolder
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   406
    "set the valueHolder, which keeps the list of column descriptions (see: #column:)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   407
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   408
    listHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   409
        listHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   410
            listHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   411
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   412
        (listHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   413
            listHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   414
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   415
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   416
    self columns:(listHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   417
1d91a0437471 initial checkin
ca
parents:
diff changeset
   418
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   419
1d91a0437471 initial checkin
ca
parents:
diff changeset
   420
model:aModel
1d91a0437471 initial checkin
ca
parents:
diff changeset
   421
    "set the valueHolder which holds the selection and maybe the list of columnms
1d91a0437471 initial checkin
ca
parents:
diff changeset
   422
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   423
    (model respondsTo:#list) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   424
        (model list == listHolder) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   425
            self listHolder:nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   426
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   427
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   428
    super model:aModel.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   429
1d91a0437471 initial checkin
ca
parents:
diff changeset
   430
    aModel notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   431
        (aModel respondsTo:#list) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   432
            self listHolder:model list
1d91a0437471 initial checkin
ca
parents:
diff changeset
   433
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   434
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   435
1d91a0437471 initial checkin
ca
parents:
diff changeset
   436
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   437
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   438
referenceHolder
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   439
    "returns the valueHolder, which keeps the list of references (see: #references:)
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   440
    "
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   441
    ^ referenceHolder
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   442
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   443
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   444
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   445
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   446
referenceHolder:aHolder
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   447
    "set the valueHolder, which keeps the list of references (see: #references:)
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   448
    "
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   449
    referenceHolder == aHolder ifFalse:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   450
        referenceHolder notNil ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   451
            referenceHolder removeDependent:self
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   452
        ].
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   453
        (referenceHolder := aHolder) notNil ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   454
            referenceHolder addDependent:self
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   455
        ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   456
    ].
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   457
    self references:(referenceHolder value)
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   458
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   459
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   460
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   461
windowSizeHolder
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   462
    "returns the valueHolder, which keeps the windowSize (see: #windowSize:)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   463
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   464
    ^ windowSizeHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   465
1d91a0437471 initial checkin
ca
parents:
diff changeset
   466
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   467
1d91a0437471 initial checkin
ca
parents:
diff changeset
   468
windowSizeHolder:aHolder
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   469
    "set the valueHolder, which keeps the windowSize (see: #windowSize:)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   470
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   471
    windowSizeHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   472
        windowSizeHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   473
            windowSizeHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   474
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   475
        (windowSizeHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   476
            windowSizeHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   477
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   478
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   479
    self windowSize:(windowSizeHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   480
1d91a0437471 initial checkin
ca
parents:
diff changeset
   481
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   482
1d91a0437471 initial checkin
ca
parents:
diff changeset
   483
zoomYHolder
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   484
    "returns the valueHolder, which keeps the zoom Y factor (see: #zoomY:)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   485
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   486
    ^ zoomYHolder
1d91a0437471 initial checkin
ca
parents:
diff changeset
   487
1d91a0437471 initial checkin
ca
parents:
diff changeset
   488
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   489
1d91a0437471 initial checkin
ca
parents:
diff changeset
   490
zoomYHolder:aHolder
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   491
    "set the valueHolder, which keeps the zoom Y factor (see: #zoomY:)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   492
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   493
    zoomYHolder == aHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   494
        zoomYHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   495
            zoomYHolder removeDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   496
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   497
        (zoomYHolder := aHolder) notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   498
            zoomYHolder addDependent:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   499
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   500
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   501
    self zoomY:(zoomYHolder value).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   502
1d91a0437471 initial checkin
ca
parents:
diff changeset
   503
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   504
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   505
!GraphColumnView methodsFor:'add & remove columns'!
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   506
1d91a0437471 initial checkin
ca
parents:
diff changeset
   507
add:aColumn
1d91a0437471 initial checkin
ca
parents:
diff changeset
   508
    "insert a column at end; returns the inserted column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   509
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   510
    ^ self add:aColumn beforeIndex:(1 + columns size)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   511
1d91a0437471 initial checkin
ca
parents:
diff changeset
   512
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   513
1d91a0437471 initial checkin
ca
parents:
diff changeset
   514
add:aColumn afterIndex:anIndex
1d91a0437471 initial checkin
ca
parents:
diff changeset
   515
    "add a new column after an index; returns the inserted column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   516
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   517
    ^ self add:aColumn beforeIndex:(anIndex + 1)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   518
1d91a0437471 initial checkin
ca
parents:
diff changeset
   519
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   520
1d91a0437471 initial checkin
ca
parents:
diff changeset
   521
add:aColumn beforeIndex:anIndex
1d91a0437471 initial checkin
ca
parents:
diff changeset
   522
    "add a column before an index; returns the inserted column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   523
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   524
    aColumn isNil ifTrue:[^ nil].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   525
1d91a0437471 initial checkin
ca
parents:
diff changeset
   526
    columns isNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   527
        self columns:(Array with:aColumn).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   528
        ^ aColumn.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   529
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   530
    columns add:aColumn beforeIndex:anIndex.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   531
    aColumn addDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   532
1d91a0437471 initial checkin
ca
parents:
diff changeset
   533
    aColumn shown ifTrue:[
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   534
        self updateColumns:#insert: with:nil from:aColumn.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   535
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   536
1d91a0437471 initial checkin
ca
parents:
diff changeset
   537
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   538
1d91a0437471 initial checkin
ca
parents:
diff changeset
   539
addAll:aCollection beforeIndex:anIndex
1d91a0437471 initial checkin
ca
parents:
diff changeset
   540
    "add a collection of columns before an index
1d91a0437471 initial checkin
ca
parents:
diff changeset
   541
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   542
    aCollection size ~~ 0 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   543
        columns size == 0 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   544
            self columns:aCollection
1d91a0437471 initial checkin
ca
parents:
diff changeset
   545
        ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   546
            columns addAll:aCollection beforeIndex:anIndex.
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   547
            self doRecomputeGraph.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   548
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   549
    ]
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
addFirst:aColumn
1d91a0437471 initial checkin
ca
parents:
diff changeset
   554
    "insert a column at start; returns the inserted column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   555
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   556
    ^ self add:aColumn beforeIndex: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
removeAll
1d91a0437471 initial checkin
ca
parents:
diff changeset
   561
    "remove all columns
1d91a0437471 initial checkin
ca
parents:
diff changeset
   562
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   563
    self columns:nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   564
1d91a0437471 initial checkin
ca
parents:
diff changeset
   565
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   566
1d91a0437471 initial checkin
ca
parents:
diff changeset
   567
removeFirst
1d91a0437471 initial checkin
ca
parents:
diff changeset
   568
    "remove first column; returns the removed column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   569
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   570
    ^ self removeIndex:1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   571
1d91a0437471 initial checkin
ca
parents:
diff changeset
   572
1d91a0437471 initial checkin
ca
parents:
diff changeset
   573
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   574
1d91a0437471 initial checkin
ca
parents:
diff changeset
   575
removeIndex:anIndex
1d91a0437471 initial checkin
ca
parents:
diff changeset
   576
    "remove column at an index; returns the removed column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   577
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   578
    |col|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   579
1d91a0437471 initial checkin
ca
parents:
diff changeset
   580
    col := columns removeAtIndex:anIndex.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   581
    col removeDependent:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   582
1d91a0437471 initial checkin
ca
parents:
diff changeset
   583
    columns size == 0 ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   584
        columns := nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   585
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   586
    col shown ifTrue:[
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   587
        self updateColumns:#remove: with:nil from:col
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   588
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   589
  ^ col
1d91a0437471 initial checkin
ca
parents:
diff changeset
   590
1d91a0437471 initial checkin
ca
parents:
diff changeset
   591
1d91a0437471 initial checkin
ca
parents:
diff changeset
   592
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   593
1d91a0437471 initial checkin
ca
parents:
diff changeset
   594
removeLast
1d91a0437471 initial checkin
ca
parents:
diff changeset
   595
    "remove last column; the removed column is returned
1d91a0437471 initial checkin
ca
parents:
diff changeset
   596
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   597
    ^ self removeIndex:(columns size)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   598
1d91a0437471 initial checkin
ca
parents:
diff changeset
   599
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   600
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   601
!GraphColumnView methodsFor:'add & remove references'!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   602
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   603
referenceAdd:aReference
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   604
    "add a reference to end of list
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   605
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   606
    ^ self referenceAdd:aReference beforeIndex:(references size + 1)
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   607
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   608
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   609
referenceAdd:aReference beforeIndex:anIndex
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   610
    "add a reference before an index
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   611
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   612
    references add:aReference beforeIndex:anIndex.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   613
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   614
    self visibleReference:aReference do:[:x|
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   615
        self updateReferences:#insert: atRelX:x
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   616
    ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   617
    ^ aReference
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   618
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   619
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   620
referenceAddAll:aCollection beforeIndex:anIndex
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   621
    "add a collection of references before an index
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   622
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   623
    aCollection size ~~ 0 ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   624
        references size == 0 ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   625
            self references:aCollection
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   626
        ] ifFalse:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   627
            references addAll:aCollection beforeIndex:anIndex.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   628
            self updateReferences:#size atRelX:nil
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   629
        ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   630
    ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   631
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   632
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   633
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   634
referenceRemove:aReference
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   635
    "remove a reference
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   636
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   637
    ^ self referenceRemoveIndex:(references identityIndexOf:aReference)
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   638
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   639
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   640
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   641
referenceRemoveAll
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   642
    "remove all references
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   643
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   644
    self references:nil
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   645
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   646
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   647
referenceRemoveIndex:anIndex
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   648
    "remove the reference at an index
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   649
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   650
    |aReference|
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   651
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   652
    aReference := references removeAtIndex:anIndex.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   653
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   654
    self visibleReference:aReference do:[:x|
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   655
        self updateReferences:#remove: atRelX:x
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   656
    ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   657
    ^ aReference
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   658
! !
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   659
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   660
!GraphColumnView methodsFor:'change & update'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   661
1d91a0437471 initial checkin
ca
parents:
diff changeset
   662
update:what with:aPara from:chgObj
1d91a0437471 initial checkin
ca
parents:
diff changeset
   663
    "catch and handle a change notification of any object
1d91a0437471 initial checkin
ca
parents:
diff changeset
   664
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   665
    |list start size stop|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   666
1d91a0437471 initial checkin
ca
parents:
diff changeset
   667
    chgObj == windowSizeHolder ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   668
        ^ self windowSize:(windowSizeHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   669
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   670
1d91a0437471 initial checkin
ca
parents:
diff changeset
   671
    chgObj == zoomYHolder ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   672
        ^ self zoomY:(zoomYHolder value)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   673
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   674
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   675
    chgObj == graphOriginXHolder ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   676
        ^ self graphOriginX:(graphOriginXHolder value)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   677
    ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   678
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   679
    chgObj == referenceHolder ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   680
        list := chgObj list.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   681
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   682
        (what == #insert:) ifTrue:[
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   683
            ^ self referenceAdd:(list at:aPara) beforeIndex:aPara
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   684
        ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   685
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   686
        (what == #remove:) ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   687
            ^ self referenceRemoveIndex:aPara
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   688
        ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   689
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   690
        (what == #removeFrom:) ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   691
            chgObj value size == 0 ifTrue:[ ^ self references:nil ].
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   692
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   693
            start := aPara first.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   694
            stop  := aPara last.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   695
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   696
            (start - stop) == 0 ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   697
                ^ self referenceRemoveIndex:start
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   698
            ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   699
        ] ifFalse:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   700
            (what == #insertCollection:) ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   701
                start := aPara first.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   702
                size  := aPara last.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   703
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   704
                size == 1 ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   705
                    ^ self referenceAdd:(list at:start) beforeIndex:start
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   706
                ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   707
                stop := start + size - 1.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   708
                ^ self referenceAddAll:(list copyFrom:start to:stop) beforeIndex:start
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   709
            ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   710
        ].
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   711
        ^ self referenceHolder:chgObj
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   712
    ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   713
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   714
    chgObj == model ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   715
        (what == #selectionIndex or:[what == #selection]) ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   716
            ^ self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   717
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   718
        what == #list ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   719
            ^ self listHolder:model list
1d91a0437471 initial checkin
ca
parents:
diff changeset
   720
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   721
        model == listHolder ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   722
            ^ self
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
    chgObj == listHolder ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   727
        list := listHolder value.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   728
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   729
        (what == #insert:) ifTrue:[ ^ self add:(list at:aPara) beforeIndex:aPara ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   730
        (what == #remove:) ifTrue:[ ^ self removeIndex:aPara ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   731
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   732
        (what == #insertCollection:) ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   733
            start := aPara first.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   734
            size  := aPara last.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   735
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   736
            size ~~ 0 ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   737
                size == 1 ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   738
                    self add:(list at:start) beforeIndex:start
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   739
                ] ifFalse:[
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   740
                    stop := start + size - 1.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   741
                    self addAll:(list copyFrom:start to:stop) beforeIndex:start
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   742
                ]
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   743
            ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   744
            ^ self
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   745
        ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   746
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   747
        (what == #removeFrom:) ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   748
            chgObj value size == 0 ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   749
                ^ self columns:nil
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   750
            ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   751
            start := aPara first.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   752
            stop  := aPara last.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   753
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   754
            (start - stop) == 0 ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   755
                ^ self removeIndex:start
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   756
            ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   757
        ].
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   758
        ^ self listHolder:chgObj
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   759
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   760
1d91a0437471 initial checkin
ca
parents:
diff changeset
   761
    columns notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   762
        (columns includesIdentical:chgObj) ifTrue:[
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   763
            what ~~ #name ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   764
                ^ self updateColumns:what with:aPara from:chgObj
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   765
            ]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   766
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   767
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   768
1d91a0437471 initial checkin
ca
parents:
diff changeset
   769
    super update:what with:aPara from:chgObj
1d91a0437471 initial checkin
ca
parents:
diff changeset
   770
1d91a0437471 initial checkin
ca
parents:
diff changeset
   771
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   772
1d91a0437471 initial checkin
ca
parents:
diff changeset
   773
!GraphColumnView methodsFor:'conversion'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   774
1d91a0437471 initial checkin
ca
parents:
diff changeset
   775
floatFrom:aValue onError:aBlock
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   776
    "converts something to a float, on error the result of the block is returned
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   777
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   778
    ^ aValue isNumber ifTrue:[aValue asFloat] ifFalse:[aBlock value]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   779
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   780
1d91a0437471 initial checkin
ca
parents:
diff changeset
   781
unsignedIntegerFrom:aValue onError:aBlock
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   782
    "converts something to an unsigned integer, on error the result of the block is returned
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   783
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   784
    |v|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   785
1d91a0437471 initial checkin
ca
parents:
diff changeset
   786
    aValue isNumber ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   787
        v := aValue isInteger ifTrue:[aValue] ifFalse:[(aValue asFloat) rounded].       "/ no fractions
1d91a0437471 initial checkin
ca
parents:
diff changeset
   788
1d91a0437471 initial checkin
ca
parents:
diff changeset
   789
        v >= 0 ifTrue:[ ^ v ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   790
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   791
    ^ aBlock value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   792
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   793
1d91a0437471 initial checkin
ca
parents:
diff changeset
   794
!GraphColumnView methodsFor:'initialization'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   795
1d91a0437471 initial checkin
ca
parents:
diff changeset
   796
create
1d91a0437471 initial checkin
ca
parents:
diff changeset
   797
    "set color on device
1d91a0437471 initial checkin
ca
parents:
diff changeset
   798
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   799
    super create.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   800
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   801
    fgColor        := (fgColor        ? DefaultForegroundColor) on:device.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   802
    bgColor        := (bgColor        ? DefaultBackgroundColor) on:device.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   803
    gridColor      := (gridColor      ? DefaultGridColor)       on:device.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   804
    referenceColor := (referenceColor ? DefaultReferenceColor)  on:device.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   805
1d91a0437471 initial checkin
ca
parents:
diff changeset
   806
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   807
1d91a0437471 initial checkin
ca
parents:
diff changeset
   808
destroy
1d91a0437471 initial checkin
ca
parents:
diff changeset
   809
    "remove dependencies
1d91a0437471 initial checkin
ca
parents:
diff changeset
   810
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   811
    super destroy.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   812
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   813
    listHolder         removeDependent:self.
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   814
    referenceHolder    removeDependent:self.
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   815
    windowSizeHolder   removeDependent:self.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   816
    zoomYHolder        removeDependent:self.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   817
    graphOriginXHolder removeDependent:self.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   818
1d91a0437471 initial checkin
ca
parents:
diff changeset
   819
    columns notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   820
        columns do:[:aCol| aCol removeDependent:self ]
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
initialize
1d91a0437471 initial checkin
ca
parents:
diff changeset
   826
    "setup default values
1d91a0437471 initial checkin
ca
parents:
diff changeset
   827
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   828
    super initialize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   829
1d91a0437471 initial checkin
ca
parents:
diff changeset
   830
    DefaultGridColor isNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   831
        self class updateStyleCache
1d91a0437471 initial checkin
ca
parents:
diff changeset
   832
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   833
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   834
    references     := OrderedCollection new.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   835
    windowSize     := 101.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   836
    showGrid       := false.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   837
    showReferences := true.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   838
    zoomY          := 1.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   839
    graphOriginX   := 1.
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   840
    scrollUpdatesOriginX := false.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   841
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   842
1d91a0437471 initial checkin
ca
parents:
diff changeset
   843
!GraphColumnView methodsFor:'menu & submenus'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   844
1d91a0437471 initial checkin
ca
parents:
diff changeset
   845
defaultMenu
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   846
    "returns the default middle button menu provided by the graph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   847
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   848
    |menu|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   849
1d91a0437471 initial checkin
ca
parents:
diff changeset
   850
    menu := self class defaultMenu decodeAsLiteralArray.
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   851
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   852
    menu notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   853
        menu receiver:self
1d91a0437471 initial checkin
ca
parents:
diff changeset
   854
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   855
  ^ menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   856
1d91a0437471 initial checkin
ca
parents:
diff changeset
   857
1d91a0437471 initial checkin
ca
parents:
diff changeset
   858
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   859
1d91a0437471 initial checkin
ca
parents:
diff changeset
   860
doZoomY:aValue
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   861
    "triggered by the default menu to change the current zoom Y factor;
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   862
     on change, the corresponding model (zoomYHolder) is updated.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   863
    "
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   864
    |old|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   865
1d91a0437471 initial checkin
ca
parents:
diff changeset
   866
    old := self zoomY.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   867
    self zoomY:aValue.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   868
1d91a0437471 initial checkin
ca
parents:
diff changeset
   869
    self zoomYHolder notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   870
        zoomYHolder value:(self zoomY)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   871
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   872
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   873
1d91a0437471 initial checkin
ca
parents:
diff changeset
   874
subMenuZoomY
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   875
    "returns the submenu to configure the zoom Y factor
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   876
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   877
    ^ GraphColumn zoomMenuSelector:#doZoomY:
1d91a0437471 initial checkin
ca
parents:
diff changeset
   878
1d91a0437471 initial checkin
ca
parents:
diff changeset
   879
1d91a0437471 initial checkin
ca
parents:
diff changeset
   880
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   881
1d91a0437471 initial checkin
ca
parents:
diff changeset
   882
!GraphColumnView methodsFor:'protocol'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   883
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   884
doInvalidateGraph
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   885
    "called to set the graph to invalidate
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   886
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   887
    self doRecomputeGraph
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   888
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   889
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   890
doRecomputeGraph
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   891
    "called to recompute drawable objects and to set the
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   892
     graph to invalidate
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   893
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   894
!
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   895
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   896
updateColumns:what with:oldValue from:aColumn
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   897
    "called if the list of columns changed
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   898
         #size      the size of the columns
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   899
         #color:    color changed
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   900
     or a specific column:( aColumn notNil )
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   901
         #insert:   insert a new column
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   902
         #remove:   remove a column
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   903
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   904
        or a specific attribute derived from the
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   905
        changed column.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   906
    "
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   907
    self doRecomputeGraph
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   908
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   909
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   910
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   911
updateGrid:what
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   912
    "called if the grid changed
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   913
     #color     the color of the grid changed
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   914
     #state     the visibility state of the grid changed
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   915
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   916
    self doRecomputeGraph
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   917
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   918
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   919
updateOriginX:aDeltaX
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   920
    "graph origin X changed; scroll n steps left (aDeltaX < 0) or right (aDeltaX > 0)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   921
    "
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   922
    self doRecomputeGraph
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   923
!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   924
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   925
updateReferences:what atRelX:aRelX
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   926
    "called when the list of references changed.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   927
        #remove:        the reference at the relative X index is removed
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   928
        #insert:        a reference is inserted at the relative X index
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   929
        #size           the list of references changed
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   930
        #state          visibility state changed
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   931
        #color          the foreground color changed
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   932
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   933
    self doRecomputeGraph
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   934
! !
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   935
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   936
!GraphColumnView methodsFor:'queries'!
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   937
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   938
listOfVisibleColumns
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   939
    "returns a list of visible lines (never nil)
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   940
    "
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   941
    ^ columns notNil ifTrue:[ columns select:[:c| c shown] ] ifFalse:[ #() ]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   942
1d91a0437471 initial checkin
ca
parents:
diff changeset
   943
1d91a0437471 initial checkin
ca
parents:
diff changeset
   944
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   945
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   946
listOfVisibleRefIndices
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   947
    "returns a list of visible reference line indices or an empty
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   948
     collection (nothing defined or disabled).
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   949
    "
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   950
    |list winSz x|
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   951
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   952
    (showReferences and:[references notEmpty]) ifFalse:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   953
        ^ #()
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   954
    ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   955
    winSz := self windowSize.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   956
    list  := OrderedCollection new.
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   957
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   958
    referenceSelector isNil ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   959
        references do:[:aReference|
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   960
            x := aReference - graphOriginX.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   961
            (x >= 0 and:[x < winSz]) ifTrue:[ list add:x ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   962
        ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   963
    ] ifFalse:[        
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   964
        references do:[:aReference|
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   965
            x := (aReference perform:referenceSelector) - graphOriginX.
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   966
            (x >= 0 and:[x < winSz]) ifTrue:[ list add:x ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   967
        ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   968
    ].
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   969
    ^ list
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   970
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   971
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   972
visibleReference:aReference do:aOneArgBlock
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   973
    "evaluate the block with the relative visible X value; if the reference line
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   974
     is not visible, nothing will happen
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   975
    "
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   976
    |x|
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   977
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   978
    referenceSelector isNil ifTrue:[ x := aReference ]
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   979
                           ifFalse:[ x := aReference perform:referenceSelector ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   980
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   981
    ((x := x - graphOriginX) >= 0 and:[x < self windowSize]) ifTrue:[
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   982
        aOneArgBlock value:x
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
   983
    ]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   984
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   985
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   986
!GraphColumnView methodsFor:'scrolling'!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   987
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   988
halfWindowSizeLeft
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   989
    "scroll left half window size
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   990
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   991
    self scrollLeft:(windowSize // 2)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   992
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   993
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   994
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   995
halfWindowSizeRight
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   996
    "scroll right half window size
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   997
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   998
    self scrollRight:(windowSize // 2)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
   999
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1000
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1001
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1002
scroll:nIndices
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1003
    "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
  1004
     a negative value to the left.
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1005
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1006
    |max|
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1007
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1008
    nIndices ~~ 0 ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1009
        scrollUpdatesOriginX ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1010
            graphOriginX := graphOriginX - nIndices
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1011
        ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1012
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1013
        shown ifTrue:[
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1014
            max := 2 * (windowSize // 3).
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1015
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1016
            (nIndices abs) > max ifTrue:[
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
  1017
                self doRecomputeGraph           "/ full redraw
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1018
            ] ifFalse:[
754
c55a5727bf04 add more functionality
ca
parents: 749
diff changeset
  1019
                self updateOriginX:nIndices     "/ scroll
749
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1020
            ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1021
        ]
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1022
    ].
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1023
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1024
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1025
scrollLeft:nIndices
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1026
    "scroll n indices left
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1027
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1028
    self scroll:(nIndices negated)
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1029
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1030
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1031
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1032
scrollRight:nIndices
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1033
    "scroll n indices right
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1034
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1035
    self scroll:nIndices
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1036
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1037
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1038
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1039
windowSizeLeft
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1040
    "scroll left window size
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1041
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1042
    self scrollLeft:windowSize
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1043
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1044
!
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1045
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1046
windowSizeRight
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1047
    "scroll right window size
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1048
    "
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1049
    self scrollRight:windowSize
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1050
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1051
! !
18179e2bfff4 added text and new functionality
ca
parents: 741
diff changeset
  1052
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1053
!GraphColumnView class methodsFor:'documentation'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1054
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1055
version
813
ede4f0fa4168 change notification for grid changed
ca
parents: 754
diff changeset
  1056
    ^ '$Header: /cvs/stx/stx/libwidg2/GraphColumnView.st,v 1.4 1998-03-09 16:09:47 ca Exp $'
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1057
! !