TabView.st
author Claus Gittinger <cg@exept.de>
Fri, 23 Apr 1999 14:49:20 +0200
changeset 1329 e0dff849cf82
parent 1296 ab26ea632b56
child 1346 c0e475767be6
permissions -rw-r--r--
category change
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
     1
"
dd49faa984ce intitial checkin
ca
parents:
diff changeset
     2
 COPYRIGHT (c) 1997 by eXept Software AG
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
     3
	      All Rights Reserved
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
     4
dd49faa984ce intitial checkin
ca
parents:
diff changeset
     5
 This software is furnished under a license and may be used
dd49faa984ce intitial checkin
ca
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
dd49faa984ce intitial checkin
ca
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
dd49faa984ce intitial checkin
ca
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
dd49faa984ce intitial checkin
ca
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    10
 hereby transferred.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    11
"
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    12
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    13
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    14
View subclass:#TabView
550
f4c65aff6387 remove:
ca
parents: 548
diff changeset
    15
	instanceVariableNames:'list listHolder selection enabled action tabStyle useIndex
1296
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
    16
		maxRawNr direction fitLastRow moveSelectedRow
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
    17
		selectConditionBlock oldExtent oneTabPerLine fontAscent
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
    18
		fontDescent'
550
f4c65aff6387 remove:
ca
parents: 548
diff changeset
    19
	classVariableNames:''
f4c65aff6387 remove:
ca
parents: 548
diff changeset
    20
	poolDictionaries:''
f4c65aff6387 remove:
ca
parents: 548
diff changeset
    21
	category:'Views-Interactors'
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    22
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    23
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    24
!TabView class methodsFor:'documentation'!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    25
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    26
copyright
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    27
"
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    28
 COPYRIGHT (c) 1997 by eXept Software AG
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
    29
	      All Rights Reserved
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    30
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    31
 This software is furnished under a license and may be used
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    32
 only in accordance with the terms of that license and with the
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    33
 inclusion of the above copyright notice.   This software may not
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    34
 be provided or otherwise made available to, or used by, any
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    35
 other person.  No title to or ownership of the software is
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    36
 hereby transferred.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    37
"
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    38
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    39
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    40
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    41
documentation
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    42
"
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    43
    implements the tabs-view component of a noteBook.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    44
    May also be used on its own (without a surrounding noteBook).
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    45
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    46
    The functionality is basically the same as provided by a
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    47
    PopUpList or SelectionInListView, in that a valueHolder
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    48
    gets a value assigned corresponding to the selected tab
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    49
    from a list of possible tabs.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    50
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    51
    [author:]
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
    52
	Claus Atzkern
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    53
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    54
    [see also:]
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
    55
	NoteBookView
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
    56
	SelectionInListView PopUpList ValueHolder TabWidget
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    57
"
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    58
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    59
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    60
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    61
examples
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    62
"
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    63
    tabs at top of a view
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
    64
										[exBegin]                                      
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    65
    |top tab view inset|
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    66
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    67
    top := StandardSystemView new label:'tabs at top'; extent:250@100.
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
    68
    tab  := TabView origin:0.0 @ 0.0 corner:1.0 @ 0.0 in:top.
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
    69
    view := View    origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    70
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    71
    view viewBackground:(tab styleAt:#selectedColor).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    72
    tab direction:#top.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    73
    tab list:#( 'Foo' 'Bar' 'Baz' ).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    74
    inset := tab preferredSizeXorY.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    75
    tab  bottomInset:(inset negated).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    76
    view topInset:inset.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    77
    tab action:[:aName|Transcript showCR:aName].
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    78
    top open.
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
    79
										[exEnd]
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    80
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    81
    tabs at bottom of a view; changing widget to MAC style
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
    82
										[exBegin]                                      
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    83
    |top tab view inset|
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    84
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    85
    top := StandardSystemView new label:'tabs at bottom'; extent:250@100.
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
    86
    view := View    origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
    87
    tab  := TabView origin:0.0 @ 1.0 corner:1.0 @ 1.0 in:top.
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    88
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    89
    view viewBackground:(tab styleAt:#selectedColor).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    90
    tab direction:#bottom.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    91
    tab tabWidget:#Mac.
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
    92
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    93
    tab list:#( 'Foo' 'Bar' 'Baz' ).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    94
    inset := tab preferredSizeXorY.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    95
    tab  topInset:(inset negated).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    96
    view bottomInset:inset.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    97
    tab action:[:aName|Transcript showCR:aName].
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
    98
    top open.
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
    99
										[exEnd]
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   100
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   101
    tabs at right of a view
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   102
										[exBegin]                                      
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   103
    |top tab view inset|
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   104
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   105
    top := StandardSystemView new label:'tabs at right'; extent:100@250.
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   106
    view := View    origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   107
    tab  := TabView origin:1.0 @ 0.0 corner:1.0 @ 1.0 in:top.
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   108
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   109
    view viewBackground:(tab styleAt:#selectedColor).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   110
    tab direction:#right.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   111
    tab list:#( 'Foo' 'Bar' 'Baz' ).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   112
    inset := tab preferredSizeXorY.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   113
    tab leftInset:(inset negated).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   114
    view rightInset:inset.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   115
    tab action:[:aName|Transcript showCR:aName].
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   116
    top open.
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   117
										[exEnd]
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   118
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   119
    tabs at left of a view
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   120
										[exBegin]                                      
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   121
    |top tab view inset|
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   122
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   123
    top := StandardSystemView new label:'tabs at left'; extent:100@250.
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   124
    tab  := TabView origin:0.0 @ 0.0 corner:0.0 @ 1.0 in:top.
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   125
    view := View    origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   126
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   127
    view viewBackground:(tab styleAt:#selectedColor).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   128
    tab direction:#left.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   129
    tab list:#( 'Foo' 'Bar' 'Baz' ).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   130
    inset := tab preferredSizeXorY.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   131
    tab rightInset:(inset negated).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   132
    view leftInset:inset.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   133
    tab action:[:aName|Transcript showCR:aName].
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   134
    top open.
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   135
										[exEnd]
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   136
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   137
    changing default style( see TabWidget class ); useing index
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   138
										[exBegin]                                      
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   139
    |top tab view|
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   140
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   141
    top := StandardSystemView new label:'example'; extent:450@300.
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   142
    tab := TabView origin:0.0 @ 0.0 corner:1.0 @ 40 in:top.
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   143
    tab horizontalInset:10.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   144
    view := NoteBookFrameView origin:0.0 @ 40  corner:1.0 @ 1.0 in:top.
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   145
    view horizontalInset:10.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   146
    view bottomInset:10.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   147
    view level:2.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   148
    view viewBackground:(Image fromFile:'bitmaps/gifImages/garfield.gif').
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   149
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   150
    tab styleAt:#selectedColor    put:(view viewBackground).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   151
    tab styleAt:#unselectedColor  put:(Color grey:60).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   152
    tab styleAt:#expandSelection  put:9@7.
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   153
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   154
    tab list:#( 'Foo' 'Bar' 'Baz').
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   155
    tab useIndex:true.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   156
    tab action:[:aName| Transcript showCR:aName ].
352
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
   157
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   158
    top open.
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   159
										[exEnd]
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   160
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   161
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   162
    using images and text
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   163
										[exBegin]
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   164
    |top tab view list|
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   165
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   166
    top := StandardSystemView new label:'example'.
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   167
    tab := TabView origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   168
    list := #( 'SBrowser' 'FBrowser' 'Debugger' ).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   169
    list := list collect:[:n | Image fromFile:'bitmaps/' , n , '.xbm'].
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   170
    list add:'A Text'.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   171
    tab list:list.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   172
    tab action:[:indexOrNil| Transcript showCR:indexOrNil ].
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   173
    top extent:(tab preferredExtent).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   174
    top open.
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   175
										[exEnd]
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   176
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   177
    using images and text; MAC style
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   178
										[exBegin]
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   179
    |top tab view list|
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   180
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   181
    top := StandardSystemView new label:'example'.
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   182
    tab := TabView origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   183
    tab tabWidget:#Mac.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   184
    list := #( 'SBrowser' 'FBrowser' 'Debugger' ).
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   185
    list := list collect:[:n | Image fromFile:'bitmaps/' , n , '.xbm'].
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   186
    list add:'A Text'.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   187
    tab list:list.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   188
    tab action:[:indexOrNil| Transcript showCR:indexOrNil ].
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   189
    top extent:(tab preferredExtent).
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   190
    top open.
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   191
										[exEnd]
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   192
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   193
    tabs at top of view dealing with other models
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   194
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   195
										[exBegin]
352
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
   196
    |top sel view l top2 s top3 p|
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   197
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   198
    l := SelectionInList new.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   199
    l list:#('foo' 'bar' 'baz').
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   200
    l selectionIndex:1.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   201
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   202
    top2 := StandardSystemView new.
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   203
    top2 extent:100@100.
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   204
    s := SelectionInListView origin:0.0@0.0 corner:1.0@1.0 in:top2.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   205
    s model:l.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   206
    top2 open.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   207
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   208
    top3 := StandardSystemView new.
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   209
    top3 extent:100@100.
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   210
    s := PopUpList in:top3.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   211
    s model:l.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   212
    top3 open.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   213
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   214
    top := StandardSystemView new label:'example'; extent:200@50.
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   215
    sel := TabView origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   216
    sel useIndex:true.
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   217
    sel model:(l selectionIndexHolder).
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   218
    sel listHolder:(l listHolder).
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   219
    sel action:[:indexOrNil|Transcript showCR:indexOrNil].
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   220
    top open.
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   221
										[exEnd]
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   222
"
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   223
! !
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   224
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   225
!TabView class methodsFor:'defaults'!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   226
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   227
defaultTabWidget
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   228
    ^ #Window
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   229
! !
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   230
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   231
!TabView methodsFor:'accessing'!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   232
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   233
action:oneArgBlock
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   234
    "set the action block to be performed on select; the argument to
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   235
     the block is the selected index or nil in case of no selection.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   236
    "
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   237
    action := oneArgBlock.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   238
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   239
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   240
418
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   241
backgroundColor
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   242
    ^ viewBackground
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   243
!
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   244
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   245
fontAscent
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   246
    fontAscent isNil ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   247
	fontAscent := self font ascent
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   248
    ].
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   249
    ^ fontAscent
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   250
!
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   251
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   252
fontDescent
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   253
    fontDescent isNil ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   254
	fontDescent := self font descent
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   255
    ].
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   256
    ^ fontDescent
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   257
!
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   258
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   259
list
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   260
    "return the list
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   261
    "
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   262
    ^ list
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   263
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   264
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   265
list:aList
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   266
    "set the list
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   267
    "
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   268
    |hasChanged newSel model|
376
0caf50840abd raise notification whenever list changed
ca
parents: 374
diff changeset
   269
0caf50840abd raise notification whenever list changed
ca
parents: 374
diff changeset
   270
    aList size == list size ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   271
	list notNil ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   272
	    list keysAndValuesDo:[:aKey :aTab|
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   273
		(aTab label) = (aList at:aKey) ifFalse:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   274
		    hasChanged := true
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   275
		]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   276
	    ]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   277
	].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   278
	hasChanged == true ifFalse:[^ self ].
