GraphColumn.st
author ca
Mon, 09 Feb 1998 10:49:55 +0100
changeset 748 551f7ad62a24
parent 741 1d91a0437471
child 755 96aada921c11
permissions -rw-r--r--
added some text
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
     1
Model subclass:#GraphColumn
1d91a0437471 initial checkin
ca
parents:
diff changeset
     2
	instanceVariableNames:'aspects functionYblock'
1d91a0437471 initial checkin
ca
parents:
diff changeset
     3
	classVariableNames:''
1d91a0437471 initial checkin
ca
parents:
diff changeset
     4
	poolDictionaries:''
1d91a0437471 initial checkin
ca
parents:
diff changeset
     5
	category:'Views-Graphs'
1d91a0437471 initial checkin
ca
parents:
diff changeset
     6
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
     7
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
     8
!GraphColumn class methodsFor:'documentation'!
551f7ad62a24 added some text
ca
parents: 741
diff changeset
     9
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    10
documentation
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    11
"
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    12
    a model, which keeps all the information to describe a graph column as used by
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    13
    the GraphColumnView. Each change of an attribute will raise a change notification
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    14
    and immediately take affect in the graphs
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    15
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    16
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    17
    [author:]
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    18
        Claus Atzkern
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    19
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    20
    [see also:]
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    21
        GraphColumnView
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    22
        GraphColumnView2D
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    23
        GraphColumnView3D
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    24
"
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    25
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    26
! !
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    27
1d91a0437471 initial checkin
ca
parents:
diff changeset
    28
!GraphColumn class methodsFor:'instance creation'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    29
1d91a0437471 initial checkin
ca
parents:
diff changeset
    30
name:aName
1d91a0437471 initial checkin
ca
parents:
diff changeset
    31
    ^ self new name:aName
1d91a0437471 initial checkin
ca
parents:
diff changeset
    32
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    33
1d91a0437471 initial checkin
ca
parents:
diff changeset
    34
new
1d91a0437471 initial checkin
ca
parents:
diff changeset
    35
    ^ super basicNew initialize
1d91a0437471 initial checkin
ca
parents:
diff changeset
    36
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
    37
1d91a0437471 initial checkin
ca
parents:
diff changeset
    38
!GraphColumn class methodsFor:'menu definitions'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    39
1d91a0437471 initial checkin
ca
parents:
diff changeset
    40
colorMenuSelector:aSelector
1d91a0437471 initial checkin
ca
parents:
diff changeset
    41
    "specification used to build the Menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    42
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    43
    ^ ColorMenu colorMenu:true value:aSelector.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    44
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    45
1d91a0437471 initial checkin
ca
parents:
diff changeset
    46
middleButtonMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    47
    "this window spec was automatically generated by the ST/X MenuEditor"
1d91a0437471 initial checkin
ca
parents:
diff changeset
    48
1d91a0437471 initial checkin
ca
parents:
diff changeset
    49
    "do not manually edit this - the builder may not be able to
1d91a0437471 initial checkin
ca
parents:
diff changeset
    50
     handle the specification if its corrupted."
1d91a0437471 initial checkin
ca
parents:
diff changeset
    51
1d91a0437471 initial checkin
ca
parents:
diff changeset
    52
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    53
     MenuEditor new openOnClass:GraphColumn andSelector:#middleButtonMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    54
     (Menu new fromLiteralArrayEncoding:(GraphColumn middleButtonMenu)) startUp
1d91a0437471 initial checkin
ca
parents:
diff changeset
    55
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    56
1d91a0437471 initial checkin
ca
parents:
diff changeset
    57
    <resource: #menu>
1d91a0437471 initial checkin
ca
parents:
diff changeset
    58
1d91a0437471 initial checkin
ca
parents:
diff changeset
    59
    ^
1d91a0437471 initial checkin
ca
parents:
diff changeset
    60
     
1d91a0437471 initial checkin
ca
parents:
diff changeset
    61
       #(#Menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    62
          
