GraphColumnView.st
author Claus Gittinger <cg@exept.de>
Fri, 15 Jun 2018 10:54:35 +0200
changeset 5816 7876c07931a7
parent 4870 7e925a89519a
child 4872 68bda6fdbd38
permissions -rw-r--r--
#DOCUMENTATION by cg class: ComboListView class comment/format in: #documentation
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