376
0caf50840abd raise notification whenever list changed
ca
parents: 374
diff changeset
   279
    ].
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   280
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   281
    self removeListDependencies.
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   282
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   283
    aList size ~~ 0 ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   284
	(newSel := self tabAt:selection) notNil ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   285
	    newSel := newSel printableLabel
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   286
	].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   287
	list := (tabStyle at:#widget) labels:aList for:self.
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   288
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   289
	list do:[:aTab|
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   290
	    (model := aTab model) notNil ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   291
		model addDependent:self
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   292
	    ]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   293
	].
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   294
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   295
	newSel notNil ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   296
	    (newSel := list findFirst:[:aTab| aTab printableLabel = newSel]) == 0 ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   297
		newSel := nil
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   298
	    ]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   299
	].
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   300
    ] ifFalse:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   301
	list := nil.
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   302
    ].
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   303
    selection := newSel.
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   304
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   305
    self shown ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   306
	self recomputeList.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   307
	self invalidateRepairNow:true.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   308
	self changed:#preferredExtent
376
0caf50840abd raise notification whenever list changed
ca
parents: 374
diff changeset
   309
    ].
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   310
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   311
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   312
oneTabPerLine
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   313
    ^ oneTabPerLine
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   314
!
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   315
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   316
oneTabPerLine:aBool
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   317
    oneTabPerLine := aBool.
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   318
!
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   319
387
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   320
useIndex
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   321
    "use index instead of name
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   322
    "
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   323
    ^ useIndex
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   324
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   325
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   326
!
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   327
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   328
useIndex:aBoolean
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   329
    "set/clear the useIndex flag. If set, both actionBlock and change-messages
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   330
     are passed the index(indices) of the selection as argument. 
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   331
     If clear, the value(s) (i.e. the selected string) is passed.
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   332
     Default is false."
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   333
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   334
    useIndex := aBoolean
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   335
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   336
418
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   337
!
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   338
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   339
viewBackground:aColor
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   340
    "update colors
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   341
    "
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   342
    super viewBackground:aColor.
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   343
    TabWidget computeColorsOn:self style:tabStyle.
913
89cde98f845e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 873
diff changeset
   344
    shown ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   345
	self invalidate.
913
89cde98f845e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 873
diff changeset
   346
    ]
89cde98f845e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 873
diff changeset
   347
89cde98f845e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 873
diff changeset
   348
    "Modified: / 6.6.1998 / 19:55:59 / cg"
