GraphColumn.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 02 Sep 2022 11:25:39 +0100
branchjv
changeset 6261 9b7eb7159d29
parent 4770 6634b540fea2
permissions -rw-r--r--
Fix loong standing bug with some menus not being translated / resolved This has happened with browser "View" menu when sometimes it had the slice resolved and sometimes not. It turned out that it was because the code disabled resources (and therefore slices) resolution when processing shortcuts, so the menu was created and cached unresolved. This fixes the issue. eXept apparently run into the same problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
     1
"{ Package: 'stx:libwidg2' }"
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
     2
4770
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3150
diff changeset
     3
"{ NameSpace: Smalltalk }"
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3150
diff changeset
     4
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
     5
Model subclass:#GraphColumn
1d91a0437471 initial checkin
ca
parents:
diff changeset
     6
	instanceVariableNames:'aspects functionYblock'
1d91a0437471 initial checkin
ca
parents:
diff changeset
     7
	classVariableNames:''
1d91a0437471 initial checkin
ca
parents:
diff changeset
     8
	poolDictionaries:''
1d91a0437471 initial checkin
ca
parents:
diff changeset
     9
	category:'Views-Graphs'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    10
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    11
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    12
!GraphColumn class methodsFor:'documentation'!
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    13
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    14
documentation
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    15
"
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    16
    a model, which keeps all the information to describe a graph column as used by
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    17
    the GraphColumnView. Each change of an attribute will raise a change notification
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    18
    and immediately take affect in the graphs
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    19
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    20
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    21
    [author:]
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    22
	Claus Atzkern
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    23
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    24
    [see also:]
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    25
	GraphColumnView
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    26
	GraphColumnView2D
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    27
	GraphColumnView3D
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    28
"
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    29
551f7ad62a24 added some text
ca
parents: 741
diff changeset
    30
! !
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    31
1d91a0437471 initial checkin
ca
parents:
diff changeset
    32
!GraphColumn class methodsFor:'instance creation'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    33
1d91a0437471 initial checkin
ca
parents:
diff changeset
    34
name:aName
1d91a0437471 initial checkin
ca
parents:
diff changeset
    35
    ^ self new name:aName
1d91a0437471 initial checkin
ca
parents:
diff changeset
    36
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    37
1d91a0437471 initial checkin
ca
parents:
diff changeset
    38
new
1d91a0437471 initial checkin
ca
parents:
diff changeset
    39
    ^ super basicNew initialize
1d91a0437471 initial checkin
ca
parents:
diff changeset
    40
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
    41
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
    42
!GraphColumn class methodsFor:'constants'!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
    43
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
    44
lineStyleFor:aStyle
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
    45
    "returns the valid style for a style; supported styles
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
    46
     are:
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    47
	#dashed and #solid
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
    48
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
    49
    ^ aStyle == #dashed ifFalse:[#solid] ifTrue:[#dashed]
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
    50
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
    51
! !
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
    52
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    53
!GraphColumn class methodsFor:'menu definitions'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    54
1d91a0437471 initial checkin
ca
parents:
diff changeset
    55
colorMenuSelector:aSelector
1d91a0437471 initial checkin
ca
parents:
diff changeset
    56
    "specification used to build the Menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    57
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    58
    ^ ColorMenu colorMenu:true value:aSelector.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    59
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    60
1d91a0437471 initial checkin
ca
parents:
diff changeset
    61
middleButtonMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    62
    "this window spec was automatically generated by the ST/X MenuEditor"
1d91a0437471 initial checkin
ca
parents:
diff changeset
    63
1d91a0437471 initial checkin
ca
parents:
diff changeset
    64
    "do not manually edit this - the builder may not be able to
1d91a0437471 initial checkin
ca
parents:
diff changeset
    65
     handle the specification if its corrupted."
1d91a0437471 initial checkin
ca
parents:
diff changeset
    66
1d91a0437471 initial checkin
ca
parents:
diff changeset
    67
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    68
     MenuEditor new openOnClass:GraphColumn andSelector:#middleButtonMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
    69
     (Menu new fromLiteralArrayEncoding:(GraphColumn middleButtonMenu)) startUp
1d91a0437471 initial checkin
ca
parents:
diff changeset
    70
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    71
1d91a0437471 initial checkin
ca
parents:
diff changeset
    72
    <resource: #menu>
1d91a0437471 initial checkin
ca
parents:
diff changeset
    73
