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