387
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   349
! !
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   350
391
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   351
!TabView methodsFor:'accessing behavior'!
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   352
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   353
enabled
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   354
    "returns true if tabs are enabled
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   355
    "
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   356
    ^ enabled
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   357
!
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   358
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   359
enabled:aState
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   360
    "set enabled state
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   361
    "
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   362
    |state|
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   363
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   364
    state := aState ? true.
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   365
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   366
    enabled ~~ state ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   367
	enabled := state.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   368
	self redrawLabels.
391
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   369
    ]
397
06f612dc5a30 ST-80 compatibility
ca
parents: 394
diff changeset
   370
!
06f612dc5a30 ST-80 compatibility
ca
parents: 394
diff changeset
   371
670
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   372
selectConditionBlock
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   373
    "get the conditionBlock; this block is evaluated before a selection
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   374
     change is performed; the change will not be done, if the evaluation
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   375
     returns false. The argument to the block is the selection index
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   376
    "
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   377
    ^ selectConditionBlock
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   378
!
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   379
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   380
selectConditionBlock:aOneArgBlock
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   381
    "get the conditionBlock; this block is evaluated before a selection
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   382
     change is performed; the change will not be done, if the evaluation
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   383
     returns false. The argument to the block is the selection index
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   384
    "
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   385
    selectConditionBlock := aOneArgBlock
391
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   386
! !
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   387
387
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   388
!TabView methodsFor:'accessing channels/holders'!
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   389
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   390
listHolder
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   391
    "returns the list holder
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   392
    "
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   393
    ^ listHolder
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   394
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   395
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   396
listHolder:aValueHolder
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   397
    "change the list holder
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   398
    "
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   399
    listHolder notNil ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   400
	listHolder removeDependent:self. 
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   401
    ].
387
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   402
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   403
    listHolder := aValueHolder.
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   404
    listHolder notNil ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   405
	listHolder addDependent:self.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   406
	self list:listHolder value.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   407
	self selection:model value.
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   408
    ].
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   409
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   410
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   411
model:aValueHolder
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   412
    super model:aValueHolder.
500
ec7b1892ae3e bug fix; in case of using index, an empty
ca
parents: 499
diff changeset
   413
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   414
    model notNil ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   415
	self selection:(model value)
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   416
    ]
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   417
! !
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   418
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   419
!TabView methodsFor:'accessing dimension'!
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   420
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   421
preferredExtent
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   422
    "compute max extent x/y based on one line
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   423
    "
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   424
    |x y ovl size maxY|
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   425
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   426
    (size := list size) == 0 ifTrue:[^ 0 @ 0 ].
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   427
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   428
    maxY := tabStyle at:#maxY.
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   429
    y    := maxY + self viewSpacing.
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   430
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   431
    oneTabPerLine ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   432
	y := y + ((size - 1) * maxY).
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   433
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   434
	(self isHorizontalDirection) ifTrue:[x := super extent x]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   435
				    ifFalse:[x := super extent y]
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   436
    ] ifFalse:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   437
	x := ovl := tabStyle at:#rightCovered.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   438
	list do:[:aTab|x := x - ovl + aTab preferredExtentX]
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   439
    ].
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   440
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   441
    (self isHorizontalDirection) ifTrue:[^ x @ y]
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   442
				ifFalse:[^ y @ x]
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   443
!
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   444
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   445
preferredSizeXorY
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   446
    "returns preferred size dependant on the current view layout and
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   447
     the direction of the tabs
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   448
    "
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   449
    list size == 0 ifFalse:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   450
	maxRawNr isNil ifTrue:[self recomputeList].
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   451
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   452
	oneTabPerLine ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   453
	    self isHorizontalDirection ifTrue:[^ super extent y]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   454
				      ifFalse:[^ super extent x]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   455
	].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   456
	^ ((maxRawNr * (tabStyle at:#maxY)) + self viewSpacing).
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   457
    ].
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   458
    ^ 0
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   459
!
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   460
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   461
viewSpacing
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   462
    "returns my view spacing
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   463
    "
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   464
    ^ ((tabStyle at:#expandSelection) y) + (self class viewSpacing)
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   465
! !
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   466
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   467
!TabView methodsFor:'accessing style'!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   468
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   469
direction
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   470
    "returns the direction of tabs as symbol. On default the value is
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   471
     set to #top. Valid symbols are:
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   472
	#top       arrange tabs to be on top of a view
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   473
	#bottom    arrange tabs to be on bottom of a view
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   474
	#left      arrange tabs to be on left of a view
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   475
	#right     arrange tabs to be on right of a view
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   476
    "
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   477
    ^ direction
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   478
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   479
!
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   480
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   481
direction:aDirection
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   482
    "change the direction of tabs. On default the value is set to #top.
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   483
     Valid symbols are:
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   484
	#top       arrange tabs to be on top of a view
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   485
	#bottom    arrange tabs to be on bottom of a view
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   486
	#left      arrange tabs to be on left of a view
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   487
	#right     arrange tabs to be on right of a view
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   488
    "
374
76d08cd5b273 update notification in case of changing direction
ca
parents: 373
diff changeset
   489
    direction ~~ aDirection ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   490
	direction := aDirection.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   491
	self changed:#direction
374
76d08cd5b273 update notification in case of changing direction
ca
parents: 373
diff changeset
   492
    ].
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   493
!
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   494
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   495
fitLastRow
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   496
    "in case of true, the last row is expanded to the view  size like all
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   497
     other raws. In case of false all the tabs in the last raw keep their
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   498
     preferred extent (x or y) dependant on the direction.
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   499
    "
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   500
    ^ fitLastRow
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   501
!
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   502
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   503
fitLastRow:aBool
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   504
    "in case of true, the last row is expanded to the view  size like all
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   505
     other raws. In case of false all the tabs in the last raw keep their
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   506
     preferred extent (x or y) dependant on the direction.
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   507
    "
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   508
    fitLastRow := aBool
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   509
!
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   510
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   511
font:aFont
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   512
    (aFont ~= font) ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   513
	super font:aFont.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   514
	fontAscent := fontDescent := nil
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   515
    ]
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   516
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   517
!
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   518
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   519
moveSelectedRow
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   520
    "in case of true, the raw assigned to the tab will be moved
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   521
     to the first line (to the view). Otherwise the position of
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   522
     the view will be kept.
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   523
    "
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   524
    ^ moveSelectedRow
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   525
!
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   526
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   527
moveSelectedRow:aBool
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   528
    "in case of true, the raw assigned to the tab will be moved
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   529
     to the first line (to the view). Otherwise the position of
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   530
     the view will be kept.
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   531
    "
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   532
    moveSelectedRow := aBool
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   533
!
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   534
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   535
style
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   536
    "returns the style sheet derived from the current widget class
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   537
    "
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   538
    ^ tabStyle
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   539
!
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   540
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   541
styleAt:anIdentifier
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   542
    "returns a specific entry into the widget description. For more information
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   543
     see the specific widget class ( TabWidget ... ).
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   544
    "
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   545
    ^ tabStyle at:anIdentifier
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   546
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   547
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   548
styleAt:anIdentifier put:something
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   549
    "change a specific entry from the widget description. For more information
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   550
     see the specific widget class ( TabWidget ... ).
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   551
    "
352
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
   552
    tabStyle at:anIdentifier put:something.
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   553
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   554
352
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
   555
tabWidget
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   556
    "returns the current widget class as symbol
352
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
   557
    "
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
   558
    |widget|
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
   559
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
   560
    widget := tabStyle at:#widget.
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
   561
    widget := widget nameWithoutPrefix asSymbol.
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
   562
  ^ widget
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
   563
!
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
   564
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   565
tabWidget:aWidget
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   566
    "change the current widget class. An existing list will be
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   567
     recomputed and redrawn
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   568
    "
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   569
    |widget labels|
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   570
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   571
    (self tabWidget) ~~ aWidget ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   572
	widget := TabWidget widgetClass:aWidget.
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   573
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   574
	widget notNil ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   575
	    tabStyle := widget tabStyleOn:self.
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   576
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   577
	    list notNil ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   578
		labels := list collect:[:aTab| aTab label].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   579
		list   := widget labels:labels for:self.
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   580
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   581
		self shown ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   582
		    self recomputeList.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   583
		    self invalidate.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   584
		]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   585
	    ]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   586
	]
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   587
    ]
