ListModelView.st
author Claus Gittinger <cg@exept.de>
Sun, 01 Feb 2015 14:15:13 +0100
changeset 4703 7fadc047104c
parent 4645 bda038fdd045
child 4706 c9dd0dfc2bef
permissions -rw-r--r--
class: ListModelView fixed the following redraw bug (which is already fixed in SelectionInListView): if a colored item is shown with selection, the color attribute should be removed (or relaxed), to avoid drawing the label invisible. I.e. if the text color is blue or grey, and the selection bg is blue. we should draw white-on-blue, instead of blue/grey on blue. For this to work, the info whether drawing a selection must be passed down through the renderer to the item's draw routine.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1431
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     1
"
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     2
 COPYRIGHT (c) 1999 by eXept Software AG
2265
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
     3
	      All Rights Reserved
1431
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     4
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     5
 This software is furnished under a license and may be used
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     6
 only in accordance with the terms of that license and with the
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     8
 be provided or otherwise made available to, or used by, any
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
     9
 other person.  No title to or ownership of the software is
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    10
 hereby transferred.
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    11
"
1752
1c11b6e4ab37 use isHierarchicalItem instead of hack variable
ca
parents: 1748
diff changeset
    12
"{ Package: 'stx:libwidg2' }"
1c11b6e4ab37 use isHierarchicalItem instead of hack variable
ca
parents: 1748
diff changeset
    13
4703
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
    14
"{ NameSpace: Smalltalk }"
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
    15
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
View subclass:#ListModelView
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
    17
	instanceVariableNames:'list listHolder textStartLeft textStartTop viewOrigin enabled
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
    18
		fgColor bgColor lineSpacing widthOfContents computeWidthInRange
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
    19
		startOfLinesY autoScroll autoScrollBlock scrollWhenUpdating
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    20
		hasConstantHeight constantHeight previousExtent listRenderer
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
    21
		cachedPreferredExtent'
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	classVariableNames:'DefaultForegroundColor DefaultBackgroundColor DefaultShadowColor
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
		DefaultLightColor StopRedrawSignal'
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	poolDictionaries:''
1430
ae9e48cc7b9d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1425
diff changeset
    25
	category:'Views-Lists'
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
    28
Object subclass:#Renderer
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
    29
	instanceVariableNames:'view'
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
    30
	classVariableNames:''
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
    31
	poolDictionaries:''
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
    32
	privateIn:ListModelView
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
    33
!
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
    34
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    35
ListModelView::Renderer subclass:#TableRenderer
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    36
	instanceVariableNames:'xSplitbars hasFixedItemWidth savedCursor dragCursor
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    37
		columnDescriptors separatorOneDColor receiver dragOperation
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    38
		requiredColumnHeight minimumRequiredColumnHeight attributes'
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    39
	classVariableNames:''
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    40
	poolDictionaries:''
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    41
	privateIn:ListModelView
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    42
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    43
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    44
Object subclass:#ColumnDescriptor
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
    45
	instanceVariableNames:'dataSetColumnSpec columnNumber width'
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    46
	classVariableNames:'ClipColumnQuerySignal'
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    47
	poolDictionaries:''
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    48
	privateIn:ListModelView::TableRenderer
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    49
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
    50
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
!ListModelView class methodsFor:'documentation'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
1431
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    53
copyright
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    54
"
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    55
 COPYRIGHT (c) 1999 by eXept Software AG
2265
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
    56
	      All Rights Reserved
1431
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    57
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    58
 This software is furnished under a license and may be used
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    59
 only in accordance with the terms of that license and with the
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    60
 inclusion of the above copyright notice.   This software may not
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    61
 be provided or otherwise made available to, or used by, any
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    62
 other person.  No title to or ownership of the software is
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    63
 hereby transferred.
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    64
"
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    65
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    66
!
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    67
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
documentation
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
"
1431
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    70
    This widget is a new improved revision of the good-old ListView.
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    71
    In contrast to ListView, this one reacts on changes of the
3386
f453c0cadf44 warning comments
Claus Gittinger <cg@exept.de>
parents: 3230
diff changeset
    72
    underlying list and performs optimized redraws.
f453c0cadf44 warning comments
Claus Gittinger <cg@exept.de>
parents: 3230
diff changeset
    73
    It requires a List (or alike) as list.
1431
0cc20a8f2f7c docu & copyright
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
    74
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    This class can only passively display collections of elements.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    The class doesn't keep its own list, it works directly on
3386
f453c0cadf44 warning comments
Claus Gittinger <cg@exept.de>
parents: 3230
diff changeset
    77
    the list ( List or HierarchicalList ).
f453c0cadf44 warning comments
Claus Gittinger <cg@exept.de>
parents: 3230
diff changeset
    78
3390
decfdcdb3f80 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3388
diff changeset
    79
    ATTENTION (warning by cg):
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    80
	in contrast to its inappropriate name, this class COMPLETELY ignores the model
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    81
	instance variable - all is through the list/listHolder.
3390
decfdcdb3f80 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3388
diff changeset
    82
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
    Each list item is obligated to provide 3 services:
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    84
	- heightOn:aGC
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    85
	- widthOn:aGC
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    86
	- displayOn:aGC x:x y:y
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    [Instance variables:]
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    89
	list                   <List-Model>     List or HierarchicalList ...
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    90
	listHolder             <Model>          Model, which keeps a List
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    91
	textStartLeft          <Number>         left inset of text
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    92
	viewOrigin             <Point>          the current origin
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    93
	enabled                <Boolean>        widget is enabled/disabeled
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    94
	fgColor                <Color>          color to draw characters
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    95
	bgColor                <Color>          the background
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    96
	lineSpacing            <Number>         pixels between lines
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    97
	widthOfContents        <Number>         cached width of widest line
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    98
	computeWidthInRange    <Point>          used for recompute width of contents
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
    99
	startOfLinesY          <Collection>     keeps all the absolute Y-start positions
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   100
						for each line in the list. The first
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   101
						entry into the list is the top Y inset.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   102
	supportsDisplayInRange <Boolean>        set to true if the list elements
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   103
						supports the service:
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   104
						    #displayOn:x:y:h:
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   105
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   106
	hasConstantHeight      <Boolean>        true, than each line has the same height
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   107
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   108
	constantHeight         <SmallInteger>   hasConstantHeight is turned on, this
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   109
						is the used line height
2264
0241177f2a2b *** empty log message ***
ca
parents: 2261
diff changeset
   110
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    [author:]
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   112
	Claus Atzkern
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    [see also:]
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   116
	SelectionInListModelView
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   117
	HierarchicalListView
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   118
	List
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   119
	HierarchicalList
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
examples
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
"
2265
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   125
									[exBegin]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    |top list view up index|
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    list := List new.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
    top  := StandardSystemView new; extent:300@300.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
    view := ScrollableView for:ListModelView miniScroller:true
2265
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   132
			origin:0.0@0.0 corner:1.0@1.0 in:top.
1827
54e8a0fc8a42 scrollWhenUpdating
Claus Gittinger <cg@exept.de>
parents: 1820
diff changeset
   133
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
    view list:list.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
    top  openAndWait.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
    up := true.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    [top shown] whileTrue:[
2265
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   139
	Delay waitForSeconds:0.2.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
2265
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   141
	up ifTrue:[
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   142
	    index := 1 + (list size).
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   143
	    list add:('element: ', index printString).
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   144
	    up := index < 20
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   145
	] ifFalse:[
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   146
	    list removeIndex:1.
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   147
	    up := list isEmpty.
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   148
	]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
    ].
2265
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   150
									[exEnd]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
!ListModelView class methodsFor:'initialization'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
initialize
1409
e46f8d30a9c9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1400
diff changeset
   159
    "setup the signals
e46f8d30a9c9 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1400
diff changeset
   160
    "
2552
7f6a07978018 notifications are proceedable
Claus Gittinger <cg@exept.de>
parents: 2551
diff changeset
   161
    StopRedrawSignal := Notification newSignalMayProceed:true.
2551
84b5eef43b23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2548
diff changeset
   162
    StopRedrawSignal nameClass:self message:#stopRedrawSignal.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
!ListModelView class methodsFor:'Signal constants'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
stopRedrawSignal
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
    ^ StopRedrawSignal
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
!ListModelView class methodsFor:'defaults'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
   173
defaultRenderer
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
   174
    ^ Renderer
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
   175
!
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
   176
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
updateStyleCache
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    "extract values from the styleSheet and cache them in class variables"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    <resource: #style   (
3926
465e943676ed changed:
Claus Gittinger <cg@exept.de>
parents: 3909
diff changeset
   181
                        #'text.backgroundColor'  #'text.foregroundColor'
465e943676ed changed:
Claus Gittinger <cg@exept.de>
parents: 3909
diff changeset
   182
                        #'selection.shadowColor' #'selection.lightColor'
465e943676ed changed:
Claus Gittinger <cg@exept.de>
parents: 3909
diff changeset
   183
                        #'text.font'
465e943676ed changed:
Claus Gittinger <cg@exept.de>
parents: 3909
diff changeset
   184
                        )>
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
4513
6f14d468c903 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4509
diff changeset
   186
    DefaultForegroundColor         := StyleSheet colorAt:'text.foregroundColor' default:Color black.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
    DefaultBackgroundColor         := StyleSheet colorAt:'text.backgroundColor'.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
    DefaultShadowColor             := StyleSheet colorAt:'selection.shadowColor'.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    DefaultLightColor              := StyleSheet colorAt:'selection.lightColor'.
3926
465e943676ed changed:
Claus Gittinger <cg@exept.de>
parents: 3909
diff changeset
   190
    "/ DefaultFont                    := StyleSheet  fontAt:'text.font'.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
     self updateStyleCache
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
3926
465e943676ed changed:
Claus Gittinger <cg@exept.de>
parents: 3909
diff changeset
   196
    "Modified: / 14-08-2010 / 12:23:35 / cg"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
!ListModelView methodsFor:'accessing'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
list
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
    "get the list of items
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    ^ list
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
list:aList
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
    "set the list of items
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
    "
2264
0241177f2a2b *** empty log message ***
ca
parents: 2261
diff changeset
   212
    |negatedOrg|
1443
c9ef29f36c29 bug fix:
Claus Gittinger <cg@exept.de>
parents: 1431
diff changeset
   213
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   214
    listRenderer listWillChange.
2640
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
   215
1452
Claus Gittinger <cg@exept.de>
parents: 1451
diff changeset
   216
    list ~~ aList ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   217
        list removeDependent:self.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   218
        list := aList.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   219
        list isNil ifTrue:[list := self newDefaultList ].
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   220
        list addDependent:self
1452
Claus Gittinger <cg@exept.de>
parents: 1451
diff changeset
   221
    ].
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
   222
"/    preferredExtent := nil.
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
   223
    cachedPreferredExtent := nil.
2264
0241177f2a2b *** empty log message ***
ca
parents: 2261
diff changeset
   224
    widthOfContents := nil.
0241177f2a2b *** empty log message ***
ca
parents: 2261
diff changeset
   225
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   226
    self recomputeHeightOfContents.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   227
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   228
    scrollWhenUpdating == #beginOfText ifTrue:[
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   229
        viewOrigin = (0@0) ifFalse:[
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   230
            self originWillChange.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   231
            negatedOrg := viewOrigin negated.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   232
            viewOrigin := (0@0).
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   233
            self originChanged:negatedOrg.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   234
        ].
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   235
    ] ifFalse:[
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   236
        scrollWhenUpdating == #endOfText ifTrue:[
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   237
            self scrollTo:(0 @ self heightOfContents - self innerHeight) redraw:false
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   238
        ]
1422
98c0e3978fcf checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1417
diff changeset
   239
    ].
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   240
    self invalidate.
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   241
    self contentsChanged
2595
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
   242
!
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
   243
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   244
listRenderer
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   245
    "returns the used listrenderer
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   246
    "
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   247
    ^ listRenderer
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   248
!
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   249
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   250
listRenderer:aRendererOrRendererClass
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   251
    "change the used listRenderer
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   252
    "
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   253
    aRendererOrRendererClass isNil ifTrue:[^ self].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   254
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   255
    listRenderer == aRendererOrRendererClass ifTrue:[^ self].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   256
    listRenderer notNil ifTrue:[listRenderer release].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   257
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   258
    aRendererOrRendererClass isBehavior ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   259
	listRenderer := aRendererOrRendererClass basicNew initialize.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   260
    ] ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   261
	listRenderer := aRendererOrRendererClass.
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   262
    ].
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   263
    listRenderer forView:self.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   264
!
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   265
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   266
renderer
4243
963f8476336d class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4217
diff changeset
   267
    <resource: #obsolete>
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   268
    self obsoleteMethodWarning:'naming conflict renderer vs. listRenderer'.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   269
    ^ self listRenderer
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   270
!
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   271
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   272
renderer:aTableRenderer
4243
963f8476336d class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4217
diff changeset
   273
    <resource: #obsolete>
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   274
    self obsoleteMethodWarning:'naming conflict renderer vs. listRenderer'.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   275
    self listRenderer:aTableRenderer
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
   276
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
   277
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
   278
setupTableRenderer
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   279
    "creates a renderer with columns based on a DataSetColumnSpec
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
   280
     answer the new renderer"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
   281
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   282
    self listRenderer:TableRenderer.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   283
    ^ listRenderer
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1796
diff changeset
   286
!ListModelView methodsFor:'accessing-behavior'!
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
   288
autoScroll
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
   289
    "returns true if auto scrolling is enabled
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
   290
    "
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
   291
    ^ autoScroll
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
   292
!
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
   293
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
   294
autoScroll:aBool
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
   295
    "returns true if auto scrolling is enabled
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
   296
    "
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
   297
    autoScroll := aBool ? true.
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
   298
!
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
   299
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
enabled
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   301
   "returns the enabled state
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   302
   "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   303
   ^ enabled
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   306
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
enabled:aBoolean
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
   "set the enabled state
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
   "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
   enabled := aBoolean
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
1742
28c2834d7c3c add #scrollWhenUpdating: - but not yet supported
ca
parents: 1736
diff changeset
   314
!
28c2834d7c3c add #scrollWhenUpdating: - but not yet supported
ca
parents: 1736
diff changeset
   315
2261
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   316
hasConstantHeight
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   317
    "user configured; true if each line has the same lineHeight.
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   318
     Optimizes scroll and redraw operations
2261
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   319
    "
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   320
2261
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   321
    ^ hasConstantHeight
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   322
!
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   323
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   324
hasConstantHeight:aBool
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   325
    "user configured; true if each line has the same lineHeight.
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   326
     Optimizes scrolling and redraw.
2261
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   327
    "
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   328
2261
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   329
    aBool == hasConstantHeight ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   330
	^ self
2261
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   331
    ].
2264
0241177f2a2b *** empty log message ***
ca
parents: 2261
diff changeset
   332
    constantHeight    := nil.
2261
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   333
    hasConstantHeight := aBool.
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   334
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   335
    self lostSynchronisation.
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   336
!
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
   337
1742
28c2834d7c3c add #scrollWhenUpdating: - but not yet supported
ca
parents: 1736
diff changeset
   338
scrollWhenUpdating:aSymbolOrNil
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   339
    "define how to scroll, when I get a new text