1d91a0437471 initial checkin
ca
parents:
diff changeset
    63
           #(
1d91a0437471 initial checkin
ca
parents:
diff changeset
    64
             #(#MenuItem
1d91a0437471 initial checkin
ca
parents:
diff changeset
    65
                #'label:' 'Style'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    66
                #'argument:' #'lineStyle:'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    67
                #'submenuChannel:' #'styleMenuSelector:'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    68
            )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    69
             #(#MenuItem
1d91a0437471 initial checkin
ca
parents:
diff changeset
    70
                #'label:' 'Size'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    71
                #'argument:' #'lineWidth:'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    72
                #'submenuChannel:' #'widthMenuSelector:'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    73
            )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    74
             #(#MenuItem
1d91a0437471 initial checkin
ca
parents:
diff changeset
    75
                #'label:' 'Color'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    76
                #'argument:' #'foregroundColor:'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    77
                #'submenuChannel:' #'colorMenuSelector:'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    78
            )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    79
             #(#MenuItem
1d91a0437471 initial checkin
ca
parents:
diff changeset
    80
                #'label:' 'Zoom Y'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    81
                #'argument:' #'zoomY:'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    82
                #'submenuChannel:' #'zoomMenuSelector:'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    83
            )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    84
          ) nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
    85
          nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
    86
      )
1d91a0437471 initial checkin
ca
parents:
diff changeset
    87
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    88
1d91a0437471 initial checkin
ca
parents:
diff changeset
    89
styleMenuSelector:aSelector
1d91a0437471 initial checkin
ca
parents:
diff changeset
    90
    |menu width height item bitmap|
1d91a0437471 initial checkin
ca
parents:
diff changeset
    91
1d91a0437471 initial checkin
ca
parents:
diff changeset
    92
    menu   := Menu new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    93
    width  := 40.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    94
    height := 10.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    95
1d91a0437471 initial checkin
ca
parents:
diff changeset
    96
    #( #solid #dashed ) do:[:style|
1d91a0437471 initial checkin
ca
parents:
diff changeset
    97
        bitmap := Form width:width height:height depth:1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    98
        bitmap paint:(Color colorId:1).
1d91a0437471 initial checkin
ca
parents:
diff changeset
    99
        bitmap fillRectangleX:0 y:0 width:width height:height.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   100