913
89cde98f845e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 873
diff changeset
   588
89cde98f845e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 873
diff changeset
   589
    "Modified: / 6.6.1998 / 19:56:26 / cg"
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   590
! !
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   591
418
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   592
!TabView methodsFor:'accessing tabs'!
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   593
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   594
tabAt:anIndex
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   595
    "get tab at an index or nil
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   596
    "
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   597
    ^ anIndex notNil ifTrue:[list at:anIndex ifAbsent:nil] ifFalse:[nil]
418
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   598
! !
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   599
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   600
!TabView methodsFor:'change & update'!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   601
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   602
update:something with:aParameter from:changedObject
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   603
    "one of my models changed its value
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   604
    "
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   605
    |idx tab|
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   606
391
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   607
    changedObject == model         ifTrue:[^ self selection:model value].
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   608
    changedObject == listHolder    ifTrue:[^ self list:(listHolder value)].
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   609
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   610
    (    list isNil
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   611
     or:[(idx := list findFirst:[:aTab| aTab model == changedObject]) == 0]
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   612
    ) ifTrue:[
1296
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   613
        ^ self
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   614
    ].
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   615
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   616
    self shown ifTrue:[
1296
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   617
        tab := list at:idx.
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   618
1296
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   619
        something == #foregroundColor ifTrue:[
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   620
            ^ self redrawLabelOfTab:tab
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   621
        ].
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   622
        
1296
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   623
        something == #enabled ifTrue:[
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   624
            idx == selection ifTrue:[
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   625
                ^ self selection:nil
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   626
            ].
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   627
            ^ self redrawLabelOfTab:tab
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   628
        ].
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   629
        tab labelChanged.
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   630
        self recomputeList.
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   631
        self invalidate.
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   632
        self changed:#preferredExtent
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   633
    ]
913
89cde98f845e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 873
diff changeset
   634
89cde98f845e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 873
diff changeset
   635
    "Modified: / 6.6.1998 / 19:56:16 / cg"
1296
ab26ea632b56 Move common channels to View.
Stefan Vogel <sv@exept.de>
parents: 1118
diff changeset
   636
    "Modified: / 30.3.1999 / 14:28:43 / stefan"
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   637
! !
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   638
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   639
!TabView methodsFor:'drawing'!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   640
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   641
paintColor:aColorSymbol
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   642
    "set the paint color derived from the symbol used as key into the current
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   643
     style sheet to access the color
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   644
    "
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   645
    self paint:(tabStyle at:aColorSymbol)
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   646
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   647
550
f4c65aff6387 remove:
ca
parents: 548
diff changeset
   648
redraw
f4c65aff6387 remove:
ca
parents: 548
diff changeset
   649
    "redraw"
f4c65aff6387 remove:
ca
parents: 548
diff changeset
   650
f4c65aff6387 remove:
ca
parents: 548
diff changeset
   651
    self redrawX:0 y:0 width:width height:height.
f4c65aff6387 remove:
ca
parents: 548
diff changeset
   652
f4c65aff6387 remove:
ca
parents: 548
diff changeset
   653
!
f4c65aff6387 remove:
ca
parents: 548
diff changeset
   654
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   655
redrawLabelOfTab:aTab
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   656
    "redraw only the label of the tab
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   657
    "
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   658
    shown ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   659
	aTab == (self tabAt:selection) ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   660
	    self selectedTab:aTab redrawBlock:[aTab redrawLabel]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   661
	] ifFalse:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   662
	    aTab redrawLabel
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   663
	]
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   664
    ].
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   665
!
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   666
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   667
redrawLabels
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   668
    "redraw all the labels
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   669
    "
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   670
    |selectedTab|
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   671
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   672
    (shown and:[list size ~~ 0]) ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   673
	selectedTab := self tabAt:selection.
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   674
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   675
	list reverseDo:[:aTab|
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   676
	    aTab ~~ selectedTab ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   677
		aTab redrawLabel
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   678
	    ] ifFalse:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   679
		self selectedTab:aTab redrawBlock:[aTab redrawLabel]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   680
	    ]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   681
	]
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   682
    ].
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   683
!
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   684
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   685
redrawRawAt:aRawNr
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   686
    "redraw raw at a number; all contained tabs are drawn unselected
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   687
    "
372
80d087722bc6 change tab ordering:
ca
parents: 371
diff changeset
   688
    list reverseDo:[:aTab|aTab lineNr == aRawNr ifTrue:[aTab redraw:false]].
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   689
!
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   690
548
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   691
redrawRawAt:aRawNr in:aRectangle
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   692
    "redraw raw at a number; all contained tabs are drawn unselected
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   693
    "
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   694
    list reverseDo:[:aTab|
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   695
	aTab lineNr == aRawNr ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   696
	    (aTab intersects:aRectangle) ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   697
		aTab redraw:false
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   698
	    ]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   699
	]
548
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   700
    ].
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   701
!
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   702
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   703
redrawSelection
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   704
    "redraw current selection
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   705
    "
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   706
    |tab idx|
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   707
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   708
    (selection notNil and:[self shown and:[list size ~~ 0]]) ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   709
	tab := list at:selection.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   710
	idx := tab lineNr.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   711
	self selectedTab:tab redrawBlock:[tab redraw:true].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   712
	[(idx := idx - 1) ~~ 0] whileTrue:[self redrawRawAt:idx].
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   713
    ].
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   714
!
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   715
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   716
redrawX:x y:y width:w height:h
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   717
    "a region must be redrawn
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   718
    "
