NoteBookView.st
author Claus Gittinger <cg@exept.de>
Wed, 07 Jul 1999 17:47:41 +0200
changeset 1433 54d98f39bc51
parent 1413 fa86dd0c4246
child 1438 5d710aed8366
permissions -rw-r--r--
checkin from browser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
     1
"
365d33b8e942 so far so good
ca
parents: 355
diff changeset
     2
 COPYRIGHT (c) 1997 by eXept Software AG
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
     3
              All Rights Reserved
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
     4
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
     5
 This software is furnished under a license and may be used
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
     6
 only in accordance with the terms of that license and with the
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
     8
 be provided or otherwise made available to, or used by, any
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
     9
 other person.  No title to or ownership of the software is
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    10
 hereby transferred.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    11
"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    12
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    13
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    14
View subclass:#NoteBookView
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    15
	instanceVariableNames:'list listHolder foregroundColor selection enabled action useIndex
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    16
		direction numberOfLines selectConditionBlock expandSelection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    17
		canvas canvasInset canvasHolder halfLightColor halfShadowColor
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
    18
		fitLastRow tabModus lastComputedExtent keepCanvas'
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    19
	classVariableNames:''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    20
	poolDictionaries:''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    21
	category:'Views-Layout'
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    22
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    23
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    24
Object subclass:#Tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    25
	instanceVariableNames:'label model printableLabel disabledLabel lineNr layout extent'
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    26
	classVariableNames:''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    27
	poolDictionaries:''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    28
	privateIn:NoteBookView
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    29
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    30
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    31
!NoteBookView class methodsFor:'documentation'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    32
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    33
copyright
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    34
"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    35
 COPYRIGHT (c) 1997 by eXept Software AG
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    36
              All Rights Reserved
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    37
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    38
 This software is furnished under a license and may be used
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    39
 only in accordance with the terms of that license and with the
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    40
 inclusion of the above copyright notice.   This software may not
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    41
 be provided or otherwise made available to, or used by, any
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    42
 other person.  No title to or ownership of the software is
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    43
 hereby transferred.
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    44
"
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    45
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
!
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
documentation
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    50
    implements the noteBook.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    51
    May also be used on its own (without a surrounding noteBook).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    52
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    53
    [author:]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    54
        Claus Atzkern
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    55
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    56
    [see also:]
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    57
        TabView
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    59
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    60
!
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    62
examples
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    63
"
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    64
    tabs at top ( default )
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    65
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    66
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    67
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    68
    top  := StandardSystemView extent:250@100.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    69
    tab := NoteBook origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    70
    tab list:#( 'Foo' 'Bar' 'Baz' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    71
    tab action:[:aName| Transcript showCR:aName].
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    72
    top open.
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    73
                                                                                [exEnd]
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    74
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    75
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    76
    tabs at bottom
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    77
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    78
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    79
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    80
    top  := StandardSystemView extent:250@100.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    81
    tab := NoteBook origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    82
    tab direction:#bottom.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    83
    tab list:#( 'Foo' 'Bar' 'Baz' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    84
    tab action:[:aName| Transcript showCR:aName].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    85
    top open.
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    86
                                                                                [exEnd]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    87
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    88
    tabs at left
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    89
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    90
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    91
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    92
    top  := StandardSystemView extent:100@200.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    93
    tab := NoteBook origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    94
    tab direction:#left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    95
    tab list:#( 'Foo' 'Bar' 'Baz' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    96
    tab action:[:aName| Transcript showCR:aName].
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    97
    top open.
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    98
                                                                                [exEnd]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    99
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   100
    tabs at right
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   101
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   102
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   103
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   104
    top  := StandardSystemView extent:100@200.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   105
    tab := NoteBook origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   106
    tab direction:#right.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   107
    tab list:#( 'Foo' 'Bar' 'Baz' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   108
    tab action:[:aName| Transcript showCR:aName].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   109
    top open.
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   110
                                                                                [exEnd]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   111
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   112
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   113
"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   114
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   115
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   116
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   117
!NoteBookView class methodsFor:'claus'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   118
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   119
test2:aDirection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   120
    |top tab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   121
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   122
    top := StandardSystemView extent:300@300.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   123
    tab  := NoteBookView origin:0.1 @ 0.1 corner:0.9 @ 0.9 in:top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   124
    tab direction:aDirection.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   125
    tab tabModus:true.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   126
    tab list:#( 'Tab 1' 'Tab 2' 'Tab 3' 'XgQTab 4' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   127
    tab action:[:aLabel| Transcript showCR:aLabel].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   128
    top open.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   129
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   130
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   131
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   132
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   133
test:aDirection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   134
    |top tab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   135
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   136
    top := StandardSystemView extent:300@300.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   137
    tab  := NoteBookView origin:0.1 @ 0.1 corner:0.9 @ 0.9 in:top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   138
    tab direction:aDirection.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   139
    tab list:#( 'Tab 1' 'Tab 2' 'Tab 3' 'XgQTab 4' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   140
    tab canvas:(ClockView new).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   141
    tab action:[:aLabel| Transcript showCR:aLabel].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   142
    top open.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   143
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   144
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   145
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   146
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   147
!NoteBookView class methodsFor:'defaults'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   148
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   149
defaultFont
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   150
    ^ MenuView defaultFont
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   151
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   152
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   153
!NoteBookView methodsFor:'accessing'!
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   155
action:oneArgBlock
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   156
    "set the action block to be performed on select; the argument to
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   157
     the block is the selected index or nil in case of no selection.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   158
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   159
    action := oneArgBlock.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   160
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   161
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   162
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   163
canvas
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   164
    ^ canvas
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   165
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   166
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   167
canvas:aCanvas
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   168
    "change canvas; the containter view
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   169
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   170
    aCanvas == canvas ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   171
        canvas notNil ifTrue:[
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   172
            keepCanvas ifTrue:[
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   173
                canvas unmap.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   174
            ] ifFalse:[
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   175
                canvas destroy.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   176
            ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   177
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   178
        (canvas := aCanvas) notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   179
            tabModus := false.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   180
            self addSubView:canvas.
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   181
            realized ifTrue:[canvas realize].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   182
            (shown and:[numberOfLines notNil]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   183
                canvas layout:(self computeCanvasLayout)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   184
            ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   185
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   186
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   187
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   188
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   189
list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   190
    "return the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   191
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   192
    ^ list collect:[:aTab| aTab label ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   193
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   194
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   195
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   196
list:aList
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   197
    "set the list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   198
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   199
    |size|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   200
1433
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   201
    name := self selection.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   202
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   203
    list do:[:aTab| aTab removeDependent:self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   204
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   205
    aList notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   206
        list := aList collect:[:el| Tab label:el on:self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   207
        list do:[:aTab| aTab addDependent:self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   208
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   209
        list := #()
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   210
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   211
    preferredExtent := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   212
    numberOfLines   := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   213
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   214
    selection notNil ifTrue:[
1433
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   215
        useIndex ifTrue:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   216
            selection > list size ifTrue:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   217
                selection := nil.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   218
                self selectionChanged.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   219
            ]
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   220
        ] ifFalse:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   221
            selection := list findFirst:[:el| el label = name ].
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   222
            selection == 0 ifTrue:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   223
                selection := nil.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   224
                self selectionChanged.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   225
            ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   226
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   227
    ].
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   228
    canvas notNil ifTrue:[
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   229
        self recomputeList
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   230
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   231
    shown ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   232
        self invalidate
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   233
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   234
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   235
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   236
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   237
listIndexOf:something
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   238
    "convert something to an index into list or nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   239
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   240
    |index|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   241
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   242
    something isNil ifTrue:[^ nil ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   243
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   244
    something isNumber ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   245
        index := something
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   246
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   247
        index := list findFirst:[:aTab|aTab label = something].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   248
        index == 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   249
            index := list findFirst:[:aTab|aTab printableLabel = something]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   250
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   251
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   252
    ^ (index between:1 and:list size) ifTrue:[index] ifFalse:[nil]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   253
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   254
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   255
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   256
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   257
useIndex
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   258
    "use index instead of name
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   259
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   260
    ^ useIndex
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   261
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   262
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   263
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   264
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   265
useIndex:aBoolean
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   266
    "set/clear the useIndex flag. If set, both actionBlock and change-messages
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   267
     are passed the index(indices) of the selection as argument. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   268
     If clear, the value(s) (i.e. the selected string) is passed.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   269
     Default is false."
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   270
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   271
    useIndex := aBoolean
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   272
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   273
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   274
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   275
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   276
!NoteBookView methodsFor:'accessing behavior'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   277
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   278
enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   279
    "returns true if tabs are enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   280
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   281
    ^ enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   282
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   283
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   284
enabled:aState
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   285
    "set enabled state
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   286
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   287
    |state|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   288
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   289
    state := aState ? true.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   290
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   291
    enabled ~~ state ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   292
        enabled := state.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   293
        self invalidate.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   294
    ]
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   295
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   296
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   297
keepCanvas:aBoolean
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   298
    "if false (the default), the previous canvas is destroyed, whenever
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   299
     a new canvas is set.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   300
     if true, it is unmapped and kept.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   301
     Set this flag, if the application changes the canvas but wants
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   302
     them to be kept for fast switching."
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   303
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   304
    keepCanvas := aBoolean.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   305
!
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   306
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   307
selectConditionBlock
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   308
    "get the conditionBlock; this block is evaluated before a selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   309
     change is performed; the change will not be done, if the evaluation
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   310
     returns false. The argument to the block is the selection index
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   311
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   312
    ^ selectConditionBlock
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   313
!
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   314
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   315
selectConditionBlock:aOneArgBlock
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   316
    "get the conditionBlock; this block is evaluated before a selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   317
     change is performed; the change will not be done, if the evaluation
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   318
     returns false. The argument to the block is the selection index
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   319
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   320
    selectConditionBlock := aOneArgBlock
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   321
! !
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   322
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   323
!NoteBookView methodsFor:'accessing channels/holders'!
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   324
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   325
canvasHolder
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   326
    "get the model, which keeps the canvas, a kind of SimpleView
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   327
    "
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   328
    ^ canvasHolder
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
!
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   331
canvasHolder:aValueHolder
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   332
    "set the model, which keeps the canvas, a kind of SimpleView
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   333
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   334
    canvasHolder removeDependent:self. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   335
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   336
    (canvasHolder := aValueHolder) notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   337
        canvasHolder addDependent:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   338
        self canvas:(canvasHolder value)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   339
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   340
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   341
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   342
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   343
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   344
listHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   345
    "get the model, which keeps the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   346
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   347
    ^ listHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   348
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   349
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   350
listHolder:aValueHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   351
    "set the model, which keeps the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   352
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   353
    listHolder removeDependent:self. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   354
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   355
    (listHolder := aValueHolder) notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   356
        listHolder addDependent:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   357
        self list:listHolder value.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   358
    ].
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   359
!
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   360
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   361
model:aValueHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   362
    "set the model, which keeps the selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   363
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   364
    super model:aValueHolder.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   365
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   366
    model notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   367
        self selection:(model value)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   368
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   369
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   370
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   371
!NoteBookView methodsFor:'accessing dimension'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   372
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   373
maxTabHeight
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   374
    |e y|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   375
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   376
    e := self preferredExtent.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   377
    y := self isHorizontal ifTrue:[e y] ifFalse:[e x].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   378
  ^ y - (expandSelection y)
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   379
!
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   380
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   381
preferredExtent
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   382
    "compute max extent x/y based on one line
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   383
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   384
    |x "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   385
     y "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   386
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   387
    preferredExtent isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   388
        y := 0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   389
        x := 0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   390
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   391
        list notEmpty ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   392
            list do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   393
                x := x + aTab preferredExtentX.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   394
                y := y max:(aTab preferredExtentY).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   395
            ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   396
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   397
        y := y + (expandSelection y).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   398
        x := x + (expandSelection x).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   399
        preferredExtent := self isHorizontal ifTrue:[x @ y] ifFalse:[y @ x]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   400
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   401
    ^ preferredExtent
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   402
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   403
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   404
preferredSizeXorY
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   405
    "returns preferred size dependant on the current view layout and
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   406
     the direction of the tabs
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   407
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   408
    |e y|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   409
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   410
    list isEmpty ifTrue:[^ 0].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   411
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   412
    y := self maxTabHeight.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   413
    e := expandSelection y.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   414
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   415
    numberOfLines isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   416
        self shown ifFalse:[^ y + e ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   417
        self recomputeList.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   418
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   419
    ^ numberOfLines * y + e
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   420
! !
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   421
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   422
!NoteBookView methodsFor:'accessing look'!
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   423
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   424
backgroundColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   425
    "get backgroundColor of the notebook view
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   426
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   427
    ^ viewBackground
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   428
!
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   429
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   430
foregroundColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   431
    "get the color to be used for drawing text
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   432
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   433
    ^ foregroundColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   434
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   435
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   436
foregroundColor:aColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   437
    "set the color to be used for drawing text
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   438
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   439
    aColor ~= foregroundColor ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   440
        foregroundColor := aColor.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   441
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   442
        shown ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   443
            self invalidate
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   444
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   445
    ]
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   446
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   447
!
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   448
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   449
halfLightColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   450
    "get the color to be used for drawing text
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   451
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   452
    ^ halfLightColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   453
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   454
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   455
halfShadowColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   456
    ^ halfShadowColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   457
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   458
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   459
lightColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   460
    "get the color to be used for lighted edges
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   461
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   462
    ^ lightColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   463
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   464
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   465
shadowColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   466
    "get the color to be used for shadowed edges
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   467
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   468
    ^ shadowColor
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   469
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   470
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   471
!NoteBookView methodsFor:'accessing style'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   472
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   473
direction
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   474
    "returns the direction of tabs as symbol. On default the value is
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   475
     set to #top. Valid symbols are:
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   476
	#top       arrange tabs to be on top of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   477
	#bottom    arrange tabs to be on bottom of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   478
	#left      arrange tabs to be on left of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   479
	#right     arrange tabs to be on right of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   480
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   481
    ^ direction
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   482
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   483
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   484
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   485
direction:aDirection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   486
    "change the direction of tabs. On default the value is set to #top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   487
     Valid symbols are:
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   488
        #top       arrange tabs to be on top of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   489
        #bottom    arrange tabs to be on bottom of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   490
        #left      arrange tabs to be on left of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   491
        #right     arrange tabs to be on right of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   492
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   493
    direction ~~ aDirection ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   494
        direction       := aDirection.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   495
        preferredExtent := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   496
        numberOfLines   := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   497
        self invalidate.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   498
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   499
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   500
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   501
fitLastRow
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   502
    "in case of true, the last row is expanded to the view  size like all
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   503
     other raws. In case of false all the tabs in the last raw keep their
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   504
     preferred extent (x or y) dependant on the direction.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   505
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   506
    ^ fitLastRow
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   507
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   508
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   509
fitLastRow:aBool
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   510
    "in case of true, the last row is expanded to the view  size like all
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   511
     other raws. In case of false all the tabs in the last raw keep their
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   512
     preferred extent (x or y) dependant on the direction.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   513
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   514
    fitLastRow := aBool
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   515
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   516
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   517
tabModus
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   518
    ^ tabModus
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   519
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   520
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   521
tabModus:aBoolean
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   522
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   523
    tabModus ~~ aBoolean ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   524
        (aBoolean and:[canvas notNil]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   525
            tabModus := aBoolean.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   526
            numberOfLines := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   527
            shown ifTrue:[self invalidate]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   528
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   529
    ]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   530
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   531
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   532
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   533
!NoteBookView methodsFor:'change & update'!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   534
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   535
update:something with:aParameter from:changedObject
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   536
    "one of my models changed its value
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   537
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   538
    |idx tab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   539
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   540
    changedObject == model         ifTrue:[^ self selection:model value].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   541
    changedObject == listHolder    ifTrue:[^ self list:(listHolder value)].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   542
    changedObject == enableChannel ifTrue:[^ self enabled:enableChannel value].
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   543
    changedObject == canvasHolder  ifTrue:[^ self canvas:canvasHolder value].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   544
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   545
    (idx := list findFirst:[:aTab| aTab label == changedObject]) ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   546
        tab := list at:idx.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   547
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   548
        idx == selection ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   549
            tab isEnabled ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   550
                ^ self selection:nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   551
            ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   552
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   553
        tab label:(tab label) on:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   554
        self invalidateTab:tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   555
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   556
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   557
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   558
!NoteBookView methodsFor:'drawing'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   559
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   560
invalidateTab:aTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   561
    "invalidate a tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   562
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   563
    shown ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   564
        self invalidate:(self computeLayoutForTab:aTab)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   565
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   566
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   567
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   568
redrawX:x y:y width:w height:h
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   569
    "a region must be redrawn
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   570
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   571
    |savClip selTab damage lyt savLyt|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   572
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   573
    self shown ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   574
        ^ self
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   575
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   576
    numberOfLines isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   577
        self recomputeList.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   578
      ^ self invalidate
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   579
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   580
    selTab := selection notNil ifTrue:[list at:selection] ifFalse:[nil].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   581
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   582
    (selTab notNil and:[selTab lineNr ~~ 1]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   583
        self makeToBaseLine:(selTab lineNr).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   584
      ^ self invalidate
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   585
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   586
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   587
    self paint:(self viewBackground).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   588
    self fillRectangleX:x y:y width:w height:h.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   589
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   590
    savClip := clipRect.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   591
    damage  := Rectangle left:x top:y width:w height:h.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   592
    self clippingRectangle:damage.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   593
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   594
    list notEmpty ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   595
        numberOfLines to:1 by:-1 do:[:aLnNr|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   596
            list reverseDo:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   597
                (     aTab lineNr == aLnNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   598
                 and:[aTab ~~ selTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   599
                 and:[aTab intersects:damage]]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   600
                ) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   601
                    aTab redrawAt:direction selected:false on:self
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   602
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   603
            ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   604
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   605
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   606
        selTab := nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   607
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   608
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   609
    tabModus ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   610
        lyt := self computeBorderLayout.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   611
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   612
        self drawEdgesForX:lyt left 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   613
                         y:lyt top
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   614
                     width:lyt width 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   615
                    height:lyt height
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   616
                     level:2
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   617
                    shadow:shadowColor 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   618
                    light:lightColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   619
                    halfShadow:halfShadowColor 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   620
                    halfLight:halfLightColor 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   621
                    style:#softWin95.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   622
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   623
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   624
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   625
    selTab notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   626
        lyt := self computeLayoutForTab:selTab.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   627
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   628
        (lyt intersects:damage) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   629
            savLyt := selTab layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   630
            selTab layout:lyt.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   631
            selTab redrawAt:direction selected:true on:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   632
            selTab layout:savLyt.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   633
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   634
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   635
    self clippingRectangle:savClip
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   636
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   637
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   638
!NoteBookView methodsFor:'event handling'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   639
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   640
buttonPress:button x:x y:y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   641
    "a button is pressed; find tab under point and set the selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   642
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   643
    |idx|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   644
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   645
    (enabled and:[list notEmpty]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   646
        idx := list findFirst:[:aTab| aTab containsPointX:x y:y ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   647
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   648
        (idx ~~ 0 and:[idx ~~ selection and:[(list at:idx) isEnabled]]) ifTrue:[
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   649
            self selection:idx
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   650
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   651
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   652
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   653
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   654
keyPress:aKey x:x y:y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   655
    "selection might change; look for corresponding list entry
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   656
    "
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   657
    <resource: #keyboard (#CursorRight #CursorLeft)>
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   658
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   659
    |sensor size index n|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   660
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   661
    (enabled and:[(size := list size) > 1]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   662
        ^ self
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   663
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   664
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   665
    aKey isCharacter ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   666
        (selection isNil or:[selection == size]) ifTrue:[index := 1]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   667
                                                ifFalse:[index := selection + 1].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   668
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   669
        n := index - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   670
        [   
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   671
            n := self findTabStartingWithKey:aKey startingAt:n + 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   672
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   673
            (n ~~ 0 and:[self isSelectable:n]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   674
                ^ self selection:n
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   675
            ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   676
            n ~~ 0
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   677
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   678
        ] whileTrue.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   679
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   680
        index ~~ 1 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   681
            (n := self findTabStartingWithKey:aKey startingAt:1) ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   682
                ^ self selection:n
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   683
            ]
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   684
        ].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   685
        ^ self
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   686
    ].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   687
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   688
    (aKey == #CursorRight or:[aKey == #CursorLeft]) ifFalse:[
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   689
        ^ super keyPress:aKey x:x y:y
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   690
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   691
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   692
    (sensor := self sensor) notNil ifTrue:[
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   693
        n := 1 + (sensor compressKeyPressEventsWithKey:aKey).
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   694
        n := (n \\ size) max:1.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   695
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   696
        aKey == #CursorRight ifTrue:[
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   697
            index := selection ? 1.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   698
            [   (index := index + 1) > size ifTrue:[index := 1].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   699
                (self isSelectable:index)   ifTrue:[n := n - 1].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   700
                n ~~ 0
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   701
            ] whileTrue.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   702
        ] ifFalse:[
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   703
            index := selection ? size.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   704
            [   (index := index - 1) == 0 ifTrue:[index := size].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   705
                (self isSelectable:index) ifTrue:[n     := n -1].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   706
                n ~~ 0
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   707
            ] whileTrue.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   708
        ].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   709
        self selection:index
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   710
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   711
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   712
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   713
sizeChanged:how
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   714
    "size of view changed 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   715
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   716
    super sizeChanged:how.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   717
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   718
    list notEmpty ifTrue:[
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   719
        lastComputedExtent ~= self extent ifTrue:[
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   720
            numberOfLines := nil.
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   721
            shown ifTrue:[self invalidate]
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   722
        ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   723
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   724
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   725
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   726
!NoteBookView methodsFor:'initialize / release'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   727
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   728
destroy
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   729
    "remove dependencies
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   730
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   731
    list removeDependent:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   732
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   733
    listHolder    removeDependent:self. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   734
    enableChannel removeDependent:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   735
    canvasHolder  removeDependent:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   736
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   737
    super destroy.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   738
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   739
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   740
initStyle
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   741
    "setup style attributes
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   742
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   743
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   744
    super initStyle.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   745
    self font:self class defaultFont.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   746
    foregroundColor := Color black on:device.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   747
    shadowColor     := foregroundColor.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   748
    halfLightColor  := Color white on:device.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   749
    halfShadowColor := Color gray  on:device.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   750
    tabModus        := false.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   751
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   752
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   753
initialize
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   754
    "setup default attributes
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   755
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   756
    super initialize.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   757
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   758
    self cursor:Cursor hand.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   759
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   760
    list            := #().
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   761
    useIndex        := true.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   762
    direction       := #top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   763
    fitLastRow      := true.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   764
    enabled         := true.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   765
    expandSelection := 6@4.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   766
    canvasInset     := 8.
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   767
    keepCanvas      := false.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   768
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   769
    self lineWidth:0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   770
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   771
    canvas notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   772
        canvas := canvas in:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   773
    ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   774
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   775
!
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   776
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   777
realize
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   778
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   779
    (canvas notNil and:[numberOfLines isNil]) ifTrue:[
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   780
        self recomputeList
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   781
    ].
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   782
    super realize.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   783
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   784
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   785
!NoteBookView methodsFor:'layout'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   786
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   787
computeBorderLayout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   788
    |xL yT xR yB tab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   789
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   790
    self paint:lightColor.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   791
    tab := list detect:[:aTab| aTab lineNr == 1] ifNone:nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   792
    xL  := 0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   793
    yT  := 0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   794
    xR  := width.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   795
    yB  := height.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   796
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   797
    tab notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   798
                 direction == #top    ifTrue:[yT := tab layout bottom]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   799
        ifFalse:[direction == #bottom ifTrue:[yB := tab layout top]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   800
        ifFalse:[direction == #left   ifTrue:[xL := tab layout right]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   801
                                     ifFalse:[xR := tab layout left]]]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   802
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   803
    ^ Rectangle left:xL top:yT right:xR bottom:yB
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   804
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   805
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   806
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   807
computeCanvasLayout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   808
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   809
    ^ self computeBorderLayout expandBy:(canvasInset negated).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   810
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   811
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   812
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   813
computeLayoutForTab:aTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   814
    "calculate extent of a tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   815
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   816
    |layout x y w h level|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   817
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   818
    layout := aTab layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   819
    level  := 2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   820
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   821
    self selectedTab == aTab ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   822
        layout := layout copy.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   823
        w := expandSelection x.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   824
        h := expandSelection y.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   825
        x := w // 2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   826
        y := h // 2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   827
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   828
        self isHorizontal ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   829
            layout setLeft:(layout left   - x).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   830
            layout   width:(layout width  + w).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   831
            layout  setTop:(layout top    - y).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   832
            layout  height:(layout height + y + level).
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   833
        ] ifFalse:[
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   834
            layout setLeft:(layout left       - level).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   835
            layout   width:(layout width  + y + level).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   836
            layout  setTop:(layout top    - x).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   837
            layout  height:(layout height + w).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   838
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   839
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   840
    ^ layout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   841
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   842
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   843
makeToBaseLine:aLnNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   844
    |layout1 layoutN topN top1 leftN left1
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   845
     nr "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   846
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   847
    nr := list findFirst:[:aTab| aTab lineNr == 1].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   848
    layout1 := (list at:nr) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   849
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   850
    nr := list findFirst:[:aTab| aTab lineNr == aLnNr].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   851
    layoutN := (list at:nr) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   852
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   853
    self isHorizontal ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   854
        top1 := layout1 top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   855
        topN := layoutN top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   856
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   857
        list do:[:el|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   858
            (nr := el lineNr) == 1 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   859
                el layout setTop:topN. el lineNr:aLnNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   860
            ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   861
                nr == aLnNr ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   862
                    el layout setTop:top1. el lineNr:1
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   863
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   864
            ]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   865
        ]
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   866
    ] ifFalse:[
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   867
        left1 := layout1 left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   868
        leftN := layoutN left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   869
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   870
        list do:[:el|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   871
            (nr := el lineNr) == 1 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   872
                el layout setLeft:leftN. el lineNr:aLnNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   873
            ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   874
                nr == aLnNr ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   875
                    el layout setLeft:left1. el lineNr:1
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   876
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   877
            ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   878
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   879
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   880
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   881
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   882
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   883
recomputeList
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   884
    "recompute list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   885
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   886
    numberOfLines := 1.
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   887
    lastComputedExtent := self extent.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   888
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   889
    list notEmpty ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   890
        self isHorizontal ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   891
            self recomputeListHorizontal
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   892
        ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   893
            self recomputeListVertical
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   894
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   895
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   896
    canvas notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   897
        canvas layout:(self computeCanvasLayout)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   898
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   899
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   900
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   901
recomputeListHorizontal
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   902
    "recompute list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   903
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   904
    |layout lastLyt checkDir
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   905
     xLeft     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   906
     yTop      "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   907
     tabWidth  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   908
     tabHeight "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   909
     lineWidth "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   910
     startX    "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   911
     delta     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   912
     first     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   913
     last      "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   914
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   915
    startX     := expandSelection x // 2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   916
    lineWidth  := self width - startX.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   917
    tabHeight  := self maxTabHeight.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   918
    xLeft      := startX.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   919
    yTop       := expandSelection y.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   920
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   921
    checkDir := canvas isNil ifTrue:[#top] ifFalse:[#bottom].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   922
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   923
    direction == #bottom ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   924
        yTop := self height - tabHeight - yTop
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   925
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   926
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   927
    list do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   928
        tabWidth := aTab preferredExtentX.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   929
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   930
        (xLeft + tabWidth > lineWidth and:[xLeft ~~ startX]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   931
            numberOfLines := numberOfLines + 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   932
            xLeft := startX.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   933
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   934
        aTab lineNr:numberOfLines.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   935
        aTab layout:(Rectangle left:xLeft top:yTop width:tabWidth height:tabHeight).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   936
        xLeft := xLeft + tabWidth
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   937
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   938
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   939
    numberOfLines ~~ 1 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   940
        last  := numberOfLines.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   941
        delta := direction == #bottom ifFalse:[tabHeight]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   942
                                       ifTrue:[tabHeight negated].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   943
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   944
        list reverseDo:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   945
            aTab lineNr ~~ last ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   946
                last := aTab lineNr.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   947
                yTop := yTop + delta
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   948
            ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   949
            aTab layout setTop:yTop
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   950
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   951
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   952
    tabModus ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   953
        layout := (list at:1) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   954
        delta  := direction == #top ifTrue:[self height - layout bottom]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   955
                                   ifFalse:[layout top negated].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   956
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   957
        list do:[:aTab| aTab layout setTop:(aTab layout top + delta)].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   958
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   959
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   960
    "/ FIT LINES
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   961
    (numberOfLines ~~ 1 or:[fitLastRow]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   962
        ^ self
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   963
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   964
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   965
    first := 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   966
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   967
    1 to:numberOfLines do:[:aLnNr|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   968
        last    := list findLast:[:t|t lineNr == aLnNr].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   969
        lastLyt := (list at:last) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   970
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   971
        (delta := lineWidth - lastLyt right) ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   972
            xLeft := startX.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   973
            delta := delta // (last - first + 1).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   974
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   975
            delta ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   976
                list from:first to:last do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   977
                    layout   := aTab layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   978
                    tabWidth := layout width + delta.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   979
                    layout setLeft:xLeft.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   980
                    layout width:tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   981
                    xLeft := xLeft + tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   982
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   983
            ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   984
            lastLyt width:(lineWidth - lastLyt left)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   985
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   986
        first := last + 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   987
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   988
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   989
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   990
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   991
recomputeListVertical
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   992
    "recompute list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   993
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   994
    |layout lastLyt
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   995
     xTop      "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   996
     yTop      "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   997
     tabWidth  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   998
     tabHeight "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   999
     lineHeight "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1000
     startY    "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1001
     delta     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1002
     first     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1003
     last      "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1004
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1005
    startY     := expandSelection x // 2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1006
    lineHeight := self height - startY.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1007
    tabHeight  := self maxTabHeight.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1008
    yTop       := startY.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1009
    xTop       := expandSelection y.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1010
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1011
    direction == #right ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1012
        xTop  := self width - tabHeight - xTop
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1013
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1014
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1015
    list do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1016
        tabWidth := aTab preferredExtentX.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1017
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1018
        (yTop + tabWidth > lineHeight and:[yTop ~~ startY])ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1019
            numberOfLines := numberOfLines + 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1020
            yTop := startY.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1021
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1022
        aTab lineNr:numberOfLines.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1023
        aTab layout:(Rectangle left:xTop top:yTop width:tabHeight height:tabWidth).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1024
        yTop := yTop + tabWidth
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1025
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1026
    numberOfLines ~~ 1 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1027
        last  := numberOfLines.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1028
        delta := direction == #left ifTrue:[tabHeight] ifFalse:[tabHeight negated].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1029
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1030
        list reverseDo:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1031
            aTab lineNr ~~ last ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1032
                last := aTab lineNr.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1033
                xTop := xTop + delta
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1034
            ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1035
            aTab layout setLeft:xTop
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1036
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1037
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1038
    tabModus ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1039
        layout := (list at:1) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1040
        delta  := direction == #left ifTrue:[self width - layout right]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1041
                                    ifFalse:[layout left negated].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1042
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1043
        list do:[:aTab| aTab layout setLeft:(aTab layout left + delta)].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1044
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1045
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1046
    "/ FIT LINES
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1047
    (numberOfLines ~~ 1 or:[fitLastRow]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1048
        ^ self
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1049
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1050
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1051
    first := 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1052
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1053
    1 to:numberOfLines do:[:aLnNr|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1054
        last    := list findLast:[:t|t lineNr == aLnNr].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1055
        lastLyt := (list at:last) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1056
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1057
        (delta := lineHeight - lastLyt bottom) ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1058
            yTop  := startY.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1059
            delta := delta // (last - first + 1).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1060
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1061
            delta ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1062
                list from:first to:last do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1063
                    layout   := aTab layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1064
                    tabWidth := layout height + delta.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1065
                    layout setTop:yTop.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1066
                    layout height:tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1067
                    yTop := yTop + tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1068
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1069
            ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1070
            lastLyt height:(lineHeight - lastLyt top)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1071
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1072
        first := last + 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1073
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1074
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1075
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1076
!NoteBookView methodsFor:'obsolete'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1077
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1078
labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1079
    "return the list of labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1080
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1081
    ^ self list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1082
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1083
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1084
labels:aListOfLabels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1085
    "set the list of labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1086
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1087
    ^ self list:aListOfLabels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1088
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1089
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1090
labelsHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1091
    "get the model, which keeps the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1092
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1093
    ^ self listHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1094
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1095
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1096
labelsHolder:aValueHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1097
    "set the model, which keeps the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1098
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1099
    self listHolder:aValueHolder. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1100
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1101
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1102
moveSelectedRow
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1103
     ^ true
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1104
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1105
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1106
moveSelectedRow:something
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1107
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1108
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1109
oneTabPerLine
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1110
    ^ false
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1111
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1112
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1113
oneTabPerLine:something
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1114
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1115
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1116
tabWidget
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1117
    ^ nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1118
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1119
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1120
tabWidget:something
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1121
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1122
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1123
!NoteBookView methodsFor:'private'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1124
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1125
findTabStartingWithKey:aKey startingAt:anIndex
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1126
    "get index of tab starting its printableLabel with a key or 0
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1127
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1128
    |upper lower string char|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1129
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1130
    (aKey isCharacter and:[anIndex <= list size]) ifFalse:[ ^ 0 ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1131
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1132
    upper := aKey asUppercase.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1133
    lower := aKey asLowercase.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1134
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1135
  ^ list findFirst:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1136
        (     (string := aTab string) size ~~ 0
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1137
         and:[((char  := string first) == lower or:[char == upper])]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1138
        )
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1139
    ] startingAt:anIndex
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1140
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1141
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1142
!NoteBookView methodsFor:'queries'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1143
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1144
isEnabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1145
    "returns enabled state
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1146
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1147
    ^ enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1148
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1149
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1150
isFirstTabInLine:aTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1151
    |idx tab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1152
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1153
    idx := list identityIndexOf:aTab.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1154
    tab := list at:(idx - 1) ifAbsent:nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1155
  ^ (tab isNil or:[tab lineNr ~~ aTab lineNr])
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1156
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1157
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1158
isHorizontal
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1159
    "returns true in case of direction is #top or #bottom
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1160
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1161
    ^ (direction == #top or:[direction == #bottom])
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1162
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1163
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1164
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1165
isLastTabInLine:aTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1166
    |index tab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1167
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1168
    index := list identityIndexOf:aTab.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1169
    tab := list at:(index + 1) ifAbsent:nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1170
  ^ (tab isNil or:[tab lineNr ~~ aTab lineNr])
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1171
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1172
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1173
!NoteBookView methodsFor:'selection'!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1174
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1175
isSelectable:anIndex
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1176
    "returns true if tab at an index is selectable
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1177
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1178
    (anIndex notNil and:[anIndex between:1 and:list size]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1179
        (list at:anIndex) isEnabled ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1180
            ^ selectConditionBlock isNil ifTrue:[true]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1181
                                        ifFalse:[selectConditionBlock value:anIndex]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1182
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1183
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1184
    ^ false
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1185
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1186
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1187
selectedTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1188
    "returns the selected tab ot nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1189
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1190
    ^ selection notNil ifTrue:[list at:selection] ifFalse:[nil]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1191
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1192
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1193
selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1194
    "return the selection or nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1195
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1196
    selection isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1197
        ^ useIndex ifTrue:[0] ifFalse:[nil]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1198
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1199
    ^ useIndex ifTrue:[selection] ifFalse:[(list at:selection) label]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1200
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1201
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1202
selection:anIndexOrNil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1203
    "change the selection to index or nil. The model and/or actionBlock is notified
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1204
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1205
    |oldSel|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1206
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1207
    anIndexOrNil ~~ selection ifTrue:[
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1208
        oldSel := selection.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1209
        self setSelection:anIndexOrNil.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1210
        oldSel ~~ selection ifTrue:[self selectionChanged]
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1211
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1212
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1213
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1214
selectionChanged
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1215
    "selection has changed; raise notification
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1216
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1217
    |sel|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1218
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1219
    sel := self selection.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1220
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1221
    model  notNil ifTrue:[model  value:sel].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1222
    action notNil ifTrue:[action value:sel]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1223
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1224
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1225
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1226
setSelection:anIndexOrNil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1227
    "change the selection to index or nil. No notifications are raised
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1228
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1229
    |newSel lnNr|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1230
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1231
    newSel := self listIndexOf:anIndexOrNil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1232
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1233
    (newSel notNil and:[(self isSelectable:newSel) not]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1234
        newSel := nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1235
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1236
    selection == newSel ifTrue:[^ self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1237
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1238
    (shown and:[numberOfLines notNil]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1239
        selection := newSel.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1240
        self invalidate
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1241
    ] ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1242
        selection notNil ifTrue:[self invalidateTab:(list at:selection)].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1243
        selection := newSel.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1244
        selection notNil ifTrue:[self invalidateTab:(list at:selection)].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1245
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1246
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1247
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1248
!NoteBookView::Tab class methodsFor:'instance creation'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1249
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1250
label:aLabel on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1251
    ^ self basicNew label:aLabel on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1252
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1253
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1254
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1255
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1256
!NoteBookView::Tab methodsFor:'accessing'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1257
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1258
label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1259
    "returns my original label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1260
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1261
    ^ label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1262
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1263
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1264
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1265
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1266
label:aLabel on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1267
    "initialize attributes
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1268
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1269
    label := aLabel.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1270
    model := (aLabel isKindOf:TabItem) ifTrue:[aLabel] ifFalse:[nil].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1271
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1272
    printableLabel := model notNil ifTrue:[model rawLabel]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1273
                                  ifFalse:[aLabel].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1274
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1275
    printableLabel notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1276
        printableLabel isImageOrForm ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1277
            printableLabel := printableLabel onDevice:(aGC device)
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1278
        ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1279
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1280
        printableLabel := ''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1281
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1282
    extent := (printableLabel widthOn:aGC) @ (printableLabel heightOn:aGC).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1283
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1284
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1285
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1286
lineNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1287
    "get the line number
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1288
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1289
    ^ lineNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1290
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1291
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1292
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1293
lineNr:aLineNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1294
    "set the line number
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1295
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1296
    lineNr := aLineNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1297
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1298
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1299
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1300
printableLabel
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1301
    "get my printable label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1302
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1303
    ^ printableLabel
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1304
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1305
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1306
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1307
string
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1308
    "access the printable string used for steping through a list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1309
     searching for an entry starting with a character.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1310
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1311
    ^ printableLabel perform:#string ifNotUnderstood:nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1312
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1313
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1314
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1315
!NoteBookView::Tab methodsFor:'accessing dimensions'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1316
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1317
extent
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1318
    "returns the extent of the label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1319
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1320
    ^ extent
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1321
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1322
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1323
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1324
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1325
layout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1326
    "get the tab's layout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1327
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1328
    ^ layout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1329
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1330
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1331
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1332
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1333
layout:aLayout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1334
    "set the tab's layout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1335
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1336
    layout := aLayout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1337
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1338
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1339
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1340
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1341
preferredExtentX
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1342
    "returns my preferred extent x
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1343
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1344
    ^ 4 + extent x
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1345
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1346
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1347
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1348
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1349
preferredExtentY
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1350
    "returns my preferred extent y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1351
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1352
    ^ 4 + extent y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1353
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1354
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1355
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1356
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1357
!NoteBookView::Tab methodsFor:'accessing mvc'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1358
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1359
addDependent:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1360
    "make the noteBook be a dependent of the tab model
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1361
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1362
    model notNil ifTrue:[model addDependent:aGC]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1363
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1364
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1365
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1366
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1367
removeDependent:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1368
    "make the noteBook be independent of the tab model
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1369
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1370
    model notNil ifTrue:[model removeDependent:aGC]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1371
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1372
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1373
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1374
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1375
!NoteBookView::Tab methodsFor:'drawing'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1376
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1377
drawAtBottomOn:aGC selected:isSelected
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1378
    "redraw tab at bottom of view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1379
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1380
    |yT "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1381
     xL "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1382
     xR "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1383
     yB "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1384
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1385
    xL := layout left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1386
    yT := layout top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1387
    xR := layout right  - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1388
    yB := layout bottom - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1389
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1390
    aGC paint:(aGC halfLightColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1391
    aGC displayLineFromX:xL+1 y:yB   toX:xL+1 y:yT.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1392
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1393
    aGC paint:(aGC lightColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1394
    aGC displayLineFromX:xL   y:yB-1 toX:xL   y:yT.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1395
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1396
    aGC paint:(aGC shadowColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1397
    aGC displayLineFromX:xL+1 y:yB   toX:xR-2 y:yB.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1398
    aGC displayLineFromX:xR   y:yT   toX:xR   y:yB-2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1399
    aGC displayPointX:xR-1    y:yB-1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1400
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1401
    aGC paint:(aGC halfShadowColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1402
    aGC displayLineFromX:xR-1 y:yT-1 toX:xR-1 y:yB-2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1403
    aGC displayLineFromX:xL+2 y:yB-1 toX:xR-2 y:yB-1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1404
    aGC displayPointX:xR-2    y:yB-2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1405
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1406
    isSelected ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1407
        (aGC  isLastTabInLine:self) ifFalse:[aGC displayPointX:xR y:yT].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1408
        (aGC isFirstTabInLine:self) ifFalse:[aGC displayPointX:xL y:yT].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1409
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1410
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1411
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1412
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1413
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1414
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1415
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1416
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1417
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1418
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1419
drawAtLeftOn:aGC selected:isSelected
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1420
    "redraw tab at left of view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1421
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1422
    |yT "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1423
     xL "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1424
     xR "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1425
     yB "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1426
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1427
    xL := layout left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1428
    yT := layout top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1429
    xR := layout right  - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1430
    yB := layout bottom - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1431
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1432
    aGC paint:(aGC shadowColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1433
    aGC displayLineFromX:xR y:yB   toX:xL+2 y:yB.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1434
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1435
    aGC paint:(aGC halfShadowColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1436
    aGC displayLineFromX:xR y:yB-1 toX:xL+1 y:yB-1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1437
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1438
    aGC paint:(aGC lightColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1439
    aGC displayLineFromX:xL+2 y:yT   toX:xR   y:yT.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1440
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1441
    aGC paint:(aGC halfLightColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1442
    aGC displayLineFromX:xL   y:yT+2 toX:xL   y:yB-3.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1443
    aGC displayLineFromX:xL+1 y:yT+2 toX:xL+1 y:yB-2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1444
    aGC displayLineFromX:xL+1 y:yT+1 toX:xR   y:yT+1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1445
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1446
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1447
    (aGC isLastTabInLine:self)  ifFalse:[aGC displayPointX:xR y:yB].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1448
    (aGC isFirstTabInLine:self) ifFalse:[aGC displayPointX:xR y:yT].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1449
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1450
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1451
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1452
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1453
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1454
drawAtRightOn:aGC selected:isSelected
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1455
    "redraw tab at right of view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1456
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1457
    |yT "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1458
     xL "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1459
     xR "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1460
     yB "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1461
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1462
    xL := layout left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1463
    yT := layout top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1464
    xR := layout right - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1465
    yB := layout bottom - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1466
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1467
    aGC paint:(aGC lightColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1468
    aGC displayLineFromX:xL   y:yT   toX:xR-2 y:yT.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1469
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1470
    aGC paint:(aGC halfLightColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1471
    aGC displayLineFromX:xL   y:yT+1 toX:xR-2   y:yT+1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1472
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1473
    aGC paint:(aGC shadowColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1474
    aGC displayLineFromX:xR-2   y:yB   toX:xL y:yB.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1475
    aGC displayLineFromX:xR   y:yT+2 toX:xR y:yB-2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1476
    aGC displayPointX:xR-1 y:yB-1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1477
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1478
    aGC paint:(aGC halfShadowColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1479
    aGC displayLineFromX:xR-2 y:yB-1 toX:xL y:yB-1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1480
    aGC displayLineFromX:xR-1 y:yT+1 toX:xR-1 y:yB-2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1481
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1482
    isSelected ifFalse:[^ self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1483
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1484
    (aGC isLastTabInLine:self)  ifFalse:[aGC displayPointX:xL y:yB].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1485
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1486
    (aGC isFirstTabInLine:self) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1487
        aGC displayPointX:xL y:yT+1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1488
        aGC displayPointX:xL y:yT
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1489
    ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1490
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1491
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1492
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1493
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1494
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1495
drawAtTopOn:aGC selected:isSelected
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1496
    "redraw tab at top of view
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1497
    "
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1498
    |
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1499
     yT "{ Class:SmallInteger }"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1500
     xL "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1501
     xR "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1502
     yB "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1503
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1504
    xL := layout left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1505
    yT := layout top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1506
    xR := layout right  - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1507
    yB := layout bottom - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1508
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1509
    aGC paint:(aGC shadowColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1510
    aGC displayLineFromX:xR   y:yB toX:xR   y:yT+2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1511
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1512
    aGC paint:(aGC halfShadowColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1513
    aGC displayLineFromX:xR-1 y:yB toX:xR-1 y:yT+1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1514
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1515
    aGC paint:(aGC lightColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1516
    aGC displayLineFromX:xL+2 y:yT toX:xR-2 y:yT.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1517
    aGC displayLineFromX:xL   y:yB toX:xL   y:yT+2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1518
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1519
    aGC paint:(aGC halfLightColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1520
    aGC displayLineFromX:xL+2 y:yT+1 toX:xR-2 y:yT+1.
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1521
    aGC displayLineFromX:xL+1 y:yB toX:xL+1 y:yT+1.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1522
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1523
    isSelected ifFalse:[^ self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1524
    (aGC isLastTabInLine:self)  ifFalse:[aGC displayPointX:xR y:yB].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1525
    (aGC isFirstTabInLine:self) ifFalse:[aGC displayPointX:xL y:yB].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1526
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1527
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1528
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1529
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1530
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1531
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1532
redrawAt:aDirection selected:isSelected on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1533
    "redraw tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1534
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1535
    |dispObj fgColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1536
     y  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1537
     x  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1538
     dI "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1539
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1540
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1541
    isSelected ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1542
        aGC paint:(aGC backgroundColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1543
        layout displayFilledOn:aGC.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1544
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1545
             aDirection == #top    ifTrue:[self drawAtTopOn:aGC    selected:isSelected]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1546
    ifFalse:[aDirection == #bottom ifTrue:[self drawAtBottomOn:aGC selected:isSelected]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1547
    ifFalse:[aDirection == #right  ifTrue:[self drawAtRightOn:aGC  selected:isSelected]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1548
    ifFalse:[aDirection == #left   ifTrue:[self drawAtLeftOn:aGC   selected:isSelected]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1549
    ifFalse:[^ self]]]].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1550
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1551
    "/ REDRAW LABEL
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1552
    (aGC isEnabled and:[self isEnabled]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1553
        dispObj := printableLabel.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1554
        fgColor := aGC foregroundColor.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1555
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1556
        model notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1557
           fgColor := model foregroundColor ? fgColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1558
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1559
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1560
        fgColor := aGC lightColor.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1561
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1562
        (dispObj := disabledLabel) isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1563
            (dispObj := printableLabel) isImageOrForm ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1564
                disabledLabel := printableLabel lightened onDevice:(aGC device)
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1565
            ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1566
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1567
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1568
    aGC paint:fgColor.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1569
    dI := 4.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1570
    (aDirection == #top or:[aDirection == #bottom]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1571
        x := (layout left) + (layout width - extent x // 2).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1572
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1573
        y := aDirection == #top ifTrue:[layout top + dI]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1574
                               ifFalse:[layout bottom - extent y - dI].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1575
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1576
        dispObj isImageOrForm ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1577
            y := y + aGC font ascent
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1578
        ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1579
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1580
        y := (layout top) + (layout height - extent x // 2).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1581
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1582
        x := aDirection == #left ifTrue:[layout left + dI]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1583
                                ifFalse:[layout right - extent y - dI].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1584
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1585
        dispObj isImageOrForm ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1586
            x := x + aGC font descent.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1587
            "/ workaround for a bug in display-with-angle,
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1588
            "/ iff displayed string is a labelAndIcon.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1589
            "/ (In this case, display is always opaque, and the current
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1590
            "/  backgroundPaint color is used to fill the underlying rectangle)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1591
            "/
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1592
            aGC backgroundPaint:(aGC paint:fgColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1593
          ^ aGC displayString:dispObj x:x y:y angle:90.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1594
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1595
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1596
    dispObj displayOn:aGC x:x y:y
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1597
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1598
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1599
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1600
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1601
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1602
""
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1603
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1604
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1605
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1606
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1607
!NoteBookView::Tab methodsFor:'testing'!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1608
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1609
containsPointX:x y:y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1610
    "return true, if the point defined by x@y is contained in the tab.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1611
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1612
    ^ layout notNil ifTrue:[layout containsPointX:x y:y]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1613
                   ifFalse:[false].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1614
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1615
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1616
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1617
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1618
intersects:aRectangle
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1619
    "return true, if the intersection between the argument, aRectangle
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1620
     and the tab is not empty
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1621
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1622
    ^ layout notNil ifTrue:[layout intersects:aRectangle]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1623
                   ifFalse:[false].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1624
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
  1625
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1626
!
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
  1627
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1628
isEnabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1629
    "returne true if no model exists or the model is enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1630
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1631
    ^ (model isNil or:[model isEnabled])
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1632
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1633
386
eb0dd3efd92c bug fixes
ca
parents: 375
diff changeset
  1634
! !
eb0dd3efd92c bug fixes
ca
parents: 375
diff changeset
  1635
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1636
!NoteBookView class methodsFor:'documentation'!
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1637
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1638
version
1433
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
  1639
    ^ '$Header: /cvs/stx/stx/libwidg2/NoteBookView.st,v 1.17 1999-07-07 15:47:41 cg Exp $'
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1640
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1641
! !