1d91a0437471 initial checkin
ca
parents:
diff changeset
   101
        bitmap paint:(Color colorId:0).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   102
        bitmap fillRectangleX:0 y:0 width:width height:height.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   103
        bitmap paint:(Color colorId:1).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   104
        bitmap lineWidth:2.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   105
        bitmap lineStyle:style.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   106
        bitmap displayLineFromX:2 y:(height // 2) toX:width-2 y:(height // 2).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   107
        item := MenuItem labeled:bitmap.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   108
        item value:aSelector.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   109
        item argument:style.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   110
        menu addItem:item.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   111
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   112
  ^ menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   113
1d91a0437471 initial checkin
ca
parents:
diff changeset
   114
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   115
(self styleMenuSelector:#lineStyle) startUp
1d91a0437471 initial checkin
ca
parents:
diff changeset
   116
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   117
1d91a0437471 initial checkin
ca
parents:
diff changeset
   118
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   119
1d91a0437471 initial checkin
ca
parents:
diff changeset
   120
widthMenuSelector:aSelector
1d91a0437471 initial checkin
ca
parents:
diff changeset
   121
    |menu width item bitmap|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   122
1d91a0437471 initial checkin
ca
parents:
diff changeset
   123
    menu  := Menu new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   124
    width := 40.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   125
1d91a0437471 initial checkin
ca
parents:
diff changeset
   126
    #( 1 2 3 4 5 6 ) do:[:height|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   127
        bitmap := Form width:width height:height depth:1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   128
        bitmap paint:(Color colorId:1).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   129
        bitmap fillRectangleX:0 y:0 width:width height:height.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   130
1d91a0437471 initial checkin
ca
parents:
diff changeset
   131
        item := MenuItem labeled:bitmap.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   132
        item value:aSelector.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   133
        item argument:height.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   134
        menu addItem:item.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   135
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   136
    item := MenuItem labeled:'other ..'.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   137
    item value:[:arg :panel||n|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   138
        n := Number fromString:(Dialog request:'size:') onError:nil.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   139
1d91a0437471 initial checkin
ca
parents:
diff changeset
   140
        n notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   141
            panel receiver perform:aSelector with:n
1d91a0437471 initial checkin
ca
parents:
diff changeset
   142
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   143
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   144
    menu addItem:item.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   145
  ^ menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   146
1d91a0437471 initial checkin
ca
parents:
diff changeset
   147
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   148
(self widthMenuSelector:#lineWidth) startUp
1d91a0437471 initial checkin
ca
parents:
diff changeset
   149
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   150
1d91a0437471 initial checkin
ca
parents:
diff changeset
   151
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   152
1d91a0437471 initial checkin
ca
parents:
diff changeset
   153
zoomMenuSelector:aSelector
1d91a0437471 initial checkin
ca
parents:
diff changeset
   154
    "specification used to build the Menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   155
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   156
    |menu width item bitmap|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   157
1d91a0437471 initial checkin
ca
parents:
diff changeset
   158
    menu  := Menu new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   159
    width := 40.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   160
1d91a0437471 initial checkin
ca
parents:
diff changeset
   161
    #( 25 50 75 nil 100 nil 150 200 nil ) do:[:zY|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   162
        zY notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   163
            item := MenuItem labeled:(zY printString, ' %' ).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   164
            item value:aSelector.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   165
            item argument:(zY / 100).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   166
        ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   167
            item := MenuItem labeled:'-'.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   168
        ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   169
        menu addItem:item.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   170
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   171
    item := MenuItem labeled:'other ..'.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   172
    item value:[:arg :panel||n|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   173
        n := Number fromString:(Dialog request:'zoom %:') onError:nil.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   174
1d91a0437471 initial checkin
ca
parents:
diff changeset
   175
        n notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   176
            panel receiver perform:aSelector with:(n / 100)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   177
        ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   178
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   179
    menu addItem:item.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   180
  ^ menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   181
1d91a0437471 initial checkin
ca
parents:
diff changeset
   182
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   183
(self zoomMenuSelector:#zoomY) startUp
1d91a0437471 initial checkin
ca
parents:
diff changeset
   184
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   185
1d91a0437471 initial checkin
ca
parents:
diff changeset
   186
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   187
1d91a0437471 initial checkin
ca
parents:
diff changeset
   188
!GraphColumn methodsFor:'accessing'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   189
1d91a0437471 initial checkin
ca
parents:
diff changeset
   190
name
1d91a0437471 initial checkin
ca
parents:
diff changeset
   191
    "get the name of the column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   192
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   193
    ^ aspects at:#name ifAbsent:nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   194
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   195
1d91a0437471 initial checkin
ca
parents:
diff changeset
   196
name:aName
1d91a0437471 initial checkin
ca
parents:
diff changeset
   197
    "set the name of the column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   198
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   199
    self aspectAt:#name put:aName
1d91a0437471 initial checkin
ca
parents:
diff changeset
   200
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   201
1d91a0437471 initial checkin
ca
parents:
diff changeset
   202
relativeXaxis
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   203
    "returns the relative X-axis (y == 0) into the graph view; staring at top (0.0) to
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   204
     bottom (1.0). Thus a relative X axis of 0.5 means the graph is centered in the view.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   205
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   206
    ^ aspects at:#relativeXaxis ifAbsent:0.5
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
relativeXaxis:aNumberOrNil
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   212
    "sets the relative X-axis (y == 0) into the graph view; staring at top (0.0) to
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   213
     bottom (1.0). Thus a relative X axis of 0.5 means the graph is centered in the view.
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   214
     In case that the value is not a valid number, the relative X axis is set to 0.5.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   215
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   216
    |x|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   217
1d91a0437471 initial checkin
ca
parents:
diff changeset
   218
    aNumberOrNil notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   219
        x := aNumberOrNil isInteger ifTrue:[aNumberOrNil]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   220
                                   ifFalse:[aNumberOrNil asFloat]       "/ no fractions
1d91a0437471 initial checkin
ca
parents:
diff changeset
   221
    ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   222
        x := 0.5
1d91a0437471 initial checkin
ca
parents:
diff changeset
   223
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   224
1d91a0437471 initial checkin
ca
parents:
diff changeset
   225
    self aspectAt:#relativeXaxis put:x
1d91a0437471 initial checkin
ca
parents:
diff changeset
   226
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   227
1d91a0437471 initial checkin
ca
parents:
diff changeset
   228
scaleY
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   229
    "returns the current y-scale of the column (~~ 0); this value should be set once
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   230
     dependant on the maximum and minimum Y value. To zoom the graph vertical use
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   231
     insteat #zoomY:.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   232
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   233
    ^ aspects at:#scaleY ifAbsent:1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   234
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   235
1d91a0437471 initial checkin
ca
parents:
diff changeset
   236
scaleY:aNumberOrNil
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   237
    "set the current y-scale of the column (~~ 0); this value should be set once
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   238
     dependant on the maximum and minimum Y value. To zoom the graph vertical use
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   239
     insteat #zoomY:.
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   240
     In case that the value is not a valid number or less equal zero, the scale Y
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   241
     factor is set to its default value (1).
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   242
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   243
    |y|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   244
1d91a0437471 initial checkin
ca
parents:
diff changeset
   245
    aNumberOrNil notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   246
        y := aNumberOrNil isInteger ifTrue:[aNumberOrNil]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   247
                                   ifFalse:[aNumberOrNil asFloat].      "/ no fractions
1d91a0437471 initial checkin
ca
parents:
diff changeset
   248
1d91a0437471 initial checkin
ca
parents:
diff changeset
   249
        y > 0 ifFalse:[y := 1]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   250
    ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   251
        y := 1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   252
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   253
1d91a0437471 initial checkin
ca
parents:
diff changeset
   254
    self aspectAt:#scaleY put:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
   255
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   256
1d91a0437471 initial checkin
ca
parents:
diff changeset
   257
shown
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   258
    "returns true if the column is shown otherwise false
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   259
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   260
    ^ aspects at:#shown ifAbsent:true
1d91a0437471 initial checkin
ca
parents:
diff changeset
   261
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   262
1d91a0437471 initial checkin
ca
parents:
diff changeset
   263
shown:aState
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   264
    "set the visibility state of the column
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   265
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   266
    self aspectAt:#shown put:aState
1d91a0437471 initial checkin
ca
parents:
diff changeset
   267
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   268
1d91a0437471 initial checkin
ca
parents:
diff changeset
   269
transY
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   270
    "get the current y-transition of the column; the default is 0
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   271
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   272
    ^ aspects at:#transY ifAbsent:0
1d91a0437471 initial checkin
ca
parents:
diff changeset
   273
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   274
1d91a0437471 initial checkin
ca
parents:
diff changeset
   275
transY:anIntegerOrNil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   276
    "set the current y-transition of the column to an integer or nil (== 0).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   277
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   278
    |y|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   279
1d91a0437471 initial checkin
ca
parents:
diff changeset
   280
    anIntegerOrNil notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   281
        y := anIntegerOrNil isInteger ifTrue:[anIntegerOrNil]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   282
                                     ifFalse:[anIntegerOrNil asFloat rounded]   "/ catch fractions
1d91a0437471 initial checkin
ca
parents:
diff changeset
   283
    ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   284
        y := 0
1d91a0437471 initial checkin
ca
parents:
diff changeset
   285
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   286
        
1d91a0437471 initial checkin
ca
parents:
diff changeset
   287
    self aspectAt:#transY put:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
   288
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   289
1d91a0437471 initial checkin
ca
parents:
diff changeset
   290
zoomY
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   291
    "returns the current y-zoom factor of the column excluding the scale Y factor
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   292
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   293
    ^ aspects at:#zoomY ifAbsent:1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   294
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   295
1d91a0437471 initial checkin
ca
parents:
diff changeset
   296
zoomY:aFactor
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   297
    "set the current y-zoom factor of the column. The graph and its
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   298
     horizontal lines are vertical zoomed relative to its center defined
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   299
     by the relativeXaxis.
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   300
     In case that the value is not a valid number or less equal zero, the zoom Y
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   301
     factor is set to its default value (1).
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   302
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   303
    |y|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   304
1d91a0437471 initial checkin
ca
parents:
diff changeset
   305
    aFactor notNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   306
        y := aFactor isInteger ifTrue:[aFactor]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   307
                              ifFalse:[aFactor asFloat].        "/ no fractions
1d91a0437471 initial checkin
ca
parents:
diff changeset
   308
1d91a0437471 initial checkin
ca
parents:
diff changeset
   309
        y > 0 ifFalse:[y := 1]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   310
    ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   311
        y := 1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   312
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   313
    self aspectAt:#zoomY put:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
   314
1d91a0437471 initial checkin
ca
parents:
diff changeset
   315
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   316
1d91a0437471 initial checkin
ca
parents:
diff changeset
   317
!GraphColumn methodsFor:'accessing Y function'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   318
1d91a0437471 initial checkin
ca
parents:
diff changeset
   319
functionYblock
1d91a0437471 initial checkin
ca
parents:
diff changeset
   320
    "get the two arguments block which is used to access Y values from
1d91a0437471 initial checkin
ca
parents:
diff changeset
   321
     start into an array. The block should return the collection of y
1d91a0437471 initial checkin
ca
parents:
diff changeset
   322
     values; see method: #from:into:
1d91a0437471 initial checkin
ca
parents:
diff changeset
   323
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   324
    ^ functionYblock
1d91a0437471 initial checkin
ca
parents:
diff changeset
   325
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   326
1d91a0437471 initial checkin
ca
parents:
diff changeset
   327
functionYblock:something
1d91a0437471 initial checkin
ca
parents:
diff changeset
   328
    "set the two arguments block which is used to access Y values from
1d91a0437471 initial checkin
ca
parents:
diff changeset
   329
     start into an array. The block should return the collection of y
1d91a0437471 initial checkin
ca
parents:
diff changeset
   330
     values; see method: #from:into:
1d91a0437471 initial checkin
ca
parents:
diff changeset
   331
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   332
    functionYblock := something.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   333
    self changed.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   334
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   335
1d91a0437471 initial checkin
ca
parents:
diff changeset
   336
!GraphColumn methodsFor:'accessing Y values'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   337
1d91a0437471 initial checkin
ca
parents:
diff changeset
   338
yValueAt:anIndex
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   339
    "returns the Y value at an index
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   340
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   341
    ^ (self yValuesStartAt:anIndex into:(Array new:1)) at:1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   342
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   343
1d91a0437471 initial checkin
ca
parents:
diff changeset
   344
yValuesStartAt:start into:anArray
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   345
    "returns the Y values from start upto an array size. The collection of Y
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   346
     values should be returned.
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   347
     You can use the argument anArray, to store the Y values or a new array.
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   348
     The functionYblock is obligated to return the array used
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   349
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   350
    ^ functionYblock value:start value:anArray
1d91a0437471 initial checkin
ca
parents:
diff changeset
   351
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   352
1d91a0437471 initial checkin
ca
parents:
diff changeset
   353
!GraphColumn methodsFor:'accessing graph'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   354
1d91a0437471 initial checkin
ca
parents:
diff changeset
   355
foregroundColor
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   356
    "returns the color of the graph; if the color is nil the default foreground color
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   357
     of the graph is used which derives from the style sheet.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   358
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   359
    ^ aspects at:#foregroundColor ifAbsent:nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   361
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   362
1d91a0437471 initial checkin
ca
parents:
diff changeset
   363
foregroundColor:aColor
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   364
    "set the color of the graph; if the color is nil the default foreground color
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   365
     of the graph is used which derives from the style sheet.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   366
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   367
    self aspectAt:#foregroundColor put:aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   368
1d91a0437471 initial checkin
ca
parents:
diff changeset
   369
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   370
1d91a0437471 initial checkin
ca
parents:
diff changeset
   371
lineStyle
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   372
    "returns the style in which the graph is drawn; if no style is defined, the
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   373
     default style is used (#solid).
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   374
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   375
     Supported styles are #solid or #dashed
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   376
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   377
    ^ aspects at:#lineStyle ifAbsent:#solid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   378
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   379
1d91a0437471 initial checkin
ca
parents:
diff changeset
   380
lineStyle:aStyle
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   381
    "set the style in which the graph is drawn; if no style is defined or
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   382
     in case of a non valid style, the default style is used (#solid).
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   383
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   384
     Supported styles are #solid or #dashed
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   385
    "
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   386
    |style|
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   387
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   388
    style := aStyle == #dashed ifFalse:[#solid] ifTrue:[#dashed].
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   389
    self aspectAt:#lineStyle put:style
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   390
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   391
1d91a0437471 initial checkin
ca
parents:
diff changeset
   392
lineWidth
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   393
    "returns the width of the graph line
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   394
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   395
    ^ aspects at:#lineWidth ifAbsent:1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   396
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   397
1d91a0437471 initial checkin
ca
parents:
diff changeset
   398
lineWidth:anInteger
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   399
    "set the width of the graph line; if the width is not defined or
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   400
     not a valid number, the default value is set (1).
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   401
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   402
    self aspectAt:#lineWidth put:(anInteger ? 1)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   403
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   404
1d91a0437471 initial checkin
ca
parents:
diff changeset
   405
!GraphColumn methodsFor:'accessing hLines'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   406
1d91a0437471 initial checkin
ca
parents:
diff changeset
   407
hLineFgColor
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   408
    "returns the color of the horizontal lines; if the color is nil the default foreground
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   409
     color of the graph is used which derives from the style sheet.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   410
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   411
    ^ aspects at:#hLineFgColor ifAbsent:nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   412
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   413
1d91a0437471 initial checkin
ca
parents:
diff changeset
   414
hLineFgColor:aColor
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   415
    "set the color of the horizontal lines; if the color is nil the default foreground
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   416
     color of the graph is used which derives from the style sheet.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   417
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   418
    self aspectAt:#hLineFgColor put:aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   419
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   420
1d91a0437471 initial checkin
ca
parents:
diff changeset
   421
hLineList
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   422
    "returns the list of horizontal lines or nil
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   423
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   424
    ^ aspects at:#hLineList ifAbsent:nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   425
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   426
1d91a0437471 initial checkin
ca
parents:
diff changeset
   427
hLineList:aCollection
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   428
    "set the list of horizontal lines to be drawn
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   429
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   430
    |col|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   431
1d91a0437471 initial checkin
ca
parents:
diff changeset
   432
    col := (aCollection size ~~ 0) ifTrue:[aCollection] ifFalse:[nil].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   433
1d91a0437471 initial checkin
ca
parents:
diff changeset
   434
    self aspectAt:#hLineList put:col
1d91a0437471 initial checkin
ca
parents:
diff changeset
   435
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   436
1d91a0437471 initial checkin
ca
parents:
diff changeset
   437
hLineStyle
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   438
    "returns the style in which the horizontal lines are drawn; if no style is
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   439
     defined, the default style is used (#solid).
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   440
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   441
     Supported styles are #solid or #dashed
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   442
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   443
    ^ aspects at:#hLineStyle ifAbsent:#solid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   444
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   445
1d91a0437471 initial checkin
ca
parents:
diff changeset
   446
hLineStyle:aStyle
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   447
    "set the style in which the horizontal lines are drawn; if no style is defined
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   448
     or in case of a non valid style, the default style is used (#solid).
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   449
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   450
     Supported styles are #solid or #dashed.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   451
    "
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   452
    |style|
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   453
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   454
    style := aStyle == #dashed ifFalse:[#solid] ifTrue:[#dashed].
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   455
    self aspectAt:#hLineStyle put:style
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   456
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   457
1d91a0437471 initial checkin
ca
parents:
diff changeset
   458
hLineWidth
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   459
    "returns the width of the horizontal lines
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   460
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   461
    ^ aspects at:#hLineWidth ifAbsent:1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   462
1d91a0437471 initial checkin
ca
parents:
diff changeset
   463
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   464
1d91a0437471 initial checkin
ca
parents:
diff changeset
   465
hLineWidth:anInteger
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   466
    "set the width of the horizontal lines; if the width is not defined or
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   467
     not a valid number, the default value is set (1).
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   468
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   469
    self aspectAt:#hLineWidth put:(anInteger ? 1)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   470
1d91a0437471 initial checkin
ca
parents:
diff changeset
   471
1d91a0437471 initial checkin
ca
parents:
diff changeset
   472
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   473
1d91a0437471 initial checkin
ca
parents:
diff changeset
   474
!GraphColumn methodsFor:'accessing menu'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   475
1d91a0437471 initial checkin
ca
parents:
diff changeset
   476
middleButtonMenu
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   477
    "returns the default middle button menu of a column
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   478
    "
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   479
    |menu|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   480
1d91a0437471 initial checkin
ca
parents:
diff changeset
   481
    menu := Menu new fromLiteralArrayEncoding:(self class middleButtonMenu).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   482
    menu receiver:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   483
  ^ menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   484
1d91a0437471 initial checkin
ca
parents:
diff changeset
   485
1d91a0437471 initial checkin
ca
parents:
diff changeset
   486
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   487
1d91a0437471 initial checkin
ca
parents:
diff changeset
   488
!GraphColumn methodsFor:'aspects'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   489
1d91a0437471 initial checkin
ca
parents:
diff changeset
   490
aspect
1d91a0437471 initial checkin
ca
parents:
diff changeset
   491
    "returns current aspects
1d91a0437471 initial checkin
ca
parents:
diff changeset
   492
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   493
    ^ aspects
1d91a0437471 initial checkin
ca
parents:
diff changeset
   494
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   495
1d91a0437471 initial checkin
ca
parents:
diff changeset
   496
aspectAt:aKey put:aValue
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   497
    "set an aspect; if the aspect changed its value, a notification will
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   498
     be raised. The arguments to the change notifications is the key of
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   499
     the aspect (selector) and the old value of the aspect.
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   500
    "
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   501
    |oldValue|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   502
1d91a0437471 initial checkin
ca
parents:
diff changeset
   503
    oldValue := aspects at:aKey ifAbsent:nil.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   504
1d91a0437471 initial checkin
ca
parents:
diff changeset
   505
    oldValue ~= aValue ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   506
        aValue isNil ifTrue:[aspects removeKey:aKey]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   507
                    ifFalse:[aspects at:aKey put:aValue].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   508
1d91a0437471 initial checkin
ca
parents:
diff changeset
   509
        self changed:aKey with:oldValue
1d91a0437471 initial checkin
ca
parents:
diff changeset
   510
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   511
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   512
1d91a0437471 initial checkin
ca
parents:
diff changeset
   513
aspects:aDictionaryOrNil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   514
    "change aspects; raise a change notification when changed. If the argument is
1d91a0437471 initial checkin
ca
parents:
diff changeset
   515
     nil, the default aspects are set
1d91a0437471 initial checkin
ca
parents:
diff changeset
   516
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   517
    |oldAspects|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   518
1d91a0437471 initial checkin
ca
parents:
diff changeset
   519
    aDictionaryOrNil == aspects ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   520
        oldAspects := aspects.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   521
        self setAspects:aDictionaryOrNil.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   522
        self changed:#aspects with:oldAspects.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   523
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   524
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   525
1d91a0437471 initial checkin
ca
parents:
diff changeset
   526
setAspects:aDictionaryOrNil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   527
    "change aspects; raise no notification. If the argument is
1d91a0437471 initial checkin
ca
parents:
diff changeset
   528
     nil, the default aspects are set
1d91a0437471 initial checkin
ca
parents:
diff changeset
   529
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   530
    aDictionaryOrNil isNil ifTrue:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   531
        aspects := IdentityDictionary new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   532
1d91a0437471 initial checkin
ca
parents:
diff changeset
   533
        aspects at:#hLineWidth    put:1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   534
        aspects at:#lineWidth     put:1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   535
        aspects at:#scaleY        put:1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   536
        aspects at:#zoomY         put:1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   537
        aspects at:#transY        put:0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   538
        aspects at:#relativeXaxis put:0.5.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   539
    ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
   540
        aspects := aDictionaryOrNil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   541
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   542
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   543
1d91a0437471 initial checkin
ca
parents:
diff changeset
   544
!GraphColumn methodsFor:'initialization'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   545
1d91a0437471 initial checkin
ca
parents:
diff changeset
   546
initialize
1d91a0437471 initial checkin
ca
parents:
diff changeset
   547
    "setup default values
1d91a0437471 initial checkin
ca
parents:
diff changeset
   548
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   549
    super initialize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   550
    self setAspects:nil.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   551
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   552
1d91a0437471 initial checkin
ca
parents:
diff changeset
   553
!GraphColumn methodsFor:'printing'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   554
1d91a0437471 initial checkin
ca
parents:
diff changeset
   555
printString
1d91a0437471 initial checkin
ca
parents:
diff changeset
   556
    "returns my printable string
1d91a0437471 initial checkin
ca
parents:
diff changeset
   557
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   558
    |name|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   559
1d91a0437471 initial checkin
ca
parents:
diff changeset
   560
    ^ (name := self name) notNil ifTrue:[name printString] ifFalse:['']
1d91a0437471 initial checkin
ca
parents:
diff changeset
   561
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   562
1d91a0437471 initial checkin
ca
parents:
diff changeset
   563
!GraphColumn methodsFor:'queries'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   564
1d91a0437471 initial checkin
ca
parents:
diff changeset
   565
centerGraphMaxY:maxY minY:minY
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   566
    "set the transition Y for the graph dependant on the current scaleY, the maximum
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   567
     and minimum Y value; the graph is centered to its relative X-Axis.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   568
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   569
    self transY:(((maxY + minY) / 2) * self scaleY)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   570
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   571
1d91a0437471 initial checkin
ca
parents:
diff changeset
   572
scaleToHeight:aHeight maxY:maxY minY:minY
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   573
    "set the scale Y value dependant on the maximum and minimum Y value to fit into
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   574
     a height >= 1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   575
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   576
    |dltY|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   577
1d91a0437471 initial checkin
ca
parents:
diff changeset
   578
    (dltY := (maxY - minY) abs) = 0 ifTrue:[dltY := 1].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   579
    self scaleY:((aHeight max:1) / dltY)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   580
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   581
1d91a0437471 initial checkin
ca
parents:
diff changeset
   582
!GraphColumn class methodsFor:'documentation'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   583
1d91a0437471 initial checkin
ca
parents:
diff changeset
   584
version
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   585
    ^ '$Header: /cvs/stx/stx/libwidg2/GraphColumn.st,v 1.2 1998-02-09 09:49:55 ca Exp $'
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   586
! !