1742
28c2834d7c3c add #scrollWhenUpdating: - but not yet supported
ca
parents: 1736
diff changeset
   340
     (via the model or the #contents/#list)
28c2834d7c3c add #scrollWhenUpdating: - but not yet supported
ca
parents: 1736
diff changeset
   341
     Allowed arguments are:
2265
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   342
	#keep / nil     -> no change
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   343
	#endOfText      -> scroll to the end
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   344
	#beginOfText    -> scroll to the top
1742
28c2834d7c3c add #scrollWhenUpdating: - but not yet supported
ca
parents: 1736
diff changeset
   345
     The default is #beginOfText.
28c2834d7c3c add #scrollWhenUpdating: - but not yet supported
ca
parents: 1736
diff changeset
   346
     This may be useful for fields which get new values assigned from
28c2834d7c3c add #scrollWhenUpdating: - but not yet supported
ca
parents: 1736
diff changeset
   347
     the program (i.e. not from the user)
28c2834d7c3c add #scrollWhenUpdating: - but not yet supported
ca
parents: 1736
diff changeset
   348
    "
28c2834d7c3c add #scrollWhenUpdating: - but not yet supported
ca
parents: 1736
diff changeset
   349
1827
54e8a0fc8a42 scrollWhenUpdating
Claus Gittinger <cg@exept.de>
parents: 1820
diff changeset
   350
    scrollWhenUpdating := aSymbolOrNil
1742
28c2834d7c3c add #scrollWhenUpdating: - but not yet supported
ca
parents: 1736
diff changeset
   351
28c2834d7c3c add #scrollWhenUpdating: - but not yet supported
ca
parents: 1736
diff changeset
   352
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1796
diff changeset
   355
!ListModelView methodsFor:'accessing-items'!
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
at:anIndex
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
    "return the list element at an index
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
    ^ list at:anIndex
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
at:anIndex ifAbsent:exceptionBlock
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   364
    "return the list element at an index if valid.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   365
     If the index is invalid, return the result of evaluating
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
     the exceptionblock.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
    "
2595
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
   368
    ^ list at:anIndex ifAbsent:exceptionBlock
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   369
!
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   370
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   371
findLast:aOneArgBlock
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   372
    "find the last list entry, for which evaluation of the argument, aOneArgBlock
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   373
     returns true; return its index or 0 if none detected.
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   374
    "
2595
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
   375
    ^ list findLast:aOneArgBlock
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
identityIndexOf:anElement
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
    "returns the index of an element or nil
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
    "
2595
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
   381
    ^ list identityIndexOf:anElement
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   382
!
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   384
last
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   385
    "returns the last list entry
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   386
    "
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   387
    ^ list last
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1796
diff changeset
   390
!ListModelView methodsFor:'accessing-look'!
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   392
backgroundColor
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
    "get the background color
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
    ^ bgColor
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   396
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   399
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   400
font:aFont
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   401
    "set a new font
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   402
    "
4500
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   403
    |oldWidth oldHeight newFont|
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   404
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   405
    (aFont isNil or:[aFont = gc font]) ifFalse:[
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   406
        oldWidth  := gc font width.
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   407
        oldHeight := gc font height.
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   408
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   409
        super font:aFont.
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   410
        newFont := gc createFontOnDevice.
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   411
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   412
        newFont width ~~ oldWidth ifTrue:[       "/ force a recomputation
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
   413
"/            preferredExtent := nil.
4500
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   414
            cachedPreferredExtent := nil.
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   415
            widthOfContents := nil.
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   416
        ].
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   417
        realized ifTrue:[
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   418
            oldHeight ~~ newFont height ifTrue:[
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   419
                self recomputeHeightOfContents.
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   420
                self contentsChanged.
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   421
            ].
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   422
            self invalidate
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
   423
        ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   424
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   425
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   426
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
foregroundColor
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   428
    "get the foreground color
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   429
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   430
    ^ fgColor
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   431
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   432
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
foregroundColor:aColor
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   435
    "set the foreground color
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   436
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   437
    (aColor notNil and:[fgColor ~~ aColor]) ifTrue:[
4509
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
   438
        self realized ifTrue:[
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
   439
            fgColor := aColor onDevice:self graphicsDevice.
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
   440
            self invalidate
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
   441
        ] ifFalse:[
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
   442
            fgColor := aColor
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
   443
        ]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
    ]
1945
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   445
!
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   446
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   447
lineSpacing
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   448
    "get the lineSpacing - thats an additional number of pixels,
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   449
     by which lines are vertically separated.
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   450
    "
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   451
    ^ lineSpacing
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   452
!
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   453
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   454
lineSpacing:aNumber
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   455
    "set the lineSpacing - thats an additional number of pixels,
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   456
     by which lines are vertically separated.
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   457
    "
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   458
    lineSpacing ~= aNumber ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   459
	lineSpacing := aNumber.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   460
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   461
	realized ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   462
	    self recomputeHeightOfContents.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   463
	    self invalidate
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   464
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   465
	self contentsChanged.
1945
694ea5d18b60 add access methods for lineSpacing
martin
parents: 1845
diff changeset
   466
    ]
2605
3690a334fac1 bug fix: when setting #viewBackground: and computation of automatic scroll to x
ca
parents: 2600
diff changeset
   467
!
3690a334fac1 bug fix: when setting #viewBackground: and computation of automatic scroll to x
ca
parents: 2600
diff changeset
   468
3690a334fac1 bug fix: when setting #viewBackground: and computation of automatic scroll to x
ca
parents: 2600
diff changeset
   469
viewBackground:aColor
3690a334fac1 bug fix: when setting #viewBackground: and computation of automatic scroll to x
ca
parents: 2600
diff changeset
   470
    "set the background color
3690a334fac1 bug fix: when setting #viewBackground: and computation of automatic scroll to x
ca
parents: 2600
diff changeset
   471
    "
3690a334fac1 bug fix: when setting #viewBackground: and computation of automatic scroll to x
ca
parents: 2600
diff changeset
   472
    (aColor notNil and:[bgColor ~~ aColor]) ifTrue:[
4509
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
   473
        bgColor := aColor.
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
   474
        super viewBackground:bgColor.
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
   475
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
   476
        self realized ifTrue:[
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
   477
            bgColor := bgColor onDevice:self graphicsDevice.
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
   478
            self invalidate
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
   479
        ].
2605
3690a334fac1 bug fix: when setting #viewBackground: and computation of automatic scroll to x
ca
parents: 2600
diff changeset
   480
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1796
diff changeset
   483
!ListModelView methodsFor:'accessing-mvc'!
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
listHolder
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   486
    "returns the listHolder or nil
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   487
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   488
    ^ listHolder
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   489
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   490
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   491
listHolder:aListHolder
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   492
    "set a new listHolder
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   493
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   494
    listHolder removeDependent:self.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
    (listHolder := aListHolder) notNil ifTrue:[
2265
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
   497
	listHolder addDependent:self.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   499
    self list:(listHolder value).
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   501
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   502
!ListModelView methodsFor:'change & update'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   503
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   504
lineChangedAt:aLnNr with:arg
2548
2d96d09497e9 Fix funny names
Stefan Vogel <sv@exept.de>
parents: 2501
diff changeset
   505
    "line changed at position; check whether line height changed"
2d96d09497e9 Fix funny names
Stefan Vogel <sv@exept.de>
parents: 2501
diff changeset
   506
2d96d09497e9 Fix funny names
Stefan Vogel <sv@exept.de>
parents: 2501
diff changeset
   507
    |cache
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   508
     oldHeight "{ Class:SmallInteger }"
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   509
     deltaHeight "{ Class:SmallInteger }" |
2548
2d96d09497e9 Fix funny names
Stefan Vogel <sv@exept.de>
parents: 2501
diff changeset
   510
2d96d09497e9 Fix funny names
Stefan Vogel <sv@exept.de>
parents: 2501
diff changeset
   511
    (arg == #icon or:[arg == #hierarchy]) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   512
	^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   513
    ].
2264
0241177f2a2b *** empty log message ***
ca
parents: 2261
diff changeset
   514
    hasConstantHeight ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   515
	self invalidateLineAt:aLnNr.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   516
	^ self
2264
0241177f2a2b *** empty log message ***
ca
parents: 2261
diff changeset
   517
    ].
0241177f2a2b *** empty log message ***
ca
parents: 2261
diff changeset
   518
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
    oldHeight := (self yVisibleOfLine:(aLnNr + 1)) - (self yVisibleOfLine:aLnNr).
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   520
    deltaHeight := (self heightOfLineAt:aLnNr) - oldHeight.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   521
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   522
    deltaHeight == 0 ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   523
	self invalidateLineAt:aLnNr.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   524
	^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   525
    ].
2595
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
   526
    cache := self startOfLinesY.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   527
2548
2d96d09497e9 Fix funny names
Stefan Vogel <sv@exept.de>
parents: 2501
diff changeset
   528
    aLnNr + 1 to:cache size do:[:i|
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   529
	cache at:i put:((cache at:i) + deltaHeight)
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   530
    ].
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
   531
    self contentsChanged.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   532
    self invalidate.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   533
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   534
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   535
listChangedInsert:start nItems:nLines
3894
6c2e84f93db1 changed: #listChangedInsert:nItems:
Stefan Vogel <sv@exept.de>
parents: 3892
diff changeset
   536
    "list changed; items are added"
6c2e84f93db1 changed: #listChangedInsert:nItems:
Stefan Vogel <sv@exept.de>
parents: 3892
diff changeset
   537
2385
8113112e2184 *** empty log message ***
ca
parents: 2384
diff changeset
   538
    |newLines
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   539
     run    "{ Class: SmallInteger }"
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   540
     newSz  "{ Class: SmallInteger }"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   541
     cpyHg  "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   542
     absY0  "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   543
     absY1  "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   544
     visY0  "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   545
     visY1  "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   546
     orgY   "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   547
     dltY   "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   548
     maxHg  "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   549
   |
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   550
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   551
    nLines == 0 ifTrue:[^ self ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   552
    self listSizeChanged:start nLines:nLines.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   553
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   554
    newSz := startOfLinesY size + nLines.
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   555
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   556
    (newSz - 1) ~~ self size ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   557
        "/
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   558
        "/ no longer synchronized
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   559
        "/
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   560
        self lostSynchronisation.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   561
        ^ self
1451
85e0df1771e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1446
diff changeset
   562
    ].
3712
1c9ef2f85066 optimize
ca
parents: 3576
diff changeset
   563
    newLines := startOfLinesY. "/ copy.
2385
8113112e2184 *** empty log message ***
ca
parents: 2384
diff changeset
   564
    newLines addAll:(Array new:nLines) beforeIndex:start + 1.
8113112e2184 *** empty log message ***
ca
parents: 2384
diff changeset
   565
    absY0 := newLines at:start.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   566
    absY1 := absY0.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   567
    run   := start.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   568
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   569
    nLines timesRepeat:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   570
        absY1 := absY1 + (self heightOfLineAt:run).
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   571
        run   := run + 1.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   572
        newLines at:run put:absY1.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   573
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   574
    dltY := absY1 - absY0.
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   575
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   576
    run + 1 to:newSz do:[:i||v|
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   577
        newLines at:i put:((newLines at:i) + dltY)
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   578
    ].
2385
8113112e2184 *** empty log message ***
ca
parents: 2384
diff changeset
   579
    startOfLinesY := newLines.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   580
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   581
    orgY  := viewOrigin y.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   582
    absY1 := absY0 + dltY.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   583
    visY0 := absY0 - orgY.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   584
    visY1 := absY1 - orgY.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   585
    maxHg := height - margin.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   586
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   587
    absY0 < orgY ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   588
        self originWillChange.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   589
        viewOrigin y:(dltY + orgY).
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   590
        self originChanged:(0 @ dltY).
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   591
    ].
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   592
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   593
    (visY0 >= maxHg or:[visY1 <= margin]) ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   594
        self contentsChanged.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   595
        ^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   596
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   597
    visY0 := visY0 max:margin.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   598
    visY1 := visY1 min:maxHg.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   599
1773
9dba0f0dda0e invalidate uptoend not all if a damage exists (insert/remove)
ca
parents: 1753
diff changeset
   600
    self hasDamage ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   601
        self invalidate:(Rectangle left:0
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   602
                                    top:visY0
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   603
                                  width:width
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   604
                                 height:height - visY0).
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   605
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   606
        self contentsChanged.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   607
        ^ self
1773
9dba0f0dda0e invalidate uptoend not all if a damage exists (insert/remove)
ca
parents: 1753
diff changeset
   608
    ].
9dba0f0dda0e invalidate uptoend not all if a damage exists (insert/remove)
ca
parents: 1753
diff changeset
   609
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   610
    (start == self size or:[(cpyHg := maxHg - visY1) < 20]) ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   611
        visY1 := maxHg
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   612
    ] ifFalse:[
3894
6c2e84f93db1 changed: #listChangedInsert:nItems:
Stefan Vogel <sv@exept.de>
parents: 3892
diff changeset
   613
        shown ifTrue:[
6c2e84f93db1 changed: #listChangedInsert:nItems:
Stefan Vogel <sv@exept.de>
parents: 3892
diff changeset
   614
            self catchExpose.
6c2e84f93db1 changed: #listChangedInsert:nItems:
Stefan Vogel <sv@exept.de>
parents: 3892
diff changeset
   615
            self copyFrom:self x:0 y:visY0
6c2e84f93db1 changed: #listChangedInsert:nItems:
Stefan Vogel <sv@exept.de>
parents: 3892
diff changeset
   616
                             toX:0 y:visY1
6c2e84f93db1 changed: #listChangedInsert:nItems:
Stefan Vogel <sv@exept.de>
parents: 3892
diff changeset
   617
                           width:width height:cpyHg async:true.
6c2e84f93db1 changed: #listChangedInsert:nItems:
Stefan Vogel <sv@exept.de>
parents: 3892
diff changeset
   618
            self waitForExpose.
6c2e84f93db1 changed: #listChangedInsert:nItems:
Stefan Vogel <sv@exept.de>
parents: 3892
diff changeset
   619
        ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   620
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   621
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   622
    self invalidateX:margin
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   623
                   y:visY0
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   624
               width:width - margin - margin
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   625
              height:(visY1 - visY0).
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   626
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   627
    self contentsChanged.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   628
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   629
1446
fb46beba2d0c startOfLines can have nil at end; lookup the first not nil
Claus Gittinger <cg@exept.de>
parents: 1444
diff changeset
   630
listChangedRemove:aStart toIndex:aStop
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   631
    "list changed; items are removed
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   632
    "
2385
8113112e2184 *** empty log message ***
ca
parents: 2384
diff changeset
   633
    |noRedraw newLines
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   634
     size  "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   635
     absY0 "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   636
     absY1 "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   637
     visY0 "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   638
     visY1 "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   639
     orgY  "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   640
     orgX  "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   641
     dltY  "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   642
     cpyHg "{ Class: SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   643
     maxHg "{ Class: SmallInteger }"
1444
0b7cd00e2537 check range before delete lines
Claus Gittinger <cg@exept.de>
parents: 1443
diff changeset
   644
     stop  "{ Class: SmallInteger }"
1446
fb46beba2d0c startOfLines can have nil at end; lookup the first not nil
Claus Gittinger <cg@exept.de>
parents: 1444
diff changeset
   645
     start "{ Class: SmallInteger }"
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   646
     newSz "{ Class: SmallInteger }"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   647
    |
1446
fb46beba2d0c startOfLines can have nil at end; lookup the first not nil
Claus Gittinger <cg@exept.de>
parents: 1444
diff changeset
   648
    stop  := aStop.
fb46beba2d0c startOfLines can have nil at end; lookup the first not nil
Claus Gittinger <cg@exept.de>
parents: 1444
diff changeset
   649
    start := aStart.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   650
1446
fb46beba2d0c startOfLines can have nil at end; lookup the first not nil
Claus Gittinger <cg@exept.de>
parents: 1444
diff changeset
   651
    (size := stop - start + 1) == 0 ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   652
        ^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   653
    ].
1446
fb46beba2d0c startOfLines can have nil at end; lookup the first not nil
Claus Gittinger <cg@exept.de>
parents: 1444
diff changeset
   654
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   655
    self listSizeChanged:start nLines:(size negated).
1451
85e0df1771e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1446
diff changeset
   656
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   657
    newSz := startOfLinesY size - size.
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   658
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   659
    (newSz - 1) ~~ self size ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   660
        "/
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   661
        "/ no longer synchrounous
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   662
        "/
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   663
        ^ self lostSynchronisation
1451
85e0df1771e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1446
diff changeset
   664
    ].
85e0df1771e5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1446
diff changeset
   665
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   666
    absY0 := self yAbsoluteOfLine:start.
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   667
    absY1 := self yAbsoluteOfLine:stop + 1.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   668
    dltY  := absY1 - absY0.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   669
3712
1c9ef2f85066 optimize
ca
parents: 3576
diff changeset
   670
    newLines := startOfLinesY. "/ copy.
2385
8113112e2184 *** empty log message ***
ca
parents: 2384
diff changeset
   671
    newLines removeFromIndex:(start + 1) toIndex:(stop + 1).
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   672
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   673
    (start + 1) to:newSz do:[:i|
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   674
        absY0 := newLines at:i.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   675
        newLines at:i put:(absY0 - dltY).
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   676
    ].
2385
8113112e2184 *** empty log message ***
ca
parents: 2384
diff changeset
   677
    startOfLinesY := newLines.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   678
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   679
    orgY  := viewOrigin y.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   680
    orgX  := viewOrigin x.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   681
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   682
    absY0 := self yAbsoluteOfLine:start.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   683
    absY1 := absY0 + dltY.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   684
    visY0 := absY0 - orgY.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   685
    visY1 := absY1 - orgY.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   686
    maxHg := height - margin.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   687
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
   688
    (self size == 0 or:[(orgY ~~ 0 and:[self maxViewOriginY == 0])]) ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   689
        (orgX ~~ 0 or:[orgY ~~ 0]) ifTrue:[
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   690
            self originWillChange.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   691
            viewOrigin := 0@0.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   692
            self originChanged:((orgX @ orgY) negated).
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   693
        ].
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   694
        self invalidate.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   695
        ^ self contentsChanged
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   696
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   697
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   698
    visY0 < margin ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   699
        noRedraw := visY1 <= margin.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   700
        noRedraw ifTrue:[dltY := dltY negated] ifFalse:[dltY := visY0].
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   701
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   702
        self originWillChange.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   703
        viewOrigin := viewOrigin x @ (dltY + orgY).
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   704
        self originChanged:(0 @ dltY).
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   705
    ] ifFalse:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   706
        noRedraw := visY0 >= maxHg
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   707
    ].
1773
9dba0f0dda0e invalidate uptoend not all if a damage exists (insert/remove)
ca
parents: 1753
diff changeset
   708
    visY0 := visY0 max:margin.
9dba0f0dda0e invalidate uptoend not all if a damage exists (insert/remove)
ca
parents: 1753
diff changeset
   709
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   710
    self hasDamage ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   711
        self invalidate:(Rectangle left:0
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   712
                                    top:visY0
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   713
                                  width:width
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   714
                                 height:height - visY0).
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   715
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   716
        noRedraw := true
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   717
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   718
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
   719
    noRedraw ifFalse:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   720
        cpyHg := maxHg - visY1.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   721
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   722
        cpyHg > 20 ifTrue:[
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   723
            self catchExpose.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   724
            self copyFrom:self x:0 y:visY1 toX:0 y:visY0
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   725
                    width:width height:cpyHg async:true.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   726
            self waitForExpose.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   727
            visY0 := visY0 + cpyHg.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   728
        ].
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   729
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   730
        self invalidateX:margin
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   731
                       y:visY0
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   732
                   width:width - margin - margin
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
   733
                  height:(maxHg - visY0).
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   734
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   735
    self contentsChanged.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   736
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   737
2302
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2301
diff changeset
   738
update:what with:aPara from:chgObj
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2301
diff changeset
   739
    "catch and handle any notification raised from the list model
2745
5986c83276b1 clean up obfuscated code
Stefan Vogel <sv@exept.de>
parents: 2708
diff changeset
   740
     or list holder"
5986c83276b1 clean up obfuscated code
Stefan Vogel <sv@exept.de>
parents: 2708
diff changeset
   741
5986c83276b1 clean up obfuscated code
Stefan Vogel <sv@exept.de>
parents: 2708
diff changeset
   742
    chgObj == self listHolder ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   743
	self list:chgObj value.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   744
	^ self.
2745
5986c83276b1 clean up obfuscated code
Stefan Vogel <sv@exept.de>
parents: 2708
diff changeset
   745
    ].
5986c83276b1 clean up obfuscated code
Stefan Vogel <sv@exept.de>
parents: 2708
diff changeset
   746
5986c83276b1 clean up obfuscated code
Stefan Vogel <sv@exept.de>
parents: 2708
diff changeset
   747
    chgObj == self list ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   748
	listRenderer withinUpdateFromListDo:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   749
	    self updateFromList:what with:aPara.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   750
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   751
	^ self.
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   752
    ].
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   753
2745
5986c83276b1 clean up obfuscated code
Stefan Vogel <sv@exept.de>
parents: 2708
diff changeset
   754
    super update:what with:aPara from:chgObj
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   755
!
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   756
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   757
updateFromList:what with:aParameter
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   758
    "called if the list changed"
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   759
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   760
    |arg1 arg2|
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   761
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   762
    aParameter isCollection ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   763
	what == #at:     ifTrue:[self lineChangedAt:aParameter        with:nil.   ^ self].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   764
	what == #insert: ifTrue:[self listChangedInsert:aParameter  nItems:1.     ^ self].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   765
	what == #remove: ifTrue:[self listChangedRemove:aParameter toIndex:aParameter. ^ self].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   766
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   767
	self list:(self list).  "/ reload list
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   768
	^ self.
2302
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2301
diff changeset
   769
    ].
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2301
diff changeset
   770
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   771
    arg1 := aParameter at:1.
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   772
    arg2 := aParameter at:2.
2302
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2301
diff changeset
   773
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   774
    (arg1 == 1 and:[arg2 == self size]) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   775
	self list:(self list).  "/ reload list
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   776
	^ self
2302
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2301
diff changeset
   777
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   778
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   779
    what == #at:               ifTrue:[self lineChangedAt:arg1        with:arg2. ^ self].
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   780
    what == #insertCollection: ifTrue:[self listChangedInsert:arg1  nItems:arg2. ^ self].
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   781
    what == #removeFrom:       ifTrue:[self listChangedRemove:arg1 toIndex:arg2. ^ self].
2302
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2301
diff changeset
   782
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2301
diff changeset
   783
    what == #replace: ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   784
	arg1 to:arg2 do:[:i|self lineChangedAt:i with:nil].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   785
	^ self
1995
ede7d0221fa0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1945
diff changeset
   786
    ].
2981
cc53c4b39c74 leftover halt.
Claus Gittinger <cg@exept.de>
parents: 2951
diff changeset
   787
    self halt:'oops - general change'.
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   788
    self list:(self list).  "/ reload list
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   789
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   790
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   791
!ListModelView methodsFor:'drawing'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   792
2643
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
   793
drawElementsFrom:start to:stop x:x y:y w:w
2304
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   794
    "draw lines from start to stop.
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   795
     clipping and clearing the background is already done
1399
da1eed642569 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1391
diff changeset
   796
    "
