GraphColumnView2D.st
author Claus Gittinger <cg@exept.de>
Fri, 15 Jun 2018 10:54:35 +0200
changeset 5816 7876c07931a7
parent 4903 5f16713d82ab
child 4930 7a6e813d8d17
permissions -rw-r--r--
#DOCUMENTATION by cg class: ComboListView class comment/format in: #documentation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
     1
"{ Package: 'stx:libwidg2' }"
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
     2
4851
e88d8b466cad #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 3243
diff changeset
     3
"{ NameSpace: Smalltalk }"
e88d8b466cad #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 3243
diff changeset
     4
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
     5
GraphColumnView subclass:#GraphColumnView2D
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
     6
	instanceVariableNames:'colorMap gridXoffset gridX gridY actionBlock doubleClickBlock
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
     7
		buttonReleaseBlock menuAccessBlock'
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
     8
	classVariableNames:''
1d91a0437471 initial checkin
ca
parents:
diff changeset
     9
	poolDictionaries:''
1d91a0437471 initial checkin
ca
parents:
diff changeset
    10
	category:'Views-Graphs'
1d91a0437471 initial checkin
ca
parents:
diff changeset
    11
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    12
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    13
!GraphColumnView2D class methodsFor:'documentation'!
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    14
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    15
documentation
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    16
"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    17
    The class provides all the functionality for showing, scrolling and manipulating graphs
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    18
    described through to a GraphColumn description. Each change in a graph description
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    19
    immediately take affect.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    20
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    21
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    22
    [See also:]
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    23
	GraphColumn
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    24
	GraphColumnView
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    25
	GraphColumnView3D
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    26
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    27
    [Author:]
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    28
	Claus Atzkern
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    29
"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    30
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    31
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
    32
! !
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    33
1d91a0437471 initial checkin
ca
parents:
diff changeset
    34
!GraphColumnView2D class methodsFor:'defaults'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    35
1d91a0437471 initial checkin
ca
parents:
diff changeset
    36
gridStep
1d91a0437471 initial checkin
ca
parents:
diff changeset
    37
    ^ 8
1d91a0437471 initial checkin
ca
parents:
diff changeset
    38
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
    39
1d91a0437471 initial checkin
ca
parents:
diff changeset
    40
!GraphColumnView2D class methodsFor:'examples'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
    41
4903
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    42
test0
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    43
    "testing references and actions
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    44
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    45
     start with:
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    46
         self test0
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    47
    "
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    48
    |top col view x|
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    49
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    50
    top  := StandardSystemView extent:800 @ 400.
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    51
    view := GraphColumnView2D origin:0@0 extent:1.0@1.0 in:top.
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    52
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    53
    top label:'2D-View'.
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    54
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    55
    col := GraphColumn name:' sqrt(x) '.
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    56
    col relativeXaxis:0.5.
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    57
    col lineStyle:#solid.
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    58
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    59
    col hLineStyle:#dashed.
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    60
    col hLineList:#( 0 ).
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    61
    col scaleY:40.
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    62
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    63
    col functionYblock:[:start :array|
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    64
        x := 0.001.
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    65
        1 to:(array size) do:[:i| array at:i put:(x ln - (0.1*x)). x := x + 0.1 ].
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    66
        array
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    67
    ].
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    68
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    69
    view showDefaultMenu:true.
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    70
    view showGrid:true.
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    71
    view columns:{ col }.
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    72
    top openAndWait.
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    73
!
5f16713d82ab #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 4890
diff changeset
    74
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    75
test1
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
    76
    "testing references and actions
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    77
1d91a0437471 initial checkin
ca
parents:
diff changeset
    78
     start with:
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    79
	 self test1
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    80
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
    81
    |top list view x|
1d91a0437471 initial checkin
ca
parents:
diff changeset
    82
1d91a0437471 initial checkin
ca
parents:
diff changeset
    83
    top  := StandardSystemView extent:800 @ 400.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    84
    view := GraphColumnView2D origin:0@0 extent:1.0@1.0 in:top.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    85
    list := OrderedCollection new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    86
1d91a0437471 initial checkin
ca
parents:
diff changeset
    87
    top label:'2D-View'.
1d91a0437471 initial checkin
ca
parents:
diff changeset
    88