548
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   719
    |rectangle oldSelect prevClipArea|
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   720
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   721
    self shown ifFalse:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   722
	^ self
548
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   723
    ].
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   724
548
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   725
    self paint:(self viewBackground).
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   726
    self clearRectangleX:x y:y width:w height:h.
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   727
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   728
    list size == 0 ifTrue:[^ self].
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   729
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   730
    prevClipArea := clipRect.
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   731
    clipRect     := nil.
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   732
    device setClipX:x y:y width:w height:h in:drawableId gc:gcId.
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   733
    rectangle := Rectangle left:x top:y width:w height:h.
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   734
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   735
    maxRawNr to:1 by:-1 do:[:i| self redrawRawAt:i in:rectangle].
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   736
548
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   737
    selection notNil ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   738
	oldSelect := selection.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   739
	selection := nil.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   740
	self setSelection:oldSelect.
548
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   741
    ].
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   742
db06a43229a8 redraw only demaged tabs
ca
parents: 545
diff changeset
   743
    prevClipArea isNil ifTrue:[device noClipIn:drawableId  gc:gcId]
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   744
		      ifFalse:[self clippingRectangle:prevClipArea].
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   745
867
f219de09280a must redraw if size changes.
Claus Gittinger <cg@exept.de>
parents: 793
diff changeset
   746
    "Modified: / 18.4.1998 / 16:19:58 / cg"
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   747
!
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   748
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   749
selectedTab:aTab redrawBlock:aRedrawBlock
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   750
    "calculate extent of selection and evaluate the block which will
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   751
     perform a redraw action
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   752
    "
545
d01d14358b07 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 508
diff changeset
   753
    |tab oldAnc newAnc oldExt newExt expSel expDlt x y|
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   754
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   755
    tab    := list at:selection.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   756
    oldAnc := tab anchor.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   757
    oldExt := tab extent.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   758
    expSel := tabStyle at:#expandSelection.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   759
    expDlt := expSel x.
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   760
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   761
    (self isHorizontalDirection) ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   762
	newExt := oldExt + ( expDlt @ 0 ).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   763
	newAnc := oldAnc - ((expDlt//2) @ ((expSel y) negated)).
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   764
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   765
	(x := newAnc x) < 0 ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   766
	    newExt x:(newExt x + x).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   767
	    newAnc x:0.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   768
	    x := 0.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   769
	].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   770
	(x + newExt x) > (super extent x) ifTrue:[newExt x:((super extent x) - x)].
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   771
    ] ifFalse:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   772
	newExt := oldExt + ( 0 @ expDlt ).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   773
	newAnc := oldAnc - (((expSel y) negated) @ (expDlt//2)).
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   774
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   775
	(y := newAnc y) < 0 ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   776
	    newExt y:(newExt y + y).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   777
	    newAnc y:0.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   778
	    y := 0.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   779
	].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   780
	(y + newExt y) > (super extent y) ifTrue:[newExt y:((super extent y) - y)].
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   781
    ].
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   782
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   783
    tab anchor:newAnc extent:newExt.
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   784
    aRedrawBlock value.
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
   785
    tab anchor:oldAnc extent:oldExt.
352
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
   786
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   787
! !
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   788
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   789
!TabView methodsFor:'event handling'!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   790
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   791
buttonPress:button x:x y:y
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   792
    "a button is pressed; find tab under point and set the selection
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   793
    "
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   794
    |idx|
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   795
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   796
    (     self isEnabled
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   797
     and:[list notNil
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   798
     and:[(idx := list findFirst:[:aTab|aTab containsPoint:(x@y)]) ~~ 0]]
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   799
    ) ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   800
	self selection:idx
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
   801
    ].
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   802
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   803
346
698695a95a8c keyPress:
ca
parents: 345
diff changeset
   804
keyPress:aKey x:x y:y
698695a95a8c keyPress:
ca
parents: 345
diff changeset
   805
    "selection might change; look for corresponding list entry
698695a95a8c keyPress:
ca
parents: 345
diff changeset
   806
    "
670
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   807
    |size index n|
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   808
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   809
    (self isEnabled and:[(size := list size) > 1]) ifFalse:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   810
	^ self
670
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   811
    ].
346
698695a95a8c keyPress:
ca
parents: 345
diff changeset
   812
670
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   813
    (aKey == #CursorRight or:[aKey == #CursorDown]) ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   814
	n := selection ? 0.
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   815
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   816
	(size - 1) timesRepeat:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   817
	    (n := n + 1) > size ifTrue:[n := 1].
670
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   818
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   819
	    (self canSelectTabAtIndex:n) ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   820
		^ self selection:n
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   821
	    ]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   822
	].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   823
	^ self
670
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   824
    ].
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   825
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   826
    (aKey == #CursorLeft or:[aKey == #CursorUp]) ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   827
	n := selection ? size.
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   828
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   829
	(size - 1) timesRepeat:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   830
	    (n := n - 1) < 1 ifTrue:[n := size].
670
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   831
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   832
	    (self canSelectTabAtIndex:n) ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   833
		^ self selection:n
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   834
	    ]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   835
	].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   836
	^ self
670
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   837
    ].
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   838
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   839
    aKey isCharacter ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   840
	(selection isNil or:[selection == size]) ifTrue:[index := 1]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   841
						ifFalse:[index := selection + 1].
670
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   842
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   843
	n := index - 1.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   844
	[   
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   845
	    n := self findTabStartingWithKey:aKey startingAt:n + 1.
670
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   846
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   847
	    (n ~~ 0 and:[self canSelectTabAtIndex:n]) ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   848
		^ self selection:n
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   849
	    ].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   850
	    n ~~ 0
418
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   851
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   852
	] whileTrue.
670
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   853
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   854
	index ~~ 1 ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   855
	    (n := self findTabStartingWithKey:aKey startingAt:1) ~~ 0 ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   856
		^ self selection:n
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   857
	    ]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   858
	]
346
698695a95a8c keyPress:
ca
parents: 345
diff changeset
   859
    ].
698695a95a8c keyPress:
ca
parents: 345
diff changeset
   860
670
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
   861
    super keyPress:aKey x:x y:y
867
f219de09280a must redraw if size changes.
Claus Gittinger <cg@exept.de>
parents: 793
diff changeset
   862
!
f219de09280a must redraw if size changes.
Claus Gittinger <cg@exept.de>
parents: 793
diff changeset
   863
f219de09280a must redraw if size changes.
Claus Gittinger <cg@exept.de>
parents: 793
diff changeset
   864
sizeChanged:how
f219de09280a must redraw if size changes.
Claus Gittinger <cg@exept.de>
parents: 793
diff changeset
   865
    "size of view changed 
f219de09280a must redraw if size changes.
Claus Gittinger <cg@exept.de>
parents: 793
diff changeset
   866
    "
f219de09280a must redraw if size changes.
Claus Gittinger <cg@exept.de>
parents: 793
diff changeset
   867
    |extent delta dX dY|