2304
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   797
    |item
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   798
     y0 "{ Class:SmallInteger }"
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   799
     y1 "{ Class:SmallInteger }"
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   800
     x0 "{ Class:SmallInteger }"
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   801
    |
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   802
    self paint:fgColor on:bgColor.
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   803
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   804
    x0 := textStartLeft - viewOrigin x.
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   805
    y1 := y.
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   806
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   807
    start to:stop do:[:i|
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   808
	item := self at:i ifAbsent:self.        "/ list changed during draw
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   809
	item == self ifTrue:[^ self].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   810
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   811
	y0 := y1.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   812
	y1 := self yVisibleOfLine:(i + 1).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   813
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   814
	item notNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   815
	    listRenderer display:item atX:x0 y:y0 lineHeight:(y1 - y0).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   816
	]
2304
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   817
    ]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   818
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   819
4319
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   820
drawFrom:start to:stop x:xLft y:yTop w:aWidth 
2643
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
   821
    "draw lines from start to stop. Test whether a new clip
4319
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   822
     must be setup."
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   823
    
2643
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
   824
    |maxX w|
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
   825
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   826
    maxX := listRenderer maxItemWidthOrNil.
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   827
    w := aWidth.
4319
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   828
    maxX notNil ifTrue:[
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   829
        |clip|
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   830
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   831
        maxX := maxX - viewOrigin x.
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   832
        maxX > xLft ifFalse:[
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   833
            ^ self.
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   834
        ].
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   835
        w := maxX - xLft min:aWidth.
4478
7d68fb3be177 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4337
diff changeset
   836
        clip := self clippingBoundsOrNil.
7d68fb3be177 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4337
diff changeset
   837
        clip notNil ifTrue:[
7d68fb3be177 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4337
diff changeset
   838
            clip := clip copy.
4319
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   839
            clip width:w
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   840
        ] ifFalse:[
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   841
            clip := Rectangle 
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   842
                        left:xLft
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   843
                        top:yTop
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   844
                        width:w
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   845
                        height:(height - yTop - margin).
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   846
        ].
4478
7d68fb3be177 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4337
diff changeset
   847
        self clippingBounds:clip.
2643
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
   848
    ].
4319
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   849
    self 
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   850
        drawElementsFrom:start
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   851
        to:stop
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   852
        x:xLft
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   853
        y:yTop
83b76f13ddc3 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4243
diff changeset
   854
        w:w.
2643
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
   855
!
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
   856
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
   857
drawSelectionFrameFrom:start to:stop x:x y:y w:w
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
   858
    "What to do here?"
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
   859
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
   860
    "Created: / 24-04-2013 / 14:07:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
   861
!
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
   862
2304
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   863
invalidateLineAt:aLineNr
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   864
    "add a damage to redraw a line specified by its line number to the
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   865
     input event queue.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   866
    "
2322
b033ff2263ec add method: #invalidateLineAt:fromX:.
ca
parents: 2304
diff changeset
   867
    ^ self invalidateLineAt:aLineNr fromX:0.
b033ff2263ec add method: #invalidateLineAt:fromX:.
ca
parents: 2304
diff changeset
   868
!
b033ff2263ec add method: #invalidateLineAt:fromX:.
ca
parents: 2304
diff changeset
   869
b033ff2263ec add method: #invalidateLineAt:fromX:.
ca
parents: 2304
diff changeset
   870
invalidateLineAt:aLineNr fromX:x
b033ff2263ec add method: #invalidateLineAt:fromX:.
ca
parents: 2304
diff changeset
   871
    "add a damage to redraw a line specified by its line number to the
b033ff2263ec add method: #invalidateLineAt:fromX:.
ca
parents: 2304
diff changeset
   872
     input event queue.
b033ff2263ec add method: #invalidateLineAt:fromX:.
ca
parents: 2304
diff changeset
   873
    "
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   874
    |y0 "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   875
     y1 "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   876
     yB "{ Class:SmallInteger }"
2322
b033ff2263ec add method: #invalidateLineAt:fromX:.
ca
parents: 2304
diff changeset
   877
     x0 "{ Class:SmallInteger }"
b033ff2263ec add method: #invalidateLineAt:fromX:.
ca
parents: 2304
diff changeset
   878
     xR "{ Class:SmallInteger }"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   879
    |
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   880
2244
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
   881
    (shown and:[aLineNr notNil and:[aLineNr > 0]]) ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   882
	^ self
2244
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
   883
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   884
2322
b033ff2263ec add method: #invalidateLineAt:fromX:.
ca
parents: 2304
diff changeset
   885
    xR := width - margin.
b033ff2263ec add method: #invalidateLineAt:fromX:.
ca
parents: 2304
diff changeset
   886
    x0 := x max:margin.
b033ff2263ec add method: #invalidateLineAt:fromX:.
ca
parents: 2304
diff changeset
   887
    x0 < xR ifFalse:[ ^ self].
b033ff2263ec add method: #invalidateLineAt:fromX:.
ca
parents: 2304
diff changeset
   888
2244
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
   889
    yB := height - margin.
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
   890
    y0 := (self yVisibleOfLine:aLineNr) max:margin.
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
   891
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
   892
    y0 < yB ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   893
	y1 := (self yVisibleOfLine:(aLineNr + 1)) min:yB.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   894
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   895
	y1 > y0 ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   896
	    self invalidateX:x0 y:y0 width:(xR - x0) height:(y1 - y0) repairNow:false.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   897
	]
2304
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   898
    ].
2244
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
   899
!
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
   900
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
   901
redraw
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
   902
    "redraw complete view
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
   903
    "
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
   904
    self redrawX:0 y:0 width:width height:height.
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
   905
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   906
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   907
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   908
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   909
redrawX:x y:y width:w height:h
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   910
    "redraw part of myself immediately, given logical coordinates
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   911
    "
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   912
    |start stop yAbs yStart|
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   913
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   914
    shown ifFalse:[^ self].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   915
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
   916
    (self startOfLinesY size) == (self size + 1) ifFalse:[
3974
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   917
        "oops, recompute the height of the contents (the first time after creation).
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   918
        "
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   919
        self recomputeHeightOfContents.
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   920
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   921
        self startOfLinesY size > 1 ifTrue:[
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   922
            "oops, the contents height changed
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   923
            "
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   924
            self invalidate.
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   925
            self contentsChanged.
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   926
            ^ self
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   927
        ].
2598
b0c2d20f4062 recomputation of the contents height during redraw if not yet happen;
ca
parents: 2595
diff changeset
   928
    ].
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
   929
"/    widthOfContents isNil ifTrue:[
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
   930
"/        self preferredExtent
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
   931
"/    ].
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   932
    yStart := y.
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   933
    start  := self yVisibleToLineNr:y.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   934
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   935
    start notNil ifTrue:[
3974
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   936
        yAbs := y + h.
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   937
        stop := self yVisibleToLineNr:yAbs.
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   938
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   939
        stop isNil ifTrue:[
4573
bfa5f43b4d69 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4569
diff changeset
   940
            stop := list size.
3974
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   941
        ] ifFalse:[ |y0|
4573
bfa5f43b4d69 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4569
diff changeset
   942
            stop := stop min:list size.
3974
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   943
            y0 := self startOfLinesY at:stop ifAbsent:nil.
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   944
            y0 isNil ifTrue:[^ self].   "/ oops, lines differ (will be changed)
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   945
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   946
            yAbs == y0 ifTrue:[
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   947
                stop := (stop - 1) max:start
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   948
            ].
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   949
        ].
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   950
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   951
        start > stop ifTrue:[
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   952
            start := stop := nil.
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   953
        ] ifFalse:[
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   954
            (listRenderer validateDrawableItemsFrom:start to:stop) ifFalse:[
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   955
                self invalidate.
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   956
                ^ self.
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   957
            ].
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   958
            yStart := self yVisibleOfLine:start.
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   959
        ].
2304
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   960
    ].
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   961
    self paint:bgColor.
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
   962
    self fillRectangleX:x y:y width:w height:h.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   963
2605
3690a334fac1 bug fix: when setting #viewBackground: and computation of automatic scroll to x
ca
parents: 2600
diff changeset
   964
    StopRedrawSignal handle:[:ex|
3974
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   965
        "/ an item changed its dimension during drawing, draw is aborted
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   966
        self invalidate
2605
3690a334fac1 bug fix: when setting #viewBackground: and computation of automatic scroll to x
ca
parents: 2600
diff changeset
   967
    ] do:[
3974
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   968
        start notNil ifTrue:[
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
   969
            listRenderer showItemInAdditionToColumns ifTrue:[
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
   970
                self drawFrom:start to:stop x:x y:yStart w:w.
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
   971
            ] ifFalse:[
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
   972
                self drawSelectionFrameFrom:start to:stop x:x y:yStart w:w.
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
   973
            ].
3974
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   974
        ].
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   975
        listRenderer postRedrawX:x y:yStart w:w from:start to:stop.
2304
50c23d061969 must recompute width of contents if line changed
ca
parents: 2302
diff changeset
   976
    ].
3974
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   977
e6b644647b6c comment/format in: #redrawX:y:width:height:
Claus Gittinger <cg@exept.de>
parents: 3926
diff changeset
   978
    "Modified: / 24-11-2010 / 19:03:56 / cg"
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
   979
    "Modified: / 24-04-2013 / 14:07:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   980
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   981
3715
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   982
!ListModelView methodsFor:'enumerating'!
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   983
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   984
visibleLinesAndItemsDo:aTwoArgBlock
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   985
    "enumerate over each visible item"
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   986
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   987
    |lineNr item|
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   988
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   989
    shown ifFalse:[^ self].
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   990
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   991
    lineNr := self yVisibleToLineNr:1.
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   992
    lineNr isNil ifTrue:[ ^ self ].
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   993
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   994
    [   item := list at:lineNr ifAbsent:[ ^ self ].
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   995
	aTwoArgBlock value:lineNr value:item.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   996
	lineNr := lineNr + 1.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
   997
	(self yVisibleOfLine:lineNr) < height
3715
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   998
    ] whileTrue.
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
   999