1d91a0437471 initial checkin
ca
parents:
diff changeset
    89
    #( 0.25 0.5 0.75 ) keysAndValuesDo:[:aKey :xAxis||aCol|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    90
	aCol := GraphColumn name:aKey.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    91
	aCol relativeXaxis:xAxis.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
    92
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    93
	xAxis ~= 0.5 ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    94
	    xAxis < 0.5 ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    95
		aCol foregroundColor:(Color red).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    96
	    ] ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    97
		aCol foregroundColor:(Color blue).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    98
		aCol lineStyle:#dashed
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
    99
	    ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   100
	].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   101
	aCol hLineStyle:#dashed.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   102
	aCol hLineList:#( 0 ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   103
	aCol scaleY:40.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   104
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   105
	aCol functionYblock:[:start :array|
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   106
	    x := (start - 1) * 0.2.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   107
	    1 to:(array size) do:[:i| array at:i put:(x sin). x := x + 0.2 ].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   108
	    array
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   109
	].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   110
	list add:aCol.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   111
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   112
1d91a0437471 initial checkin
ca
parents:
diff changeset
   113
    view action:[:column :indexX :deltaY|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   114
	Transcript showCR:'SINGLE CLICK:'.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   115
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   116
	Transcript showCR:' column: ', column printString,
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   117
			  ' indexX: ', indexX printString,
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   118
			  ' deltaY: ', deltaY printString.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   119
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   120
	view referenceAdd:indexX
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   121
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   122
1d91a0437471 initial checkin
ca
parents:
diff changeset
   123
    view doubleClickAction:[:column :indexX :deltaY|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   124
	Transcript showCR:'DOUBLE CLICK:'.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   125
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   126
	Transcript showCR:' column: ', column printString,
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   127
			  ' indexX: ', indexX printString,
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   128
			  ' deltaY: ', deltaY printString.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   129
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   130
    view showDefaultMenu:true.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   131
    view showGrid:true.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   132
    view columns:list.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   133
    top openAndWait.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   134
1d91a0437471 initial checkin
ca
parents:
diff changeset
   135
1d91a0437471 initial checkin
ca
parents:
diff changeset
   136
1d91a0437471 initial checkin
ca
parents:
diff changeset
   137
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   138
1d91a0437471 initial checkin
ca
parents:
diff changeset
   139
test2
1d91a0437471 initial checkin
ca
parents:
diff changeset
   140
    "testing models and change notifications
1d91a0437471 initial checkin
ca
parents:
diff changeset
   141
1d91a0437471 initial checkin
ca
parents:
diff changeset
   142
     start with:
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   143
	 self test2
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   144
    "
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   145
    |top list cols listView graph red blue yellow sav pause time
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   146
     label butAct button b1 b2|
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   147
1d91a0437471 initial checkin
ca
parents:
diff changeset
   148
    top      := StandardSystemView extent:950 @ 400.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   149
    listView := ListView origin:0.0@20 corner:150@1.0 in:top.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   150
    graph    := GraphColumnView2D origin:150@0 corner:1.0@1.0 in:top.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   151
    listView level:1.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   152
    (Label origin:2@2 in:top) label:'Delay:'.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   153
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   154
    time   := 0.1.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   155
    label  := Label origin:82@1 corner:128@19 in:top.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   156
    label sizeFixed:true.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   157
    label label:(time printString).
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   158
    label level:1.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   159
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   160
    butAct := [:dT| time := (time + dT) max:0.0. label label:(time printString) ].
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   161
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   162
    button := (ArrowButton leftIn:top)  origin:60@0  extent:20@20.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   163
    button action:[butAct value:-0.05].
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   164
    button autoRepeat:true.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   165
    button := (ArrowButton rightIn:top) origin:130@0 extent:20@20.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   166
    button action:[butAct value:0.05].
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   167
    button autoRepeat:true.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   168
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   169
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   170
    cols     := OrderedCollection new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   171
    list     := List new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   172
1d91a0437471 initial checkin
ca
parents:
diff changeset
   173
    top label:'Testing 2D-View: Models & Style'.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   174
1d91a0437471 initial checkin
ca
parents:
diff changeset
   175
    listView list:OrderedCollection new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   176
    graph showGrid:true.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   177
    graph listHolder:list.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   178
    top openAndWait.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   179
1d91a0437471 initial checkin
ca
parents:
diff changeset
   180
    #( 0.2 0.8 ) keysAndValuesDo:[:aKey :xAxis||aCol x|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   181
	aCol := GraphColumn name:'Column <', aKey printString, '>'.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   182
	aCol relativeXaxis:xAxis.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   183
	aCol hLineFgColor:(Color blue).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   184
	aCol scaleY:40.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   185
	aCol hLineStyle:#dashed.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   186
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   187
	aCol functionYblock:[:start :array|
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   188
	    x := (start - 1) * 0.2.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   189
	    1 to:(array size) do:[:i| array at:i put:(x sin). x := x + 0.2 ].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   190
	    array
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   191
	].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   192
	cols add:aCol.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   193
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   194
1d91a0437471 initial checkin
ca
parents:
diff changeset
   195
    red    := Color red.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   196
    blue   := Color blue.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   197
    yellow := Color yellow lightened.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   198
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   199
    pause  := [ |l|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   200
	l := listView list.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   201
	l size > 500 ifTrue:[l removeFromIndex:1 toIndex:400. listView list:l].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   202
	listView scrollToBottom.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   203
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   204
	(top realized and:[time > 0]) ifTrue:[Delay waitForSeconds:time] ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   205
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   206
    [   [top realized] whileTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   207
	    listView add:'ADD COLUMNS'.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   208
	    cols do:[:el|
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   209
		listView add:( '    ', el printString ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   210
		list add:el.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   211
		pause value
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   212
	    ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   213
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   214
	    listView add:( 'GRAPH' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   215
	    listView add:( '    Background' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   216
	    sav := graph backgroundColor.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   217
	    graph backgroundColor:yellow.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   218
	    pause value.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   219
	    graph backgroundColor:sav.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   220
	    sav := graph foregroundColor.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   221
	    listView add:( '    Foreground' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   222
	    graph foregroundColor:blue.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   223
	    pause value.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   224
	    graph foregroundColor:sav.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   225
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   226
	    listView add:( 'GRID' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   227
	    listView add:( '    Grid X' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   228
	    graph gridExtent:(4 @ 0).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   229
	    pause value.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   230
	    listView add:( '    Grid Y' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   231
	    graph gridExtent:(0 @ 4).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   232
	    pause value.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   233
	    listView add:( '    Grid X/Y' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   234
	    graph gridExtent:(8 @ 8).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   235
	    pause value.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   236
	    listView add:( '    Color' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   237
	    sav := graph gridColor.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   238
	    graph gridColor:yellow.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   239
	    pause value.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   240
	    graph gridColor:sav.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   241
	    listView add:( '    Off' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   242
	    graph showGrid:false.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   243
	    pause value.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   244
	    listView add:( '    On' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   245
	    graph showGrid:true.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   246
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   247
	    listView add:( 'REFERENCES' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   248
	    listView add:( '    Add' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   249
	    #( 7  15  43  90 ) do:[:i| graph referenceAdd:i. pause value].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   250
	    top realized ifTrue:[Delay waitForSeconds:time].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   251
	    sav := graph referenceColor.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   252
	    listView add:( '    Color' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   253
	    graph referenceColor:blue.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   254
	    pause value.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   255
	    graph referenceColor:sav.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   256
	    listView add:( '    Remove' ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   257
	    #( 7  15  43  90 ) do:[:i| graph referenceRemove:i. pause value ].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   258
	    pause value.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   259
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   260
	    listView add:'REMOVE COLUMNS'.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   261
	    [list notEmpty] whileTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   262
		listView add:( '    ', list removeFirst printString ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   263
		pause value
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   264
	    ].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   265
	].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   266
1d91a0437471 initial checkin
ca
parents:
diff changeset
   267
    ] forkAt:1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   268
1d91a0437471 initial checkin
ca
parents:
diff changeset
   269
1d91a0437471 initial checkin
ca
parents:
diff changeset
   270
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   271
1d91a0437471 initial checkin
ca
parents:
diff changeset
   272
test3
1d91a0437471 initial checkin
ca
parents:
diff changeset
   273
    "testing models and change notifications
1d91a0437471 initial checkin
ca
parents:
diff changeset
   274
1d91a0437471 initial checkin
ca
parents:
diff changeset
   275
     start with:
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   276
	 self test3
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   277
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   278
    |top list slices index view graph column actLbl tmOut button bAction tmLbl title pause toggle auto next|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   279
1d91a0437471 initial checkin
ca
parents:
diff changeset
   280
    top   := StandardSystemView extent:800 @ 400.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   281
    view  := View origin:0@0  corner:1.0@28  in:top.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   282
    graph := GraphColumnView2D origin:0@28 corner:1.0@1.0 in:top.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   283
    list  := OrderedCollection new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   284
    top label:'Testing 2D-View: Model-Column'.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   285
1d91a0437471 initial checkin
ca
parents:
diff changeset
   286
    slices := #( ( foregroundColor       #color )
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   287
		 ( lineStyle             #dashed )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   288
		 ( lineWidth             4 )
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   289
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   290
		 ( hLineFgColor          #color )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   291
		 ( hLineStyle            #dashed )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   292
		 ( hLineWidth            4 )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   293
		 ( hLineList             #( -0.8  -0.5  0  0.5  0.8 ) )
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   294
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   295
		 ( shown                 false )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   296
		 ( scaleY                10 )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   297
		 ( transY                20 )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   298
		 ( relativeXaxis         0.2 )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   299
	       ).
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   300
1d91a0437471 initial checkin
ca
parents:
diff changeset
   301
1d91a0437471 initial checkin
ca
parents:
diff changeset
   302
    column := GraphColumn name:'test'.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   303
    column relativeXaxis:0.5.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   304
    column scaleY:40.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   305
    column hLineList:#( -1   1 ).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   306
    column functionYblock:[:start :array||x|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   307
	x := (start - 1) * 0.2.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   308
	1 to:(array size) do:[:i| array at:i put:(x sin). x := x + 0.2 ].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   309
	array
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   310
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   311
    tmOut := 1.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   312
    auto  := true.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   313
    index := 1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   314
    next  := false.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   315
1d91a0437471 initial checkin
ca
parents:
diff changeset
   316
    view level:1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   317
1d91a0437471 initial checkin
ca
parents:
diff changeset
   318
    toggle := CheckBox origin:0@0.0 corner:100@1.0 in:view.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   319
    toggle label:'Auto/Step'.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   320
    toggle turnOn.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   321
    toggle action:[:aState|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   322
	(next := auto := aState) ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   323
	    title label:'Time: '.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   324
	    tmLbl label:(tmOut printString).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   325
	] ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   326
	    title label:'Step: '.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   327
	    tmLbl label:(index printString).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   328
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   329
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   330
1d91a0437471 initial checkin
ca
parents:
diff changeset
   331
    title := Label origin:100@0.0 corner:160@1.0 in:view.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   332
    title adjust:#right.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   333
    title sizeFixed:true.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   334
    title label:'Time: '.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   335
1d91a0437471 initial checkin
ca
parents:
diff changeset
   336
    bAction := [:add|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   337
	auto ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   338
	    tmOut := (tmOut + (add ifTrue:[0.1] ifFalse:[-0.1])) max:0.1.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   339
	    tmLbl label:(tmOut printString).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   340
	] ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   341
	    add ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   342
		(index := index + 1) > slices size ifTrue:[index := 1]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   343
	    ] ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   344
		(index := index - 1) < 1 ifTrue:[index := slices size]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   345
	    ].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   346
	    tmLbl label:(index printString).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   347
	    next := true.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   348
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   349
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   350
1d91a0437471 initial checkin
ca
parents:
diff changeset
   351
    button := ArrowButton leftIn:view.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   352
    button origin:160@0.0 corner:180@1.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   353
    button autoRepeat:true.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   354
    button pressAction:[ bAction value:false ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   355
1d91a0437471 initial checkin
ca
parents:
diff changeset
   356
    button := ArrowButton rightIn:view.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   357
    button origin:181@0.0 corner:201@1.0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   358
    button autoRepeat:true.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   359
    button pressAction:[ bAction value:true ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   360
1d91a0437471 initial checkin
ca
parents:
diff changeset
   361
    tmLbl := Label origin:202 @0.0 corner:230@1.0 in:view.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   362
    tmLbl adjust:#center.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   363
    tmLbl sizeFixed:true.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   364
    tmLbl label:(tmOut printString).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   365
1d91a0437471 initial checkin
ca
parents:
diff changeset
   366
    actLbl := Label origin:230 @0.0 corner:290@1.0 in:view.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   367
    actLbl sizeFixed:true.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   368
    actLbl adjust:#right.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   369
    actLbl label:'Action: '.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   370
1d91a0437471 initial checkin
ca
parents:
diff changeset
   371
    actLbl := Label origin:290 @0.0 corner:1.0@1.0 in:view.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   372
    actLbl adjust:#left.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   373
    view subViews do:[:v| v verticalInset:2 ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   374
1d91a0437471 initial checkin
ca
parents:
diff changeset
   375
    graph gridExtent:( 4 @ 4 ).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   376
    graph showDefaultMenu:true.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   377
    graph listHolder:(Array with:column).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   378
    top   openAndWait.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   379
1d91a0437471 initial checkin
ca
parents:
diff changeset
   380
    pause := [
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   381
	auto ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   382
	    top realized ifTrue:[Delay waitForSeconds:tmOut]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   383
	] ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   384
	    next := false.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   385
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   386
	    [(next not and:[top realized])] whileTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   387
		Delay waitForSeconds:0.2
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   388
	    ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   389
	]
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
    [   |sav rsl wsl arg dsc|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   393
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   394
	[top realized] whileTrue:[
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   395
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   396
	    dsc := slices at:index.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   397
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   398
	    auto ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   399
		(index := index + 1) > slices size ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   400
		    index := 1
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   401
		]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   402
	    ].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   403
	    rsl := dsc at:1.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   404
	    wsl := (rsl, ':') asSymbol.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   405
	    (arg := dsc at:2) == #color ifTrue:[arg := Color red].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   406
	    sav := column perform:rsl.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   407
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   408
	    actLbl label:wsl printString, ' ', arg printString.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   409
	    column perform:wsl with:arg.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   410
	    pause value.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   411
	    column perform:wsl with:sav.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   412
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   413
1d91a0437471 initial checkin
ca
parents:
diff changeset
   414
    ] forkAt:1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   415
1d91a0437471 initial checkin
ca
parents:
diff changeset
   416
1d91a0437471 initial checkin
ca
parents:
diff changeset
   417
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   418
1d91a0437471 initial checkin
ca
parents:
diff changeset
   419
testRun
1d91a0437471 initial checkin
ca
parents:
diff changeset
   420
    "running view
1d91a0437471 initial checkin
ca
parents:
diff changeset
   421
1d91a0437471 initial checkin
ca
parents:
diff changeset
   422
     start with:
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   423
	 self testRun
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   424
    "
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   425
    |top list view step x offs time lblX lblT lblC cbox halt xOrigin|
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   426
814
eb6439605f90 bug fix; set boolean to false (not nil)
ca
parents: 805
diff changeset
   427
    halt := false.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   428
    top  := StandardSystemView extent:800 @ 400.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   429
    view := GraphColumnView2D origin:0@20 extent:1.0@1.0 in:top.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   430
    cbox := CheckBox origin:0@0.0 corner:50@20 in:top.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   431
    cbox label:'Stop'.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   432
    cbox action:[:v| halt := v].
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   433
    xOrigin := 1 asValue.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   434
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   435
    lblX := Label origin:100@0.0 corner:0.4@20 in:top.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   436
    lblT := Label origin:0.4@0.0 corner:0.7@20 in:top.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   437
    lblC := Label origin:0.7@0.0 corner:1.0@20 in:top.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   438
    lblX level:1. lblX adjust:#left.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   439
    lblT level:1. lblT adjust:#left.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   440
    lblC level:1. lblC adjust:#left.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   441
    offs := 0.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   442
    step := 2.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   443
    list := OrderedCollection new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   444
1d91a0437471 initial checkin
ca
parents:
diff changeset
   445
    top label:'Testing 2D-View: Performance Test'.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   446
1d91a0437471 initial checkin
ca
parents:
diff changeset
   447
    #( 0.25 0.5 0.75 ) do:[:xAxis||aCol|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   448
	aCol := GraphColumn new.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   449
	aCol relativeXaxis:xAxis.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   450
	xAxis ~= 0.5 ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   451
	    xAxis < 0.5 ifTrue:[aCol foregroundColor:(Color red)]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   452
		       ifFalse:[aCol foregroundColor:(Color blue)]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   453
	].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   454
	aCol hLineStyle:#dashed.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   455
	aCol hLineList:#( 0 ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   456
	aCol scaleY:40.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   457
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   458
	aCol functionYblock:[:start :array|
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   459
	    x := start * 0.2.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   460
	    1 to:(array size) do:[:i| array at:i put:(x sin). x := x + 0.2 ].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   461
	    array
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   462
	].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   463
	list add:aCol.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   464
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   465
    view showGrid:true.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   466
    view gridExtent:(4 @ 4).
1d91a0437471 initial checkin
ca
parents:
diff changeset
   467
    view columns:list.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   468
    view windowSize:50.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   469
    view scrollUpdatesOriginX:true.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   470
    view graphOriginXHolder:xOrigin.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   471
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   472
    top openAndWait.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   473
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   474
    [   |tm total inc|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   475
	inc := 0.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   476
	total := 0.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   477
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   478
	[top realized] whileTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   479
	    halt ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   480
		lblX label:('X-Offset:    ', view graphOriginX printString).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   481
		lblT label:('Total Time:    ', (total // 1000) printString, '::', (total \\ 1000) printString ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   482
		lblC label:('Runs:    ', inc printString).
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   483
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   484
		tm := Time millisecondsToRun:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   485
		    xOrigin value:(xOrigin value + step)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   486
		].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   487
		inc := inc + 1.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   488
		total := total + tm.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   489
	   ] ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   490
		Delay waitForSeconds:0.2
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   491
	   ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   492
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   493
1d91a0437471 initial checkin
ca
parents:
diff changeset
   494
    ] forkAt:1.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   495
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   496
1d91a0437471 initial checkin
ca
parents:
diff changeset
   497
!GraphColumnView2D class methodsFor:'menu'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   498
1d91a0437471 initial checkin
ca
parents:
diff changeset
   499
defaultMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   500
    "this window spec was automatically generated by the ST/X MenuEditor"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   501
1d91a0437471 initial checkin
ca
parents:
diff changeset
   502
    "do not manually edit this - the builder may not be able to
1d91a0437471 initial checkin
ca
parents:
diff changeset
   503
     handle the specification if its corrupted."
1d91a0437471 initial checkin
ca
parents:
diff changeset
   504
1d91a0437471 initial checkin
ca
parents:
diff changeset
   505
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   506
     MenuEditor new openOnClass:GraphColumnView2D andSelector:#defaultMenu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   507
     (Menu new fromLiteralArrayEncoding:(GraphColumnView2D defaultMenu)) startUp
1d91a0437471 initial checkin
ca
parents:
diff changeset
   508
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   509
1d91a0437471 initial checkin
ca
parents:
diff changeset
   510
    <resource: #menu>
1d91a0437471 initial checkin
ca
parents:
diff changeset
   511
1d91a0437471 initial checkin
ca
parents:
diff changeset
   512
    ^
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   513
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   514
       #(#Menu
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   515
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   516
	   #(
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   517
	     #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   518
		#label: 'Show Grid'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   519
		#indication: #showGrid:
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   520
	    )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   521
	     #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   522
		#label: 'Show References'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   523
		#indication: #showReferences:
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   524
	    )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   525
	     #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   526
		#label: 'Grid Extent'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   527
		#enabled: #showGrid
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   528
		#submenu:
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   529
		 #(#Menu
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   530
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   531
		     #(
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   532
		       #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   533
			  #label: 'Extent'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   534
			  #submenu:
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   535
			   #(#Menu
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   536
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   537
			       #(
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   538
				 #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   539
				    #label: 'larger'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   540
				    #value: #doGridExtent:
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   541
				    #argument: #larger
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   542
				)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   543
				 #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   544
				    #label: 'smaller'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   545
				    #value: #doGridExtent:
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   546
				    #argument: #smaller
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   547
				)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   548
			      ) nil
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   549
			      nil
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   550
			  )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   551
		      )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   552
		       #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   553
			  #label: 'X-Step'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   554
			  #argument: #doGridStepX:
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   555
			  #submenuChannel: #gridStepMenuSelector:
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   556
		      )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   557
		       #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   558
			  #label: 'Y-Step'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   559
			  #argument: #doGridStepY:
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   560
			  #submenuChannel: #gridStepMenuSelector:
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   561
		      )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   562
		    ) nil
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   563
		    nil
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   564
		)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   565
	    )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   566
	     #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   567
		#label: 'Zoom Y'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   568
		#submenuChannel: #subMenuZoomY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   569
	    )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   570
	     #(#MenuItem
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   571
		#label: 'Print'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   572
		#value: #doPrint
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   573
	    )
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   574
	  ) nil
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   575
	  nil
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   576
      )
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   577
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   578
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   579
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   580
1d91a0437471 initial checkin
ca
parents:
diff changeset
   581
gridStepMenuSelector:aSelector
1d91a0437471 initial checkin
ca
parents:
diff changeset
   582
    |menu width height item bitmap|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   583
1d91a0437471 initial checkin
ca
parents:
diff changeset
   584
    menu   := Menu new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   585
    width  := 40.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   586
    height := 10.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   587
1d91a0437471 initial checkin
ca
parents:
diff changeset
   588
    #( off 1 2 4 8 ) do:[:aNumberOrSymbol|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   589
	item := MenuItem labeled:(aNumberOrSymbol printString).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   590
	item value:aSelector.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   591
	item argument:aNumberOrSymbol.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   592
	menu addItem:item.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   593
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   594
  ^ menu
1d91a0437471 initial checkin
ca
parents:
diff changeset
   595
1d91a0437471 initial checkin
ca
parents:
diff changeset
   596
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   597
(self styleMenuSelector:#lineStyle) startUp
1d91a0437471 initial checkin
ca
parents:
diff changeset
   598
"
1d91a0437471 initial checkin
ca
parents:
diff changeset
   599
1d91a0437471 initial checkin
ca
parents:
diff changeset
   600
1d91a0437471 initial checkin
ca
parents:
diff changeset
   601
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   602
1d91a0437471 initial checkin
ca
parents:
diff changeset
   603
!GraphColumnView2D methodsFor:'accessing actions'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   604
1d91a0437471 initial checkin
ca
parents:
diff changeset
   605
action
1d91a0437471 initial checkin
ca
parents:
diff changeset
   606
    "action block which is performed on a single button click.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   607
     Number of arguments to the block can be 0 upto 4.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   608
1d91a0437471 initial checkin
ca
parents:
diff changeset
   609
     argument 1: nearest column to the click point
1d91a0437471 initial checkin
ca
parents:
diff changeset
   610
     argument 2: the logical index (X)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   611
     argument 3: the distance y from the click point to the columns's graph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   612
     argument 4: physical y value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   613
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   614
    ^ actionBlock
1d91a0437471 initial checkin
ca
parents:
diff changeset
   615
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   616
1d91a0437471 initial checkin
ca
parents:
diff changeset
   617
action:aBlockUpTo4Args
1d91a0437471 initial checkin
ca
parents:
diff changeset
   618
    "action block which is performed on a single button click.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   619
     Number of arguments to the block can be 0 upto 4.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   620
1d91a0437471 initial checkin
ca
parents:
diff changeset
   621
     argument 1: nearest column to the click point
1d91a0437471 initial checkin
ca
parents:
diff changeset
   622
     argument 2: the logical index (X)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   623
     argument 3: the distance y from the click point to the columns's graph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   624
     argument 4: physical y value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   625
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   626
    actionBlock := aBlockUpTo4Args
1d91a0437471 initial checkin
ca
parents:
diff changeset
   627
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   628
1d91a0437471 initial checkin
ca
parents:
diff changeset
   629
buttonReleaseBlock
1d91a0437471 initial checkin
ca
parents:
diff changeset
   630
    "action block which is performed if the button is released; the number
1d91a0437471 initial checkin
ca
parents:
diff changeset
   631
     of arguments to the block can be 0 upto 3.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   632
1d91a0437471 initial checkin
ca
parents:
diff changeset
   633
     argument 1: physical x value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   634
     argument 2: physical y value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   635
     argument 3: the logical index (X)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   636
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   637
    ^ buttonReleaseBlock
1d91a0437471 initial checkin
ca
parents:
diff changeset
   638
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   639
1d91a0437471 initial checkin
ca
parents:
diff changeset
   640
buttonReleaseBlock:aThreeArgAction
1d91a0437471 initial checkin
ca
parents:
diff changeset
   641
    "action block which is performed if the button is released; the number
1d91a0437471 initial checkin
ca
parents:
diff changeset
   642
     of arguments to the block can be 0 upto 3.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   643
1d91a0437471 initial checkin
ca
parents:
diff changeset
   644
     argument 1: physical x value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   645
     argument 2: physical x value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   646
     argument 3: the logical index (X)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   647
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   648
    buttonReleaseBlock := aThreeArgAction
1d91a0437471 initial checkin
ca
parents:
diff changeset
   649
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   650
1d91a0437471 initial checkin
ca
parents:
diff changeset
   651
doubleClickAction
1d91a0437471 initial checkin
ca
parents:
diff changeset
   652
    "action block which is performed on a double button click.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   653
     Number of arguments to the block can be 0 upto 4.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   654
1d91a0437471 initial checkin
ca
parents:
diff changeset
   655
     argument 1: nearest column to the click point
1d91a0437471 initial checkin
ca
parents:
diff changeset
   656
     argument 2: the logical index (X)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   657
     argument 3: the distance y from the click point to the columns's graph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   658
     argument 4: physical y value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   659
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   660
    ^ doubleClickBlock
1d91a0437471 initial checkin
ca
parents:
diff changeset
   661
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   662
1d91a0437471 initial checkin
ca
parents:
diff changeset
   663
doubleClickAction:aBlockUpTo4Args
1d91a0437471 initial checkin
ca
parents:
diff changeset
   664
    "action block which is performed on a double button click.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   665
     Number of arguments to the block can be 0 upto 4.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   666
1d91a0437471 initial checkin
ca
parents:
diff changeset
   667
     argument 1: nearest column to the click point
1d91a0437471 initial checkin
ca
parents:
diff changeset
   668
     argument 2: the logical index (X)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   669
     argument 3: the distance y from the click point to the columns's graph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   670
     argument 4: physical y value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   671
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   672
    doubleClickBlock := aBlockUpTo4Args
1d91a0437471 initial checkin
ca
parents:
diff changeset
   673
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   674
1d91a0437471 initial checkin
ca
parents:
diff changeset
   675
menuAccessBlock
1d91a0437471 initial checkin
ca
parents:
diff changeset
   676
    "action block which is performed if a menu is required; if the block returns
1d91a0437471 initial checkin
ca
parents:
diff changeset
   677
     nil, the default middlebutton menu is evaluated.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   678
1d91a0437471 initial checkin
ca
parents:
diff changeset
   679
     Number of arguments to the block can be 0 upto 4.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   680
1d91a0437471 initial checkin
ca
parents:
diff changeset
   681
     argument 1: nearest column to the click point
1d91a0437471 initial checkin
ca
parents:
diff changeset
   682
     argument 2: the logical index (X)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   683
     argument 3: the distance y from the click point to the columns's graph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   684
     argument 4: physical y value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   685
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   686
    ^ menuAccessBlock
1d91a0437471 initial checkin
ca
parents:
diff changeset
   687
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   688
1d91a0437471 initial checkin
ca
parents:
diff changeset
   689
menuAccessBlock:aBlockUpTo4Args
1d91a0437471 initial checkin
ca
parents:
diff changeset
   690
    "action block which is performed if a menu is required; if the block returns
1d91a0437471 initial checkin
ca
parents:
diff changeset
   691
     nil, the default middlebutton menu is evaluated.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   692
1d91a0437471 initial checkin
ca
parents:
diff changeset
   693
     Number of arguments to the block can be 0 upto 4.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   694
1d91a0437471 initial checkin
ca
parents:
diff changeset
   695
     argument 1: nearest column to the click point
1d91a0437471 initial checkin
ca
parents:
diff changeset
   696
     argument 2: the logical index (X)
1d91a0437471 initial checkin
ca
parents:
diff changeset
   697
     argument 3: the distance y from the click point to the columns's graph
1d91a0437471 initial checkin
ca
parents:
diff changeset
   698
     argument 4: physical y value
1d91a0437471 initial checkin
ca
parents:
diff changeset
   699
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   700
    menuAccessBlock:= aBlockUpTo4Args
1d91a0437471 initial checkin
ca
parents:
diff changeset
   701
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   702
1d91a0437471 initial checkin
ca
parents:
diff changeset
   703
!GraphColumnView2D methodsFor:'accessing dimensions'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   704
1d91a0437471 initial checkin
ca
parents:
diff changeset
   705
gridExtent
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   706
    "returns the x/y extent of the grid
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   707
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   708
    ^ gridX @ gridY
1d91a0437471 initial checkin
ca
parents:
diff changeset
   709
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   710
1d91a0437471 initial checkin
ca
parents:
diff changeset
   711
gridExtent:anExtent
1d91a0437471 initial checkin
ca
parents:
diff changeset
   712
    "set the x/y extent of the grid
1d91a0437471 initial checkin
ca
parents:
diff changeset
   713
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   714
    |gX gY|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   715
1d91a0437471 initial checkin
ca
parents:
diff changeset
   716
    anExtent isNil ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   717
	gX := gY := 0
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   718
    ] ifFalse:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   719
	gX := (anExtent x) max:0.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   720
	gY := (anExtent y) max:0.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   721
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   722
1d91a0437471 initial checkin
ca
parents:
diff changeset
   723
    gridX == gX ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   724
	self gridY:gY
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   725
    ] ifFalse:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   726
	gridY := gY.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   727
	self gridX:gX
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   728
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   729
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   730
1d91a0437471 initial checkin
ca
parents:
diff changeset
   731
gridX
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   732
    "returns the horizontal size of the grid or 0 if the horizontal grid is disabled
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   733
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   734
    ^ gridX
1d91a0437471 initial checkin
ca
parents:
diff changeset
   735
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   736
1d91a0437471 initial checkin
ca
parents:
diff changeset
   737
gridX:aValue
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   738
    "set the horizontal size of the grid or 0 if the horizontal grid should be invisible
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   739
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   740
    |x|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   742
    x := self unsignedIntegerFrom:aValue onError:[gridX].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   743
1d91a0437471 initial checkin
ca
parents:
diff changeset
   744
    x ~~ gridX ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   745
	gridX := x.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   746
	self doRecomputeGraph.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   747
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   748
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   749
1d91a0437471 initial checkin
ca
parents:
diff changeset
   750
gridY
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   751
    "returns the vertical size of the grid or 0 if the vertical grid is disabled
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   752
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   753
    ^ gridY
1d91a0437471 initial checkin
ca
parents:
diff changeset
   754
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   755
1d91a0437471 initial checkin
ca
parents:
diff changeset
   756
gridY:aValue
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   757
    "set the vertical size of the grid or 0 if the vertical grid should be invisible
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   758
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   759
    |y|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   760
1d91a0437471 initial checkin
ca
parents:
diff changeset
   761
    y := self unsignedIntegerFrom:aValue onError:[gridY].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   762
1d91a0437471 initial checkin
ca
parents:
diff changeset
   763
    y ~~ gridY ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   764
	gridY := y.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   765
	self doRecomputeGraph
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   766
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
   767
1d91a0437471 initial checkin
ca
parents:
diff changeset
   768
1d91a0437471 initial checkin
ca
parents:
diff changeset
   769
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   770
1d91a0437471 initial checkin
ca
parents:
diff changeset
   771
!GraphColumnView2D methodsFor:'change & update'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   772
1d91a0437471 initial checkin
ca
parents:
diff changeset
   773
changedGraphIn:aColumn what:what from:oldValue
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   774
    "the graph assigned to the column description changed
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   775
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   776
    |widthC scaleY transY dataY stepX|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   777
1d91a0437471 initial checkin
ca
parents:
diff changeset
   778
    widthC := aColumn lineWidth.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   779
    scaleY := self scaleYofColumn:aColumn.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   780
    transY := self transYofColumn:aColumn.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   781
    stepX  := self stepX.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   782
    dataY  := self yDataForColumn:aColumn.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   783
1d91a0437471 initial checkin
ca
parents:
diff changeset
   784
    what == #lineWidth ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   785
	widthC < oldValue ifTrue:[widthC := oldValue]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   786
			 ifFalse:[widthC := nil]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   787
    ] ifFalse:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   788
	(what ~~ #lineStyle or:[aColumn lineStyle == #solid]) ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   789
	    widthC := nil
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   790
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   791
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   792
1d91a0437471 initial checkin
ca
parents:
diff changeset
   793
    widthC notNil ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   794
	self drawGRX:0
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   795
		step:stepX
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   796
	      scaleY:scaleY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   797
	      transY:transY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   798
	       ydata:dataY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   799
		with:bgColor
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   800
	       style:#solid
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   801
	       width:widthC.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   802
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   803
	what == #lineWidth ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   804
	    ^ self drawX:0 y:0 width:width height:height
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   805
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   806
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   807
1d91a0437471 initial checkin
ca
parents:
diff changeset
   808
    self drawGRC:aColumn
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   809
	       x:0
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   810
	    step:stepX
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   811
	  scaleY:scaleY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   812
	  transY:transY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   813
	   ydata:dataY.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   814
1d91a0437471 initial checkin
ca
parents:
diff changeset
   815
1d91a0437471 initial checkin
ca
parents:
diff changeset
   816
1d91a0437471 initial checkin
ca
parents:
diff changeset
   817
1d91a0437471 initial checkin
ca
parents:
diff changeset
   818
1d91a0437471 initial checkin
ca
parents:
diff changeset
   819
1d91a0437471 initial checkin
ca
parents:
diff changeset
   820
1d91a0437471 initial checkin
ca
parents:
diff changeset
   821
1d91a0437471 initial checkin
ca
parents:
diff changeset
   822
1d91a0437471 initial checkin
ca
parents:
diff changeset
   823
1d91a0437471 initial checkin
ca
parents:
diff changeset
   824
1d91a0437471 initial checkin
ca
parents:
diff changeset
   825
1d91a0437471 initial checkin
ca
parents:
diff changeset
   826
1d91a0437471 initial checkin
ca
parents:
diff changeset
   827
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
   828
1d91a0437471 initial checkin
ca
parents:
diff changeset
   829
changedHLineIn:aColumn what:what from:oldValue
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
   830
    "the horizontal lines assigned to the column description changed
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   831
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
   832
    |widthC scaleY transY list|
1d91a0437471 initial checkin
ca
parents:
diff changeset
   833
1d91a0437471 initial checkin
ca
parents:
diff changeset
   834
    widthC := aColumn hLineWidth.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   835
    scaleY := self scaleYofColumn:aColumn.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   836
    transY := self transYofColumn:aColumn.
1d91a0437471 initial checkin
ca
parents:
diff changeset
   837
1d91a0437471 initial checkin
ca
parents:
diff changeset
   838
    what == #hLineList ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   839
	oldValue notNil ifTrue:[list   := oldValue]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   840
		       ifFalse:[widthC := nil].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   841
    ] ifFalse:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   842
	(list := aColumn hLineList) isNil ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   843
	    ^ self
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   844
	].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   845
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   846
	what == #hLineWidth ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   847
	    widthC < oldValue ifTrue:[widthC := oldValue]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   848
			     ifFalse:[widthC := nil]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   849
	] ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   850
	    (what ~~ #hLineStyle or:[aColumn hLineStyle == #solid]) ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   851
		widthC := nil
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   852
	    ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   853
	].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   854
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   855
1d91a0437471 initial checkin
ca
parents:
diff changeset
   856
    widthC notNil ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   857
	self drawHLN:list
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   858
		   x:0
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   859
		   y:0
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   860
		 toX:width
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   861
		   y:height
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   862
	      scaleY:scaleY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   863
	      transY:transY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   864
		with:bgColor
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   865
	       style:#solid
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   866
	       width:widthC.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   867
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   868
	what ~~ #hLineStyle ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   869
	    ^ self drawX:0 y:0 width:width height:height
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   870
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   871
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
   872