f219de09280a must redraw if size changes.
Claus Gittinger <cg@exept.de>
parents: 793
diff changeset
   868
873
f7d944a57098 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 867
diff changeset
   869
    super sizeChanged:how.
f7d944a57098 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 867
diff changeset
   870
867
f219de09280a must redraw if size changes.
Claus Gittinger <cg@exept.de>
parents: 793
diff changeset
   871
    list size ~~ 0 ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   872
	shown ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   873
	    self invalidate
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   874
	].
873
f7d944a57098 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 867
diff changeset
   875
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   876
	extent := super extent.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   877
	delta  := oldExtent - extent.
867
f219de09280a must redraw if size changes.
Claus Gittinger <cg@exept.de>
parents: 793
diff changeset
   878
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   879
	((dX := delta x) > 1 or:[dX < -1 
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   880
	or:[(dY := delta y) > 1 or:[dY < -1]]]) ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   881
	    oldExtent := extent.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   882
	    self recomputeList.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   883
	    self changed:#preferredExtent.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   884
	].
867
f219de09280a must redraw if size changes.
Claus Gittinger <cg@exept.de>
parents: 793
diff changeset
   885
    ].
f219de09280a must redraw if size changes.
Claus Gittinger <cg@exept.de>
parents: 793
diff changeset
   886
873
f7d944a57098 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 867
diff changeset
   887
    "Modified: / 22.4.1998 / 14:20:31 / cg"
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   888
! !
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   889
1329
e0dff849cf82 category change
Claus Gittinger <cg@exept.de>
parents: 1296
diff changeset
   890
!TabView methodsFor:'initialize / release'!
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   891
387
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   892
destroy
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   893
    listHolder notNil ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   894
	listHolder removeDependent:self. 
387
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   895
    ].
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   896
    enableChannel notNil ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   897
	enableChannel removeDependent:self. 
387
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   898
    ].
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
   899
    self  removeListDependencies.
387
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   900
    super destroy.
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   901
!
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
   902
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   903
initStyle
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   904
    "setup style attributes
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   905
    "
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   906
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   907
    super initStyle.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   908
    self font:(MenuView defaultFont on:device).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   909
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   910
    "Created: / 5.9.1998 / 17:36:37 / cg"
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   911
    "Modified: / 5.9.1998 / 17:37:38 / cg"
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   912
!
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   913
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   914
initialize
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   915
    "setup default attributes
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   916
    "
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   917
    |widget|
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   918
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   919
    super initialize.
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   920
576
08f44b433b51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
   921
    self cursor:Cursor hand.
08f44b433b51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
   922
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   923
    widget          := TabWidget widgetClass:(self class defaultTabWidget).
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   924
    tabStyle        := widget tabStyleOn:self.
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   925
    useIndex        := false.
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   926
    oneTabPerLine   := false.
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   927
    direction       := #top.
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   928
    fitLastRow      := true.
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   929
    moveSelectedRow := true.
391
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
   930
    enabled         := true.
418
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
   931
    oldExtent       := 0@0.
576
08f44b433b51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
   932
08f44b433b51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
   933
    "Modified: 23.10.1997 / 03:28:02 / cg"
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   934
! !
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   935
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   936
!TabView methodsFor:'layout'!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
   937
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   938
changeRaw:aRawA with:aRawB
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   939
    "exchange positions of two raws
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   940
    "
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   941
    |tabB tabA ancA ancB hrz|
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   942
372
80d087722bc6 change tab ordering:
ca
parents: 371
diff changeset
   943
    tabA := list at:(list findFirst:[:aTab|aTab lineNr == aRawA]).
80d087722bc6 change tab ordering:
ca
parents: 371
diff changeset
   944
    tabB := list at:(list findFirst:[:aTab|aTab lineNr == aRawB]).
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   945
    hrz  := (self isHorizontalDirection).
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   946
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   947
    hrz ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   948
	ancA := tabA anchor y.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   949
	ancB := tabB anchor y.
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   950
    ] ifFalse:[   
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   951
	ancA := tabA anchor x.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   952
	ancB := tabB anchor x.
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   953
    ].
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   954
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   955
    list do:[:aTab||ln|
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   956
	(ln := aTab lineNr) == aRawB ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   957
	    aTab lineNr:aRawA.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   958
	    hrz ifTrue:[aTab anchor y:ancA]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   959
	       ifFalse:[aTab anchor x:ancA]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   960
	] ifFalse:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   961
	    ln == aRawA ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   962
		aTab lineNr:aRawB.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   963
		hrz ifTrue:[aTab anchor y:ancB]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   964
		   ifFalse:[aTab anchor x:ancB]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   965
	    ]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   966
	]
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   967
    ].
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   968
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   969
    oneTabPerLine ifFalse:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   970
	aRawB == maxRawNr ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   971
	    self fitRawAt:aRawA.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   972
	    self unfitLastRaw.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   973
	] ifFalse:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   974
	    aRawA == maxRawNr ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   975
		self fitRawAt:aRawB.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   976
		self unfitLastRaw.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   977
	    ]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   978
	]
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   979
    ]
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   980
!
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   981
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   982
fitRawAt:aRawNr
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   983
    "fit raw to view's size
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   984
    "
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   985
    |last first tab ext org max size|
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   986
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   987
    (aRawNr ~~ maxRawNr or:[fitLastRow]) ifFalse:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   988
	^ self
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
   989
    ].
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   990
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   991
    last  := list  findLast:[:aTab| aTab lineNr == aRawNr ].
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   992
    first := list findFirst:[:aTab| aTab lineNr == aRawNr ].
372
80d087722bc6 change tab ordering:
ca
parents: 371
diff changeset
   993
    tab   := list at:last.
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   994
    size  := last - first + 1.
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   995
    org   := 0.
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   996
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
   997
    (self isHorizontalDirection) ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   998
	max := super extent x.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
   999
	ext := (max - ((tab anchor x) + (tab extent x))) // size.
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1000
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1001
	ext > 1 ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1002
	    first to:last do:[:i|
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1003
		tab := list at:i.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1004
		tab extent x:((tab extent x) + ext).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1005
		tab anchor x:((tab anchor x) + org).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1006
		org := org + ext.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1007
	    ].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1008
	    tab := list at:last.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1009
	].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1010
	tab extent x:(max - tab anchor x).
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1011
    ] ifFalse:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1012
	max := super extent y.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1013
	ext := (max - ((tab anchor y) + (tab extent y))) // size.
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1014
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1015
	ext > 1 ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1016
	    first to:last do:[:i|
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1017
		tab := list at:i.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1018
		tab extent y:((tab extent y) + ext).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1019
		tab anchor y:((tab anchor y) + org).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1020
		org := org + ext.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1021
	    ].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1022
	    tab := list at:last.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1023
	].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1024
	tab extent y:(max - tab anchor y).
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1025
    ]
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1026
!
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1027
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1028
recomputeList
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1029
    "recompute list
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1030
    "