1d91a0437471 initial checkin
ca
parents:
diff changeset
    74
    ^
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    75
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    76
       #(#Menu
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    77
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    78
	   #(
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    79
	     #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    80
		#'label:' 'Style'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    81
		#'argument:' #'lineStyle:'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    82
		#'submenuChannel:' #'styleMenuSelector:'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    83
	    )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    84
	     #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    85
		#'label:' 'Size'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    86
		#'argument:' #'lineWidth:'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    87
		#'submenuChannel:' #'widthMenuSelector:'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    88
	    )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    89
	     #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    90
		#'label:' 'Color'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    91
		#'argument:' #'foregroundColor:'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    92
		#'submenuChannel:' #'colorMenuSelector:'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    93
	    )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    94
	     #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    95
		#'label:' 'Zoom Y'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    96
		#'argument:' #'zoomY:'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    97
		#'submenuChannel:' #'zoomMenuSelector:'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    98
	    )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
    99
	  ) nil
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   100
	  nil
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   101
      )
1d91a0437471 initial checkin
ca
parents:
diff changeset
   102
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   103
1d91a0437471 initial checkin
ca
parents:
diff changeset
   104
styleMenuSelector:aSelector
1d91a0437471 initial checkin
ca
parents:
diff changeset
   105
    |menu width height item bitmap|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   106
1d91a0437471 initial checkin
ca
parents:
diff changeset
   107
    menu   := Menu new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   108
    width  := 40.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   109
    height := 10.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   110
