MultiColListEntry.st
author claus
Mon, 06 Feb 1995 01:57:39 +0100
changeset 34 159147b254e1
parent 25 e07adf47d209
child 36 160b8f0dfd7d
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19
79ab6bc98651 Initial revision
claus
parents:
diff changeset
     1
'From Smalltalk/X, Version:2.10.3 on 12-aug-1994 at 10:44:03 pm'!
79ab6bc98651 Initial revision
claus
parents:
diff changeset
     2
79ab6bc98651 Initial revision
claus
parents:
diff changeset
     3
Object subclass:#MultiColListEntry
25
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
     4
	 instanceVariableNames:'strings tabSpec'
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
     5
	 classVariableNames:''
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
     6
	 poolDictionaries:''
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
     7
	 category:'Views-Support'
19
79ab6bc98651 Initial revision
claus
parents:
diff changeset
     8
!
79ab6bc98651 Initial revision
claus
parents:
diff changeset
     9
25
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    10
!MultiColListEntry class methodsFor:'documentation'!
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    11
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    12
documentation
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    13
"
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    14
    Instances of MultiColListEntry can be used in place of strings
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    15
    of a list in a ListView or SelectionInListView.
34
159147b254e1 *** empty log message ***
claus
parents: 25
diff changeset
    16
    They allow data to be presented in table (or any other) form.
25
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    17
    See example in TabulatorSpecs documentation.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    18
    Notice, that each entry can have its own (or a shared) tabulator specification.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    19
"
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    20
! !
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    21
19
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    22
!MultiColListEntry methodsFor:'accessing'!
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    23
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    24
colAt:index put:aString
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    25
    strings isNil ifTrue:[
25
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    26
	strings := OrderedCollection new:index
19
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    27
    ].
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    28
    strings grow:index.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    29
    strings at:index put:aString
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    30
!
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    31
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    32
tabulatorSpecification:aTabSpec
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    33
    tabSpec := aTabSpec
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    34
! !
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    35
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    36
!MultiColListEntry methodsFor:'converting'!
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    37
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    38
asString
25
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    39
    "return the receiver as a string with embedded tabs"
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    40
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    41
    |s sub tab|
19
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    42
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    43
    s := ''.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    44
    tab := Character tab asString.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    45
    1 to:strings size do:[:subStringIndex |
25
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    46
	sub := strings at:subStringIndex.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    47
	sub notNil ifTrue:[
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    48
	    s := s , (strings at:subStringIndex).
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    49
	].
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    50
	subStringIndex == strings size ifFalse:[
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    51
	    s := s , tab
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    52
	]
19
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    53
    ].
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    54
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    55
    ^ s
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    56
! !
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    57
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    58
!MultiColListEntry methodsFor:'drawing'!
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    59
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    60
displayOn:aGC x:x y:y
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    61
    |xPos subString tabPos w prevString|
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    62
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    63
    xPos := x.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    64
    prevString := ''.
25
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    65
    strings keysAndValuesDo:[:index :subString |
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    66
	subString notNil ifTrue:[
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    67
	    "
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    68
	     find next tab
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    69
	    "
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    70
	    tabPos := tabSpec positionOfTab:index forString:subString on:aGC.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    71
	    tabPos isNil ifTrue:[
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    72
		"
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    73
		 no tab - just continue where we are ...
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    74
		"
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    75
		xPos := xPos + (aGC font widthOf:prevString).
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    76
	    ] ifFalse:[
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    77
		xPos := tabPos + x.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    78
	    ].
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    79
	    aGC displayString:subString x:xPos y:y.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    80
	    prevString := subString.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
    81
	]
19
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    82
    ].
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    83
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    84
    "
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    85
     |v e myList tabs|
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    86
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    87
     myList := OrderedCollection new.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    88
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    89
     tabs := TabulatorSpecification new.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    90
     tabs unit:#inch.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    91
     tabs positions:#(0 3 6).
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    92
     tabs align:#(left #left #left).
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    93
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    94
     e := MultiColListEntry new.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    95
     e colAt:1 put:'hello'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    96
     e colAt:2 put:'hallo'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    97
     e colAt:3 put:'salut'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    98
     e tabulatorSpecification:tabs.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
    99
     myList add:e.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   100
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   101
     e := MultiColListEntry new.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   102
     e colAt:1 put:'good morning'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   103
     e colAt:2 put:'guten Morgen'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   104
     e colAt:3 put:'bon jour'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   105
     e tabulatorSpecification:tabs.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   106
     myList add:e.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   107
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   108
     e := MultiColListEntry new.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   109
     e colAt:1 put:'good bye'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   110
     e colAt:2 put:'auf Wiedersehen'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   111
     e colAt:3 put:'au revoir '.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   112
     e tabulatorSpecification:tabs.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   113
     myList add:e.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   114
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   115
     v := ListView new.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   116
     v setList:myList expandTabs:false.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   117
     v open
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   118
    "
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   119
    "
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   120
     |v e myList tabs|
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   121
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   122
     myList := OrderedCollection new.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   123
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   124
     tabs := TabulatorSpecification new.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   125
     tabs unit:#cm.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   126
     tabs positions:#(1 3 5).
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   127
     tabs align:#(#right #center #left).
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   128
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   129
     1 to:100 do:[:i|
25
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   130
	 e := MultiColListEntry new.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   131
	 e colAt:1 put:i printString.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   132
	 e colAt:2 put:i squared printString.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   133
	 e colAt:3 put:i sqrt  printString.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   134
	 e tabulatorSpecification:tabs.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   135
	 myList add:e.
19
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   136
     ].
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   137
     v := ScrollableView for:ListView.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   138
     v setList:myList expandTabs:false.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   139
     v open
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   140
    "
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   141
    "
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   142
     |v e myList tabs|
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   143
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   144
     myList := OrderedCollection new.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   145
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   146
     tabs := TabulatorSpecification new.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   147
     tabs unit:#cm.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   148
     tabs positions:#(1 3 6 9 12).
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   149
     tabs align:#(#right #decimal #decimal #decimal #decimal).
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   150
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   151
     1 to:100 do:[:i|
25
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   152
	 e := MultiColListEntry new.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   153
	 e colAt:1 put:i printString.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   154
	 e colAt:2 put:i log printString.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   155
	 e colAt:3 put:i sqrt  printString.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   156
	 e colAt:4 put:i sin  printString.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   157
	 e colAt:5 put:i cos  printString.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   158
	 e tabulatorSpecification:tabs.
e07adf47d209 *** empty log message ***
claus
parents: 19
diff changeset
   159
	 myList add:e.
19
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   160
     ].
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   161
     v := ScrollableView for:ListView.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   162
     v setList:myList expandTabs:false.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   163
     v open
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   164
    "
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   165
    "
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   166
     |v e myList tabs|
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   167
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   168
     myList := OrderedCollection new.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   169
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   170
     e := MultiColListEntry new.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   171
     e colAt:1 put:'2'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   172
     e colAt:2 put:'3.5'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   173
     e colAt:3 put:'4'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   174
     e colAt:4 put:'6'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   175
     e colAt:5 put:'8'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   176
     e colAt:6 put:'10'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   177
     e colAt:7 put:'12'.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   178
     e tabPositions:#(0 2 3.5 4 6 8 10 12); tabUnit:#inch.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   179
     myList add:e.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   180
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   181
     v := ScrollableView for:ListView.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   182
     v setList:myList expandTabs:false.
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   183
     v open
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   184
    "
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   185
! !
79ab6bc98651 Initial revision
claus
parents:
diff changeset
   186