1d91a0437471 initial checkin
ca
parents:
diff changeset
   873
    self drawHLC:aColumn
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   874
	       x:0
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   875
	       y:0
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   876
	     toX:width
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   877
	       y:height
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   878
	  scaleY:scaleY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   879
	  transY:transY.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
   880
1d91a0437471 initial checkin
ca
parents:
diff changeset
   881
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
   882
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   883
!GraphColumnView2D methodsFor:'displaying'!
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   884
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   885
displayOn:aGC
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   886
    "ST-80 Compatibility
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   887
     display the receiver in a graphicsContext at 0@0
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   888
     - this method allows for any object to be displayed in some view
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   889
       or on a printer
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   890
     (although the fallBack is to display its printString ...)
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   891
    "
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   892
    self displayOn:aGC x:0 y:0
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   893
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   894
!
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   895
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   896
displayOn:aGC at:aPoint
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   897
    "ST-80 Compatibility
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   898
     display the receiver in a graphicsContext - this method allows
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   899
     for any object to be displayed on a Printer - for example.
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   900
    "
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   901
    self displayOn:aGC x:(aPoint x) y:(aPoint y)
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   902
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   903
!
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   904
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   905
displayOn:aGC x:x y:y
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   906
    "ST-80 Compatibility
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   907
     display the receiver in a graphicsContext - this method allows
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   908
     for any object to be displayed on a Printer - for example.
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   909
    "
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   910
    |w h|
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   911
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   912
    w := aGC width  - x.
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   913
    h := aGC height - y.
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   914
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   915
    (w > 0 and:[h > 0]) ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   916
	self displayOn:aGC x:x y:y w:w h:(h min:height)
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   917
    ] ifFalse:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   918
	self halt
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   919
    ]
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   920
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   921
!
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   922
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   923
displayOn:aGC x:x y:y w:w h:h
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   924
    |n s sX tY list yData maxX maxY oldClip oldTrans|
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   925
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   926
    oldClip  := aGC clippingRectangleOrNil.
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   927
    oldTrans := aGC transformation.
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   928
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   929
    sX := (w / (windowSize - 1)) asFloat.
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   930
    aGC transformation:(WindowingTransformation scale:1 translation:(x  @ y)).
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   931
    aGC clippingRectangle:(Rectangle left:0 top:0 width:w height:h).
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   932
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   933
    showGrid ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   934
	aGC viewBackground ~= gridColor ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   935
	    aGC paint:gridColor.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   936
	] ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   937
	    aGC paint:(Color green lightened)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   938
	].
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   939
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   940
	gridX ~~ 0 ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   941
	    s := gridX * self class gridStep.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   942
	    n := 0.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   943
	    [ n < w ] whileTrue:[ aGC displayLineFromX:n y:0 toX:n y:h. n := n + s ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   944
	].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   945
	gridY > 0 ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   946
	    s := gridY * self class gridStep.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   947
	    n := 0.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   948
	    [ n < h ] whileTrue:[ aGC displayLineFromX:0 y:n toX:w y:n. n := n + s ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   949
	]
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   950
    ].
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   951
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   952
    (list := self listOfVisibleRefIndices) isEmpty ifFalse:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   953
	aGC paint:referenceColor.
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   954
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   955
	list do:[:i||rX|
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   956
	    ((rX := (i * sX) rounded) >= 0 and:[rX <= w]) ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   957
		aGC displayLineFromX:rX y:0 toX:rX y:h
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   958
	    ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   959
	]
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   960
    ].
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   961
    yData := Array new:((w // sX + 2) min:windowSize).
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   962
    aGC paint:fgColor.
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   963
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   964
    self listOfVisibleColumns do:[:aCol|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   965
	tY := zoomY  * aCol zoomY.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   966
	tY := h * (aCol relativeXaxis) / tY + (aCol transY) * tY.
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   967
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   968
	aGC transformation:(WindowingTransformation scale:(sX @ (self scaleYofColumn:aCol))
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   969
					      translation:(x  @ (y + tY))).
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   970
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   971
	(list := aCol hLineList) size ~~ 0 ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   972
	    list do:[:y|
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   973
		aGC paint:(aCol hLineFgColor ? fgColor).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   974
		aGC lineStyle:aCol hLineStyle.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   975
		aGC lineWidth:(aCol hLineWidth).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   976
		aGC displayLineFromX:0 y:y toX:(windowSize - 1) y:y.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   977
	    ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   978
	].
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   979
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   980
	(aCol yValuesStartAt:graphOriginX into:yData) keysAndValuesDo:[:i :y|
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   981
	    yData at:i put:(i - 1 @ y)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   982
	].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   983
	aGC paint:(aCol foregroundColor ? fgColor).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   984
	aGC lineStyle:aCol lineStyle.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   985
	aGC lineWidth:(aCol lineWidth).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
   986
	aGC displayPolygon:yData.
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   987
    ].
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   988
    aGC transformation:oldTrans.
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   989
    aGC clippingRectangle:oldClip.
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   990
    aGC lineStyle:#solid.
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   991
    aGC lineWidth:0.
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   992
    aGC paint:fgColor.
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   993
    aGC displayRectangleX:x y:y width:w height:h
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   994
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   995
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   996
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   997
!
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   998
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
   999
doPrint
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1000
    "print the current visible contents on the printer
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1001
    "
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1002
    |printer w h|
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1003
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1004
    (printer := Printer new) isNil ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1005
	self error:'cannot open printer'.
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1006
      ^ self
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1007
    ].
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1008
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1009
    self withWaitCursorDo:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1010
	Printer writeErrorSignal handle:[:ex |
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1011
	    self warn:('error while printing:\\'
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1012
			, ex errorString
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1013
			, '\\(printing with: ' , (Printer printCommand) , ')') withCRs
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1014
	] do:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1015
	    printer setNative:true.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1016
	    printer nextPutAll:'OriginalState setgstate'; cr.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1017
	    printer := PSGraphicsContext on:printer origin:(0 @ 0) corner:( 1.0 @ 1.0 ).
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1018
	    w := printer width - printer rightMargin - printer leftMargin.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1019
	    h := printer height min:height.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1020
	    self displayOn:printer x:0 y:0 w:w h:h.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1021
	].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1022
	printer close