1d91a0437471 initial checkin
ca
parents:
diff changeset
   111
    #( #solid #dashed ) do:[:style|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   112
	bitmap := Form width:width height:height depth:1.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   113
	bitmap paint:(Color colorId:1).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   114
	bitmap fillRectangleX:0 y:0 width:width height:height.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   115
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   116
	bitmap paint:(Color colorId:0).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   117
	bitmap fillRectangleX:0 y:0 width:width height:height.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   118
	bitmap paint:(Color colorId:1).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   119
	bitmap lineWidth:2.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   120
	bitmap lineStyle:style.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   121
	bitmap displayLineFromX:2 y:(height // 2) toX:width-2 y:(height // 2).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   122
	item := MenuItem labeled:bitmap.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   123
	item value:aSelector.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   124
	item argument:style.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   125
	menu addItem:item.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   126
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   127
  ^ menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   128
1d91a0437471 initial checkin
ca
parents:
diff changeset
   129
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   130
(self styleMenuSelector:#lineStyle) startUp
1d91a0437471 initial checkin
ca
parents:
diff changeset
   131
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   132
1d91a0437471 initial checkin
ca
parents:
diff changeset
   133
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   134
1d91a0437471 initial checkin
ca
parents:
diff changeset
   135
widthMenuSelector:aSelector
1d91a0437471 initial checkin
ca
parents:
diff changeset
   136
    |menu width item bitmap|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   137
1d91a0437471 initial checkin
ca
parents:
diff changeset
   138
    menu  := Menu new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   139
    width := 40.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   140
1d91a0437471 initial checkin
ca
parents:
diff changeset
   141
    #( 1 2 3 4 5 6 ) do:[:height|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   142
	bitmap := Form width:width height:height depth:1.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   143
	bitmap paint:(Color colorId:1).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   144
	bitmap fillRectangleX:0 y:0 width:width height:height.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   145
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   146
	item := MenuItem labeled:bitmap.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   147
	item value:aSelector.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   148
	item argument:height.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   149
	menu addItem:item.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   150
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   151
    item := MenuItem labeled:'other ..'.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   152
    item value:[:arg :panel||n|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   153
	n := Number fromString:(Dialog request:'size:') onError:nil.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   154
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   155
	n notNil ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   156
	    panel receiver perform:aSelector with:n
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   157
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   158
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   159
    menu addItem:item.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   160
  ^ menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   161
1d91a0437471 initial checkin
ca
parents:
diff changeset
   162
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   163
(self widthMenuSelector:#lineWidth) startUp
1d91a0437471 initial checkin
ca
parents:
diff changeset
   164
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   165
1d91a0437471 initial checkin
ca
parents:
diff changeset
   166
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   167
1d91a0437471 initial checkin
ca
parents:
diff changeset
   168
zoomMenuSelector:aSelector
1d91a0437471 initial checkin
ca
parents:
diff changeset
   169
    "specification used to build the Menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   170
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   171
    |menu width item bitmap|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   172
1d91a0437471 initial checkin
ca
parents:
diff changeset
   173
    menu  := Menu new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   174
    width := 40.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   175
1d91a0437471 initial checkin
ca
parents:
diff changeset
   176
    #( 25 50 75 nil 100 nil 150 200 nil ) do:[:zY|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   177
	zY notNil ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   178
	    item := MenuItem labeled:(zY printString, ' %' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   179
	    item value:aSelector.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   180
	    item argument:(zY / 100).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   181
	] ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   182
	    item := MenuItem labeled:'-'.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   183
	].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   184
	menu addItem:item.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   185
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   186
    item := MenuItem labeled:'other ..'.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   187
    item value:[:arg :panel||n|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   188
	n := Number fromString:(Dialog request:'zoom %:') onError:nil.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   189
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   190
	n notNil ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   191
	    panel receiver perform:aSelector with:(n / 100)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   192
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   193
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   194
    menu addItem:item.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   195
  ^ menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   196
1d91a0437471 initial checkin
ca
parents:
diff changeset
   197
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   198
(self zoomMenuSelector:#zoomY) startUp
1d91a0437471 initial checkin
ca
parents:
diff changeset
   199
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   200
1d91a0437471 initial checkin
ca
parents:
diff changeset
   201
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   202
1d91a0437471 initial checkin
ca
parents:
diff changeset
   203
!GraphColumn methodsFor:'accessing'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   204
1d91a0437471 initial checkin
ca
parents:
diff changeset
   205
name
1d91a0437471 initial checkin
ca
parents:
diff changeset
   206
    "get the name of the column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   207
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   208
    ^ aspects at:#name ifAbsent:nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   209
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   210
1d91a0437471 initial checkin
ca
parents:
diff changeset
   211
name:aName
1d91a0437471 initial checkin
ca
parents:
diff changeset
   212
    "set the name of the column
1d91a0437471 initial checkin
ca
parents:
diff changeset
   213
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   214
    self aspectAt:#name put:aName
1d91a0437471 initial checkin
ca
parents:
diff changeset
   215
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   216
1d91a0437471 initial checkin
ca
parents:
diff changeset
   217
relativeXaxis
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   218
    "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
   219
     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
   220
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   221
    ^ aspects at:#relativeXaxis ifAbsent:0.5
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
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   226
relativeXaxis:aValue
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   227
    "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
   228
     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
   229
     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
   230
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   231
    |x|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   232
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   233
    self aspectAt:#relativeXaxis put:(self numberFrom:aValue onError:[0.5])
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   234
1d91a0437471 initial checkin
ca
parents:
diff changeset
   235
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   236
1d91a0437471 initial checkin
ca
parents:
diff changeset
   237
scaleY
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   238
    "returns the current y-scale of the column (~~ 0); this value should be set once
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   239
     dependent on the maximum and minimum Y value. To zoom the graph vertical use
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   240
     insteat #zoomY:.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   241
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   242
    ^ aspects at:#scaleY ifAbsent:1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   243
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   244
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   245
scaleY:aFactor
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   246
    "set the current y-scale of the column (~~ 0); this value should be set once
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   247
     dependent on the maximum and minimum Y value. To zoom the graph vertical use
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   248
     insteat #zoomY:.
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   249
     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
   250
     factor is set to its default value (1).
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   251
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   252
    |y|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   253
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   254
    (y := self numberFrom:aFactor onError:[1]) > 0 ifFalse:[ y := 1 ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   255
    self aspectAt:#scaleY put:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
   256
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   257
1d91a0437471 initial checkin
ca
parents:
diff changeset
   258
shown
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   259
    "returns true if the column is shown otherwise false
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   260
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   261
    ^ aspects at:#shown ifAbsent:true
1d91a0437471 initial checkin
ca
parents:
diff changeset
   262
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   263
1d91a0437471 initial checkin
ca
parents:
diff changeset
   264
shown:aState
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   265
    "set the visibility state of the column
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   266
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   267
    self aspectAt:#shown put:aState
1d91a0437471 initial checkin
ca
parents:
diff changeset
   268
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   269
1d91a0437471 initial checkin
ca
parents:
diff changeset
   270
transY
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   271
    "get the current y-transition of the column; the default is 0
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   272
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   273
    ^ aspects at:#transY ifAbsent:0
1d91a0437471 initial checkin
ca
parents:
diff changeset
   274
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   275
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   276
transY:aValue
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   277
    "set the current y-transition of the column to an integer or nil (== 0).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   278
    "
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   279
    self aspectAt:#transY put:(self integerFrom:aValue onError:[0])
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   280
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   281
1d91a0437471 initial checkin
ca
parents:
diff changeset
   282
zoomY
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   283
    "returns the current y-zoom factor of the column excluding the scale Y factor
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   284
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   285
    ^ aspects at:#zoomY ifAbsent:1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   286
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   287
1d91a0437471 initial checkin
ca
parents:
diff changeset
   288
zoomY:aFactor
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   289
    "set the current y-zoom factor of the column. The graph and its
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   290
     horizontal lines are vertical zoomed relative to its center defined
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   291
     by the relativeXaxis.
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   292
     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
   293
     factor is set to its default value (1).
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   294
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   295
    |y|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   296
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   297
    (y := self numberFrom:aFactor onError:[1]) > 0 ifFalse:[ y := 1 ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   298
    self aspectAt:#zoomY put:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
   299
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   300
1d91a0437471 initial checkin
ca
parents:
diff changeset
   301
!GraphColumn methodsFor:'accessing Y function'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   302
1d91a0437471 initial checkin
ca
parents:
diff changeset
   303
functionYblock
1d91a0437471 initial checkin
ca
parents:
diff changeset
   304
    "get the two arguments block which is used to access Y values from
1d91a0437471 initial checkin
ca
parents:
diff changeset
   305
     start into an array. The block should return the collection of y
1d91a0437471 initial checkin
ca
parents:
diff changeset
   306
     values; see method: #from:into:
1d91a0437471 initial checkin
ca
parents:
diff changeset
   307
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   308
    ^ functionYblock
1d91a0437471 initial checkin
ca
parents:
diff changeset
   309
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   310
1d91a0437471 initial checkin
ca
parents:
diff changeset
   311
functionYblock:something
1d91a0437471 initial checkin
ca
parents:
diff changeset
   312
    "set the two arguments block which is used to access Y values from
1d91a0437471 initial checkin
ca
parents:
diff changeset
   313
     start into an array. The block should return the collection of y
1d91a0437471 initial checkin
ca
parents:
diff changeset
   314
     values; see method: #from:into:
1d91a0437471 initial checkin
ca
parents:
diff changeset
   315
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   316
    functionYblock := something.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   317
    self changed.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   318
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   319
1d91a0437471 initial checkin
ca
parents:
diff changeset
   320
!GraphColumn methodsFor:'accessing Y values'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   321
1d91a0437471 initial checkin
ca
parents:
diff changeset
   322
yValueAt:anIndex
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   323
    "returns the Y value at an index
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   324
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   325
    ^ (self yValuesStartAt:anIndex into:(Array new:1)) at:1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   326
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   327
1d91a0437471 initial checkin
ca
parents:
diff changeset
   328
yValuesStartAt:start into:anArray
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   329
    "returns the Y values from start upto an array size. The collection of Y
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   330
     values should be returned.
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   331
     You can use the argument anArray, to store the Y values or a new array.
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   332
     The functionYblock is obligated to return the array used
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   333
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   334
    ^ functionYblock value:start value:anArray
1d91a0437471 initial checkin
ca
parents:
diff changeset
   335
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   336
1d91a0437471 initial checkin
ca
parents:
diff changeset
   337
!GraphColumn methodsFor:'accessing graph'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   338
1d91a0437471 initial checkin
ca
parents:
diff changeset
   339
foregroundColor
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   340
    "returns the color of the graph; if the color is nil the default foreground color
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   341
     of the graph is used which derives from the style sheet.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   342
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   343
    ^ aspects at:#foregroundColor ifAbsent:nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   344
1d91a0437471 initial checkin
ca
parents:
diff changeset
   345
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   346
1d91a0437471 initial checkin
ca
parents:
diff changeset
   347
foregroundColor:aColor
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   348
    "set the color of the graph; if the color is nil the default foreground color
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   349
     of the graph is used which derives from the style sheet.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   350
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   351
    self aspectAt:#foregroundColor put:aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   352
1d91a0437471 initial checkin
ca
parents:
diff changeset
   353
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   354
1d91a0437471 initial checkin
ca
parents:
diff changeset
   355
lineStyle
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   356
    "returns the style in which the graph is drawn; if no style is defined, the
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   357
     default style is used (#solid).
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   358
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   359
     Supported styles are:
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   360
	 #solid or #dashed
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   361
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   362
    ^ aspects at:#lineStyle ifAbsent:#solid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   363
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   364
1d91a0437471 initial checkin
ca
parents:
diff changeset
   365
lineStyle:aStyle
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   366
    "set the style in which the graph is drawn; if no style is defined or
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   367
     in case of a non valid style, the default style is used (#solid).
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   368
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   369
     Supported styles are:
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   370
	#solid or #dashed
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   371
    "
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   372
    self aspectAt:#lineStyle put:(self class lineStyleFor:aStyle)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   373
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   374
1d91a0437471 initial checkin
ca
parents:
diff changeset
   375
lineWidth
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   376
    "returns the width of the graph line
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   377
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   378
    ^ aspects at:#lineWidth ifAbsent:1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   379
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   380
1d91a0437471 initial checkin
ca
parents:
diff changeset
   381
lineWidth:anInteger
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   382
    "set the width of the graph line; if the width is not defined or
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   383
     not a valid number, the default value is set (1).
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   384
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   385
    self aspectAt:#lineWidth put:(anInteger ? 1)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   386
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   387
1d91a0437471 initial checkin
ca
parents:
diff changeset
   388
!GraphColumn methodsFor:'accessing hLines'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   389
1d91a0437471 initial checkin
ca
parents:
diff changeset
   390
hLineFgColor
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   391
    "returns the color of the horizontal lines; if the color is nil the default foreground
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   392
     color of the graph is used which derives from the style sheet.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   393
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   394
    ^ aspects at:#hLineFgColor ifAbsent:nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   395
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   396
1d91a0437471 initial checkin
ca
parents:
diff changeset
   397
hLineFgColor:aColor
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   398
    "set the color of the horizontal lines; if the color is nil the default foreground
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   399
     color of the graph is used which derives from the style sheet.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   400
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   401
    self aspectAt:#hLineFgColor put:aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
   402
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   403
1d91a0437471 initial checkin
ca
parents:
diff changeset
   404
hLineList
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   405
    "returns the list of horizontal lines or nil
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   406
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   407
    ^ aspects at:#hLineList ifAbsent:nil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   408
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   409
1d91a0437471 initial checkin
ca
parents:
diff changeset
   410
hLineList:aCollection
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   411
    "set the list of horizontal lines to be drawn
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   412
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   413
    |col|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   414
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   415
    col := (aCollection size ~~ 0) ifTrue:[aCollection]
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   416
				  ifFalse:[nil].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   417
1d91a0437471 initial checkin
ca
parents:
diff changeset
   418
    self aspectAt:#hLineList put:col
1d91a0437471 initial checkin
ca
parents:
diff changeset
   419
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   420
1d91a0437471 initial checkin
ca
parents:
diff changeset
   421
hLineStyle
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   422
    "returns the style in which the horizontal lines are drawn; if no style is
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   423
     defined, the default style is used (#solid).
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   424
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   425
     Supported styles are:
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   426
	#solid or #dashed
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   427
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   428
    ^ aspects at:#hLineStyle ifAbsent:#solid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   429
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   430
1d91a0437471 initial checkin
ca
parents:
diff changeset
   431
hLineStyle:aStyle
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   432
    "set the style in which the horizontal lines are drawn; if no style is defined
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   433
     or in case of a non valid style, the default style is used (#solid).
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   434
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   435
     Supported styles are:
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   436
	 #solid or #dashed.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   437
    "
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   438
    self aspectAt:#hLineStyle put:(self class lineStyleFor:aStyle)
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   439
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   440
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   441
1d91a0437471 initial checkin
ca
parents:
diff changeset
   442
hLineWidth
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   443
    "returns the width of the horizontal lines
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   444
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   445
    ^ aspects at:#hLineWidth ifAbsent:1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   446
1d91a0437471 initial checkin
ca
parents:
diff changeset
   447
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   448
1d91a0437471 initial checkin
ca
parents:
diff changeset
   449
hLineWidth:anInteger
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   450
    "set the width of the horizontal lines; if the width is not defined or
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   451
     not a valid number, the default value is set (1).
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   452
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   453
    self aspectAt:#hLineWidth put:(anInteger ? 1)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   454
1d91a0437471 initial checkin
ca
parents:
diff changeset
   455
1d91a0437471 initial checkin
ca
parents:
diff changeset
   456
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   457
1d91a0437471 initial checkin
ca
parents:
diff changeset
   458
!GraphColumn methodsFor:'accessing menu'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   459
1d91a0437471 initial checkin
ca
parents:
diff changeset
   460
middleButtonMenu
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   461
    "returns the default middle button menu of a column
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   462
    "
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   463
    |menu|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   464
1d91a0437471 initial checkin
ca
parents:
diff changeset
   465
    menu := Menu new fromLiteralArrayEncoding:(self class middleButtonMenu).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   466
    menu receiver:self.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   467
  ^ menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   468
1d91a0437471 initial checkin
ca
parents:
diff changeset
   469
1d91a0437471 initial checkin
ca
parents:
diff changeset
   470
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   471
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   472
!GraphColumn methodsFor:'accessing without notify'!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   473
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   474
setForegroundColor:aColor
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   475
    "set the color of the graph; if the color is nil the default foreground color
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   476
     of the graph is used which derives from the style sheet.
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   477
     No change notification is raised
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   478
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   479
    self withoutNotificationAspectAt:#foregroundColor put:aColor
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   480
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   481
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   482
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   483
setHLineFgColor:aColor
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   484
    "set the color of the horizontal lines; if the color is nil the default foreground
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   485
     color of the graph is used which derives from the style sheet.
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   486
     No change notification is raised
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   487
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   488
    self withoutNotificationAspectAt:#hLineFgColor put:aColor
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   489
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   490
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   491
setHLineList:aCollection
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   492
    "set the list of horizontal lines to be drawn; no
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   493
     change notification is raised
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   494
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   495
    |col|
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   496
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   497
    col := (aCollection size ~~ 0) ifTrue:[aCollection]
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   498
				  ifFalse:[nil].
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   499
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   500
    self withoutNotificationAspectAt:#hLineList put:col
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   501
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   502
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   503
setHLineStyle:aStyle
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   504
    "set the style in which the horizontal lines are drawn; if no style is defined
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   505
     or in case of a non valid style, the default style is used (#solid).
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   506
     No change notification is raised.
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   507
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   508
     Supported styles are:
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   509
	 #solid or #dashed.
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   510
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   511
    self withoutNotificationAspectAt:#hLineStyle put:(self class lineStyleFor:aStyle)
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   512
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   513
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   514
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   515
setHLineWidth:anInteger
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   516
    "set the width of the horizontal lines; if the width is not defined or
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   517
     not a valid number, the default value is set (1).
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   518
     No change notification is raised.
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   519
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   520
    self withoutNotificationAspectAt:#hLineWidth put:(anInteger ? 1)
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   521
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   522
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   523
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   524
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   525
setLineStyle:aStyle
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   526
    "set the style in which the graph is drawn; if no style is defined or
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   527
     in case of a non valid style, the default style is used (#solid).
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   528
     No change notification is raised.
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   529
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   530
     Supported styles are:
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   531
	#solid or #dashed
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   532
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   533
    self withoutNotificationAspectAt:#lineStyle put:(self class lineStyleFor:aStyle)
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   534
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   535
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   536
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   537
setLineWidth:anInteger
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   538
    "set the width of the graph line; if the width is not defined or
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   539
     not a valid number, the default value is set (1).
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   540
     No change notification is raised
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   541
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   542
    self withoutNotificationAspectAt:#lineWidth put:(anInteger ? 1)
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   543
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   544
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   545
setName:aName
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   546
    "set the name of the column; no change notification is raised
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   547
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   548
    self withoutNotificationAspectAt:#name put:aName
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   549
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   550
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   551
setRelativeXaxis:aValue
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   552
    "sets the relative X-axis (y == 0) into the graph view; staring at top (0.0) to
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   553
     bottom (1.0). Thus a relative X axis of 0.5 means the graph is centered in the view.
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   554
     In case that the value is not a valid number, the relative X axis is set to 0.5.
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   555
     No change notification is raised.
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   556
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   557
    self withoutNotificationAspectAt:#relativeXaxis
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   558
				 put:(self numberFrom:aValue onError:[0.5])
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   559
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   560
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   561
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   562
setScaleY:aFactor
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   563
    "set the current y-scale of the column (~~ 0); this value should be set once
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   564
     dependent on the maximum and minimum Y value. To zoom the graph vertical use
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   565
     insteat #zoomY:.
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   566
     In case that the value is not a valid number or less equal zero, the scale Y
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   567
     factor is set to its default value (1).
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   568
     No change notification is raised.
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   569
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   570
    |y|
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   571
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   572
    (y := self numberFrom:aFactor onError:[1]) > 0 ifFalse:[ y := 1 ].
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   573
    self withoutNotificationAspectAt:#scaleY put:y
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   574
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   575
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   576
setShown:aState
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   577
    "set the visibility state of the column;
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   578
     no notification is raised
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   579
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   580
    self withoutNotificationAspectAt:#shown put:aState
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   581
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   582
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   583
setTransY:aValue
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   584
    "set the current y-transition of the column to an integer or nil (== 0).
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   585
     no notification is raised
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   586
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   587
    self withoutNotificationAspectAt:#transY
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   588
				 put:(self integerFrom:aValue onError:[0])
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   589
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   590
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   591
setZoomY:aFactor
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   592
    "set the current y-zoom factor of the column. The graph and its
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   593
     horizontal lines are vertical zoomed relative to its center defined
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   594
     by the relativeXaxis.
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   595
     In case that the value is not a valid number or less equal zero, the zoom Y
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   596
     factor is set to its default value (1).
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   597
     No change notification is raised.
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   598
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   599
    |y|
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   600
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   601
    (y := self numberFrom:aFactor onError:[1]) > 0 ifFalse:[ y := 1 ].
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   602
    self withoutNotificationAspectAt:#zoomY put:y
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   603
! !
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   604
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   605
!GraphColumn methodsFor:'aspects'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   606
1d91a0437471 initial checkin
ca
parents:
diff changeset
   607
aspect
1d91a0437471 initial checkin
ca
parents:
diff changeset
   608
    "returns current aspects
1d91a0437471 initial checkin
ca
parents:
diff changeset
   609
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   610
    ^ aspects
1d91a0437471 initial checkin
ca
parents:
diff changeset
   611
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   612
1d91a0437471 initial checkin
ca
parents:
diff changeset
   613
aspectAt:aKey put:aValue
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   614
    "set an aspect; if the aspect changed its value, a notification will
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   615
     be raised. The arguments to the change notifications is the key of
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   616
     the aspect (selector) and the old value of the aspect.
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   617
    "
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   618
    |oldValue|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   619
1d91a0437471 initial checkin
ca
parents:
diff changeset
   620
    oldValue := aspects at:aKey ifAbsent:nil.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   621
1d91a0437471 initial checkin
ca
parents:
diff changeset
   622
    oldValue ~= aValue ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   623
	aValue isNil ifTrue:[aspects removeKey:aKey]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   624
		    ifFalse:[aspects at:aKey put:aValue].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   625
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   626
	self changed:aKey with:oldValue
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   627
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   628
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   629
1d91a0437471 initial checkin
ca
parents:
diff changeset
   630
aspects:aDictionaryOrNil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   631
    "change aspects; raise a change notification when changed. If the argument is
1d91a0437471 initial checkin
ca
parents:
diff changeset
   632
     nil, the default aspects are set
1d91a0437471 initial checkin
ca
parents:
diff changeset
   633
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   634
    |oldAspects|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   635
1d91a0437471 initial checkin
ca
parents:
diff changeset
   636
    aDictionaryOrNil == aspects ifFalse:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   637
	oldAspects := aspects.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   638
	self setAspects:aDictionaryOrNil.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   639
	self changed:#aspects with:oldAspects.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   640
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   641
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   642
1d91a0437471 initial checkin
ca
parents:
diff changeset
   643
setAspects:aDictionaryOrNil
1d91a0437471 initial checkin
ca
parents:
diff changeset
   644
    "change aspects; raise no notification. If the argument is
1d91a0437471 initial checkin
ca
parents:
diff changeset
   645
     nil, the default aspects are set
1d91a0437471 initial checkin
ca
parents:
diff changeset
   646
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   647
    aDictionaryOrNil isNil ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   648
	aspects := IdentityDictionary new.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   649
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   650
	aspects at:#hLineWidth    put:1.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   651
	aspects at:#lineWidth     put:1.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   652
	aspects at:#scaleY        put:1.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   653
	aspects at:#zoomY         put:1.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   654
	aspects at:#transY        put:0.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   655
	aspects at:#relativeXaxis put:0.5.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   656
    ] ifFalse:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   657
	aspects := aDictionaryOrNil
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   658
    ]
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   659
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   660
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   661
withoutNotificationAspectAt:aKey put:aValue
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   662
    "set an aspect without a change notification
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   663
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   664
    aValue notNil ifTrue:[ aspects at:aKey put:aValue ]
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   665
		 ifFalse:[ aspects removeKey:aKey ifAbsent:nil ]
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   666
! !
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   667
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   668
!GraphColumn methodsFor:'conversion'!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   669
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   670
integerFrom:aValue onError:aBlock
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   671
    "converts something to an integer, on error the result of the block is returned
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   672
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   673
    |v|
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   674
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   675
    aValue isNumber ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   676
	^ aValue isInteger ifTrue:[aValue]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   677
			  ifFalse:[(aValue asFloat) rounded]    "/ no fractions
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   678
    ].
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   679
    ^ aBlock value
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   680
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   681
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   682
!
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   683
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   684
numberFrom:aValue onError:aBlock
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   685
    "converts something to a number (no fractions); on error
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   686
     the result of the block is returned
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   687
    "
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   688
    aValue isNumber ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   689
	^ aValue isInteger ifTrue:[aValue]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   690
			  ifFalse:[aValue asFloat]      "/ no fractions
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   691
    ].
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   692
    ^ aBlock value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   693
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   694
1d91a0437471 initial checkin
ca
parents:
diff changeset
   695
!GraphColumn methodsFor:'initialization'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   696
1d91a0437471 initial checkin
ca
parents:
diff changeset
   697
initialize
1d91a0437471 initial checkin
ca
parents:
diff changeset
   698
    "setup default values
1d91a0437471 initial checkin
ca
parents:
diff changeset
   699
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   700
    super initialize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   701
    self setAspects:nil.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   702
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   703
1d91a0437471 initial checkin
ca
parents:
diff changeset
   704
!GraphColumn methodsFor:'printing'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   705
1d91a0437471 initial checkin
ca
parents:
diff changeset
   706
printString
1d91a0437471 initial checkin
ca
parents:
diff changeset
   707
    "returns my printable string
1d91a0437471 initial checkin
ca
parents:
diff changeset
   708
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   709
    |name|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   710
1d91a0437471 initial checkin
ca
parents:
diff changeset
   711
    ^ (name := self name) notNil ifTrue:[name printString] ifFalse:['']
1d91a0437471 initial checkin
ca
parents:
diff changeset
   712
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   713
1d91a0437471 initial checkin
ca
parents:
diff changeset
   714
!GraphColumn methodsFor:'queries'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   715
1d91a0437471 initial checkin
ca
parents:
diff changeset
   716
centerGraphMaxY:maxY minY:minY
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   717
    "set the transition Y for the graph dependent on the current scaleY, the maximum
748
551f7ad62a24 added some text
ca
parents: 741
diff changeset
   718
     and minimum Y value; the graph is centered to its relative X-Axis.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   719
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   720
    self transY:(((maxY + minY) / 2) * self scaleY)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   721
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   722
1d91a0437471 initial checkin
ca
parents:
diff changeset
   723
scaleToHeight:aHeight maxY:maxY minY:minY
755
96aada921c11 add methods to change values without raising
ca
parents: 748
diff changeset
   724
    "set the scale Y value dependent on the maximum and minimum Y value to fit into
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   725
     a height >= 1
1d91a0437471 initial checkin
ca
parents:
diff changeset
   726
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   727
    |dltY|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   728
1d91a0437471 initial checkin
ca
parents:
diff changeset
   729
    (dltY := (maxY - minY) abs) = 0 ifTrue:[dltY := 1].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   730
    self scaleY:((aHeight max:1) / dltY)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   731
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   732
1d91a0437471 initial checkin
ca
parents:
diff changeset
   733
!GraphColumn class methodsFor:'documentation'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   734
1d91a0437471 initial checkin
ca
parents:
diff changeset
   735
version
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 755
diff changeset
   736
    ^ '$Header: /cvs/stx/stx/libwidg2/GraphColumn.st,v 1.4 2006-11-13 16:11:29 cg Exp $'
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   737
! !
4770
6634b540fea2 Added PluggableHierarchicalList to define ad-hoc tree models.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 3150
diff changeset
   738