545
d01d14358b07 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 508
diff changeset
  1031
    |maxY x y maxSz ovl|
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1032
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
  1033
    list size == 0 ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1034
	^ self
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
  1035
    ].
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1036
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
  1037
    maxY     := tabStyle at:#maxY.
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
  1038
    ovl      := tabStyle at:#rightCovered.
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
  1039
    maxRawNr := 1.
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1040
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
  1041
    (self isHorizontalDirection) ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1042
	maxSz := super extent x.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1043
	x     := 0.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1044
	y     := maxY.
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
  1045
        
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1046
	oneTabPerLine ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1047
	    list do:[:aTab|
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1048
		aTab lineNr:maxRawNr.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1049
		aTab anchor:x@y extent:(maxSz @ maxY).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1050
		maxRawNr := maxRawNr + 1.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1051
		y := y + maxY.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1052
	    ].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1053
	    ^ self
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1054
	].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1055
	list do:[:aTab||eX n|
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1056
	    eX := aTab preferredExtentX.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1057
	    n  := eX + x - ovl.
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1058
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1059
	    (n > maxSz and:[x ~~ 0]) ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1060
		maxRawNr := maxRawNr + 1.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1061
		x := 0.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1062
		y := y  + maxY.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1063
		n := eX - ovl.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1064
	    ].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1065
	    aTab lineNr:maxRawNr.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1066
	    aTab anchor:x@y extent:(eX @ maxY).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1067
	    x := n.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1068
	]
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
  1069
    ] ifFalse:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1070
	maxSz := super extent y.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1071
	x     := maxY.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1072
	y     := 0.
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1073
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1074
	oneTabPerLine ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1075
	    list do:[:aTab|
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1076
		aTab lineNr:maxRawNr.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1077
		aTab anchor:x@y extent:(maxY @ maxSz).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1078
		maxRawNr := maxRawNr + 1.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1079
		x := x + maxY.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1080
	    ].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1081
	    ^ self
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1082
	].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1083
	list do:[:aTab||eY n|
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1084
	    eY := aTab preferredExtentX.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1085
	    n  := eY + y - ovl.
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
  1086
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1087
	    (n > maxSz and:[y ~~ 0]) ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1088
		maxRawNr := maxRawNr + 1.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1089
		y := 0.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1090
		x := x  + maxY.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1091
		n := eY - ovl.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1092
	    ].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1093
	    aTab lineNr:maxRawNr.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1094
	    aTab anchor:x@y extent:(maxY @ eY).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1095
	    y := n.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1096
	]
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
  1097
    ].
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
  1098
 "/ fit raws to view
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
  1099
    1 to:maxRawNr do:[:aLnNr|self fitRawAt:aLnNr].
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
  1100
!
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
  1101
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1102
unfitLastRaw
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1103
    "use the preferred extent for all tabs in the last raw
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
  1104
    "
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1105
    |last first tab ovl anchor extent pos offset hrz|
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1106
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
  1107
    fitLastRow ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1108
	^ self
508
7e418e6b291d additional behavior
ca
parents: 500
diff changeset
  1109
    ].
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1110
    last  := list  findLast:[:aTab| aTab lineNr == maxRawNr ].
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1111
    first := list findFirst:[:aTab| aTab lineNr == maxRawNr ].
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
  1112
    ovl   := tabStyle at:#rightCovered.
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1113
    pos   := 0.
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1114
    hrz   := (self isHorizontalDirection).
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
  1115
372
80d087722bc6 change tab ordering:
ca
parents: 371
diff changeset
  1116
    first to:last do:[:i|
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1117
	tab := list at:i.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1118
	anchor := tab anchor.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1119
	extent := tab extent.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1120
	offset := tab preferredExtentX.
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
  1121
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1122
	hrz ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1123
	    extent x:offset.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1124
	    anchor x:pos
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1125
	] ifFalse:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1126
	    extent y:offset.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1127
	    anchor y:pos.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1128
	].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1129
	tab anchor:anchor extent:extent.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1130
	pos := pos + offset - ovl.
349
2e245c1c2870 preferredExtent and preferredHeight
ca
parents: 346
diff changeset
  1131
    ].
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1132
! !
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1133
373
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1134
!TabView methodsFor:'private'!
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1135
418
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
  1136
findTabStartingWithKey:aKey startingAt:anIndex
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1137
    "get index of tab starting its printableLabel with a key or 0
418
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
  1138
    "
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1139
    |upper lower|
418
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
  1140
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
  1141
    (aKey isCharacter and:[anIndex <= list size]) ifFalse:[ ^ 0 ].
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
  1142
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
  1143
    upper := aKey asUppercase.
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
  1144
    lower := aKey asLowercase.
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
  1145
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1146
  ^ list findFirst:[:aTab||l c|
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1147
	(    (l := aTab printableLabel) isString
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1148
	 and:[((c := l first) == lower or:[c == upper])]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1149
	)
418
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
  1150
    ] startingAt:anIndex
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
  1151
!
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
  1152
373
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1153
listIndexOf:something
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1154
    "convert something to an index into list or nil.
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1155
    "
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1156
    |index|
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1157
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1158
    something isNil ifTrue:[^ nil ].
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1159
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1160
    something isNumber ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1161
	index := something
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1162
    ] ifFalse:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1163
	index := list findFirst:[:aTab|aTab label = something].
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1164
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1165
	index == 0 ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1166
	    index := list findFirst:[:aTab|aTab printableLabel = something].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1167
	]
373
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1168
    ].
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1169
  ^ index ~~ 0 ifTrue:[index] ifFalse:[nil]
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1170
!
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1171
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1172
removeListDependencies
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1173
    |model|
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1174
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1175
    list notNil ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1176
	list do:[:aTab|
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1177
	    (model := aTab model) notNil ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1178
		model removeDependent:self
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1179
	    ]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1180
	]
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1181
    ]