805
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1023
    ].
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1024
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1025
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1026
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1027
! !
ea53b7181b00 remove method:
ca
parents: 754
diff changeset
  1028
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1029
!GraphColumnView2D methodsFor:'drawing'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1030
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1031
clearColumnAndRedraw:aColumn
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1032
    "undraw a column and redraw the view without clearing the background
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1033
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1034
    shown ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1035
	(self sensor hasDamageFor:self) ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1036
	    self invalidate
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1037
	] ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1038
	    self undrawColumn:aColumn
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1039
		       scaleY:(self scaleYofColumn:aColumn)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1040
		       transY:(self transYofColumn:aColumn)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1041
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1042
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1043
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1044
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1045
redrawColumn:aColumn
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1046
    "redraw a column including the horizontal lines
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1047
     and the graph of the column
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1048
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1049
    |transY scaleY stepX values|
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1050
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1051
    (shown and:[aColumn shown]) ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1052
	scaleY := self scaleYofColumn:aColumn.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1053
	transY := self transYofColumn:aColumn.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1054
	stepX  := self stepX.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1055
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1056
	self drawHLC:aColumn
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1057
		   x:0
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1058
		   y:0
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1059
		 toX:width
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1060
		   y:height
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1061
	      scaleY:scaleY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1062
	      transY:transY.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1063
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1064
	self drawGRC:aColumn
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1065
		   x:0
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1066
		step:stepX
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1067
	      scaleY:scaleY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1068
	      transY:transY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1069
	       ydata:(self yDataForColumn:aColumn)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1070
    ]
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1071
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1072
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1073
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1074
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1075
redrawColumnAt:anIndex
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1076
    "redraw a column at an index including the horizontal lines
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1077
     and the graph of the column
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1078
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1079
    self redrawColumn:(columns at:anIndex)
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1080
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1081
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1082
redrawX:x y:y width:w height:h
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1083
    "clear and redraw
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1084
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1085
    shown ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1086
	self paint:bgColor.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1087
	self fillRectangleX:x y:y width:w height:h.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1088
	self drawX:x y:y width:w height:h.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1089
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1090
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1091
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1092
!GraphColumnView2D methodsFor:'drawing basics'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1093
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1094
drawGRC:aColumn x:xStart step:xStep scaleY:yScale transY:yTrans ydata:yData
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1095
    "draw a graph
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1096
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1097
    self drawGRX:xStart
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1098
	    step:xStep
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1099
	  scaleY:yScale
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1100
	  transY:yTrans
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1101
	   ydata:yData
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1102
	    with:(self mapColor:(aColumn foregroundColor))
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1103
	   style:(aColumn lineStyle)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1104
	   width:(aColumn lineWidth)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1105
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1106
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1107
drawGRX:xStart step:xStep scaleY:yScale transY:yTrans ydata:ydata with:aColor style:aStyle width:aWidth
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1108
    "draw a graph
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1109
    "
