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