! !
22a0f066793d visibleLinesAndItemsDo:
ca
parents: 3712
diff changeset
  1000
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1001
!ListModelView methodsFor:'event handling'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1002
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1003
keyPress:aKey x:x y:y
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2464
diff changeset
  1004
    "a key was pressed - handle page-keys here"
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2464
diff changeset
  1005
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1006
    <resource: #keyboard( #PreviousPage #NextPage  #HalfPageUp #HalfPageDown
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1007
			  #BeginOfText  #EndOfText #ScrollUp   #ScrollDown
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1008
			)>
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1009
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2464
diff changeset
  1010
    |n|
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1011
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
  1012
    self size ~~ 0 ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1013
	(aKey == #PreviousPage) ifTrue:[^ self pageUp].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1014
	(aKey == #NextPage)     ifTrue:[^ self pageDown].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1015
	(aKey == #HalfPageUp)   ifTrue:[^ self halfPageUp].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1016
	(aKey == #HalfPageDown) ifTrue:[^ self halfPageDown].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1017
	(aKey == #BeginOfText)  ifTrue:[^ self scrollToTop].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1018
	(aKey == #EndOfText)    ifTrue:[^ self scrollToBottom].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1019
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1020
	(aKey == #ScrollUp or:[aKey == #ScrollDown]) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1021
	    n := 1 + (self sensor compressKeyPressEventsWithKey:aKey).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1022
	    n := n * self verticalScrollStep.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1023
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1024
	    aKey == #ScrollUp ifTrue:[self scrollUp:n]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1025
			     ifFalse:[self scrollDown:n].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1026
	    ^ self
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1027
	].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1028
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1029
    super keyPress:aKey x:x y:y
2274
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1030
!
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1031
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1032
sizeChanged:how
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1033
    previousExtent := self extent.
4197
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  1034
    listRenderer sizeChanged:how.
2274
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1035
    super sizeChanged:how.
4197
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  1036
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  1037
    "Modified: / 17-04-2013 / 11:41:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1038
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1039
1554
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1538
diff changeset
  1040
!ListModelView methodsFor:'event simulation'!
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1538
diff changeset
  1041
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1538
diff changeset
  1042
syncronizeEvents
2708
f3efc17bcbce Mark obsolete methods
Stefan Vogel <sv@exept.de>
parents: 2670
diff changeset
  1043
    <resource:#obsolete>
2302
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2301
diff changeset
  1044
    self obsoleteMethodWarning:'no longer supported'.
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2301
diff changeset
  1045
    ^ false
1554
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1538
diff changeset
  1046
!
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1538
diff changeset
  1047
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1538
diff changeset
  1048
syncronizeEvents:aBoolean
2708
f3efc17bcbce Mark obsolete methods
Stefan Vogel <sv@exept.de>
parents: 2670
diff changeset
  1049
    <resource:#obsolete>
2302
5a2a1d5d09f8 remove asynchronous handling of changes; always disabled because doesn't work
ca
parents: 2301
diff changeset
  1050
    self obsoleteMethodWarning:'no longer supported'.
1554
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1538
diff changeset
  1051
! !
c45cac3c4d31 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1538
diff changeset
  1052
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1053
!ListModelView methodsFor:'fetch resources'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1054
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1055
colorOnDevice:aColor
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1056
    "fetch a device colors
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1057
    "
4509
9ff8e40915db class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4500
diff changeset
  1058
    ^ aColor notNil ifTrue:[aColor onDevice:self graphicsDevice] ifFalse:[nil]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1059
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1060
2488
74c81c1e30d7 imageOnDevice -> imageOnMyDevice
Claus Gittinger <cg@exept.de>
parents: 2482
diff changeset
  1061
imageOnMyDevice:anImage
4609
6b04d0372a95 Sending of Image>>#clearMaskedPixels moved to Image >> #asFormOnDevice:
Stefan Vogel <sv@exept.de>
parents: 4578
diff changeset
  1062
    "associate image to device and returns the new image."
6b04d0372a95 Sending of Image>>#clearMaskedPixels moved to Image >> #asFormOnDevice:
Stefan Vogel <sv@exept.de>
parents: 4578
diff changeset
  1063
6b04d0372a95 Sending of Image>>#clearMaskedPixels moved to Image >> #asFormOnDevice:
Stefan Vogel <sv@exept.de>
parents: 4578
diff changeset
  1064
    anImage isNil ifTrue:[^ nil].
6b04d0372a95 Sending of Image>>#clearMaskedPixels moved to Image >> #asFormOnDevice:
Stefan Vogel <sv@exept.de>
parents: 4578
diff changeset
  1065
    ^ anImage onDevice:self graphicsDevice.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1066
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1067
1417
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1068
!ListModelView methodsFor:'focus handling'!
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1069
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1070
wantsFocusWithButtonPress
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1071
    "catch the keyboard focus on button click
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1072
    "
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1073
    ^  true
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1074
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1075
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1076
!
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1077
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1078
wantsFocusWithPointerEnter
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1079
    "views which like to take the keyboard focus
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1080
     when the pointer enters can do so by redefining this
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1081
     to return true"
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1082
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1083
    ^ true
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1084
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1085
! !
3d331ae2d2b6 implements:
Claus Gittinger <cg@exept.de>
parents: 1409
diff changeset
  1086
2501
832cbac295b8 method category rename
Claus Gittinger <cg@exept.de>
parents: 2488
diff changeset
  1087
!ListModelView methodsFor:'initialization & release'!
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1088
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1089
create
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1090
    "fetch device dependent resources
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1091
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1092
    super create.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1093
    self fetchResources.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1094
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1095
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1096
initStyle
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1097
    "setup viewStyle specifics
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1098
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1099
    super initStyle.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1100
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1101
    DefaultBackgroundColor notNil ifTrue:[
3926
465e943676ed changed:
Claus Gittinger <cg@exept.de>
parents: 3909
diff changeset
  1102
        viewBackground := DefaultBackgroundColor
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1103
    ].
4569
cc9783bc24f6 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4513
diff changeset
  1104
    lineSpacing   := 2.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1105
    textStartLeft := 2.
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1106
    textStartTop  := 2.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1107
    fgColor       := DefaultForegroundColor.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1108
    bgColor       := viewBackground.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1109
    startOfLinesY := OrderedCollection new.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1110
3926
465e943676ed changed:
Claus Gittinger <cg@exept.de>
parents: 3909
diff changeset
  1111
    self font:SelectionInListView defaultFont. 
465e943676ed changed:
Claus Gittinger <cg@exept.de>
parents: 3909
diff changeset
  1112
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1113
    startOfLinesY add:(textStartTop + margin). "/ top inset of first line
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1114
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1115
    DefaultShadowColor notNil ifTrue:[
3926
465e943676ed changed:
Claus Gittinger <cg@exept.de>
parents: 3909
diff changeset
  1116
        shadowColor := DefaultShadowColor
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1117
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1118
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1119
    DefaultLightColor notNil ifTrue:[
3926
465e943676ed changed:
Claus Gittinger <cg@exept.de>
parents: 3909
diff changeset
  1120
        lightColor := DefaultLightColor
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1121
    ].
3926
465e943676ed changed:
Claus Gittinger <cg@exept.de>
parents: 3909
diff changeset
  1122
465e943676ed changed:
Claus Gittinger <cg@exept.de>
parents: 3909
diff changeset
  1123
    "Modified: / 14-08-2010 / 12:24:02 / cg"
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1124
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1125
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1126
initialize
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1127
    "setup default attributes
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1128
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1129
    super initialize.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1130
2261
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
  1131
    viewOrigin         := 0@0.
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
  1132
    bitGravity         := #NorthWest.
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
  1133
    enabled            := true.
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
  1134
    autoScroll         := true.
1827
54e8a0fc8a42 scrollWhenUpdating
Claus Gittinger <cg@exept.de>
parents: 1820
diff changeset
  1135
    scrollWhenUpdating := #beginOfText.
2261
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
  1136
    hasConstantHeight  := false.
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1137
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1138
    listRenderer isNil ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1139
        listRenderer := self class defaultRenderer forView:self.
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1140
    ].
2600
69bc62444098 create default list during initialize
ca
parents: 2599
diff changeset
  1141
    self list:(self newDefaultList).
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1142
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1143
1562
342e61e7bc99 recompute height of contents after mapped
ca
parents: 1554
diff changeset
  1144
mapped
342e61e7bc99 recompute height of contents after mapped
ca
parents: 1554
diff changeset
  1145
    "recompute list
342e61e7bc99 recompute height of contents after mapped
ca
parents: 1554
diff changeset
  1146
    "
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1147
    "/ shown ifFalse:[
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1148
"/        self recomputeHeightOfContents.
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1149
"/        self contentsChanged.     "/ is computeEditorLayout what you want ?
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1150
    "/ ].
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1151
    listRenderer mapped.
1562
342e61e7bc99 recompute height of contents after mapped
ca
parents: 1554
diff changeset
  1152
    super mapped
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1153
1562
342e61e7bc99 recompute height of contents after mapped
ca
parents: 1554
diff changeset
  1154
!
342e61e7bc99 recompute height of contents after mapped
ca
parents: 1554
diff changeset
  1155
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1156
recreate
1832
f6e6640e99a3 comment
Claus Gittinger <cg@exept.de>
parents: 1828
diff changeset
  1157
    "sent after a snapin or a migration, reinit for new device"
1828
ea1f39c639f8 comment
Claus Gittinger <cg@exept.de>
parents: 1827
diff changeset
  1158
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1159
    super recreate.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1160
    self fetchResources.
1796
c9d801c011f7 recompute layout after snapIn (font geometry could be different)
Claus Gittinger <cg@exept.de>
parents: 1773
diff changeset
  1161
!
c9d801c011f7 recompute layout after snapIn (font geometry could be different)
Claus Gittinger <cg@exept.de>
parents: 1773
diff changeset
  1162
c9d801c011f7 recompute layout after snapIn (font geometry could be different)
Claus Gittinger <cg@exept.de>
parents: 1773
diff changeset
  1163
reinitialize
c9d801c011f7 recompute layout after snapIn (font geometry could be different)
Claus Gittinger <cg@exept.de>
parents: 1773
diff changeset
  1164
    "reinit after snapIn (font geometry might be different)
c9d801c011f7 recompute layout after snapIn (font geometry could be different)
Claus Gittinger <cg@exept.de>
parents: 1773
diff changeset
  1165
    "
c9d801c011f7 recompute layout after snapIn (font geometry could be different)
Claus Gittinger <cg@exept.de>
parents: 1773
diff changeset
  1166
    super reinitialize.
c9d801c011f7 recompute layout after snapIn (font geometry could be different)
Claus Gittinger <cg@exept.de>
parents: 1773
diff changeset
  1167
    self recomputeHeightOfContents.
c9d801c011f7 recompute layout after snapIn (font geometry could be different)
Claus Gittinger <cg@exept.de>
parents: 1773
diff changeset
  1168
    self contentsChanged.
c9d801c011f7 recompute layout after snapIn (font geometry could be different)
Claus Gittinger <cg@exept.de>
parents: 1773
diff changeset
  1169
2156
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
  1170
!
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
  1171
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
  1172
release
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
  1173
    "remove dependencies
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
  1174
    "
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1175
    listRenderer release.
2643
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1176
2595
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
  1177
    self listHolder removeDependent:self.
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
  1178
    self list       removeDependent:self.
2156
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
  1179
e16dc409ecf2 destroy - release
Claus Gittinger <cg@exept.de>
parents: 2147
diff changeset
  1180
    super release
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1181
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1182
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1183
!ListModelView methodsFor:'private'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1184
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
  1185
hasDamage
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2464
diff changeset
  1186
    "return true, if any damage events (i.e. expose or resize) are pending"
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
  1187
2482
13acaaf02528 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 2464
diff changeset
  1188
    ^ self sensor hasDamageFor:self
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
  1189
!
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
  1190
2595
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
  1191
startOfLinesY
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1192
    "returns a collection of absolute Y-positions per line.
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1193
     The first entry is the top Y inset.
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1194
     The size of the list is one more than the lists size,
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1195
     providing the Y-position of the line below the contents as its last entry."
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1196
2595
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
  1197
    ^ startOfLinesY
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
  1198
!
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
  1199
2640
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1200
xAbsoluteOfItem:anItem
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1201
    "returns the absolute x of the labeled text
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1202
    "
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1203
    ^ (self xVisibleOfItem:anItem) + viewOrigin x.
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1204
!
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1205
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1206
xVisibleOfItem:anItem
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1207
    "returns the visible x of the labeled text
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1208
    "
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1209
    ^ textStartLeft - viewOrigin x
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1210
!
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1211
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1212
yAbsoluteOfLine:aLineNr
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1213
    "given a lineNr, return y-coordinate absolute
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1214
    "
4578
95390b904254 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4573
diff changeset
  1215
    |y y2 y1 cache|
95390b904254 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4573
diff changeset
  1216
95390b904254 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4573
diff changeset
  1217
    cache := self startOfLinesY.
95390b904254 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4573
diff changeset
  1218
95390b904254 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4573
diff changeset
  1219
    (y := cache at:aLineNr ifAbsent:nil) notNil ifTrue:[
95390b904254 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4573
diff changeset
  1220
        ^ y
1446
fb46beba2d0c startOfLines can have nil at end; lookup the first not nil
Claus Gittinger <cg@exept.de>
parents: 1444
diff changeset
  1221
    ].
1744
2447f4a3dd7c computation of absoluteY for a line
ca
parents: 1743
diff changeset
  1222
2447f4a3dd7c computation of absoluteY for a line
ca
parents: 1743
diff changeset
  1223
    "/ recompute a y position
4578
95390b904254 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4573
diff changeset
  1224
    y1 := cache at:1 ifAbsent:textStartTop.
95390b904254 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4573
diff changeset
  1225
    y2 := cache at:2 ifAbsent:(textStartTop + 16).
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1226
    ^ aLineNr * (y2 - y1) + y1
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1227
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1228
4201
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1229
yAbsoluteToLineNr:yAbsolute
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1230
    "returns the line number for a given physical y coordinate
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1231
     or nil if beyond of list.
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1232
    "
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1233
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1234
    |cache yCache
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1235
     yAbs       "{ Class: SmallInteger}"
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1236
     size       "{ Class: SmallInteger}"
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1237
     ictr       "{ Class: SmallInteger}"
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1238
     yRun       "{ Class: SmallInteger}"
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1239
    |
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1240
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1241
    yAbs := yAbsolute.
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1242
    cache := self startOfLinesY.
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1243
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1244
    (size := cache size) < 2 ifTrue:[
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1245
        "/ empty list
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1246
        (yAbs between:textStartTop and:textStartTop+16) ifTrue:[^ 1].
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1247
        ^ nil
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1248
    ].
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1249
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1250
    yCache := cache at:size ifAbsent:nil.
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1251
    yCache isNil ifTrue:[ ^ nil ].    "/ out of list
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1252
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1253
    yRun := yCache.
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1254
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1255
    yAbs >= yRun ifTrue:[
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1256
        yAbs == yRun ifTrue:[ ^ size - 1].
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1257
        ^ nil   "/ out of list
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1258
    ].
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1259
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1260
    constantHeight notNil ifTrue:[
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1261
        yAbs := yAbs - (cache at:1).
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1262
        yAbs < constantHeight ifTrue:[ ^ 1 ].
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1263
        ^ yAbs // constantHeight + 1
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1264
    ].
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1265
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1266
    ictr := yAbs // (cache at:2).
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1267
    ictr < 1 ifTrue:[ ictr := 1 ]
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1268
            ifFalse:[ ictr := ictr min:size ].
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1269
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1270
    yRun := cache at:ictr.
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1271
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1272
    yRun > yAbs ifTrue:[
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1273
        [(ictr := ictr - 1) > 0 ] whileTrue:[
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1274
            yRun := cache at:ictr.
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1275
            yRun <= yAbs ifTrue:[ ^ ictr ].
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1276
        ].
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1277
        ^ 1
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1278
    ].
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1279
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1280
    [ yRun ~~ yAbs ] whileTrue:[
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1281
        ictr := ictr + 1.
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1282
        yRun := cache at:ictr.
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1283
        yRun > yAbs ifTrue:[ ^ ictr - 1 ].
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1284
    ].
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1285
    ^ ictr
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1286
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1287
    "Created: / 18-04-2013 / 10:03:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1288
!
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1289
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1290
yAbsoluteToRowNr:yVisible
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1291
    "for protocol compatibility with DSVColumnView"
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1292
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1293
    ^ self yAbsoluteToLineNr:yVisible
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1294
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1295
    "Created: / 18-04-2013 / 10:05:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1296
!
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1297
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1298
yVisibleOfLine:aLineNr
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1299
    "given a lineNr, return y-coordinate in view
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1300
    "
1744
2447f4a3dd7c computation of absoluteY for a line
ca
parents: 1743
diff changeset
  1301
    ^ (self yAbsoluteOfLine:aLineNr) - viewOrigin y
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1302
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1303
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1304
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1305
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1306
yVisibleToLineNr:yVisible
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1307
    "returns the line number for a given physical y coordinate
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1308
     or nil if beyond of list.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1309
    "
4201
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1310
    ^self yAbsoluteToLineNr: yVisible + viewOrigin y.
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1311
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  1312
    "Modified: / 18-04-2013 / 10:04:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2464
2fcd6ccdaa7b +yVisibleToRowNr: for protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 2458
diff changeset
  1313
!
2fcd6ccdaa7b +yVisibleToRowNr: for protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 2458
diff changeset
  1314
2fcd6ccdaa7b +yVisibleToRowNr: for protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 2458
diff changeset
  1315
yVisibleToRowNr:yVisible
2fcd6ccdaa7b +yVisibleToRowNr: for protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 2458
diff changeset
  1316
    "for protocol compatibility with DSVColumnView"
2fcd6ccdaa7b +yVisibleToRowNr: for protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 2458
diff changeset
  1317
2fcd6ccdaa7b +yVisibleToRowNr: for protocol compatibility
Claus Gittinger <cg@exept.de>
parents: 2458
diff changeset
  1318
    ^ self yVisibleToLineNr:yVisible
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1319
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1320
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1321
!ListModelView methodsFor:'protocol'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1322
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1323
fetchResources
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1324
    "fetch device colors and ..., to avoid reallocation at redraw time;
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1325
     *** called after a create or snapin to fetch all device resources
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1326
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1327
    fgColor    := self colorOnDevice:fgColor.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1328
    bgColor    := self colorOnDevice:bgColor.
4500
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
  1329
    gc createFontOnDevice.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1330
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1331
3533
3c7fa69fe1c7 heightForLines:
ca
parents: 3501
diff changeset
  1332
heightForLines:numberOfLines
3c7fa69fe1c7 heightForLines:
ca
parents: 3501
diff changeset
  1333
    |h|
3c7fa69fe1c7 heightForLines:
ca
parents: 3501
diff changeset
  1334
3c7fa69fe1c7 heightForLines:
ca
parents: 3501
diff changeset
  1335
    h := self lineHeightFor:'Yg'.
3c7fa69fe1c7 heightForLines:
ca
parents: 3501
diff changeset
  1336
    ^ h * numberOfLines
3c7fa69fe1c7 heightForLines:
ca
parents: 3501
diff changeset
  1337
!
3c7fa69fe1c7 heightForLines:
ca
parents: 3501
diff changeset
  1338
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1339
lineHeightFor:anItem
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1340
    "returns the computed line height for an item
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1341
    "
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1342
    ^ lineSpacing + (listRenderer heightFor:anItem)
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1343
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1344
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1345
listSizeChanged:anIndex nLines:noLines
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1346
    "list size changed; information is stored to recompute the
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1347
     width if required( preferredExtent, horizontal scroller ... ).
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1348
     see: widthOfContents
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1349
     *** if nLines is negative, lines are removed otherwise added.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1350
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1351
    |start "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1352
     stop  "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1353
     size  "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1354
    |
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1355
"/    preferredExtent := nil.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1356
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1357
    cachedPreferredExtent := nil.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1358
    widthOfContents isNil ifTrue:[      "/ recompute whole list
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1359
	^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1360
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1361
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
  1362
    (noLines < 0 or:[(size := self size) <= noLines]) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1363
	widthOfContents := nil.         "/ force recompute whole list
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1364
	^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1365
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1366
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1367
    stop  := anIndex + noLines - 1.     "/ recompute a range
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1368
    start := anIndex.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1369
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1370
    computeWidthInRange notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1371
	start := computeWidthInRange y.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1372
	stop  <  start ifTrue:[stop := start min:size].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1373
	start := (computeWidthInRange x) min:anIndex.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1374
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1375
    computeWidthInRange := start@stop
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1376
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1377
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
  1378
lostSynchronisation
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
  1379
    "called when the changes derived from the model are faster than the handling
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
  1380
    "
3892
4e95e7f60aa3 changed:
fm
parents: 3891
diff changeset
  1381
4e95e7f60aa3 changed:
fm
parents: 3891
diff changeset
  1382
    self recomputeHeightOfContents.
4e95e7f60aa3 changed:
fm
parents: 3891
diff changeset
  1383
    self invalidate.
4e95e7f60aa3 changed:
fm
parents: 3891
diff changeset
  1384
    self contentsChanged
1457
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
  1385
!
76491c5ae369 lostSynchronisation:
Claus Gittinger <cg@exept.de>
parents: 1456
diff changeset
  1386
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1387
newDefaultList
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1388
    "creates and returns a new default list class, on default a List
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1389
    "
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1390
    ^ List new
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1391
!
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1392
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1393
widthOfWidestLineBetween:firstLine and:lastLine
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1394
    "return the width in pixels of the widest line in a range
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1395
    "
2645
b3d3e7c3ee40 bugfix due to compilation (test SmallInteger for nil)
ca
parents: 2644
diff changeset
  1396
    |item width|
b3d3e7c3ee40 bugfix due to compilation (test SmallInteger for nil)
ca
parents: 2644
diff changeset
  1397
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1398
    width := listRenderer widthOfWidestLineBetween:firstLine and:lastLine.
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1399
    width notNil ifTrue:[^ width].
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1400
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1401
    width := textStartLeft.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1402
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1403
    firstLine to:lastLine do:[:anIndex|
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1404
	item := self at:anIndex ifAbsent:nil.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1405
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1406
	item isNil ifTrue:[^ width + textStartLeft].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1407
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1408
	width := (listRenderer widthFor:item) max:width
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1409
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1410
    ^ width + textStartLeft
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1411
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1412
1820
9b17f0c15849 category change
Claus Gittinger <cg@exept.de>
parents: 1818
diff changeset
  1413
!ListModelView methodsFor:'queries'!
9b17f0c15849 category change
Claus Gittinger <cg@exept.de>
parents: 1818
diff changeset
  1414
2274
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1415
isLineVisible:aLineNr
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1416
    "returns true if the line is visible"
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1417
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1418
    ^ self isLineVisible:aLineNr in:self extent
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1419
!
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1420
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1421
isLineVisible:aLineNr in:anExtentPoint
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1422
    "returns true if the line is visible"
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1423
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1424
    |y|
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1425
    y := self yVisibleOfLine:aLineNr.
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1426
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1427
  ^ (y between:margin and:(anExtentPoint y - margin))
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1428
!
c973acbc021d only make selection visible after a resize, if it was visible before
ca
parents: 2265
diff changeset
  1429
3201
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1430
lineIsFullyVisible:aLineNr
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1431
    "returns true if the line is fully visible"
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1432
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1433
    |y|
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1434
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1435
    shown ifFalse:[^ false].
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1436
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1437
    y := self yVisibleOfLine:aLineNr.
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1438
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1439
    (y between:0 and:height) ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1440
	y := self yVisibleOfLine:(aLineNr + 1).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1441
	y <= height ifTrue:[^ true ].
3201
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1442
    ].
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1443
    ^ false
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1444
!
aa2b0f83d8b2 *** empty log message ***
ca
parents: 2981
diff changeset
  1445
1820
9b17f0c15849 category change
Claus Gittinger <cg@exept.de>
parents: 1818
diff changeset
  1446
size
2595
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
  1447
    "returns the number of list entries
1820
9b17f0c15849 category change
Claus Gittinger <cg@exept.de>
parents: 1818
diff changeset
  1448
    "
2595
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
  1449
    ^ self list size
1820
9b17f0c15849 category change
Claus Gittinger <cg@exept.de>
parents: 1818
diff changeset
  1450
! !
9b17f0c15849 category change
Claus Gittinger <cg@exept.de>
parents: 1818
diff changeset
  1451
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1452
!ListModelView methodsFor:'recomputation'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1453
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1454
preferredExtent
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1455
    "returns the preferred extent"
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1456
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1457
    |x y|
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1458
3576
e990d7f45310 changed #preferredExtent - use explicitExtent instvar
Stefan Vogel <sv@exept.de>
parents: 3533
diff changeset
  1459
    "/ If I have an explicit preferredExtent..
e990d7f45310 changed #preferredExtent - use explicitExtent instvar
Stefan Vogel <sv@exept.de>
parents: 3533
diff changeset
  1460
    explicitExtent notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1461
	^ explicitExtent
3576
e990d7f45310 changed #preferredExtent - use explicitExtent instvar
Stefan Vogel <sv@exept.de>
parents: 3533
diff changeset
  1462
    ].
e990d7f45310 changed #preferredExtent - use explicitExtent instvar
Stefan Vogel <sv@exept.de>
parents: 3533
diff changeset
  1463
e990d7f45310 changed #preferredExtent - use explicitExtent instvar
Stefan Vogel <sv@exept.de>
parents: 3533
diff changeset
  1464
    "/ If I have a cached preferredExtent value..
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1465
    preferredExtent notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1466
	^ preferredExtent
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1467
    ].
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1468
    cachedPreferredExtent isNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1469
	y := self heightOfContents.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1470
	x := self widthOfContents.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1471
	cachedPreferredExtent := x@y
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1472
    ].
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1473
    ^ cachedPreferredExtent
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1474
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1475
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1476
recomputeHeightOfContents
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1477
    "recompute all the y positions
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1478
    "
1643
cabafd70be77 checkin from browser
ps
parents: 1642
diff changeset
  1479
    |newList
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1480
     yAbs "{ Class: SmallInteger }"
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1481
     size "{ Class: SmallInteger }"|
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1482
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1483
    yAbs    := (textStartTop + margin).   "/ top inset of first line
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
  1484
    size    := self size.
1643
cabafd70be77 checkin from browser
ps
parents: 1642
diff changeset
  1485
    newList := OrderedCollection new:(size + 1).
cabafd70be77 checkin from browser
ps
parents: 1642
diff changeset
  1486
    newList add:yAbs.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1487
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1488
    size ~~ 0 ifTrue:[
4569
cc9783bc24f6 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4513
diff changeset
  1489
        1 to:size do:[:anIndex|
4635
117ff69e7cd0 class: ListModelView
ca
parents: 4626
diff changeset
  1490
            yAbs := yAbs + (self heightOfLineAt:anIndex).
4569
cc9783bc24f6 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4513
diff changeset
  1491
            newList add:yAbs
cc9783bc24f6 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4513
diff changeset
  1492
        ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1493
    ].
1643
cabafd70be77 checkin from browser
ps
parents: 1642
diff changeset
  1494
    startOfLinesY := newList.
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1495
    cachedPreferredExtent := nil.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1496
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1497
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1498
!ListModelView methodsFor:'scroller interface'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1499
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1500
getWidthOfContents
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1501
    ^ widthOfContents
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1502
!
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1503
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1504
heightOfAnyNonNilItem
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1505
    "returns the height of a line at an index (including lineSpacing...)"
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1506
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1507
    |item|
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1508
4635
117ff69e7cd0 class: ListModelView
ca
parents: 4626
diff changeset
  1509
    item := list
117ff69e7cd0 class: ListModelView
ca
parents: 4626
diff changeset
  1510
        detect:[:i | i notNil]
117ff69e7cd0 class: ListModelView
ca
parents: 4626
diff changeset
  1511
        ifNone:[ ^ lineSpacing + gc font height ]. "arbitrary"
117ff69e7cd0 class: ListModelView
ca
parents: 4626
diff changeset
  1512
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1513
    ^ self lineHeightFor:item.
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1514
!
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1515
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1516
heightOfContents
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1517
    "return the height of the contents in pixels"
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1518
2595
1ab5dc7d4796 create a default list; thus we have not to test for nil
ca
parents: 2569
diff changeset
  1519
    ^ self startOfLinesY last ? 0
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1520
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1521
2261
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
  1522
heightOfLineAt:aLineNr
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1523
    "returns the height of a line at an index (including lineSpacing...)"
2261
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
  1524
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
  1525
    hasConstantHeight ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1526
	constantHeight isNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1527
	    constantHeight := self heightOfAnyNonNilItem.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1528
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1529
	^ constantHeight
2261
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
  1530
    ].
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1531
    ^ self realHeightOfLineAt:aLineNr
2261
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
  1532
!
dd8a6eb74790 add #hasConstantHeight for optimization
ca
parents: 2257
diff changeset
  1533
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1534
innerHeight
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1535
    "returns the inner height of the contents shown
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1536
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1537
    ^ height - margin - margin
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1538
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1539
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1540
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1541
innerWidth
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1542
    "returns the inner width of the contents shown
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1543
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1544
    ^ width - margin - margin
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1545
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1546
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1547
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1548
maxViewOriginY
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1549
    "returns the maximum possible y of the view origin
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1550
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1551
    ^ (self heightOfContents - self innerHeight) max:0
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1552
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1553
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1554
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1555
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1556
realHeightOfLineAt:aLineNr
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1557
    "returns the real (uncached) height of a line at an index"
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1558
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1559
    |item|
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1560
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1561
    item := self at:aLineNr ifAbsent:nil.
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1562
    item notNil ifTrue:[
4500
af93193304b4 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
  1563
        ^ self lineHeightFor:item
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1564
    ].
4635
117ff69e7cd0 class: ListModelView
ca
parents: 4626
diff changeset
  1565
    ^ lineSpacing + gc font height "arbitrary"
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1566
!
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1567
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1568
setWidthOfContents: aWidth
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1569
    widthOfContents := aWidth.
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1570
!
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1571
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1572
verticalScrollStep
3501
1e571b1b2e15 comment
Claus Gittinger <cg@exept.de>
parents: 3483
diff changeset
  1573
    "return the amount to scroll when stepping up/down (also used for mouseWheel)."
1e571b1b2e15 comment
Claus Gittinger <cg@exept.de>
parents: 3483
diff changeset
  1574
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1575
    ^ 10
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1576
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1577
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1578
viewOrigin
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1579
    "return the viewOrigin; thats the coordinate of the contents
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1580
     which is shown topLeft in the view.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1581
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1582
    ^ viewOrigin
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1583
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1584
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1585
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1586
widthOfContents
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1587
    "return the width of the contents in pixels
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1588
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1589
    |range
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1590
     size  "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1591
     start "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1592
     stop  "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1593
    |
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1594
    (widthOfContents notNil and:[computeWidthInRange isNil]) ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1595
        ^ widthOfContents + textStartLeft
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1596
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1597
    range               := computeWidthInRange.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1598
    computeWidthInRange := nil.
3483
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1599
"/    preferredExtent     := nil.
c9946ba07f41 preferredExtent fixed (do not use pref'Extent as a cache)
Claus Gittinger <cg@exept.de>
parents: 3390
diff changeset
  1600
"/    cachedPreferredExtent := nil.
2384
44fbf84cfb22 validate widthOfContents if visible
ca
parents: 2367
diff changeset
  1601
2408
8b0d11537dc0 accessing list indirect
ca
parents: 2385
diff changeset
  1602
    size := self size.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1603
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1604
    size == 0 ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1605
        widthOfContents := 20.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1606
    ] ifFalse:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1607
        widthOfContents isNil ifTrue:[
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1608
            widthOfContents := self widthOfWidestLineBetween:1 and:size
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1609
        ] ifFalse:[
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1610
            start := range x.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1611
            stop  := range y min:size.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1612
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1613
            start > stop ifFalse:[
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1614
                size := self widthOfWidestLineBetween:start and:stop.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1615
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1616
                widthOfContents < size ifTrue:[
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1617
                    widthOfContents := size
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1618
                ]
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1619
            ]
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1620
        ]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1621
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1622
    ^ widthOfContents + textStartLeft
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1623
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1624
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1625
xOriginOfContents
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1626
    "return the horizontal origin of the contents in pixels
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1627
    "
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1628
    ^ viewOrigin x
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1629
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1630
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1631
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1632
yOriginOfContents
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1633
    "return the vertical origin of the contents in pixels
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1634
    "
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1635
    ^ viewOrigin y
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1636
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1637
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1638
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1639
!ListModelView methodsFor:'scrolling'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1640
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1641
halfPageDown
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1642
    "scroll down half a page
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1643
    "
1827
54e8a0fc8a42 scrollWhenUpdating
Claus Gittinger <cg@exept.de>
parents: 1820
diff changeset
  1644
    self scrollDown:(height // 2).
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1645
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1646
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1647
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1648
halfPageUp
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1649
    "scroll up half a page
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1650
    "
1827
54e8a0fc8a42 scrollWhenUpdating
Claus Gittinger <cg@exept.de>
parents: 1820
diff changeset
  1651
    self scrollUp:(height // 2).
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1652
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1653
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1654
2367
69f8b4d73f5d add #makeLineVisible:
ca
parents: 2352
diff changeset
  1655
makeLineVisible:aLnNr
69f8b4d73f5d add #makeLineVisible:
ca
parents: 2352
diff changeset
  1656
    "make the line visible
69f8b4d73f5d add #makeLineVisible:
ca
parents: 2352
diff changeset
  1657
    "
69f8b4d73f5d add #makeLineVisible:
ca
parents: 2352
diff changeset
  1658
    aLnNr notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1659
	self scrollToLine:aLnNr
2367
69f8b4d73f5d add #makeLineVisible:
ca
parents: 2352
diff changeset
  1660
    ].
69f8b4d73f5d add #makeLineVisible:
ca
parents: 2352
diff changeset
  1661
!
69f8b4d73f5d add #makeLineVisible:
ca
parents: 2352
diff changeset
  1662
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1663
scrollTo:anOrigin redraw:doRedraw
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1664
    "change origin to have newOrigin be visible at the top-left.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1665
    "
1538
ef0eea7c074a check for windowGroup
Claus Gittinger <cg@exept.de>
parents: 1535
diff changeset
  1666
    |newOrg dltOrg winGrp
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1667
     innerWT    "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1668
     innerHG    "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1669
     h          "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1670
     x          "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1671
     x0         "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1672
     x1         "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1673
     y          "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1674
     w          "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1675
     y0         "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1676
     y1         "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1677
     dX         "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1678
     dY         "{ Class:SmallInteger }"
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1679
    |
1531
42dcb9760f0f checkin from browser
Stefan Vogel <sv@exept.de>
parents: 1508
diff changeset
  1680
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1681
    innerWT := self innerWidth.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1682
    innerHG := self innerHeight.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1683
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1684
    h := viewOrigin y.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1685
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1686
    (y := anOrigin y) > h ifTrue:[              "/ end of contents
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1687
        y > (dY := self maxViewOriginY) ifTrue:[
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1688
            y := dY max:h                  
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1689
        ]
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1690
    ] ifFalse:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1691
        y := y max:0.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1692
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1693
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1694
    (x := anOrigin x) > 0 ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1695
        x := x min:(self widthOfContents - innerWT).
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1696
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1697
    x      := x max:0.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1698
    newOrg := (x @ y).
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1699
    dltOrg := newOrg - viewOrigin.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1700
    dX     := dltOrg x.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1701
    dY     := dltOrg y.
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1702
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1703
    (dX == 0 and:[dY == 0]) ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1704
        ^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1705
    ].
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1706
1534
8c4272e42539 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1532
diff changeset
  1707
    dY := dY abs.
8c4272e42539 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1532
diff changeset
  1708
    dX := dX abs.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1709
1534
8c4272e42539 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1532
diff changeset
  1710
    (   (dX ~~ 0 and:[dY ~~ 0])                         "/ scroll vertical & horizontal
8c4272e42539 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1532
diff changeset
  1711
     or:[(innerHG - dY < 20 or:[innerWT - dX < 20])]    "/ faster to invalidate screen
8c4272e42539 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1532
diff changeset
  1712
    ) ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1713
        viewOrigin := newOrg.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1714
        self originChanged:dltOrg.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1715
        self invalidate.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1716
        ^ self
1534
8c4272e42539 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1532
diff changeset
  1717
    ].
1753
17769f8df493 #scrollTo:redraw: first check whether full invalidate otherwise processRealExposeEventsFor:
ca
parents: 1752
diff changeset
  1718
17769f8df493 #scrollTo:redraw: first check whether full invalidate otherwise processRealExposeEventsFor:
ca
parents: 1752
diff changeset
  1719
    (winGrp := self windowGroup) notNil ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1720
        winGrp processRealExposeEventsFor:self.
1753
17769f8df493 #scrollTo:redraw: first check whether full invalidate otherwise processRealExposeEventsFor:
ca
parents: 1752
diff changeset
  1721
    ].
17769f8df493 #scrollTo:redraw: first check whether full invalidate otherwise processRealExposeEventsFor:
ca
parents: 1752
diff changeset
  1722
17769f8df493 #scrollTo:redraw: first check whether full invalidate otherwise processRealExposeEventsFor:
ca
parents: 1752
diff changeset
  1723
    self originWillChange.
17769f8df493 #scrollTo:redraw: first check whether full invalidate otherwise processRealExposeEventsFor:
ca
parents: 1752
diff changeset
  1724
3892
4e95e7f60aa3 changed:
fm
parents: 3891
diff changeset
  1725
    (doRedraw and:[shown]) ifFalse:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1726
        viewOrigin := newOrg.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1727
        self originChanged:dltOrg.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1728
        ^ self
1753
17769f8df493 #scrollTo:redraw: first check whether full invalidate otherwise processRealExposeEventsFor:
ca
parents: 1752
diff changeset
  1729
    ].
17769f8df493 #scrollTo:redraw: first check whether full invalidate otherwise processRealExposeEventsFor:
ca
parents: 1752
diff changeset
  1730
1531
42dcb9760f0f checkin from browser
Stefan Vogel <sv@exept.de>
parents: 1508
diff changeset
  1731
    self catchExpose.
42dcb9760f0f checkin from browser
Stefan Vogel <sv@exept.de>
parents: 1508
diff changeset
  1732
    viewOrigin := newOrg.
42dcb9760f0f checkin from browser
Stefan Vogel <sv@exept.de>
parents: 1508
diff changeset
  1733
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1734
    dY ~~ 0 ifTrue:[                            "/ SCROLL VERTICAL
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1735
        y0 := y1 := margin + dY.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1736
        h  := innerHG - dY.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1737
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1738
        dltOrg y < 0 ifTrue:[y0 := margin. y := y0]
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1739
                    ifFalse:[y1 := margin. y := y1 + h].
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1740
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1741
        self copyFrom:self x:margin y:y0 toX:margin y:y1 width:innerWT height:h async:true.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1742
        self invalidateX:margin y:y width:innerWT height:(innerHG - h).
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1743
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1744
    ] ifFalse:[                                 "/ SCROLL HORIZONTAL
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1745
        x0 := x1 := dX + margin.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1746
        w  := innerWT - dX.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1747
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1748
        dltOrg x < 0 ifTrue:[x0 := x := margin ]
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1749
                    ifFalse:[x1 := margin. x := w].
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1750
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1751
        self copyFrom:self x:x0 y:margin toX:x1 y:margin width:w height:innerHG async:true.
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1752
        self invalidateX:x y:margin width:(width - w) height:innerHG.
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1753
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1754
    self originChanged:dltOrg.
1531
42dcb9760f0f checkin from browser
Stefan Vogel <sv@exept.de>
parents: 1508
diff changeset
  1755
    self waitForExpose.
42dcb9760f0f checkin from browser
Stefan Vogel <sv@exept.de>
parents: 1508
diff changeset
  1756
2458
0411397ef0a2 readraw after scroll: process expose events.
Claus Gittinger <cg@exept.de>
parents: 2408
diff changeset
  1757
    winGrp notNil ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1758
        winGrp processRealExposeEventsFor:self.
2458
0411397ef0a2 readraw after scroll: process expose events.
Claus Gittinger <cg@exept.de>
parents: 2408
diff changeset
  1759
    ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1760
!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1761
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1762
scrollToLine:aLineNumber
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1763
    "make line visible"
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1764
1744
2447f4a3dd7c computation of absoluteY for a line
ca
parents: 1743
diff changeset
  1765
    |inHg "{ Class:SmallInteger }"
2447f4a3dd7c computation of absoluteY for a line
ca
parents: 1743
diff changeset
  1766
     yTop "{ Class:SmallInteger }"
2447f4a3dd7c computation of absoluteY for a line
ca
parents: 1743
diff changeset
  1767
     orgY "{ Class:SmallInteger }"
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1768
     yBot "{ Class:SmallInteger }"|
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1769
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1770
    (aLineNumber notNil and:[aLineNumber between:1 and:(self size)]) ifFalse:[
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1771
        ^ self
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1772
    ].
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1773
1744
2447f4a3dd7c computation of absoluteY for a line
ca
parents: 1743
diff changeset
  1774
    yTop := self yAbsoluteOfLine:aLineNumber.
2447f4a3dd7c computation of absoluteY for a line
ca
parents: 1743
diff changeset
  1775
    inHg := self innerHeight.
2447f4a3dd7c computation of absoluteY for a line
ca
parents: 1743
diff changeset
  1776
    orgY := viewOrigin y.
2447f4a3dd7c computation of absoluteY for a line
ca
parents: 1743
diff changeset
  1777
2447f4a3dd7c computation of absoluteY for a line
ca
parents: 1743
diff changeset
  1778
    yTop > orgY ifTrue:[
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1779
        yBot := self yAbsoluteOfLine:(aLineNumber + 1).
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1780
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1781
        yBot <= (orgY + inHg) ifTrue:[
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1782
            ^ self
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  1783
        ].
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1784
    ].
1744
2447f4a3dd7c computation of absoluteY for a line
ca
parents: 1743
diff changeset
  1785
    yTop := (yTop - (inHg // 2)) max:0.
2447f4a3dd7c computation of absoluteY for a line
ca
parents: 1743
diff changeset
  1786
    self scrollTo:(viewOrigin x @ yTop).
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1787
! !
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1788
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1789
!ListModelView methodsFor:'scrolling auto'!
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1790
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  1791
startAutoScroll:aSelectorOrBlock distance:aDistance
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  1792
    "setup for auto-scroll (when button-press-moving below/above view);
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1793
     - timeDelta for scroll is computed from distance
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1794
    "
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  1795
    |timeDelta scrollBlock|
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1796
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  1797
    autoScroll ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1798
	self stopAutoScroll.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1799
	^ self
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1800
    ].
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  1801
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1802
    autoScrollBlock notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1803
	Processor removeTimedBlock:autoScrollBlock.
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1804
    ] ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1805
	self compressMotionEvents:false.
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1806
    ].
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1807
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1808
    timeDelta := 0.5 / (aDistance abs).
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1809
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1810
    scrollBlock :=
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1811
	[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1812
	    aSelectorOrBlock isSymbol ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1813
		self perform:aSelectorOrBlock.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1814
	    ] ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1815
		aSelectorOrBlock value
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1816
	    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1817
	    autoScrollBlock notNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1818
		Processor addTimedBlock:autoScrollBlock afterSeconds:timeDelta.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1819
	    ]
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1820
	].