3243
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1110
"
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1111
         self test1
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1112
"
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1113
    |xNext xLast yLast yNext|
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1114
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1115
    ydata size == 0 ifTrue:[^ self].
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1116
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1117
    self paint:aColor.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1118
    self lineStyle:aStyle.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1119
    self lineWidth:aWidth.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1120
3243
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1121
    ydata size == 0 ifTrue:[^ self].
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1122
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1123
    xLast := xStart.
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1124
    yLast := (ydata at:1) * yScale + yTrans.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1125
3243
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1126
    ydata from:2 do:[:y |
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1127
        xNext := xLast + xStep.
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1128
        yNext := y * yScale + yTrans.
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1129
        self displayLineFromX:xLast rounded y:yLast rounded toX:xNext rounded y:yNext rounded.
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1130
        xLast := xNext.
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1131
        yLast := yNext.
9d284c46a6da *** empty log message ***
sr
parents: 3150
diff changeset
  1132
    ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1133
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1134
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1135
drawHLC:aColumn x:x y:y toX:xMax y:yMax scaleY:yScale transY:yTrans
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1136
    "draw horizontal lines derrived from column
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1137
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1138
    |list|
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1139
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1140
    (list := aColumn hLineList) notNil ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1141
	self drawHLN:list
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1142
		   x:x
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1143
		   y:y
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1144
		 toX:xMax
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1145
		   y:yMax
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1146
	      scaleY:yScale
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1147
	      transY:yTrans
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1148
		with:(self mapColor:(aColumn hLineFgColor))
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1149
	       style:(aColumn hLineStyle)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1150
	       width:(aColumn hLineWidth)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1151
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1152
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1153
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1154
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1155
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1156
drawHLN:aList x:x y:y toX:xMax y:yMax scaleY:yScale transY:yTrans with:aColor style:aStyle width:aWidth
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1157
    "draw horizontal lines derrived from list
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1158
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1159
    self paint:aColor.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1160
    self lineStyle:aStyle.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1161
    self lineWidth:aWidth.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1162
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1163
    aList do:[:hY||dY|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1164
	dY := (hY * yScale + yTrans) rounded.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1165
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1166
	(dY < y or:[dY > yMax]) ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1167
	    self displayLineFromX:x y:dY toX:xMax y:dY.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1168
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1169
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1170
    aStyle ~~ #solid ifTrue:[self lineStyle:#solid].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1171
    aWidth ~~ 1      ifTrue:[self lineWidth:1].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1172
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1173
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1174
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1175
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1176
drawReferencesFromX:x0 y:y0 to:x1 y:y1
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1177
    "redraw visible references
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1178
    "
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1179
    |x stepX refLines|
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1180
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1181
    refLines := self listOfVisibleRefIndices.
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1182
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1183
    refLines notEmpty ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1184
	stepX := self stepX.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1185
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1186
	self paint:referenceColor.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1187
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1188
	refLines do:[:anIndex|
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1189
	    x := (anIndex * stepX) rounded.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1190
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1191
	    (x >= x0 and:[x <= x1]) ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1192
		self displayLineFromX:x y:y0 toX:x y:y1
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1193
	    ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1194
	]
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1195
    ].
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1196
!
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1197
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1198
drawX:x y:y width:w height:h
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1199
    "redraw without clearing the background
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1200
    "
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1201
    |saveClip yValues xStep xStart yScale yTrans
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1202
     xIndex "{ Class:SmallInteger }"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1203
     x0     "{ Class:SmallInteger }"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1204
     y0     "{ Class:SmallInteger }"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1205
     xMax   "{ Class:SmallInteger }"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1206
     yMax   "{ Class:SmallInteger }"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1207
     step   "{ Class:SmallInteger }"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1208
     gstep  "{ Class:SmallInteger }"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1209
     start  "{ Class:SmallInteger }"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1210
     stop   "{ Class:SmallInteger }"
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1211
    |
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1212
    xStep := self stepX.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1213
    xMax  := x + w.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1214
    yMax  := y + h.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1215
    x0    := x // xStep.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1216
    start := x0 + 1.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1217
    stop  := (xMax // xStep + 2) min:windowSize.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1218
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1219
    start < stop ifFalse:[^ self].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1220
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1221
    saveClip := clipRect.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1222
    self clippingRectangle:(Rectangle left:x top:y width:w height:h).
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1223
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1224
    showGrid ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1225
	self paint:gridColor.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1226
	gstep := self class gridStep.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1227
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1228
"/ X-Grid
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1229
	gridX ~~ 0 ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1230
	    step := gridX * gstep.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1231
	    x0 := (x // step) * step + gridXoffset.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1232
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1233
	    [ x0 < xMax ] whileTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1234
		self displayLineFromX:x0 y:y toX:x0 y:yMax.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1235
		x0 := x0 + step.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1236
	    ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1237
	].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1238
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1239
"/ Y-Grid
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1240
	gridY > 0 ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1241
	    step := gridY * gstep.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1242
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1243
	    y0 := (y // step) * step.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1244
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1245
	    [ y0 < yMax ] whileTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1246
		self displayLineFromX:x y:y0 toX:xMax y:y0.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1247
		y0 := y0 + step
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1248
	    ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1249
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1250
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1251
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1252
    columns notNil ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1253
	xStart  := start - 1 * xStep.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1254
	xIndex  := start - 1 + graphOriginX.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1255
	yValues := Array new:(stop - start + 1).
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1256
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1257
"/ Column
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1258
	columns do:[:aCol|
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1259
	    aCol shown ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1260
		yScale := self scaleYofColumn:aCol.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1261
		yTrans := self transYofColumn:aCol.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1262
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1263
		self drawHLC:aCol x:x y:y toX:xMax y:yMax scaleY:yScale transY:yTrans.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1264
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1265
		self drawGRC:aCol x:xStart step:xStep scaleY:yScale transY:yTrans
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1266
		       ydata:(aCol yValuesStartAt:xIndex into:yValues)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1267
	    ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1268
	].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1269
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1270
"/ V-Lines
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1271
	self drawReferencesFromX:x y:y to:xMax y:yMax.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1272
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1273
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1274
    self clippingRectangle:saveClip.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1275
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1276
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1277
undrawColumn:aColumn scaleY:scaleY transY:transY
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1278
    "undraw a column, than redraw all without clearing the background
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1279
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1280
    |stepX hlines|
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1281
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1282
    stepX := self stepX.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1283
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1284
    (hlines := aColumn hLineList) notNil ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1285
	self drawHLN:hlines
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1286
		   x:0
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1287
		   y:0
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1288
		 toX:width
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1289
		   y:height
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1290
	      scaleY:scaleY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1291
	      transY:transY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1292
		with:bgColor
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1293
	       style:#solid
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1294
	       width:(aColumn hLineWidth)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1295
    ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1296
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1297
    self drawGRX:0
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1298
	    step:stepX
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1299
	  scaleY:scaleY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1300
	  transY:transY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1301
	   ydata:(self yDataForColumn:aColumn)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1302
	    with:bgColor
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1303
	   style:#solid
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1304
	   width:(aColumn lineWidth).
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1305
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1306
    self drawX:0 y:0 width:width height:height
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1307
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1308
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1309
!GraphColumnView2D methodsFor:'event handling'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1310
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1311
buttonMultiPress:button x:x y:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1312
    "handle a button double click event
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1313
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1314
    ((button == 1) or:[button == #select]) ifFalse:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1315
	^ super buttonMultiPress:button x:x y:y
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1316
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1317
    self buttonPressBlock:doubleClickBlock x:x y:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1318
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1319
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1320
buttonPress:button x:x y:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1321
    "handle a button press event
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1322
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1323
    |menu|
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1324
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1325
    ((button == 2) or:[button == #menu]) ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1326
	menu := self buttonPressBlock:menuAccessBlock x:x y:y.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1327
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1328
	menu notNil ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1329
	    ^ menu startUp
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1330
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1331
    ] ifFalse:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1332
	((button == 1) or:[button == #select]) ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1333
	    ^ self buttonPressBlock:actionBlock x:x y:y
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1334
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1335
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1336
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1337
    super buttonPress:button x:x y:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1338
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1339
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1340
buttonPressBlock:aBlock x:x y:y
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1341
    "evaluate the user defined block if not nil dependent on its required
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1342
     arguments; the result of the block is returned
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1343
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1344
    |numArgs desc index|
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1345
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1346
    aBlock isNil ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1347
	^ nil
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1348
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1349
    (numArgs := aBlock numArgs) == 0 ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1350
	^ aBlock value
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1351
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1352
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1353
    (desc := self nearestColumnAtX:x y:y) isNil ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1354
	^ nil
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1355
    ].
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1356
    index := self absoluteIndexOfX:x.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1357
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1358
    numArgs == 1 ifTrue:[ ^ aBlock value:(desc key) ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1359
    numArgs == 2 ifTrue:[ ^ aBlock value:(desc key) value:index ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1360
    numArgs == 3 ifTrue:[ ^ aBlock value:(desc key) value:index value:(desc value) ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1361
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1362
    ^ aBlock value:(desc key) value:index value:(desc value) value:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1363
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1364
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1365
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1366
buttonRelease:button x:x y:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1367
    "handle a button release event
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1368
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1369
    |numArgs|
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1370
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1371
    buttonReleaseBlock isNil ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1372
	^ super buttonRelease:button x:x y:y
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1373
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1374
    numArgs := buttonReleaseBlock numArgs.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1375
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1376
    numArgs == 0 ifTrue:[ ^ buttonReleaseBlock value ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1377
    numArgs == 1 ifTrue:[ ^ buttonReleaseBlock value:x ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1378
    numArgs == 2 ifTrue:[ ^ buttonReleaseBlock value:x value:y ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1379
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1380
    buttonReleaseBlock value:x value:y value:(self absoluteIndexOfX:x)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1381
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1382
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1383
!GraphColumnView2D methodsFor:'initialize'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1384
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1385
initialize
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1386
    "setup default values
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1387
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1388
    super initialize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1389
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1390
    gridXoffset  := 0.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1391
    colorMap     := Dictionary new.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1392
    gridX        := 2.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1393
    gridY        := 2.
814
eb6439605f90 bug fix; set boolean to false (not nil)
ca
parents: 805
diff changeset
  1394
!
eb6439605f90 bug fix; set boolean to false (not nil)
ca
parents: 805
diff changeset
  1395
eb6439605f90 bug fix; set boolean to false (not nil)
ca
parents: 805
diff changeset
  1396
unrealize
eb6439605f90 bug fix; set boolean to false (not nil)
ca
parents: 805
diff changeset
  1397
    "clear colorMap
eb6439605f90 bug fix; set boolean to false (not nil)
ca
parents: 805
diff changeset
  1398
    "
eb6439605f90 bug fix; set boolean to false (not nil)
ca
parents: 805
diff changeset
  1399
    super unrealize.
eb6439605f90 bug fix; set boolean to false (not nil)
ca
parents: 805
diff changeset
  1400
    colorMap := Dictionary new.
eb6439605f90 bug fix; set boolean to false (not nil)
ca
parents: 805
diff changeset
  1401
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1402
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1403
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1404
!GraphColumnView2D methodsFor:'private'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1405
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1406
mapColor:aColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1407
    "get the same color on the device. If the argument is
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1408
     nil, the foreground color is returned.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1409
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1410
    |fg|
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1411
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1412
    aColor isNil ifTrue:[
4851
e88d8b466cad #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 3243
diff changeset
  1413
        ^ fgColor
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1414
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1415
    (fg := colorMap at:aColor ifAbsent:nil) isNil ifTrue:[
4851
e88d8b466cad #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 3243
diff changeset
  1416
        colorMap at:aColor put:(fg := aColor onDevice:device)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1417
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1418
    ^ fg
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1419
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1420
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1421
yDataForColumn:aColumn
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1422
    "returns collection of visible Y-data for a column
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1423
    "
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1424
    ^ aColumn yValuesStartAt:graphOriginX into:(Array new:windowSize)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1425
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1426
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1427
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1428
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1429
!GraphColumnView2D methodsFor:'protocol'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1430
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1431
doRecomputeGraph
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1432
    "called to recompute drawable objects and to set the graph to invalidate
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1433
    "
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1434
    gridXoffset := 0.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1435
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1436
    shown ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1437
	self invalidate.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1438
    ]
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1439
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1440
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1441
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1442
updateColumns:what with:oldValue from:aColumn
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1443
    "called if the list of columns changed
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1444
	 #size      the size of the columns
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1445
	 #color:    color changed
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1446
     or a specific column:( aColumn notNil )
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1447
	 #insert:   insert a new column
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1448
	 #remove:   remove a column
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1449
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1450
	or a specific attribute derived from the
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1451
	changed column.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1452
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1453
    |colSY colZY colTY colRX|
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1454
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1455
    shown ifFalse:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1456
	^ self
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1457
    ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1458
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1459
    (what == nil or:[self sensor hasDamageFor:self]) ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1460
	^ self invalidate
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1461
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1462
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1463
    aColumn isNil ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1464
	^ self doRecomputeGraph
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1465
    ].
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1466
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1467
    what == #insert: ifTrue:[ ^ self redrawColumn:aColumn ].
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1468
    what == #remove: ifTrue:[ ^ self clearColumnAndRedraw:aColumn ].
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1469
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1470
    what == #shown ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1471
	aColumn shown ifTrue:[self redrawColumn:aColumn]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1472
		     ifFalse:[self clearColumnAndRedraw:aColumn].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1473
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1474
	^ self
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1475
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1476
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1477
    aColumn shown ifFalse:[ ^ self ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1478
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1479
    (    what == #lineStyle
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1480
     or:[what == #foregroundColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1481
     or:[what == #lineWidth]]
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1482
    ) ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1483
	^ self changedGraphIn:aColumn what:what from:oldValue
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1484
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1485
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1486
    (    what == #hLineStyle
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1487
     or:[what == #hLineFgColor
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1488
     or:[what == #hLineWidth
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1489
     or:[what == #hLineList ]]]
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1490
    ) ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1491
	^ self changedHLineIn:aColumn what:what from:oldValue
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1492
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1493
    colSY := aColumn scaleY.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1494
    colZY := aColumn zoomY.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1495
    colTY := aColumn transY.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1496
    colRX := aColumn relativeXaxis.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1497
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1498
    what == #scaleY        ifTrue:[ colSY := oldValue ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1499
    what == #transY        ifTrue:[ colTY := oldValue ] ifFalse:[
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1500
    what == #relativeXaxis ifTrue:[ colRX := oldValue ] ifFalse:[
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1501
    what == #zoomY         ifTrue:[ colZY := oldValue ] ifFalse:[ ^ self doRecomputeGraph ]]]].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1502
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1503
    self undrawColumn:aColumn
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1504
	       scaleY:(self absScaleY:colSY zoomY:colZY)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1505
	       transY:(self absTransY:colTY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1506
			   relativeTo:colRX
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1507
				zoomY:colZY
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1508
		     ).
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1509
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1510
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1511
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1512
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1513
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1514
updateOriginX:nIndices
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1515
    "scroll left or right n x-steps. A positive value scrolls to the right
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1516
     a negative value to the left.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1517
    "
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1518
    |
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1519
     x "{ Class:SmallInteger }"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1520
     w "{ Class:SmallInteger }"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1521
     gridDeltaX "{ Class:SmallInteger }"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1522
    |
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1523
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1524
    x := (nIndices * self stepX) rounded.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1525
    w := width - (x abs).
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1526
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1527
 "/ update offset X for the grid
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1528
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1529
    (showGrid and:[gridX ~~ 0]) ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1530
	gridDeltaX  := gridXoffset + x.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1531
	gridXoffset := gridDeltaX \\ (gridX * self class gridStep).
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1532
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1533
	gridDeltaX < 0 ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1534
	    gridXoffset := gridXoffset negated
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1535
	].
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1536
    ].
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1537
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1538
 "/ scrolling & redraw
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1539
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1540
    x := x abs.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1541
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1542
    self catchExpose.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1543
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1544
    nIndices < 0 ifTrue:[       "/ scroll left
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1545
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1546
	self copyFrom:self x:x  y:0 toX:0 y:0 width:w height:height async:true.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1547
	self redrawX:w y:0 width:x height:height.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1548
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1549
    ] ifFalse:[                 "/ scroll right
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1550
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1551
	self copyFrom:self x:0  y:0 toX:x y:0 width:w height:height async:true.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1552
	self redrawX:0 y:0 width:x height:height.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1553
    ].
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1554
    self waitForExpose.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1555
!
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1556
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1557
updateReferences:what atRelX:relX
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1558
    "called when the list of references changed.
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1559
	#remove:        the reference at the relative X index is removed
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1560
	#insert:        a reference is inserted at the relative X index
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1561
	#size           the list of references changed
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1562
	#state          visibility state changed
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1563
	#color          the foreground color changed
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1564
    "
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1565
    |x|
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1566
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1567
    shown ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1568
	showReferences ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1569
	    what == #state ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1570
		self doRecomputeGraph
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1571
	    ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1572
	] ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1573
	    (what == #color or:[what == #state]) ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1574
		self drawReferencesFromX:0 y:0 to:width y:height
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1575
	    ] ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1576
		(what == #insert: or:[what == #remove:]) ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1577
		    x := (relX * self stepX) rounded.
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1578
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1579
		    what == #insert: ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1580
			self paint:referenceColor.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1581
			self displayLineFromX:x y:0 toX:x y:height
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1582
		    ] ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1583
			self redrawX:x y:0 width:1 height:height
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1584
		    ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1585
		] ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1586
		    self doRecomputeGraph
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1587
		]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1588
	    ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1589
	]
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1590
    ]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1591
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1592
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1593
!GraphColumnView2D methodsFor:'queries'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1594
754
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1595
absoluteIndexOfX:x
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1596
    "returns the absolute X value for a visible x
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1597
    "
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1598
    ^ (x // self stepX) + graphOriginX
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1599
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1600
!
c55a5727bf04 add more functionality
ca
parents: 750
diff changeset
  1601
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1602
nearestColumnAtX:x y:y
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1603
    "returns an association containing the nearest column as key and the absolute y-distance
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1604
     to the point x/y. If no columns exists nil is returned
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1605
    "
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1606
    |sX dX dtY data col
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1607
     i0   "{ Class:SmallInteger }"
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1608
    |
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1609
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1610
    columns size == 0 ifTrue:[^ nil ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1611
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1612
    col := nil.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1613
    sX  := self stepX.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1614
    i0  := x // sX.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1615
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1616
    sX > 1 ifFalse:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1617
	dX := 0
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1618
    ] ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1619
	(dX := x - (i0 * sX)) > 0.5 ifTrue:[dX := dX / sX]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1620
				   ifFalse:[dX := 0]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1621
    ].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1622
    i0 := (i0 + 1) min:windowSize.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1623
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1624
    (i0 < windowSize and:[dX ~= 0]) ifTrue:[data := Array new:2]
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1625
				   ifFalse:[data := Array new:1].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1626
750
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1627
    i0 := i0 + graphOriginX.
83350b3b5d67 added text and new functionality
ca
parents: 741
diff changeset
  1628
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1629
    columns do:[:aCol||vlY scY trY yL yR|
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1630
	aCol shown ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1631
	    vlY := aCol yValuesStartAt:i0 into:data.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1632
	    scY := self scaleYofColumn:aCol.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1633
	    trY := self transYofColumn:aCol.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1634
	    yL  := vlY first * scY.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1635
	    yR  := vlY last  * scY.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1636
	    yL  := (yL + trY + (yR - yL * dX)) rounded.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1637
	    yR  := (y - yL) abs.
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1638
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1639
	    (col isNil or:[dtY > yR]) ifTrue:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1640
		dtY := yR.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1641
		col := aCol.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1642
	    ]
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1643
	]
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1644
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1645
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1646
    ^ col notNil ifTrue:[Association key:col value:dtY] ifFalse:[nil]
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1647
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1648
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1649
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1650
!GraphColumnView2D methodsFor:'transformations'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1651
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1652
absScaleY:aNumber zoomY:aZoomY
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1653
    "returns y-scale for a scale Y and a zoom factor
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1654
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1655
    ^ (aNumber negated) * zoomY * aZoomY
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1656
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1657
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1658
absTransY:aNumber relativeTo:xAxis zoomY:aZoomY
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1659
    "returns absolute transition Y for a number relative
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1660
     to a x-axis
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1661
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1662
    |zY|
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1663
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1664
    zY := zoomY  * aZoomY.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1665
  ^ height * xAxis / zY + aNumber * zY
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1666
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1667
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1668
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1669
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1670
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1671
scaleYofColumn:aColumn
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1672
    "returns current y-scale of a column on my view
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1673
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1674
    ^ (aColumn scaleY negated) * zoomY * (aColumn zoomY)
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1675
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1676
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1677
stepX
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1678
    "returns width of X measured in pixels; no fraction returned
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1679
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1680
    |x|
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1681
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1682
    x := width / (windowSize - 1).
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1683
  ^ x isInteger ifTrue:[x] ifFalse:[x asFloat]
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1684
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1685
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1686
transYofColumn:aColumn
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1687
    "returns current y-transition of a column on my view
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1688
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1689
    ^ self absTransY:(aColumn transY)
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1690
	  relativeTo:(aColumn relativeXaxis)
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1691
	       zoomY:(aColumn zoomY)
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1692
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1693
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1694
!GraphColumnView2D methodsFor:'user interaction & notifications'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1695
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1696
doGridExtent:what
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1697
    "change the grid extent factorial 2 (larger or smaller)
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1698
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1699
    |ext|
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1700
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1701
    ext := self gridExtent.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1702
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1703
    what == #larger ifTrue:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1704
	ext := ext * 2
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1705
    ] ifFalse:[
3150
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1706
	what == #smaller ifFalse:[
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1707
	^ self
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1708
	].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1709
	ext := ext // 2.
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1710
	(ext x == 0) ifTrue:[gridX ~~ 0 ifTrue:[ext x:1]].
e3a55f15ef7e package information
Claus Gittinger <cg@exept.de>
parents: 814
diff changeset
  1711
	(ext y == 0) ifTrue:[gridY ~~ 0 ifTrue:[ext y:1]].
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1712
    ].
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1713
    self gridExtent:ext.
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1714
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1715
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1716
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1717
doGridStepX:aNumberOrSymbol
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1718
    "change the grid step X
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1719
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1720
    self gridX:(aNumberOrSymbol == #off ifFalse:[aNumberOrSymbol] ifTrue:[0])
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1721
!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1722
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1723
doGridStepY:aNumberOrSymbol
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1724
    "change the grid step Y
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1725
    "
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1726
    self gridY:(aNumberOrSymbol == #off ifFalse:[aNumberOrSymbol] ifTrue:[0])
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1727
! !
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1728
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1729
!GraphColumnView2D class methodsFor:'documentation'!
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1730
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1731
version
4851
e88d8b466cad #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 3243
diff changeset
  1732
    ^ '$Header$'
741
1d91a0437471 initial checkin
ca
parents:
diff changeset
  1733
! !
4851
e88d8b466cad #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 3243
diff changeset
  1734