373
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1182
! !
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1183
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1184
!TabView methodsFor:'queries'!
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1185
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1186
canSelectTabAtIndex:anIndex
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1187
    "returns true if tab at an index is selectable
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1188
    "
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1189
    (list at:anIndex) isEnabled ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1190
	^ selectConditionBlock isNil ifTrue:[true]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1191
				    ifFalse:[selectConditionBlock value:anIndex]
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1192
    ].
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1193
    ^ false
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1194
!
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1195
703
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1196
getBackgroundPaintForTab:aTab
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1197
    "returns background color of the tab
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1198
    "
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1199
    |key|
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1200
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1201
    key := aTab == (self tabAt:selection) ifFalse:[#unselectedColor]
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1202
					   ifTrue:[#selectedColor].
703
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1203
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1204
    ^ tabStyle at:key
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1205
!
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1206
387
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
  1207
isEnabled
391
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
  1208
    "returns enabled state
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
  1209
    "
c30e362f6c7d handle enable notification
ca
parents: 387
diff changeset
  1210
  ^ enabled
387
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
  1211
!
5b7a8d0fe86e use index or label
ca
parents: 376
diff changeset
  1212
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1213
isHorizontalDirection
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1214
    "returns true in case of direction is #top or #bottom
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1215
    "
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1216
    ^ (direction == #top or:[direction == #bottom])
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1217
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
  1218
!
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1219
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1220
isVerticalDirection
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1221
    "returns true in case of direction is #left or #right
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
  1222
    "
369
8f003e44d5ef added directions ...
ca
parents: 367
diff changeset
  1223
    ^ (direction == #left or:[direction == #right])
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
  1224
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1225
! !
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1226
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1227
!TabView methodsFor:'selection'!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1228
703
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1229
isTabSelected:aTab
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1230
    "returns true if tab is selected
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1231
    "
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1232
    ^ aTab == (self tabAt:selection)
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1233
!
f07158f92e36 support of LabelAndIcon
ca
parents: 697
diff changeset
  1234
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1235
selection
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1236
    "return the selection index or nil
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1237
    "
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1238
    |tab|
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1239
352
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
  1240
    useIndex ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1241
	^ selection ? 0
352
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
  1242
    ].
697
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1243
    tab := self tabAt:selection.
e93da973b635 support model: TabItem
ca
parents: 670
diff changeset
  1244
  ^ tab notNil ifTrue:[tab label] ifFalse:[nil]
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1245
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1246
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1247
selection:anIndexOrNil
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1248
    "change the selection to index or nil. The model and/or actionBlock is notified
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1249
    "
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
  1250
    |oldSel|
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
  1251
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
  1252
    oldSel := selection.
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
  1253
    self setSelection:anIndexOrNil.
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
  1254
    oldSel ~~ selection ifTrue:[self selectionHasChanged].
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
  1255
!
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
  1256
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
  1257
selectionHasChanged
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
  1258
    "selection might change; raise notification
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
  1259
    "
352
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
  1260
    |sel|
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1261
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
  1262
    sel := self selection.
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1263
499
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
  1264
    model  notNil ifTrue:[model  value:sel].
fbf62bb89ca4 redraw only label in case of enabled state changed
ca
parents: 445
diff changeset
  1265
    action notNil ifTrue:[action value:sel]
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1266
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1267
!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1268
373
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1269
setSelection:something
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1270
    "change the selection to index or nil. No notifications are raised
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1271
    "
373
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1272
    |newSel lnNr tab last first exp x y w h|
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1273
418
94d3a2f73e75 optimize redraw; colors derived from background
ca
parents: 410
diff changeset
  1274
    list size == 0 ifTrue:[^ self].
373
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1275
    newSel := self listIndexOf:something.
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1276
    selection == newSel ifTrue:[^ self].
670
6aefa9b9705c add selectConditionBlock
ca
parents: 603
diff changeset
  1277
591
03c28ff04183 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 576
diff changeset
  1278
    newSel notNil ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1279
	(self tabAt:newSel) isNil ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1280
	    newSel := nil
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1281
	] ifFalse:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1282
	    (self canSelectTabAtIndex:newSel) ifFalse:[^ self ].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1283
	]
591
03c28ff04183 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 576
diff changeset
  1284
    ].
372
80d087722bc6 change tab ordering:
ca
parents: 371
diff changeset
  1285
352
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
  1286
    self shown ifFalse:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1287
	selection := newSel.
352
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
  1288
      ^ self
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
  1289
    ].
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
  1290
445
0595adddd619 recompute list
ca
parents: 418
diff changeset
  1291
    maxRawNr isNil ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1292
	selection := newSel.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1293
	self recomputeList.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1294
	self invalidate.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1295
	^ self.
445
0595adddd619 recompute list
ca
parents: 418
diff changeset
  1296
    ].
0595adddd619 recompute list
ca
parents: 418
diff changeset
  1297
591
03c28ff04183 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 576
diff changeset
  1298
    (newSel notNil 
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1299
	 and:[moveSelectedRow
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1300
	 and:[(lnNr := (list at:newSel) lineNr) > 1]]
591
03c28ff04183 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 576
diff changeset
  1301
    ) ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1302
	self changeRaw:1 with:lnNr.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1303
	selection := 1.                                 "/ force a redraw
352
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
  1304
    ].
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
  1305
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
  1306
    selection notNil ifTrue:[
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1307
	maxRawNr > 1 ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1308
	    self paint:(self viewBackground).           "/ total redraw
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1309
	    self clear.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1310
	    selection := nil.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1311
	    maxRawNr to:1 by:-1 do:[:i| self redrawRawAt:i ].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1312
	] ifFalse:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1313
	    first := 1.
373
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1314
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1315
	    (selection ~~ 1 and:[(tabStyle at:#rightCovered) == 0]) ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1316
		first := selection - 1
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1317
	    ].
373
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1318
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1319
	    (last := selection + 1) > list size ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1320
		last := selection
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1321
	    ].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1322
	    exp := (tabStyle at:#expandSelection) x.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1323
	    tab := list at:selection.
373
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1324
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1325
	    self isHorizontalDirection ifTrue:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1326
		(x := tab anchor x - (exp // 2)) < 0 ifTrue:[x := 0].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1327
		w := tab extent x + exp.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1328
		h := super extent y.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1329
		y := 0.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1330
	    ] ifFalse:[
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1331
		(y := tab anchor y - (exp // 2)) < 0 ifTrue:[y := 0].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1332
		h := tab extent y + exp.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1333
		w := super extent x.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1334
		x := 0.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1335
	    ].
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1336
	    self paint:(self viewBackground).
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1337
	    self clearRectangleX:x y:y width:w height:h.
373
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1338
1118
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1339
	    last to:first by:-1 do:[:i|
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1340
		tab := list at:i.
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1341
		tab redraw:false
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1342
	    ]
a49afa5a9f10 fixed font setup in initStyle.
Claus Gittinger <cg@exept.de>
parents: 913
diff changeset
  1343
	]
352
fbc4de042995 1. support of usedIndex
ca
parents: 349
diff changeset
  1344
    ].
373
f24a4946fce6 optimize setSelection:
ca
parents: 372
diff changeset
  1345
    selection := newSel.
367
cff1a140978f tabs at top, bottom, left and right
ca
parents: 352
diff changeset
  1346
    self redrawSelection.
591
03c28ff04183 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 576
diff changeset
  1347
913
89cde98f845e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 873
diff changeset
  1348
    "Modified: / 6.6.1998 / 19:56:45 / cg"
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1349
! !
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1350
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1351
!TabView class methodsFor:'documentation'!
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1352
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1353
version
1329
e0dff849cf82 category change
Claus Gittinger <cg@exept.de>
parents: 1296
diff changeset
  1354
    ^ '$Header: /cvs/stx/stx/libwidg2/TabView.st,v 1.39 1999-04-23 12:49:10 cg Exp $'
343
dd49faa984ce intitial checkin
ca
parents:
diff changeset
  1355
! !