2670
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  1821
27dacfff1d6d autoScroll: let timedBlock push an event which performs the scroll
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  1822
    autoScrollBlock := [self sensor pushUserEvent:#value for:scrollBlock].
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1823
    Processor addTimedBlock:autoScrollBlock afterSeconds:timeDelta.
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1824
!
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1825
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1826
stopAutoScroll
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1827
    "stop any autoScroll
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1828
    "
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1829
    autoScrollBlock notNil ifTrue:[
2265
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
  1830
	Processor removeTimedBlock:autoScrollBlock.
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
  1831
	autoScrollBlock := nil.
5304bdf0f8e2 *** empty log message ***
ca
parents: 2264
diff changeset
  1832
	self compressMotionEvents:true.
1748
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1833
    ].
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1834
! !
0a2213a15e06 support of auto scrolling
ca
parents: 1744
diff changeset
  1835
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1836
!ListModelView methodsFor:'selection'!
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1837
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1838
hasSelection
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1839
    "on default false is returned
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1840
    "
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1841
    ^ false
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1842
! !
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1843
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1844
!ListModelView::Renderer class methodsFor:'documentation'!
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1845
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1846
documentation
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1847
"
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1848
    prepared for ListItemRenderer
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1849
    .... SelectionItemRenderer ...
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1850
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1851
    goal:
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  1852
	allow the user to redefine the display operation and the dimesion queries
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1853
"
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1854
! !
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1855
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1856
!ListModelView::Renderer class methodsFor:'instance creation'!
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1857
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1858
forView:aView
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1859
    |renderer|
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1860
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1861
    renderer := self basicNew initialize.
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1862
    renderer forView:aView.
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1863
    ^ renderer
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1864
! !
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1865
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  1866
!ListModelView::Renderer methodsFor:'accessing-look'!
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  1867
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  1868
showItemInAdditionToColumns
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  1869
    "raise an error: must be redefined in concrete subclass(es)"
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  1870
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  1871
    ^ true "/There are no columns!!"
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  1872
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  1873
    "Modified: / 24-04-2013 / 13:27:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  1874
! !
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  1875
2640
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1876
!ListModelView::Renderer methodsFor:'change & update'!
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1877
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1878
listWillChange
2852
c5651fcf9770 change and update: MUST update everything if no
Claus Gittinger <cg@exept.de>
parents: 2745
diff changeset
  1879
    "called before the list changed, clear caches etc.
2640
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1880
     here nothing is done
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1881
    "
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1882
!
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1883
4197
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  1884
sizeChanged:how
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  1885
    "Called when size of the corresponding view has changed."
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  1886
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  1887
    "Created: / 17-04-2013 / 11:42:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  1888
!
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  1889
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1890
withinUpdateFromListDo:aBlock
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1891
    "handle an update from the list
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1892
    "
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1893
    aBlock value
2640
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1894
! !
2855d7e55d43 inform renderere if list changed
ca
parents: 2605
diff changeset
  1895
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1896
!ListModelView::Renderer methodsFor:'displaying'!
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1897
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1898
display:anItem atX:xLeft y:yTop lineHeight:h
4703
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1899
    "display the item on the view"
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1900
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1901
    "/ obsolete - for backward compatibility
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1902
    self display:anItem atX:xLeft y:yTop lineHeight:h isHighlightedAsSelected:false
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1903
!
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1904
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1905
display:anItem atX:xLeft y:yTop lineHeight:h isHighlightedAsSelected:isHighlightedAsSelected
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1906
    "display the item on the view
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1907
    "
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1908
    |x0 y0 label|
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1909
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1910
    x0 := xLeft.
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1911
    y0 := yTop.
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1912
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1913
    anItem isHierarchicalItem ifTrue:[
4703
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1914
        anItem displayOn:view x:x0 y:y0 h:h isHighlightedAsSelected:isHighlightedAsSelected
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1915
    ] ifFalse:[
4703
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1916
        anItem isNil ifTrue:[^ self].
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1917
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1918
        y0    := y0 - (((self heightFor:anItem) + 1 - h) // 2).
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1919
        label := anItem.
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1920
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1921
        label isImageOrForm ifFalse:[
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1922
            label isNumber ifTrue:[
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1923
                label := label printString
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1924
            ].
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1925
            y0 := y0 + view font ascent
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1926
        ].
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  1927
        label displayOn:view x:x0 y:y0
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1928
    ].
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1929
!
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1930
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1931
postRedrawX:damageX y:yStartOrYDamage w:damageWidth from:startOrNil to:stopOrNil
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1932
    "called after redraw of the items in range from start to stop is done;
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1933
     if no items are damaged, start and stop is set to nil.
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1934
    "
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1935
!
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1936
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1937
validateDrawableItemsFrom:start to:stop
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1938
    "called before drawing items from start to stop; if the method returns false
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1939
     nothing will be drawn and a invalidate is pushed on the event queue.
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1940
     On default true is returned.
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1941
    "
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1942
    ^ true
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1943
! !
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1944
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1945
!ListModelView::Renderer methodsFor:'instance creation'!
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1946
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1947
forView:aView
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1948
    view := aView.
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1949
    view shown ifTrue:[ self mapped ].
2643
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1950
!
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1951
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1952
mapped
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1953
    "called if the view is mapped; can be redefined by subclass
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1954
    "
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1955
!
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1956
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1957
release
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1958
    "called if the view is gone; can be redefined by subclass
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1959
    "
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1960
! !
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1961
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1962
!ListModelView::Renderer methodsFor:'queries-dimensions'!
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1963
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1964
heightFor:anItem
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1965
    "returns the height of an item on the view
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1966
    "
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1967
    ^ anItem heightOn:view
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1968
!
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1969
2643
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1970
maxItemWidthOrNil
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1971
    "returns the maximum item width for drawing or nil
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1972
     if unspecified (the default); used for cliping
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1973
    "
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1974
    ^ nil
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1975
!
8db56678dc19 prepared for table
ca
parents: 2640
diff changeset
  1976
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1977
widthFor:anItem
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1978
    "returns the width of an item on the view
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1979
    "
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1980
    ^ anItem widthOn:view
2644
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1981
!
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1982
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1983
widthOfWidestLineBetween:firstLine and:lastLine
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1984
    "returns the width of the longest line in pixels in a range; if the rendere
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1985
     cannot compute the width, nil is returned (the default).
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1986
    "
78ca3bd5eef1 prepared for table
ca
parents: 2643
diff changeset
  1987
    ^ nil
2352
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1988
! !
c4610dae596e prepared for ListItemRenderer
ca
parents: 2329
diff changeset
  1989
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  1990
!ListModelView::TableRenderer class methodsFor:'defaults'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  1991
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  1992
dragCursor
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  1993
    "returns the cursor used to highliggt the drag can start operation
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  1994
    "
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  1995
    ^ Cursor leftRightArrow
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  1996
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  1997
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  1998
separatorOneDColor
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  1999
    "answer the color used for drawing separators"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2000
4645
bda038fdd045 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4635
diff changeset
  2001
    ^ Color lightGray
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2002
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2003
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2004
!ListModelView::TableRenderer methodsFor:'accessing'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2005
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2006
columnDescriptors:aSeqOfColumnSpecs
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2007
    "setup column descriptions for a sequence of DataSetColumnSpec's but still keep
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2008
     the receiver which provides the selectors called by the DataSetColumnSpec.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2009
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2010
     If the receiver is nil, the item into the list is invoked"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2011
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2012
    self columnDescriptors:aSeqOfColumnSpecs receiver:receiver.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2013
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2014
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2015
columnDescriptors:aSeqOfColumnSpecs receiver:aReceiver
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2016
    "setup column descriptions for a sequence of DataSetColumnSpec's and the
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2017
     receiver which provides the selectors called by the DataSetColumnSpec.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2018
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2019
     If the receiver is nil, the item into the list is invoked"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2020
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2021
    receiver := aReceiver.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2022
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2023
    minimumRequiredColumnHeight := 0.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2024
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2025
    aSeqOfColumnSpecs size == 0 ifTrue:[
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2026
        columnDescriptors := #().
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2027
    ] ifFalse:[
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2028
        columnDescriptors := aSeqOfColumnSpecs collect:[:aColumnSpec|
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2029
            ColumnDescriptor dataSetColumnSpec:aColumnSpec
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2030
        ].
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2031
        columnDescriptors keysAndValuesDo:[:colNr :spec|
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2032
            spec columnNumber:colNr.
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2033
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2034
            minimumRequiredColumnHeight :=
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2035
                    minimumRequiredColumnHeight max:(spec minimumRequiredColumnHeight).
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2036
        ].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2037
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2038
    hasFixedItemWidth := attributes at:#hasFixedItemWidth ifAbsent:[false].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2039
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2040
    self initializeSplitbars.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2041
    self splitbarsChanged
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2042
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2043
    "Modified: / 24-04-2013 / 13:32:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2044
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2045
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2046
numberOfColumns
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2047
    "answer the numbers of columns excluding the items row"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2048
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2049
    ^ columnDescriptors size
4204
efb428640011 class: ListModelView::TableRenderer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4201
diff changeset
  2050
!
efb428640011 class: ListModelView::TableRenderer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4201
diff changeset
  2051
efb428640011 class: ListModelView::TableRenderer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4201
diff changeset
  2052
xSplitbars
efb428640011 class: ListModelView::TableRenderer
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4201
diff changeset
  2053
    ^ xSplitbars
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2054
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2055
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2056
!ListModelView::TableRenderer methodsFor:'accessing-look'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2057
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2058
defaultWidthForItem
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2059
    "answer the default witdth of the item before the first column"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2060
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2061
    ^ attributes at:#defaultWidthForItem ifAbsent:[ 100 ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2062
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2063
4323
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2064
defaultWidthForItem:anIntegerOrFloat
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2065
    "Set the default witdth of the item before the first column.
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2066
     If `anIntegerOrFloat` is 
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2067
        - an integer then the width is absolute width in pixels
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2068
        - a float in <0.0, 1,1> then the width is percentage
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2069
          of view's width
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2070
    "
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2071
    anIntegerOrFloat isFloat ifTrue:[
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2072
        self assert: (anIntegerOrFloat between: 0.0 and: 1.0)
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2073
    ].
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2074
    ^ attributes at:#defaultWidthForItem put:anIntegerOrFloat.
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2075
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2076
    "Modified: / 12-08-2013 / 12:20:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2077
!
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2078
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2079
defaultWidthForItemInPixels
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2080
    "Answer the default witdth of the item before the first column in pixels"
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2081
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2082
    | w |
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2083
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2084
    w := self defaultWidthForItem.
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2085
    w isFloat ifTrue:[
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2086
        w := (view width * w) rounded.
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2087
    ].
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2088
    ^ w
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2089
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2090
    "Created: / 12-08-2013 / 12:16:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2091
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2092
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2093
noAutoResizeForRowOfItems
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2094
    "the first row which keeps the items are not automaticaly resized
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2095
     when width of items changed"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2096
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2097
    hasFixedItemWidth := true.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2098
    attributes at:#hasFixedItemWidth put:true.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2099
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2100
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2101
separatorOneDColor
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2102
    "answer the color used for drawing separators"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2103
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2104
    separatorOneDColor isNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2105
	separatorOneDColor := self class separatorOneDColor.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2106
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2107
	(view notNil and:[view realized]) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2108
	    separatorOneDColor := separatorOneDColor onDevice:(view device).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2109
	].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2110
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2111
    ^ separatorOneDColor
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2112
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2113
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2114
showHorizontalSeparators
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2115
    "answer true if horizontal separators are drawn"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2116
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2117
    ^ attributes at:#showHorizontalSeparators ifAbsent:[ true ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2118
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2119
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2120
showHorizontalSeparators:aBoolean
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2121
    "set true if horizontal separators are drawn"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2122
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2123
    attributes at:#showHorizontalSeparators put:aBoolean.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2124
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2125
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2126
showHorizontalSeparatorsForItem
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2127
    "answer true if horizontal separators is drawn for the item row"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2128
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2129
    ^ attributes at:#showHorizontalSeparatorsForItem ifAbsent:[ true ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2130
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2131
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2132
showHorizontalSeparatorsForItem:aBoolean
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2133
    "set true if horizontal separators is drawn for the item row"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2134
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2135
    attributes at:#showHorizontalSeparatorsForItem put:aBoolean.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2136
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2137
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2138
showItemInAdditionToColumns
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2139
    "Return, whether the item itseld should be shown in addition to 
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2140
     columns (default)"
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2141
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2142
    ^attributes at:#showVerticalSplitbarsBelowContents ifAbsent:[ true ]
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2143
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2144
    "Created: / 24-04-2013 / 13:26:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2145
!
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2146
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2147
showItemInAdditionToColumns:aBoolean
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2148
    "If set to troe, the implicit forst column is shown (old behaviour).
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2149
     When false, only column are shown"
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2150
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2151
    | old |
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2152
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2153
    old := self showItemInAdditionToColumns.
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2154
    old == self ifTrue:[ ^ self ].
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2155
    attributes at:#showVerticalSplitbarsBelowContents put:aBoolean.
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2156
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2157
    "Created: / 24-04-2013 / 13:24:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2158
!
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2159
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2160
showVerticalSplitbars
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2161
    "answer true if vertical separators are drawn"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2162
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2163
    ^ attributes at:#showVerticalSplitbars ifAbsent:[ true ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2164
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2165
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2166
showVerticalSplitbars:aBoolean
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2167
    "set true if vertical separators are drawn"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2168
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2169
    attributes at:#showVerticalSplitbars put:aBoolean.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2170
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2171
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2172
showVerticalSplitbarsBelowContents
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2173
    "answer true if the vertical separators are drawn below last row"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2174
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2175
    ^ attributes at:#showVerticalSplitbarsBelowContents ifAbsent:[ false ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2176
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2177
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2178
showVerticalSplitbarsBelowContents:aBoolean
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2179
    "set true if the vertical separators are drawn below last row"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2180
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2181
    attributes at:#showVerticalSplitbarsBelowContents put:aBoolean.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2182
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2183
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2184
splitbarInset
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2185
    "returns the horizontal left and right inset of the splitbar"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2186
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2187
    ^ 2
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2188
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2189
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2190
textStartLeft
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2191
    "used when drawing the last separator;
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2192
     workaround when drawing the selection frame"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2193
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2194
    ^ 2
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2195
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2196
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2197
!ListModelView::TableRenderer methodsFor:'actions'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2198
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2199
moveSplitbarAt:aSepIndex toAbsoluteX:x
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2200
    "move the position of the separator at an index to absolute position x;
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2201
     used to drag splitbars"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2202
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2203
    |xOld xNew xPrv deltaX xAbsoluteOfFirstSplitbar|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2204
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2205
    aSepIndex == 1 ifTrue:[
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2206
        hasFixedItemWidth := true.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2207
        xPrv := view margin.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2208
    ] ifFalse:[
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2209
        xPrv := xSplitbars at:(aSepIndex - 1).
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2210
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2211
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2212
    aSepIndex == 1 ifTrue:[
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2213
        hasFixedItemWidth := true.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2214
        xPrv := view margin.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2215
    ] ifFalse:[
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2216
        xPrv := xSplitbars at:(aSepIndex - 1).
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2217
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2218
    xOld := xSplitbars at:aSepIndex.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2219
    xNew := x max:xPrv.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2220
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2221
    deltaX := xNew - xOld.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2222
    deltaX = 0 ifTrue:[ ^ self ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2223
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2224
    xAbsoluteOfFirstSplitbar := xSplitbars at:1.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2225
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2226
    xSplitbars from:aSepIndex keysAndValuesDo:[:sepIdx :sepX|
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2227
        xSplitbars at:sepIdx put:(sepX + deltaX).
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2228
    ].
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2229
    aSepIndex ~~ 1 ifTrue:[
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2230
        (columnDescriptors at: aSepIndex - 1) width: (xSplitbars at: aSepIndex) - (xSplitbars at: aSepIndex - 1) - (self splitbarInset * 2).
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2231
    ].
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2232
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2233
    view setWidthOfContents:(xSplitbars last).
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2234
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2235
    view shown ifTrue:[
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2236
        |damage width height orgX|
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2237
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2238
        view windowGroup processRealExposeEventsFor:self.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2239
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2240
        width  := view width.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2241
        height := view height.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2242
        orgX   := view viewOrigin x.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2243
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2244
        xNew := ((xNew - orgX) max:0) min:width.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2245
        xOld := ((xOld - orgX) max:0) min:width.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2246
        xPrv := ((xPrv - orgX) max:0) min:width.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2247
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2248
        xOld > xNew ifTrue:[                                    "/ <- copy to left
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2249
            deltaX := xOld - xNew.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2250
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2251
            view copyFrom:view x:xOld y:0 toX:xNew y:0
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2252
                    width:(width - xOld) height:height.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2253
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2254
            damage := Rectangle left:(width - deltaX) top:0 width:deltaX height:height.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2255
            view invalidateDeviceRectangle:damage repairNow:false.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2256
        ] ifFalse:[
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2257
            xOld < xNew ifTrue:[                                "/ -> copy to right
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2258
                view copyFrom:view x:xOld y:0 toX:xNew y:0
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2259
                        width:(width - xNew) height:height.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2260
            ].
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2261
        ].
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2262
        xNew > xPrv ifTrue:[
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2263
            "/ should not invalidate the items display range..."
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2264
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2265
            xAbsoluteOfFirstSplitbar := xAbsoluteOfFirstSplitbar - self splitbarInset.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2266
            xPrv := (xPrv max:xAbsoluteOfFirstSplitbar).
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2267
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2268
            xNew > xPrv ifTrue:[
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2269
                damage := Rectangle left:xPrv top:0 width:(xNew -xPrv) height:height.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2270
                view invalidateDeviceRectangle:damage repairNow:false.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2271
            ].
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2272
        ].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2273
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2274
    view contentsChanged.
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2275
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2276
    "Modified: / 07-05-2013 / 20:55:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2277
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2278
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2279
!ListModelView::TableRenderer methodsFor:'change & update'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2280
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2281
sizeChanged:how
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2282
    view sensor pushUserEvent:#sizeChangedDelayed: for:self withArgument:how
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2283
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2284
    "Created: / 07-05-2013 / 18:32:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2285
!
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2286
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2287
sizeChangedDelayed:how
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2288
    self initializeSplitbars.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2289
    self splitbarsChanged.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2290
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2291
    "Created: / 07-05-2013 / 18:37:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2292
!
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2293
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2294
splitbarsChanged
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2295
    "called if the splitbars has changed; recompute the width of contents"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2296
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2297
    view notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2298
	|newWidth oldWidth|
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2299
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2300
	oldWidth := view getWidthOfContents.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2301
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2302
	oldWidth notNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2303
	    newWidth := xSplitbars last.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2304
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2305
	    newWidth ~= oldWidth ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2306
		view setWidthOfContents:newWidth.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2307
		view contentsChanged.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2308
	    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2309
	    view invalidate.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2310
	].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2311
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2312
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2313
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2314
withinUpdateFromListDo:aBlock
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2315
    "handle an change & update within the view"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2316
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2317
    |xAbs|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2318
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2319
    xAbs := xSplitbars last.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2320
    super withinUpdateFromListDo:aBlock.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2321
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2322
    xAbs ~~ xSplitbars last ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2323
	self splitbarsChanged
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2324
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2325
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2326
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2327
!ListModelView::TableRenderer methodsFor:'displaying'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2328
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2329
drawColumnsFrom:start to:stop x:xDmg y:yStart w:wDmg
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2330
    "draw columns from start to stop.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2331
     if the start/stop index is nil, than no row is affected by the damage."
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2332
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2333
    |xNxt xMax xTrs clip y0 y1 x0 x1 hgFgColor hgBgColor fgColor bgColor colInset
3722
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2334
    shownSelected numSplitbars|
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2335
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2336
    start isNil ifTrue:[^ self].
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2337
    numSplitbars := xSplitbars size.
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2338
    numSplitbars > 1 ifFalse:[^ self].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2339
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2340
    xTrs := view viewOrigin x.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2341
    xMax := xDmg + wDmg.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2342
    xNxt := xSplitbars first - xTrs.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2343
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2344
    xNxt >= xMax ifTrue:[^ self].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2345
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2346
    view hasSelection ifTrue:[
3909
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2347
        hgFgColor := view hilightForegroundColor.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2348
        hgBgColor := view hilightBackgroundColor.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2349
    ].
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2350
    fgColor := view foregroundColor.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2351
    bgColor := view backgroundColor.
4478
7d68fb3be177 class: ListModelView
Stefan Vogel <sv@exept.de>
parents: 4337
diff changeset
  2352
    clip    := view clippingBoundsOrNil.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2353
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2354
    clip isNil ifTrue:[
3909
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2355
        clip := Rectangle left:xDmg top:yStart width:wDmg height:(view height - yStart).
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2356
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2357
    colInset := self splitbarInset.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2358
3722
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2359
    2 to:numSplitbars do:[:anIndex|
3909
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2360
        |clipLft clipRgt colWdth colDesc|
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2361
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2362
        xNxt < xMax ifFalse:[^ self].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2363
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2364
        x0   := xNxt.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2365
        xNxt := (xSplitbars at:anIndex) - xTrs.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2366
        x1   := xNxt.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2367
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2368
        "/ workaround due to drawing the selection frame
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2369
        anIndex == numSplitbars ifTrue:[ x1 := x1 + self textStartLeft ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2370
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2371
        colDesc := columnDescriptors at:(anIndex - 1) ifAbsent:[ ^ self ].    "/ can give up...
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2372
        clipLft := x0 max:xDmg.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2373
        clipRgt := x1 min:xMax.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2374
        colWdth := x1 - x0.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2375
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2376
        (colWdth > 2 and:[clipLft < clipRgt]) ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2377
            clip := clip copy.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2378
            clip setLeft:clipLft.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2379
            clip right:clipRgt.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2380
            view clippingRectangle:clip.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2381
            y1 := yStart.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2382
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2383
            start to:stop do:[:aRowNr| 
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2384
                |recv|
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2385
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2386
                y0   := y1.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2387
                y1   := view yVisibleOfLine:(aRowNr + 1).
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2388
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2389
                recv := receiver.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2390
                recv isNil ifTrue:[ recv := view at:aRowNr ifAbsent:nil ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2391
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2392
                recv notNil ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2393
                    (hgFgColor notNil and:[view isInSelection:aRowNr]) ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2394
                        shownSelected := true.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2395
                        view paint:hgFgColor on:hgBgColor
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2396
                    ] ifFalse:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2397
                        shownSelected := false.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2398
                        view paint:fgColor on:bgColor.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2399
                    ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2400
                    colDesc
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2401
                        drawRowAt:aRowNr
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2402
                        shownSelected:shownSelected
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2403
                        receiver:recv
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2404
                        x:x0 + colInset
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2405
                        y:y0
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2406
                        w:colWdth - colInset - colInset
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2407
                        h:(y1 - y0) on:view.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2408
                ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2409
            ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2410
        ].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2411
    ].
3909
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2412
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2413
    "Modified: / 16-06-2010 / 16:34:32 / cg"
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2414
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2415
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2416
drawHorizontalSeparatorsX:x y:y w:w from:start to:stop
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2417
    "draw horizontal seperators from start to stop.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2418
     if the start/stop index is nil, than no row is affected by the damage."
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2419
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2420
    |x1 ySep clipRec x0|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2421
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2422
    start isNil ifTrue:[ ^ self ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2423
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2424
    "/ workaround due to drawing the selection frame
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2425
    x1 := self xVisibleOfLastSplitbar + self textStartLeft.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2426
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2427
    x1 := x1 min:(x + w).
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2428
    x1 <= x ifTrue:[^ self].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2429
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2430
    x0 := x.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2431
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2432
    self showHorizontalSeparatorsForItem ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2433
	x0 := x0 max:(self xVisibleOfSplitbarAt:1).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2434
	x1 <= x0 ifTrue:[^ self].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2435
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2436
    clipRec := Rectangle left:x0 top:0 right:x1 bottom:(view height).
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2437
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2438
    view clippingRectangle:clipRec.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2439
    view paint:(self separatorOneDColor).
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2440
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2441
    start to:stop do:[:aRowNr|
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2442
	ySep := (view yVisibleOfLine:(aRowNr + 1)) - 1.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2443
	view displayLineFromX:x0 y:ySep toX:x1 y:ySep.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2444
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2445
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2446
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2447
drawVerticalSplitbarsX:x0 y:y0 w:w from:start to:stop
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2448
    "draw vertical splitbars"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2449
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2450
    |x x1 vX y1 clipRec nrOfSep|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2451
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2452
    nrOfSep := xSplitbars size.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2453
    nrOfSep == 0 ifTrue:[^ self].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2454
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2455
    "/ workaround for textStartTop
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2456
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2457
    y1 := view height.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2458
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2459
    self showVerticalSplitbarsBelowContents ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2460
	stop isNil ifTrue:[^ self].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2461
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2462
	y1 := y1 min:(view yVisibleOfLine:(stop + 1)).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2463
	y1 <= y0 ifTrue:[ ^ self ].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2464
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2465
    x1 := x0 + w.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2466
    vX := view viewOrigin x.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2467
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2468
    xSplitbars keysAndValuesDo:[:anIndex :physY|
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2469
	(self showVerticalSplitbarAt:anIndex) ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2470
	    x := physY - vX.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2471
	    x > x1 ifTrue:[^ self]. "/ can giveup - behind max x1
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2472
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2473
	    anIndex == nrOfSep ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2474
		"/ workaround due to drawing the selection frame
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2475
		x := x + self textStartLeft
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2476
	    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2477
	    x >= x0  ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2478
		clipRec isNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2479
		    "/ first time to setup clipping and colors
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2480
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2481
		    clipRec := Rectangle left:x0 top:y0 right:x1 bottom:y1.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2482
		    view clippingRectangle:clipRec.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2483
		    view paint:(self separatorOneDColor).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2484
		].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2485
		view displayLineFromX:x y:y0 toX:x y:y1.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2486
	    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2487
	].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2488
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2489
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2490
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2491
postRedrawX:x y:y w:w from:start to:stop
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2492
    "draw columns and than the splitbars"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2493
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2494
    self drawColumnsFrom:start to:stop x:x y:y w:w.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2495
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2496
    self showHorizontalSeparators ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2497
	self drawHorizontalSeparatorsX:x y:y w:w from:start to:stop.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2498
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2499
    self showVerticalSplitbars ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2500
	self drawVerticalSplitbarsX:x y:y w:w from:start to:stop.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2501
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2502
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2503
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2504
validateDrawableItemsFrom:start to:stop
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2505
    "called before drawing the items in range from start to stop; the
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2506
     renderer can perform some tests whether the draw operation might
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2507
     fail; width, ... might change during draw.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2508
     If a test failed, the renderer should repair the failed test and
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2509
     return false. In this case a full redraw is done.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2510
     On default true is returned."
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2511
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2512
    |xLastOld xLastNew|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2513
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2514
    xLastOld := xSplitbars last.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2515
    xLastNew := self widthOfWidestLineBetween:start and:stop.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2516
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2517
    xLastNew == xLastOld ifTrue:[^ true].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2518
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2519
    self splitbarsChanged.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2520
    ^ false
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2521
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2522
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2523
!ListModelView::TableRenderer methodsFor:'enumerating'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2524
3722
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2525
columnDescriptorsDo:aOneArgBlock
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2526
    columnDescriptors size > 0 ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2527
	columnDescriptors do:aOneArgBlock.
3722
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2528
    ].
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2529
!
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2530
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2531
columnDescriptorsKeysAndValuesDo:aTwoArgBlock
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2532
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2533
    columnDescriptors size > 0 ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2534
	columnDescriptors keysAndValuesDo:aTwoArgBlock.
3722
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2535
    ].
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2536
!
a962de66d7b5 *** empty log message ***
ca
parents: 3721
diff changeset
  2537
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2538
xSplitbarsDo:aOneArgblock
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2539
    "evaluate a block on each x splitbar position
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2540
    "
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2541
    ^ xSplitbars do:aOneArgblock.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2542
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2543
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2544
xSplitbarsKeysAndValuesDo:aTwoArgblock
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2545
    "evaluate a block on each x splitbar index and position
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2546
    "
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2547
    ^ xSplitbars keysAndValuesDo:aTwoArgblock.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2548
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2549
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2550
!ListModelView::TableRenderer methodsFor:'event processing'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2551
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2552
addEventHook
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2553
    "add event hook to window group"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2554
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2555
    |winGrp|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2556
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2557
    view notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2558
	winGrp := view windowGroup.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2559
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2560
	winGrp notNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2561
	    view enableMotionEvents.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2562
	    winGrp addPreEventHook:self.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2563
	].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2564
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2565
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2566
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2567
processEvent:ev
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2568
    "only handled if drag splitbar is enabled"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2569
4168
e204a2320df0 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
  2570
    <resource: #keyboard (#Escape )>
e204a2320df0 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
  2571
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2572
    ev isInputEvent ifFalse:[^ false].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2573
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2574
    dragOperation notNil ifTrue:[
3909
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2575
        dragOperation value:ev.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2576
        ^ true
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2577
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2578
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2579
    (view shown
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2580
    and:[ev view == view
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2581
    and:[(ev isButtonPressEvent or:[ev isButtonMotionEvent])
3909
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2582
    and:[((ev button ~= 2) and:[ev button ~= #menu])]]]) ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2583
        |splitBarColIndex colIndex phyX colX descr|
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2584
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2585
        splitBarColIndex := self xVisibleToSplitbar:(ev x).
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2586
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2587
        (splitBarColIndex > 0 and:[self showVerticalSplitbarsBelowContents not]) ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2588
            "/ test whether y is below contents....
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2589
            ev y > (view heightOfContents - view viewOrigin y) ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2590
                splitBarColIndex := 0
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2591
            ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2592
        ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2593
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2594
        ev isButtonPressEvent ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2595
            splitBarColIndex < 1 ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2596
                "/ see if a title-column has been clicked on...
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2597
                colIndex := self xAbsoluteToColumnIndex:(ev x). 
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2598
                (colIndex > 0 and:[colIndex <= columnDescriptors size]) ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2599
                    descr := columnDescriptors at:colIndex.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2600
                    descr := descr dataSetColumnSpec.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2601
                    descr isSortable ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2602
                        "/ see if clicked in the top-row; sort as appropriate...
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2603
self breakPoint:#todo.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2604
                    ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2605
                ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2606
                ^ false
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2607
            ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2608
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2609
            colX := self xAbsoluteOfSplitbarAt:splitBarColIndex.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2610
            phyX := ev x.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2611
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2612
            dragOperation := [:event|
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2613
                event isKeyEvent ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2614
                    event rawKey == #Escape ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2615
                        dragOperation := nil.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2616
                        self moveSplitbarAt:splitBarColIndex toAbsoluteX:colX.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2617
                    ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2618
                ] ifFalse:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2619
                    event isButtonPressEvent ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2620
                        dragOperation := nil.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2621
                        self moveSplitbarAt:splitBarColIndex toAbsoluteX:colX.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2622
                    ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2623
                    event isButtonReleaseEvent ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2624
                        dragOperation := nil.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2625
                    ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2626
                    event isButtonMotionEvent ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2627
                        (view sensor hasExposeEventFor:nil) ifFalse:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2628
                            self
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2629
                                moveSplitbarAt:splitBarColIndex
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2630
                                toAbsoluteX:(colX + (event x) - phyX).
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2631
                        ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2632
                    ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2633
                ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2634
            ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2635
            ^ true
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2636
        ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2637
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2638
        splitBarColIndex == 0 ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2639
            savedCursor notNil ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2640
                view cursor:savedCursor.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2641
                savedCursor := nil.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2642
            ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2643
        ] ifFalse:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2644
            savedCursor isNil ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2645
                savedCursor := view cursor.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2646
                view cursor:dragCursor.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2647
            ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2648
        ].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2649
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2650
    ^ false
3909
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2651
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2652
    "Modified: / 16-06-2010 / 16:35:41 / cg"
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2653
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2654
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2655
removeEventHook
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2656
    "release my event hook"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2657
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2658
    |winGrp|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2659
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2660
    view notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2661
	winGrp := view windowGroup.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2662
	winGrp notNil ifTrue:[ winGrp removePreEventHook:self ].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2663
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2664
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2665
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2666
!ListModelView::TableRenderer methodsFor:'initialization'!
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2667
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2668
initializeSplitbars
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2669
    | xInset numCols xOffset widths |
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2670
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2671
    xInset      := 2 * self splitbarInset.
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2672
    numCols     := columnDescriptors size.
4323
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2673
    xOffset     := self showItemInAdditionToColumns ifTrue:[self defaultWidthForItemInPixels] ifFalse:[0].
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2674
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2675
    xSplitbars  := Array new:(numCols + 1).
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2676
    xSplitbars at:1 put:xOffset.
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2677
4323
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2678
    widths := self computeColumnWidthsWithXOffset: xOffset .
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2679
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2680
    1 to:numCols do:[:aColNr|
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2681
        xOffset := xOffset + xInset + (widths at: aColNr).
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2682
        xSplitbars at:(aColNr + 1) put:xOffset.
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2683
    ].
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2684
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2685
    "Created: / 24-04-2013 / 13:32:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4323
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2686
    "Modified: / 12-08-2013 / 12:16:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2687
! !
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2688
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2689
!ListModelView::TableRenderer methodsFor:'instance creation'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2690
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2691
forView:aView
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2692
    "setup instance for a view;
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2693
     setup my default columnDescription"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2694
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2695
    attributes isNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2696
	attributes := IdentityDictionary new.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2697
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2698
    self columnDescriptors:nil.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2699
    super forView:aView.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2700
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2701
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2702
mapped
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2703
    "install event hook and enable motion events
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2704
    "
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2705
    view notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2706
	dragCursor isNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2707
	    dragCursor := self class dragCursor onDevice:(view device).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2708
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2709
	separatorOneDColor notNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2710
	    separatorOneDColor := separatorOneDColor onDevice:(view device).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2711
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2712
	self isDragEnabled ifTrue:[ self addEventHook ].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2713
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2714
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2715
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2716
release
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2717
    "release event hook
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2718
    "
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2719
    self removeEventHook.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2720
    super release.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2721
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2722
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2723
!ListModelView::TableRenderer methodsFor:'private'!
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2724
4323
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2725
computeColumnWidthsWithXOffset: xoffset
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2726
    | done widthsFixed widths viewW remainingW nCols flexSum flexUnit |
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2727
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2728
    done := false.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2729
    nCols := columnDescriptors size.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2730
    nCols == 0 ifTrue:[ ^#() ].
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2731
    widthsFixed := Array new: nCols.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2732
    widths := Array new: nCols.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2733
    viewW := view width - 
4323
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2734
             (xoffset) -
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2735
             (self splitbarInset * nCols * 2) -
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2736
             (nCols) "splitbar width".
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2737
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2738
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2739
    [ done ] whileFalse:[
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2740
        done := true.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2741
        1 to: nCols do:[:c | 
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2742
            widths at: c put: (widthsFixed at: c) ? ((columnDescriptors at: c) width ? (columnDescriptors at: c) widthSpec)
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2743
        ].
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2744
        remainingW := viewW.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2745
        flexSum := 0.0.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2746
        1 to: nCols do:[:c | | ws |
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2747
            (ws := widths at: c) isInteger ifTrue:[
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2748
                remainingW := remainingW - ws.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2749
                widthsFixed at: c put:ws.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2750
            ] ifFalse:[
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2751
                ws isFloat ifTrue:[
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2752
                    flexSum := flexSum + ws.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2753
                ]
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2754
            ].
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2755
        ].
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2756
        remainingW := remainingW max: 0.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2757
        "/ Now, distribute remaining space to columns according their flex widths
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2758
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2759
        flexSum > 0 ifTrue:[
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2760
            flexUnit := remainingW / flexSum.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2761
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2762
            1 to: nCols do:[:c | | wflex wmin w |
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2763
                (wflex := widths at: c) isFloat ifTrue:[
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2764
                    w := (flexUnit * wflex) floor.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2765
                    wmin := (columnDescriptors at:c) widthMin.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2766
                    w < wmin ifTrue:[
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2767
                        widthsFixed at: c put: wmin.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2768
                        done := false.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2769
                    ] ifFalse:[
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2770
                        widths at: c put: w.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2771
                    ]
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2772
                ]
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2773
            ].
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2774
        ].
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2775
    ].
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2776
    ^widths
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2777
4323
c05e731505fb Support for relative width settings for first column in TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4319
diff changeset
  2778
    "Created: / 12-08-2013 / 12:14:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2779
! !
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  2780
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2781
!ListModelView::TableRenderer methodsFor:'private accessing'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2782
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2783
columnAlignmentAt:aColNr
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2784
    ^ (columnDescriptors at:aColNr) alignment
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2785
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2786
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2787
defaultColumnWidthAt:aColIndex
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2788
    ^ (columnDescriptors at:aColIndex) defaultColumnWidth
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2789
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2790
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2791
showVerticalSplitbarAt:aColIndex
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2792
    aColIndex > 1 ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2793
	^ (columnDescriptors at:(aColIndex - 1)) showVerticalSplitbar
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2794
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2795
    ^ true
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2796
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2797
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2798
!ListModelView::TableRenderer methodsFor:'queries-behavior'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2799
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2800
isDragEnabled
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2801
    "answer true if drag of separators is enabled"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2802
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2803
    ^ attributes at:#isDragEnabled ifAbsent:[ true ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2804
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2805
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2806
isDragEnabled:aBoolean
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2807
    "answer true if drag of separators is enabled"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2808
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2809
    attributes at:#isDragEnabled put:aBoolean.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2810
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2811
    aBoolean ifTrue:[ self addEventHook ]
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2812
	    ifFalse:[ self removeEventHook ].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2813
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2814
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2815
!ListModelView::TableRenderer methodsFor:'queries-dimensions'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2816
4198
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2817
boundingBoxForCellAtXAbsolute:x yAbsolute:y
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2818
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2819
    |xNxt xTrs y0 y1 x0 x1 colInset colNr rowNr numSplitbars|
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2820
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2821
    numSplitbars := xSplitbars size.
4201
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2822
    numSplitbars > 1 ifFalse:[^ nil].
4198
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2823
    colNr := self xAbsoluteToColumnIndex: x. 
4201
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2824
    colNr == 0 ifTrue:[^nil].
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2825
    rowNr := view yAbsoluteToLineNr: y.
4198
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2826
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2827
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2828
    xTrs := view viewOrigin x.
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2829
    xNxt := xSplitbars first - xTrs.
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2830
    colInset := self splitbarInset.
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2831
4199
9e655a8d339f Workaround stc bug, sigh
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4198
diff changeset
  2832
    colNr ~~ 1 ifTrue:[x0 := (xSplitbars at:colNr - 1)] ifFalse:[x0 := 0].       
4198
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2833
    x1 := (xSplitbars at:colNr) " - xTrs".
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2834
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2835
    "/ workaround due to drawing the selection frame
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2836
    colNr == numSplitbars ifTrue:[ x1 := x1 + self textStartLeft ].
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2837
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2838
4201
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2839
    y0   := view yAbsoluteOfLine:(rowNr).
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2840
    y1   := view yAbsoluteOfLine:(rowNr + 1).
4198
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2841
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2842
    ^ Rectangle 
4201
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2843
        left: x0 + colInset - (view viewOrigin x)
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2844
        top: y0 - (view viewOrigin y)
4198
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2845
        width: x1 - x0 - colInset - colInset
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2846
        height: y1 - y0 - 1 "/Separator line"
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2847
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2848
    "Created: / 17-04-2013 / 16:28:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4201
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2849
    "Modified: / 18-04-2013 / 10:12:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2850
!
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2851
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2852
boundingBoxForCellAtXVisible:x yVisible:y
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2853
    ^self boundingBoxForCellAtXAbsolute: x + view viewOrigin x yAbsolute: y + view viewOrigin y
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2854
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  2855
    "Created: / 18-04-2013 / 10:15:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4198
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2856
!
c787bd3fe1fd class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4197
diff changeset
  2857
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2858
heightFor:anItem
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2859
    "returns the height of an item on the view
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2860
    "
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2861
    |h|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2862
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2863
    h := (anItem heightOn:view) max:minimumRequiredColumnHeight.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2864
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2865
    "/ add some space for the horizontal separator
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2866
    h := h + self splitbarInset.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2867
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2868
    h odd ifTrue:[ ^ h + 1 ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2869
    ^ h
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2870
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2871
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2872
maxItemWidthOrNil
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2873
    "returns the maximum item width for drawing; the
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2874
     offset to the first splitbar minus an inset.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2875
    "
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2876
    ^ xSplitbars first - self splitbarInset.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2877
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2878
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2879
widthFor:anItem
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2880
    "returns the width of an item on the view including the columns
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2881
     but extracting the hierarchical tree inset.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2882
    "
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2883
    |xStart xStop xDiff inset|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2884
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2885
    self showItemInAdditionToColumns ifFalse:[ ^ 0 ].
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2886
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2887
    xStart := view xAbsoluteOfItem:anItem.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2888
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2889
    hasFixedItemWidth ifFalse:[
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2890
        inset := self splitbarInset.
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2891
        xStop := (anItem widthOn:view) + xStart + inset + inset.
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2892
        xDiff := xStop - xSplitbars first.
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2893
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2894
        xDiff > 0 ifTrue:[
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2895
            xDiff := xDiff + 10.        "/ add more to have less computation
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2896
            xSplitbars := xSplitbars collect:[:xSep| xSep + xDiff ].
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2897
        ].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2898
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2899
    ^ xSplitbars last - xStart
4207
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2900
a7f50b5be37c Added support for drawing only columns, not the item itself (implicit first-column)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4205
diff changeset
  2901
    "Modified: / 24-04-2013 / 13:56:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2902
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2903
3723
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2904
widthOfColumn:aColumn
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2905
    "answer the width of a column or nil"
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2906
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2907
    |index x0 x1|
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2908
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2909
    index := columnDescriptors identityIndexOf:aColumn.
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2910
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2911
    index > 0 ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2912
	(     (x0 := xSplitbars at:index       ifAbsent:nil) notNil
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2913
	 and:[(x1 := xSplitbars at:(index + 1) ifAbsent:nil) notNil])
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2914
	ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2915
	    ^ (x1 - x0 - (2 * (self splitbarInset))) max:0
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2916
	].
3723
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2917
    ].
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2918
    ^ nil
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2919
!
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2920
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2921
widthOfItemColumn
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2922
    "answer the current width of the column which holds the hierarchical
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2923
     item label."
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2924
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2925
    ^ xSplitbars at:1.
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2926
!
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  2927
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2928
widthOfWidestLineBetween:firstLine and:lastLine
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2929
    "returns the width of the longest line in pixels in a range
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2930
    "
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2931
    |item|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2932
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2933
    hasFixedItemWidth ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2934
	firstLine to:lastLine do:[:i|
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2935
	    item := view at:i ifAbsent:nil.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2936
	    item notNil ifTrue:[self widthFor:item].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  2937
	].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2938
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2939
    ^ xSplitbars last
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2940
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2941
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2942
xAbsoluteOfSplitbarAt:anIndex
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2943
    "returns the physical x of the splitbar at an index
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2944
    "
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2945
    ^ xSplitbars at:anIndex
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2946
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2947
3909
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2948
xAbsoluteToColumnIndex:absX
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2949
    "returns the column index for position x or 0 if not detected"
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2950
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2951
    |nextX|
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2952
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2953
    nextX := nil.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2954
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2955
    "/ must walk reverse because a column could have a zero width
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2956
    xSplitbars keysAndValuesReverseDo:[:index :x|
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2957
        nextX notNil ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2958
            x <= absX ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2959
                nextX >= absX ifTrue:[^ index + 1].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2960
            ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2961
        ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2962
        nextX := x.
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2963
    ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2964
    nextX notNil ifTrue:[
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2965
        nextX >= absX ifTrue:[^ 1].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2966
    ].
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2967
    ^ 0
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2968
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2969
    "Created: / 16-06-2010 / 16:25:33 / cg"
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2970
!
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2971
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2972
xAbsoluteToSplitbar:absX
3909
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2973
    "returns the splitbar index at the position x or 0 if not detected"
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2974
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2975
    |minX maxX|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2976
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2977
    minX  := absX - 2.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2978
    maxX  := absX + 2.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2979
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2980
    "/ must walk reverse because a column could have a zero width
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2981
    xSplitbars keysAndValuesReverseDo:[:index :x|
3909
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2982
        (x between:minX and:maxX) ifTrue:[^ index].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2983
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2984
    ^ 0
3909
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2985
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  2986
    "Modified: / 16-06-2010 / 16:23:12 / cg"
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2987
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2988
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2989
xVisibleOfLastSplitbar
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2990
    "answer the visible x position of the last splitBar"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2991
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2992
    ^ self xVisibleOfSplitbarAt:(xSplitbars size).
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2993
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2994
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2995
xVisibleOfSplitbarAt:anIndex
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2996
    "returns the visible x of the splitbar at an index
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2997
    "
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2998
    |x|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  2999
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3000
    x := xSplitbars at:anIndex.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3001
    ^ x - (view viewOrigin x)
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3002
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3003
4201
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  3004
xVisibleToColumnIndex:relX
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  3005
    "returns the column index for visible position x or 0 if not detected"
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  3006
    ^ self xAbsoluteToColumnIndex: relX + view viewOrigin x
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  3007
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  3008
    "Created: / 18-04-2013 / 10:15:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  3009
!
916929769f2f Added more helper methods to query cell bounding box and position
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4199
diff changeset
  3010
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3011
xVisibleToSplitbar:visX
3909
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  3012
    "returns the splitbar index at the position x or 0 if not detected"
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  3013
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3014
    ^ self xAbsoluteToSplitbar:(visX + view viewOrigin x).
3909
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  3015
2c7ef0998665 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3894
diff changeset
  3016
    "Modified: / 16-06-2010 / 16:22:56 / cg"
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3017
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3018
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3019
!ListModelView::TableRenderer::ColumnDescriptor class methodsFor:'instance creation'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3020
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3021
dataSetColumnSpec:aDataSetColumnSpec
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3022
    ^ self new dataSetColumnSpec:aDataSetColumnSpec
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3023
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3024
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3025
new
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3026
    ClipColumnQuerySignal isNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3027
	ClipColumnQuerySignal := QuerySignal new.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3028
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3029
    ^ self basicNew initialize
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3030
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3031
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3032
!ListModelView::TableRenderer::ColumnDescriptor methodsFor:'accessing'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3033
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3034
alignment
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3035
    "returns the aligmnent of the contents of the underlaying cell"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3036
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3037
    |alignment|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3038
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3039
    alignment := dataSetColumnSpec columnAlignment.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3040
    ^ alignment ? #left
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3041
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3042
3723
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  3043
dataSetColumnSpec
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  3044
    ^ dataSetColumnSpec
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  3045
!
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  3046
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  3047
dataSetColumnSpec:aDataSetColumnSpec
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  3048
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  3049
    aDataSetColumnSpec isSequenceable ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3050
	dataSetColumnSpec := DataSetColumnSpec decodeFromLiteralArray:aDataSetColumnSpec.
3723
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  3051
    ] ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3052
	dataSetColumnSpec := aDataSetColumnSpec.
3723
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  3053
    ].
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  3054
!
e3c5f00861e1 *** empty log message ***
ca
parents: 3722
diff changeset
  3055
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3056
defaultColumnWidth
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3057
    |width|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3058
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3059
    width := (dataSetColumnSpec width ? 0) max:(dataSetColumnSpec minWidth ? 0).
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3060
    width > 0 ifTrue:[^ width ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3061
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3062
    ^ 70
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3063
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3064
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3065
minimumRequiredColumnHeight
4337
b5f21412bcb0 Hack to workaround new symbolic height specifier (which is made default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4323
diff changeset
  3066
b5f21412bcb0 Hack to workaround new symbolic height specifier (which is made default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4323
diff changeset
  3067
    "Kludge because of CG's change...sigh."
b5f21412bcb0 Hack to workaround new symbolic height specifier (which is made default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4323
diff changeset
  3068
    dataSetColumnSpec height isNumber ifFalse:[ ^ 0 ].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3069
    ^ dataSetColumnSpec height ? 0
4337
b5f21412bcb0 Hack to workaround new symbolic height specifier (which is made default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4323
diff changeset
  3070
b5f21412bcb0 Hack to workaround new symbolic height specifier (which is made default)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4323
diff changeset
  3071
    "Modified: / 23-08-2013 / 17:59:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3072
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3073
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3074
showVerticalSplitbar
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3075
    "answer true if the verical splitbar is shown"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3076
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3077
    ^ dataSetColumnSpec showColSeparator ? true.
4217
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3078
!
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3079
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3080
width
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3081
    "Return 
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3082
      - width in px if the column (if explicit) 
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3083
      - nil if the width should be computed dynamically
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3084
        based on view's width
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3085
    "
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3086
    ^width
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3087
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3088
    "Modified (comment): / 07-05-2013 / 17:56:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3089
!
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3090
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3091
width:anInteger
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3092
    width := anInteger.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3093
!
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3094
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3095
widthMin
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3096
    "Return the minimal required width in px."
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3097
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3098
    ^dataSetColumnSpec minWidth
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3099
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3100
    "Created: / 07-05-2013 / 17:57:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3101
!
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3102
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3103
widthSpec
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3104
    "Return either
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3105
      - width in px as Integer or
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3106
      - relative width as Float"
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3107
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3108
    | w |
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3109
    w := dataSetColumnSpec width.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3110
    w isFloat ifTrue:[ ^ w ].
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3111
    w := w max: dataSetColumnSpec minWidth.
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3112
    w > 0 ifFalse:[
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3113
        w := 70
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3114
    ].
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3115
    ^w
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3116
806440cdc323 Initial support for flex-width columns for TableRenderer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4207
diff changeset
  3117
    "Created: / 07-05-2013 / 17:58:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3118
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3119
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3120
!ListModelView::TableRenderer::ColumnDescriptor methodsFor:'displaying'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3121
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3122
drawRowAt:aRowNr shownSelected:isShownSelected receiver:aReceiver x:x y:y w:w h:h on:aGC
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3123
    "display a column for a specific row"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3124
4197
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3125
    |deviceClipRectangle paint savedPaint label drawSelector |
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3126
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3127
    isShownSelected ifFalse:[
4197
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3128
        "/ draw the background color if required by spec..
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3129
        paint := self extractBackgroundColorFrom:aReceiver rowNr:aRowNr on:aGC.
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3130
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3131
        paint notNil ifTrue:[
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3132
            savedPaint := aGC paint.
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3133
            aGC paint:paint.
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3134
            "/ splitbarInset - draw from 0 to width of aGC (is clipped)
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3135
            aGC fillRectangleX:0 y:y width:(aGC width) height:h.
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3136
        ].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3137
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3138
    w < 5 ifTrue:[ ^ self ].    "/ makes no sense to draw the label
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3139
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3140
    label := self extractColumnFrom:aReceiver rowNr:aRowNr on:aGC.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3141
    label isEmptyOrNil ifTrue:[^ self].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3142
4197
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3143
    (drawSelector := dataSetColumnSpec drawSelector) notNil ifTrue:[
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3144
        "/ Set clip rect to make sure nobody can draw outside the cell
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3145
        deviceClipRectangle := aGC clippingRectangleOrNil.
4199
9e655a8d339f Workaround stc bug, sigh
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4198
diff changeset
  3146
        aGC clippingRectangle:(Rectangle left:x top:y width:w height:h).
4197
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3147
        drawSelector numArgs == 5 ifTrue:[
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3148
            aReceiver perform:  drawSelector with: aGC with: x with: y with: w with: h.
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3149
        ] ifFalse:[
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3150
            drawSelector numArgs == 6 ifTrue:[
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3151
                aReceiver perform:  drawSelector with: aGC with: x with: y with: w with: h with: columnNumber
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3152
            ] ifFalse:[
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3153
                self error: 'Invalid draw selector'
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3154
            ]
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3155
        ].
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3156
        aGC deviceClippingRectangle:deviceClipRectangle.
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3157
    ].
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3158
4199
9e655a8d339f Workaround stc bug, sigh
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4198
diff changeset
  3159
    drawSelector notNil ifTrue:[ ^ self ].
9e655a8d339f Workaround stc bug, sigh
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4198
diff changeset
  3160
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3161
    ClipColumnQuerySignal handle:[:ex|
4197
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3162
        deviceClipRectangle isNil ifTrue:[
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3163
            deviceClipRectangle := aGC clippingRectangleOrNil.
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3164
            aGC clippingRectangle:(Rectangle left:x top:y width:w height:h).
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3165
        ].
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3166
        ex proceedWith:true.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3167
    ] do:[
4197
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3168
        isShownSelected ifFalse:[
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3169
            paint := self extractForegroundColorFrom:aReceiver rowNr:aRowNr on:aGC.
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3170
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3171
            paint notNil ifTrue:[
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3172
                aGC paint:paint.
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3173
            ] ifFalse:[
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3174
                savedPaint notNil ifTrue:[ aGC paint:savedPaint ].
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3175
            ].
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3176
        ].
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3177
        self drawObject:label x:x y:y w:w h:h on:aGC.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3178
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3179
    deviceClipRectangle notNil ifTrue:[
4197
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3180
        aGC deviceClippingRectangle:deviceClipRectangle.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3181
    ].
4197
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3182
a3688c9c86fe Added support for custom cell rendering.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4168
diff changeset
  3183
    "Modified: / 17-04-2013 / 13:05:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3184
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3185
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3186
!ListModelView::TableRenderer::ColumnDescriptor methodsFor:'extract values'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3187
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3188
extractBackgroundColorFrom:aReceiver rowNr:aRowNr on:aView
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3189
    |color selector|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3190
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3191
    aReceiver notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3192
	selector := dataSetColumnSpec backgroundSelector.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3193
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3194
	selector notNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3195
	    color := aReceiver perform:selector withOptionalArgument:columnNumber and:aRowNr and:aView.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3196
	    color notNil ifTrue:[ ^ color ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3197
	].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3198
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3199
    ^ dataSetColumnSpec backgroundColor.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3200
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3201
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3202
extractColumnFrom:aReceiver rowNr:aRowNr on:aView
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3203
    |selector|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3204
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3205
    aReceiver notNil ifTrue:[
4205
6c0e13fa3eb7 class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4204
diff changeset
  3206
        selector := dataSetColumnSpec printSelector ? dataSetColumnSpec readSelector.
6c0e13fa3eb7 class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4204
diff changeset
  3207
6c0e13fa3eb7 class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4204
diff changeset
  3208
        selector notNil ifTrue:[
6c0e13fa3eb7 class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4204
diff changeset
  3209
            ^ aReceiver perform:selector withOptionalArgument:columnNumber and:aRowNr and:aView
6c0e13fa3eb7 class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4204
diff changeset
  3210
        ].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3211
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3212
    ^ nil
4205
6c0e13fa3eb7 class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4204
diff changeset
  3213
6c0e13fa3eb7 class: ListModelView
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 4204
diff changeset
  3214
    "Modified: / 22-04-2013 / 14:04:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3215
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3216
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3217
extractForegroundColorFrom:aReceiver rowNr:aRowNr on:aView
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3218
    |color selector|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3219
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3220
    aReceiver notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3221
	selector := dataSetColumnSpec foregroundSelector.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3222
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3223
	selector notNil ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3224
	    color := aReceiver perform:selector withOptionalArgument:columnNumber and:aRowNr and:aView.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3225
	    color notNil ifTrue:[ ^ color ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3226
	].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3227
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3228
    ^ dataSetColumnSpec foregroundColor.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3229
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3230
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3231
!ListModelView::TableRenderer::ColumnDescriptor methodsFor:'instance creation'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3232
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3233
columnNumber:aNumber
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3234
    columnNumber := aNumber.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3235
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3236
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3237
!ListModelView::TableRenderer::ColumnDescriptor methodsFor:'private displaying'!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3238
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3239
alignAndDisplay:anObject x:x y:y w:w on:aGC
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3240
    "display an object on aGC; care for alignment"
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3241
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3242
    |x0 width align|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3243
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3244
    x0    := x.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3245
    align := self alignment.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3246
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3247
    align ~~ #left ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3248
	width := anObject widthOn:aGC.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3249
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3250
	width < w ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3251
	    align == #right ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3252
		x0 := x0 + w - width
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3253
	    ] ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3254
		x0 := x0 + ((w - width) // 2)
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3255
	    ].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3256
	].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3257
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3258
    anObject displayOn:aGC x:x0 y:y.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3259
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3260
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3261
displayImage:anImage x:x y:y w:w h:h on:aGC
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3262
    "display an image on aGC; answer the height used...."
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3263
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3264
    |height|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3265
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3266
    height := anImage heightOn:aGC.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3267
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3268
    height > h ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3269
	(self queryForClipColumnWithAvailableHeight:h) ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3270
	    ^ height
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3271
	].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3272
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3273
    self alignAndDisplay:anImage x:x y:y w:w on:aGC.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3274
    ^ height
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3275
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3276
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3277
displayLabelAndIcon:aLabelAndIcon x:x y:y w:w h:h on:aGC
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3278
    "display an image on aGC; answer the height used...."
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3279
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3280
    |height|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3281
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3282
    height := aLabelAndIcon heightOn:aGC.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3283
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3284
    height > h ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3285
	(self queryForClipColumnWithAvailableHeight:h) ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3286
	    ^ height
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3287
	].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3288
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3289
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3290
    self alignAndDisplay:aLabelAndIcon x:x y:(y + aGC font ascent) w:w on:aGC.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3291
    ^ height
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3292
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3293
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3294
displayString:aString x:x y:y w:w h:h on:aGC
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3295
    "display a string on aGC; answer the height used...."
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3296
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3297
    |shortWidth font shortedLabel fontHeight|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3298
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3299
    font       := aGC font.
3719
2467d35b9a6c *** empty log message ***
ca
parents: 3717
diff changeset
  3300
    fontHeight := font height.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3301
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3302
    aString isEmptyOrNil ifTrue:[ ^ fontHeight ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3303
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3304
    (self queryForClipColumnWithAvailableHeight:h) ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3305
	^ fontHeight
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3306
    ].
3719
2467d35b9a6c *** empty log message ***
ca
parents: 3717
diff changeset
  3307
    dataSetColumnSpec longStringCompression ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3308
	shortWidth := font widthOf:aString.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3309
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3310
	shortWidth <= w ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3311
	    shortedLabel := aString.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3312
	] ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3313
	    |dottedString dottedWidth index|
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3314
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3315
	    dottedString := '...'.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3316
	    dottedWidth  := font widthOf:dottedString.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3317
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3318
	    w < dottedWidth ifTrue:[ ^ fontHeight ].   "/ give up
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3319
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3320
	    index := aString size // 2.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3321
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3322
	    [   index := index - 1.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3323
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3324
		index > 0 ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3325
		    shortedLabel := (aString copyFirst:index), '...', (aString copyLast:index).
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3326
		    shortWidth   := font widthOf:shortedLabel.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3327
		] ifFalse:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3328
		    shortedLabel := dottedString.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3329
		    shortWidth   := dottedWidth.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3330
		].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3331
		shortWidth > w
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3332
	    ] whileTrue.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3333
	].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3334
    ] ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3335
	shortedLabel := aString
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3336
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3337
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3338
    shortedLabel notNil ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3339
	self alignAndDisplay:shortedLabel x:x y:(y + aGC font ascent) w:w on:aGC.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3340
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3341
    ^ fontHeight.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3342
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3343
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3344
drawObject:anObject x:x y:y w:w h:h on:aGC
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3345
    "display any object (sequence of objects) on aGC; answer the height used...."
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3346
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3347
    |totalHeight usedHeight|
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3348
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3349
    h < 4 ifTrue:[ ^ h ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3350
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3351
    anObject isEmptyOrNil ifTrue:[ ^ 2 ]. "/ nothing to draw; add 2 pixels
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3352
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3353
    anObject isImage ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3354
	^ self displayImage:anObject x:x y:y w:w h:h on:aGC.
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3355
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3356
    anObject isString ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3357
	^ self displayString:anObject x:x y:y w:w h:h on:aGC.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3358
    ].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3359
    anObject isSequenceable ifFalse:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3360
	"/ not yet handled....
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3361
	anObject class == LabelAndIcon ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3362
	    ^ self displayLabelAndIcon:anObject x:x y:y w:w h:h on:aGC
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3363
	].
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3364
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3365
	^ self displayString:(anObject printString) x:x y:y w:w h:h on:aGC
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3366
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3367
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3368
    totalHeight := 0.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3369
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3370
    anObject do:[:aSubObj|
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3371
	totalHeight < h ifTrue:[
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3372
	    usedHeight := self
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3373
		    drawObject:aSubObj
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3374
		    x:x
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3375
		    y:(y + totalHeight)
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3376
		    w:w
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3377
		    h:(h - totalHeight)
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3378
		    on:aGC.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3379
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3380
	    totalHeight := totalHeight + usedHeight.
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3381
	].
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3382
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3383
    ^ (h - totalHeight)
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3384
!
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3385
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3386
queryForClipColumnWithAvailableHeight:anAvailableHeight
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3387
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3388
    anAvailableHeight > 8 ifTrue:[
3728
8858b3571313 oops: licenceBox dependency was missing;
sr
parents: 3723
diff changeset
  3389
	^ (ClipColumnQuerySignal query) == true
3717
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3390
    ].
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3391
    ^ false.
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3392
! !
40bfb28c04f8 prepared for table rendering
ca
parents: 3715
diff changeset
  3393
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  3394
!ListModelView class methodsFor:'documentation'!
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  3395
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  3396
version
4703
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  3397
    ^ '$Header: /cvs/stx/stx/libwidg2/ListModelView.st,v 1.149 2015-02-01 13:15:13 cg Exp $'
3891
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  3398
!
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  3399
0cce5a3615ee comment/format in: #initialize
fm
parents: 3728
diff changeset
  3400
version_CVS
4703
7fadc047104c class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 4645
diff changeset
  3401
    ^ '$Header: /cvs/stx/stx/libwidg2/ListModelView.st,v 1.149 2015-02-01 13:15:13 cg Exp $'
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  3402
! !
2244
c9a195d28e72 change #redrawLineAt: to #invalidateLineAt: (because is a invalidate)
ca
parents: 2188
diff changeset
  3403
4168
e204a2320df0 class: ListModelView
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
  3404
1390
62dc950b9140 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  3405
ListModelView initialize!