NoteBookView.st
author ca
Mon, 14 Oct 2002 09:01:38 +0200
changeset 2288 43db53a74240
parent 2287 c9337aecb335
child 2289 d09c42411c8d
permissions -rw-r--r--
*** empty log message ***
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
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
    14
"{ Package: 'stx:libwidg2' }"
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
    15
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    16
View subclass:#NoteBookView
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    17
	instanceVariableNames:'list listHolder foregroundColor selection enabled action useIndex
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
    18
		direction numberOfLines selectConditionBlock accessTabMenuAction
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
    19
		canvas canvasInset canvasHolder halfLightColor halfShadowColor
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
    20
		fitLastRow tabModus lastComputedExtent keepCanvas
2287
c9337aecb335 *** empty log message ***
ca
parents: 2286
diff changeset
    21
		activeForegroundColor drawLightColor edgeStyle
c9337aecb335 *** empty log message ***
ca
parents: 2286
diff changeset
    22
		disabledForegroundColor tabLevel tabTopMargin tabBottomMargin
c9337aecb335 *** empty log message ***
ca
parents: 2286
diff changeset
    23
		selectionInsetX selectionInsetY'
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
    24
	classVariableNames:'DefaultForegroundColor DefaultActiveForegroundColor
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
    25
		DefaultShadowColor DefaultHalfShadowColor DefaultLightColor
1700
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
    26
		DefaultHalfLightColor DefaultEdgeStyle DisabledForegroundColor'
1401
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
	category:'Views-Layout'
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
Object subclass:#Tab
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
    32
	instanceVariableNames:'label model printableLabel disabledLabel lineNr layout extent
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
    33
		accessCharacter'
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    34
	classVariableNames:''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    35
	poolDictionaries:''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    36
	privateIn:NoteBookView
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    37
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    38
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    39
!NoteBookView class methodsFor:'documentation'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    40
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    41
copyright
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    42
"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    43
 COPYRIGHT (c) 1997 by eXept Software AG
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    44
              All Rights Reserved
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    45
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    46
 This software is furnished under a license and may be used
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    47
 only in accordance with the terms of that license and with the
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    48
 inclusion of the above copyright notice.   This software may not
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    49
 be provided or otherwise made available to, or used by, any
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    50
 other person.  No title to or ownership of the software is
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    51
 hereby transferred.
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    52
"
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    53
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
!
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
documentation
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    58
    implements the noteBook.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    59
    May also be used on its own (without a surrounding noteBook).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    60
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    61
    [author:]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    62
        Claus Atzkern
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    63
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    64
    [see also:]
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    65
        TabView
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    67
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    68
!
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    70
examples
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    71
"
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    72
    tabs at top ( default )
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    73
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    74
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    75
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    76
    top  := StandardSystemView extent:250@100.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
    77
    tab := NoteBookView origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    78
    tab list:#( 'Foo' 'Bar' 'Baz' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    79
    tab action:[:aName| Transcript showCR:aName].
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    80
    top open.
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    81
                                                                                [exEnd]
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    82
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    83
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    84
    tabs at bottom
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    85
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    86
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    87
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    88
    top  := StandardSystemView extent:250@100.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
    89
    tab := NoteBookView origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    90
    tab direction:#bottom.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    91
    tab list:#( 'Foo' 'Bar' 'Baz' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    92
    tab action:[:aName| Transcript showCR:aName].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    93
    top open.
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    94
                                                                                [exEnd]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    95
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    96
    tabs at left
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    97
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    98
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    99
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   100
    top  := StandardSystemView extent:100@200.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
   101
    tab := NoteBookView origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   102
    tab direction:#left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   103
    tab list:#( 'Foo' 'Bar' 'Baz' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   104
    tab action:[:aName| Transcript showCR:aName].
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   105
    top open.
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   106
                                                                                [exEnd]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   107
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   108
    tabs at right
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   109
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   110
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   111
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   112
    top  := StandardSystemView extent:100@200.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
   113
    tab := NoteBookView origin:0.0 @ 0.0 corner:1.0 @ 1.0 in:top.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   114
    tab direction:#right.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   115
    tab list:#( 'Foo' 'Bar' 'Baz' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   116
    tab action:[:aName| Transcript showCR:aName].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   117
    top open.
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   118
                                                                                [exEnd]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   119
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   120
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   121
"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   122
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   123
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   124
!NoteBookView class methodsFor:'defaults'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   125
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   126
defaultFont
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   127
    ^ MenuView defaultFont
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   128
!
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   129
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   130
updateStyleCache
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   131
"
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   132
self updateStyleCache
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   133
"
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   134
    DefaultForegroundColor := StyleSheet colorAt:#'noteBook.foregroundColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   135
    DefaultForegroundColor isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   136
        DefaultForegroundColor := StyleSheet colorAt:#'button.foregroundColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   137
    ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   138
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   139
    DefaultActiveForegroundColor := StyleSheet colorAt:#'noteBook.activeForegroundColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   140
    DefaultActiveForegroundColor isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   141
        DefaultActiveForegroundColor := StyleSheet colorAt:#'button.activeForegroundColor'
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   142
    ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   143
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   144
    DefaultLightColor := StyleSheet colorAt:#'noteBook.lightColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   145
    DefaultLightColor isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   146
        DefaultLightColor := StyleSheet colorAt:'button.lightColor'
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   147
    ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   148
    DefaultHalfLightColor := StyleSheet colorAt:#'noteBook.halfLightColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   149
    DefaultHalfLightColor isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   150
        DefaultHalfLightColor := StyleSheet colorAt:#'button.halfLightColor'
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   151
    ].    
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   152
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   153
    DefaultShadowColor := StyleSheet colorAt:#'noteBook.shadowColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   154
    DefaultShadowColor isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   155
        DefaultShadowColor := StyleSheet colorAt:'button.shadowColor'
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   156
    ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   157
    DefaultHalfShadowColor := StyleSheet colorAt:#'noteBook.halfShadowColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   158
    DefaultHalfShadowColor isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   159
        DefaultHalfShadowColor := StyleSheet colorAt:#'button.halfShadowColor'
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   160
    ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   161
    DefaultEdgeStyle := StyleSheet at:#'noteBook.edgeStyle'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   162
    DefaultEdgeStyle isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   163
        DefaultEdgeStyle := StyleSheet at:#'button.edgeStyle'
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   164
    ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   165
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
   166
    DefaultEdgeStyle == #softWin95 ifFalse:[
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   167
        DefaultEdgeStyle := nil
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   168
    ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   169
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   170
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   171
1724
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   172
!NoteBookView methodsFor:'accepting - items'!
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   173
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   174
tabAtIndex:tabIndex put:newLabel
1880
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   175
    |tab layout prefX prefY|
1724
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   176
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   177
    "/ a single items label has changed
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   178
    tab := list at:tabIndex ifAbsent:nil.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   179
    tab notNil ifTrue:[
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   180
        tab label:newLabel on:self.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   181
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   182
        "/ no resizing, if the new string fits
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   183
        "/ and is not too small for current tab-layout
1880
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   184
        layout := tab layout.
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   185
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   186
        (     (prefX := tab preferredExtentX) <= layout width
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   187
         and:[(prefY := tab preferredExtentY) <= layout height]
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   188
        ) ifTrue:[
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   189
            "/ the new string fits into current tab-layout
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   190
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   191
            numberOfLines == 1 ifTrue:[         "/ do not change the layout
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   192
                ^ self invalidateTab:tab
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   193
            ].
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   194
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   195
            "/ check whether the string is not too small for current tab-layout
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   196
            ((layout width <= (prefX * 1.5)) and:[layout height <= (prefY * 1.5)]) ifTrue:[
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   197
                ^ self invalidateTab:tab.      "/ do not change the layout
1724
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   198
            ].
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   199
        ].
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   200
        self recomputeList.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   201
        self invalidate.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   202
        ^ self.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   203
    ].
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   204
    "/ can this happen ?
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   205
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   206
    "Created: / 25.2.2000 / 14:13:59 / cg"
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   207
! !
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   208
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   209
!NoteBookView methodsFor:'accessing'!
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   211
canvas
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   212
    ^ canvas
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   213
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   214
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   215
canvas:aCanvas
2010
644587a3b8e2 added tabLevel
Claus Gittinger <cg@exept.de>
parents: 2002
diff changeset
   216
    "change the canvas; the containter view
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   217
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   218
    aCanvas == canvas ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   219
        canvas notNil ifTrue:[
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   220
            (keepCanvas or:[(canvas objectAttributeAt:#isTabItem) == true]) ifTrue:[
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   221
                canvas unmap.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   222
            ] ifFalse:[
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   223
                canvas destroy.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   224
            ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   225
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   226
        (canvas := aCanvas) notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   227
            tabModus := false.
2035
6cc4d73f17e1 bug fix when chaning the canvas before being realized
Claus Gittinger <cg@exept.de>
parents: 2010
diff changeset
   228
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   229
            self resizeCanvas.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   230
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   231
            (subViews size == 0 or:[(subViews includesIdentical:canvas) not]) ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   232
                self addSubView:canvas
1549
4c09c03efa29 never add a subcanvas twice
Stefan Vogel <sv@exept.de>
parents: 1543
diff changeset
   233
            ].
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   234
1687
70888239654f category changes
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
   235
            realized ifTrue:[
1892
be1292a9c565 if keepCanvas is true, use realize only once
tm
parents: 1880
diff changeset
   236
                (keepCanvas or:[(canvas objectAttributeAt:#isTabItem) == true]) ifTrue:[
be1292a9c565 if keepCanvas is true, use realize only once
tm
parents: 1880
diff changeset
   237
                    canvas id isNil ifTrue:[
be1292a9c565 if keepCanvas is true, use realize only once
tm
parents: 1880
diff changeset
   238
                        canvas realize
be1292a9c565 if keepCanvas is true, use realize only once
tm
parents: 1880
diff changeset
   239
                    ] ifFalse:[
be1292a9c565 if keepCanvas is true, use realize only once
tm
parents: 1880
diff changeset
   240
                        canvas map.
be1292a9c565 if keepCanvas is true, use realize only once
tm
parents: 1880
diff changeset
   241
                    ]
be1292a9c565 if keepCanvas is true, use realize only once
tm
parents: 1880
diff changeset
   242
                ] ifFalse:[
be1292a9c565 if keepCanvas is true, use realize only once
tm
parents: 1880
diff changeset
   243
                    canvas realize.
be1292a9c565 if keepCanvas is true, use realize only once
tm
parents: 1880
diff changeset
   244
                ].
2036
6f3927ad36fc oops - strange side effect
Claus Gittinger <cg@exept.de>
parents: 2035
diff changeset
   245
                canvas raise.
1687
70888239654f category changes
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
   246
            ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   247
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   248
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   249
!
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
list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   252
    "return the list of Tabs or Labels
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
    ^ list collect:[:aTab| aTab label ]
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
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   257
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   258
list:aList
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   259
    "set the list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   260
    "
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   261
    |name newList|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   262
1771
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   263
    name    := self selection.
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   264
    newList := OrderedCollection new.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   265
1771
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   266
    aList size == 0 ifTrue:[
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   267
        list do:[:aTab| aTab removeDependent:self].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   268
    ] ifFalse:[
1771
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   269
        list do:[:aTab| |m|
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   270
            (     (m := aTab model) notNil
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   271
             and:[(aList includesIdentical:m)]
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   272
            ) ifFalse:[
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   273
                aTab removeDependent:self
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   274
            ]
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   275
        ].
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   276
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   277
        aList do:[:el| |i tab|
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   278
            (    el isNil
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   279
             or:[(tab := list detect:[:t| t model == el] ifNone:nil) isNil]
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   280
            ) ifTrue:[
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   281
                tab := Tab label:el on:self.
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   282
                tab addDependent:self.
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   283
            ].
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   284
            newList add:tab
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   285
        ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   286
    ].
1771
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   287
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   288
    list            := newList.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   289
    preferredExtent := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   290
    numberOfLines   := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   291
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   292
    selection notNil ifTrue:[
1433
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   293
        useIndex ifTrue:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   294
            selection > list size ifTrue:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   295
                selection := nil.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   296
                self selectionChanged.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   297
            ]
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   298
        ] ifFalse:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   299
            selection := list findFirst:[:el| el label = name ].
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   300
            selection == 0 ifTrue:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   301
                selection := nil.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   302
                self selectionChanged.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   303
            ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   304
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   305
    ].
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   306
    self recomputeList.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   307
    self invalidate.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   308
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   309
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   310
listIndexOf:something
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   311
    "convert something to an index into list or nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   312
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   313
    |index|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   314
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   315
    something isNil ifTrue:[^ nil ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   316
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   317
    something isNumber ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   318
        index := something
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   319
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   320
        index := list findFirst:[:aTab|aTab label = something].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   321
        index == 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   322
            index := list findFirst:[:aTab|aTab printableLabel = something]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   323
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   324
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   325
    ^ (index between:1 and:list size) ifTrue:[index] ifFalse:[nil]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   326
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   327
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   328
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   329
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   330
useIndex
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   331
    "use index instead of name
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   332
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   333
    ^ useIndex
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   334
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
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   337
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   338
useIndex:aBoolean
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   339
    "set/clear the useIndex flag. If set, both actionBlock and change-messages
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   340
     are passed the index(indices) of the selection as argument. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   341
     If clear, the value(s) (i.e. the selected string) is passed.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   342
     Default is false."
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
    useIndex := aBoolean
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   345
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
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   348
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   349
!NoteBookView methodsFor:'accessing-actions'!
1802
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   350
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   351
accessTabMenuAction
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   352
    "callback to retrieve the menu for a specific tab.
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   353
     the argument to the block is the index of the tab
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   354
    "
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   355
    ^ accessTabMenuAction
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   356
!
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   357
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   358
accessTabMenuAction:aOneArgAction
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   359
    "callback to retrieve the menu for a specific tab.
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   360
     the argument to the block is the index of the tab
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   361
    "
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   362
    accessTabMenuAction := aOneArgAction.
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   363
!
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   364
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   365
action
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   366
    "get the action block to be performed on select; the argument to
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   367
     the block is the selected index or nil in case of no selection.
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   368
    "
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   369
    ^ action
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   370
!
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   371
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   372
action:oneArgBlock
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   373
    "set the action block to be performed on select; the argument to
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   374
     the block is the selected index or nil in case of no selection.
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   375
    "
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   376
    action := oneArgBlock.
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   377
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   378
! !
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   379
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   380
!NoteBookView methodsFor:'accessing-behavior'!
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   381
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   382
enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   383
    "returns true if tabs are enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   384
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   385
    ^ enabled
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
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   388
enabled:aState
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   389
    "set enabled state
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
    |state|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   392
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   393
    state := aState ? true.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   394
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   395
    enabled ~~ state ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   396
        enabled := state.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   397
        self invalidate.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   398
    ]
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   399
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   400
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   401
keepCanvas:aBoolean
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   402
    "if false (the default), the previous canvas is destroyed, whenever
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   403
     a new canvas is set.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   404
     if true, it is unmapped and kept.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   405
     Set this flag, if the application changes the canvas but wants
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   406
     them to be kept for fast switching."
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   407
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   408
    keepCanvas := aBoolean.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   409
!
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   410
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   411
selectConditionBlock
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   412
    "get the conditionBlock; this block is evaluated before a selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   413
     change is performed; the change will not be done, if the evaluation
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   414
     returns false. The argument to the block is the selection index
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   415
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   416
    ^ selectConditionBlock
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   417
!
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   418
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   419
selectConditionBlock:aOneArgBlock
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   420
    "get the conditionBlock; this block is evaluated before a selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   421
     change is performed; the change will not be done, if the evaluation
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   422
     returns false. The argument to the block is the selection index
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   423
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   424
    selectConditionBlock := aOneArgBlock
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   425
! !
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   426
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   427
!NoteBookView methodsFor:'accessing-channels/holders'!
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   428
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   429
canvasHolder
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   430
    "get the model, which keeps the canvas, a kind of SimpleView
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   431
    "
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   432
    ^ canvasHolder
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   433
!
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   434
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   435
canvasHolder:aValueHolder
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   436
    "set the model, which keeps the canvas, a kind of SimpleView
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   437
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   438
    canvasHolder removeDependent:self. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   439
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   440
    (canvasHolder := aValueHolder) notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   441
        canvasHolder addDependent:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   442
        self canvas:(canvasHolder value)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   443
    ]
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
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   446
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   447
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   448
listHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   449
    "get the model, which keeps the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   450
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   451
    ^ listHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   452
!
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
listHolder:aValueHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   455
    "set the model, which keeps the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   456
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   457
    listHolder removeDependent:self. 
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
    (listHolder := aValueHolder) notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   460
        listHolder addDependent:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   461
        self list:listHolder value.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   462
    ].
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   463
!
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   464
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   465
model:aValueHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   466
    "set the model, which keeps the selection
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
    super model:aValueHolder.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   469
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   470
    model notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   471
        self selection:(model value)
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
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   474
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   475
!NoteBookView methodsFor:'accessing-colors'!
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   476
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   477
activeForegroundColor
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   478
    "get the color to be used for drawing text
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   479
    "
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   480
    ^ activeForegroundColor
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   481
!
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   482
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   483
backgroundColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   484
    "get backgroundColor of the notebook view
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   485
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   486
    ^ viewBackground
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   487
!
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   488
1700
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   489
disabledForegroundColor
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   490
    ^ disabledForegroundColor
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   491
!
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   492
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   493
drawLightColor
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   494
    "get the color to be used for lighted edges; bug fix caused by common
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   495
     drawEdge
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   496
    "
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   497
    ^ drawLightColor
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   498
!
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   499
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   500
foregroundColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   501
    "get the color to be used for drawing text
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   502
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   503
    ^ foregroundColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   504
!
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
foregroundColor:aColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   507
    "set the color to be used for drawing text
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
    aColor ~= foregroundColor ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   510
        foregroundColor := aColor.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   511
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   512
        shown ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   513
            self invalidate
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   514
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   515
    ]
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   516
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   517
!
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   518
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   519
halfLightColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   520
    "get the color to be used for drawing text
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   521
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   522
    ^ halfLightColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   523
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   524
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   525
halfShadowColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   526
    ^ halfShadowColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   527
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   528
1684
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   529
viewBackground:aColor
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   530
    "get backgroundColor of the notebook view
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   531
    "
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   532
    super viewBackground:aColor.
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   533
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   534
    (edgeStyle isNil and:[viewBackground isColor]) ifTrue:[
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   535
        halfShadowColor := shadowColor.
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   536
        halfLightColor  := lightColor.
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   537
        drawLightColor  := lightColor.
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   538
    ].
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   539
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   540
    DefaultShadowColor isNil ifTrue:[
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   541
        shadowColor := aColor darkened onDevice:device
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   542
    ].
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   543
    DefaultLightColor isNil ifTrue:[
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   544
        lightColor := aColor lightened onDevice:device
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   545
    ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   546
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   547
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   548
!NoteBookView methodsFor:'accessing-dimension'!
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   549
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   550
preferredExtent
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   551
    "compute max extent x/y based on one line
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   552
    "
2284
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   553
    |level size x y isHorizontal insetX insetY extent|
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   554
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   555
    preferredExtent notNil ifTrue:[ ^ preferredExtent ].
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   556
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   557
    x := y := 0.
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   558
    level := (tabLevel abs) max:1.
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   559
    size  := list size.
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   560
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   561
    size ~~ 0 ifTrue:[
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   562
        list do:[:aTab|
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   563
            x := x +   (aTab preferredExtentX).
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   564
            y := y max:(aTab preferredExtentY).
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   565
        ].
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   566
    ].
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   567
    y := y + selectionInsetY + level + tabTopMargin + tabBottomMargin.
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   568
    x := x + selectionInsetX + selectionInsetX + (level + level * size).
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   569
2284
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   570
    isHorizontal := self isHorizontal.
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   571
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   572
    tabModus ifFalse:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   573
        canvasInset isPoint ifTrue:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   574
            insetX := canvasInset x.
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   575
            insetY := canvasInset y.
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   576
        ] ifFalse:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   577
            insetX := insetY := canvasInset.
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   578
        ].
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   579
        canvas notNil ifTrue:[ extent := canvas preferredExtent ]
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   580
                     ifFalse:[ extent := 100@100 ].
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   581
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   582
        y := y + insetY + insetY + extent y.
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   583
        x := x max:extent x.
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   584
        x := x + insetX + insetX + level + level.
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   585
    ].
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   586
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   587
    isHorizontal ifTrue:[ ^ x @ y ].
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   588
  ^ y @ x
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   589
! !
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   590
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   591
!NoteBookView methodsFor:'accessing-style'!
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   592
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   593
canvasInset
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   594
    "inset of the canvas relative to my frame
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   595
        tabLevel + canvasInset == origin of canvas
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   596
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   597
    ^ canvasInset
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   598
!
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   599
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   600
canvasInset:anInset
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   601
    "inset of the canvas relative to my frame
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   602
        tabLevel + canvasInset == origin of canvas
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   603
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   604
    anInset ~~ canvasInset ifTrue:[
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   605
        canvasInset := anInset.
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   606
        self styleChanged.
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   607
    ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   608
!
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   609
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   610
direction
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   611
    "returns the direction of tabs as symbol. On default the value is
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   612
     set to #top. Valid symbols are:
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   613
	#top       arrange tabs to be on top of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   614
	#bottom    arrange tabs to be on bottom of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   615
	#left      arrange tabs to be on left of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   616
	#right     arrange tabs to be on right of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   617
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   618
    ^ direction
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   619
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   620
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   621
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   622
direction:aDirection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   623
    "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
   624
     Valid symbols are:
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   625
        #top       arrange tabs to be on top of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   626
        #bottom    arrange tabs to be on bottom of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   627
        #left      arrange tabs to be on left of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   628
        #right     arrange tabs to be on right of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   629
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   630
    direction ~~ aDirection ifTrue:[
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   631
        direction := aDirection.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   632
        self styleChanged.
1401
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
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   635
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   636
fitLastRow
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   637
    "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
   638
     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
   639
     preferred extent (x or y) dependant on the direction.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   640
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   641
    ^ fitLastRow
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
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   644
fitLastRow:aBool
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   645
    "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
   646
     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
   647
     preferred extent (x or y) dependant on the direction.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   648
    "
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   649
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   650
    fitLastRow ~~ aBool ifTrue:[
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   651
        fitLastRow := aBool.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   652
        self styleChanged.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   653
    ].
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   654
!
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   655
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   656
tabBottomMargin
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   657
    "returns the margin between the tabs and the canvas
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   658
    "
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   659
    ^ tabBottomMargin
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   660
!
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   661
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   662
tabBottomMargin:aMargin
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   663
    "set the margin between the tabs and the canvas
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   664
    "
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   665
    |margin|
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   666
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   667
    margin := aMargin max:0.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   668
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   669
    margin ~~ tabBottomMargin ifTrue:[
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   670
        tabBottomMargin := margin.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   671
        self styleChanged.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   672
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   673
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   674
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   675
tabLevel
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   676
    "the level of the tabs and noteBook frame
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   677
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   678
    ^ tabLevel
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   679
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   680
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   681
tabLevel:aLevel
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   682
    "the level of the tabs and noteBook frame
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   683
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   684
    aLevel ~~ tabLevel ifTrue:[
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   685
        tabLevel := aLevel.
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   686
        self styleChanged.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   687
    ].
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   688
!
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   689
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   690
tabTopMargin
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   691
    "returns the margin between the tabs and the widget
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   692
    "
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   693
    ^ tabTopMargin
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   694
!
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   695
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   696
tabTopMargin:aMargin
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   697
    "set the margin between the tabs and the widget
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   698
    "
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   699
    |margin|
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   700
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   701
    margin := aMargin max:0.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   702
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   703
    margin ~~ tabTopMargin ifTrue:[
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   704
        tabTopMargin := margin.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   705
        self styleChanged.
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   706
    ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   707
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   708
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   709
!NoteBookView methodsFor:'change & update'!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   710
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   711
styleChanged
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   712
    "called if the tab style changed
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   713
     list must be recomputed
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   714
    "
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   715
    preferredExtent := nil.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   716
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   717
    numberOfLines isNil ifTrue:[
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   718
        ^ self.         "/ layout not yet computed
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   719
    ].
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   720
    self recomputeList.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   721
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   722
    shown ifTrue:[
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   723
        self invalidate
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   724
    ].
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   725
!
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   726
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   727
update:something with:aParameter from:changedObject
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   728
    "one of my models changed its value
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   729
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   730
    |idx tab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   731
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   732
    changedObject == model         ifTrue:[^ self selection:model value].
1724
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   733
    changedObject == listHolder    ifTrue:[
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   734
        something == #at: ifTrue:[
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   735
            "/ a single items label has changed
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   736
            self tabAtIndex:aParameter put:(listHolder value at:aParameter).
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   737
            ^ self.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   738
        ].
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   739
        ^ self list:(listHolder value)
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   740
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   741
    changedObject == enableChannel ifTrue:[^ self enabled:enableChannel value].
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   742
    changedObject == canvasHolder  ifTrue:[^ self canvas:canvasHolder value].
1401
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
    (idx := list findFirst:[:aTab| aTab label == changedObject]) ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   745
        tab := list at:idx.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   746
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   747
        idx == selection ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   748
            tab isEnabled ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   749
                ^ self selection:nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   750
            ]
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
        tab label:(tab label) on:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   753
        self invalidateTab:tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   754
    ]
1724
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   755
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   756
    "Modified: / 25.2.2000 / 14:14:29 / cg"
1401
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
1700
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   759
!NoteBookView methodsFor:'defaults'!
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   760
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   761
updateStyleCache
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   762
"
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   763
self updateStyleCache
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   764
"
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   765
    DefaultForegroundColor := StyleSheet colorAt:#'noteBook.foregroundColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   766
    DefaultForegroundColor isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   767
        DefaultForegroundColor := StyleSheet colorAt:#'button.foregroundColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   768
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   769
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   770
    DefaultActiveForegroundColor := StyleSheet colorAt:#'noteBook.activeForegroundColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   771
    DefaultActiveForegroundColor isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   772
        DefaultActiveForegroundColor := StyleSheet colorAt:#'button.activeForegroundColor'
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   773
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   774
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   775
    DefaultLightColor := StyleSheet colorAt:#'noteBook.lightColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   776
    DefaultLightColor isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   777
        DefaultLightColor := StyleSheet colorAt:'button.lightColor'
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   778
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   779
    DefaultHalfLightColor := StyleSheet colorAt:#'noteBook.halfLightColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   780
    DefaultHalfLightColor isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   781
        DefaultHalfLightColor := StyleSheet colorAt:#'button.halfLightColor'
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   782
    ].    
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   783
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   784
    DefaultShadowColor := StyleSheet colorAt:#'noteBook.shadowColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   785
    DefaultShadowColor isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   786
        DefaultShadowColor := StyleSheet colorAt:'button.shadowColor'
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   787
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   788
    DefaultHalfShadowColor := StyleSheet colorAt:#'noteBook.halfShadowColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   789
    DefaultHalfShadowColor isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   790
        DefaultHalfShadowColor := StyleSheet colorAt:#'button.halfShadowColor'
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   791
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   792
    DefaultEdgeStyle := StyleSheet at:#'noteBook.edgeStyle'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   793
    DefaultEdgeStyle isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   794
        DefaultEdgeStyle := StyleSheet at:#'button.edgeStyle'
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   795
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   796
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   797
    DisabledForegroundColor := StyleSheet at:#'noteBook.disabledForegroundColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   798
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   799
    DefaultEdgeStyle == #softWin95 ifFalse:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   800
        DefaultEdgeStyle := nil
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   801
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   802
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   803
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   804
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   805
! !
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   806
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   807
!NoteBookView methodsFor:'drawing'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   808
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   809
drawBorderEdges
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   810
    |layout x0 x1 y0 y1|
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   811
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   812
    "/ test whether TabView and not NoteBookView
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   813
    tabModus ifTrue:[^ self].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   814
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   815
    layout := self computeBorderLayout.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   816
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   817
    tabLevel ~~ 0 ifTrue:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   818
        self drawEdgesForX:(layout left)
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   819
                         y:(layout top)
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   820
                     width:(layout width) 
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   821
                    height:(layout height)
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   822
                     level:tabLevel.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   823
      ^ self
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   824
    ].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   825
    list size > 1 ifFalse:[^ self].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   826
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   827
    self paint:lightColor ? lightColor.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   828
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   829
    (direction == #top or:[direction == #bottom]) ifTrue:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   830
        direction == #top ifTrue:[ y0 := layout top - 1 ]
2284
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   831
                         ifFalse:[ y0 := layout bottom ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   832
        y1 := y0.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   833
        x0 := 0.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   834
        x1 := width.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   835
    ] ifFalse:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   836
        direction == #left ifTrue:[ x0 := layout left - 1 ]
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   837
                          ifFalse:[ x0 := layout right    ].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   838
        y0 := 0.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   839
        y1 := height.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   840
        x1 := x0.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   841
    ].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   842
    self displayLineFromX:x0 y:y0 toX:x1 y:y1.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   843
!
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   844
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   845
drawTabEdgesFor:aTab
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   846
    |layout count leftFg leftHalfFg rightFg x0 x1 y0 y1 isSelected
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   847
     yT "{ Class:SmallInteger }"
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   848
     xL "{ Class:SmallInteger }"
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   849
     xR "{ Class:SmallInteger }"
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   850
     yB "{ Class:SmallInteger }"
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   851
    |
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   852
    count      := tabLevel.
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   853
    isSelected := (self selectedTab == aTab).
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   854
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   855
    count <= 0 ifTrue:[
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   856
        isSelected ifFalse:[ ^ self ].
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   857
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   858
        count == 0 ifTrue:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   859
            list size > 1 ifFalse:[^ self].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   860
            count := 1
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   861
        ] ifFalse:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   862
            count := count negated
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   863
        ].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
   864
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   865
        rightFg    := lightColor.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   866
        leftFg     := shadowColor.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   867
        leftHalfFg := halfShadowColor.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   868
    ] ifFalse:[
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   869
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   870
        ((edgeStyle == #soft) and:[tabLevel > 1]) ifTrue:[ rightFg := halfShadowColor ]
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   871
                                                 ifFalse:[ rightFg := shadowColor ].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   872
        leftFg     := lightColor.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   873
        leftHalfFg := halfLightColor.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   874
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   875
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   876
    (leftHalfFg notNil and:[edgeStyle == #soft and:[tabLevel > 0]]) ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   877
        leftFg := leftHalfFg
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   878
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   879
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   880
    layout := aTab layout.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   881
    xL := layout left.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   882
    yT := layout top.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   883
    xR := layout right  - 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   884
    yB := layout bottom - 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   885
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   886
    x0 := xL + count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   887
    x1 := xR - count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   888
    y0 := yT + count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   889
    y1 := yB - count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   890
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   891
    direction == #top ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   892
        self paint:rightFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   893
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   894
        0 to:count - 1 do:[:i|              "/ vertical: right
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   895
            self displayLineFromX:xR - i y:yB toX:xR - i  y:y0 - i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   896
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   897
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   898
        self paint:leftFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   899
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   900
        0 to:count - 1 do:[:i|              "/ horizontal: left       
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   901
            self displayLineFromX:xL + i y:y0 - i toX:xL + i y:yB.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   902
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   903
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   904
        0 to:count - 1 do:[:i|              "/ horizontal: top
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   905
            self displayLineFromX:x0 - i y:yT + i toX:x1 y:yT + i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   906
        ].
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   907
        (isSelected and:[count > 1]) ifFalse:[^ self].
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   908
        (self isLastTabInLine:aTab)   ifTrue:[^ self].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   909
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   910
        y0 := yB + 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   911
        x1 := x1 + 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   912
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   913
        1 to:count - 1 do:[:i|              "/ horizontal line
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   914
            self displayLineFromX:x1 + i y:y0 - i toX:xR  y:y0 - i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   915
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   916
        ^ self
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   917
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   918
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   919
    direction == #bottom ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   920
        self paint:leftFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   921
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   922
        0 to:count - 1 do:[:i|              "/ vertical : left
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   923
            self displayLineFromX:xL + i y:yT toX:xL + i y:y1+i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   924
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   925
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   926
        self paint:rightFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   927
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   928
        0 to:count - 1 do:[:i|              "/ horizontal: bottom
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   929
            self displayLineFromX:x0 y:yB-i toX:x1 + i y:yB-i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   930
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   931
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   932
        0 to:count - 1 do:[:i|              "/ vertical: right
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   933
            self displayLineFromX:xR-i y:yT toX:xR-i y:y1+i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   934
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   935
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   936
        (isSelected and:[count > 1]) ifFalse:[^ self].
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   937
        (self isFirstTabInLine:aTab)  ifTrue:[^ self].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   938
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   939
        x0 := x0 - 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   940
        y0 := yT - 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   941
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   942
        1 to:count - 1 do:[:i|              "/ selection shadow
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   943
            self displayLineFromX:xL y:y0 + i toX:x0-i  y:y0 + i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   944
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   945
        ^ self
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   946
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   947
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   948
    direction == #right ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   949
        self paint:leftFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   950
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   951
        0 to:count - 1 do:[:i|              "/ horizontal: top
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   952
            self displayLineFromX:xL y:yT + i toX:x1+i  y:yT + i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   953
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   954
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   955
        self paint:rightFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   956
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   957
        0 to:count - 1 do:[:i|              "/ vertical: right
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   958
            self displayLineFromX:xR-i y:y0 toX:xR-i  y:y1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   959
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   960
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   961
        1 to:count do:[:i|              "/ horizontal: bottom
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   962
            self displayLineFromX:xL y:y1+i toX:xR-i  y:y1+i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   963
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   964
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   965
        (isSelected and:[count > 1]) ifFalse:[^ self].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   966
        (self isFirstTabInLine:aTab)  ifTrue:[^ self].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   967
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   968
        x0 := x0 - 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   969
        y0 := yT - 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   970
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   971
        1 to:count - 1 do:[:i|              "/ selection shadow
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   972
            self displayLineFromX:xL y:y0 + i toX:x0-i  y:y0 + i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   973
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   974
        ^ self
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   975
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   976
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   977
    "/ direction == #left
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   978
    self paint:rightFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   979
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   980
    x0 := xL + count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   981
    x1 := xR - count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   982
    y0 := yT + count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   983
    y1 := yB - count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   984
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   985
    0 to:count - 1 do:[:i|      "/ horizontal: bottom
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   986
        self displayLineFromX:x0 - i y:yB - i toX:xR  y:yB - i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   987
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   988
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   989
    self paint:leftFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   990
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   991
    0 to:count - 1 do:[:i|      "/ vertical: left
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   992
        self displayLineFromX:xL + i y:y0 toX:xL + i y:y1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   993
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   994
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   995
    1 to:count do:[:i|          "/ horizontal: top
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   996
        self displayLineFromX:xL + i y:y0 - i toX:xR y:y0 - i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   997
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   998
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   999
    (isSelected and:[count > 1]) ifFalse:[^ self].
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1000
    (self isLastTabInLine:aTab)   ifTrue:[^ self].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1001
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1002
    x1 := x1 + 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1003
    y0 := yB + 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1004
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1005
    1 to:count - 1 do:[:i|      "/ selection shadow
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1006
        self displayLineFromX:x1+i y:yB + 1 - i toX:xR  y:yB + 1 - i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1007
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1008
!
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1009
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1010
invalidateTab:aTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1011
    "invalidate a tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1012
    "
2213
58cc47a8fb2d some redrawing refactored
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
  1013
    |tabBounds|
58cc47a8fb2d some redrawing refactored
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
  1014
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1015
    shown ifTrue:[
2213
58cc47a8fb2d some redrawing refactored
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
  1016
        tabBounds := self computeLayoutForTab:aTab.
58cc47a8fb2d some redrawing refactored
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
  1017
        self invalidate:tabBounds.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1018
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1019
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1020
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1021
redrawTab:aTab
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1022
    "redraw a tab
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1023
    "
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1024
    |isSelected layout fgColor extent voffs hoffs|
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1025
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1026
    isSelected := self selectedTab == aTab.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1027
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1028
    layout := aTab layout.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1029
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1030
    isSelected ifTrue:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1031
        self paint:(self viewBackground).
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1032
        self fillRectangle:layout.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1033
    ].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1034
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1035
    (enabled and:[aTab isEnabled]) ifFalse:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1036
        fgColor := disabledForegroundColor.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1037
    ] ifTrue:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1038
        fgColor := aTab foregroundColor.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1039
        fgColor isNil ifTrue:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1040
            isSelected ifTrue:[ fgColor := activeForegroundColor ]
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1041
                      ifFalse:[ fgColor := foregroundColor ].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1042
        ]
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1043
    ].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1044
    self paint:fgColor.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1045
    aTab displayOn:self inset:(tabLevel abs) direction:direction.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1046
    self drawTabEdgesFor:aTab.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1047
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1048
    (     isSelected
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1049
     and:[self hasFocus
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1050
     and:[self supportsFocusOnTab]]
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1051
    ) ifFalse:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1052
        ^ self
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1053
    ].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1054
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1055
    "/ drawing the focus
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1056
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1057
    extent := aTab extent.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1058
    voffs  := (layout height - extent y) // 2 max:0.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1059
    hoffs  := (layout width  - extent x) // 2 max:0.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1060
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1061
    self paint:(Color black).
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1062
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1063
    self displayDottedRectangleX:(layout left   + hoffs         - 1)
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1064
                               y:(layout top    + voffs         - 1)
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1065
                           width:(layout width  - hoffs - hoffs + 2)
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1066
                          height:(layout height - voffs - voffs + 2).
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1067
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1068
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1069
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1070
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1071
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1072
""
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1073
!
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1074
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1075
redrawX:x y:y width:w height:h
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1076
    "a region must be redrawn
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1077
    "
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1078
    |selectedTab line damage layout selectedLayout|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1079
2035
6cc4d73f17e1 bug fix when chaning the canvas before being realized
Claus Gittinger <cg@exept.de>
parents: 2010
diff changeset
  1080
    shown ifFalse:[ ^ self ].
6cc4d73f17e1 bug fix when chaning the canvas before being realized
Claus Gittinger <cg@exept.de>
parents: 2010
diff changeset
  1081
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1082
    numberOfLines isNil ifTrue:[
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1083
        self recomputeList.
2215
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  1084
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1085
        numberOfLines notNil ifTrue:[
2215
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  1086
            self invalidate
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  1087
        ].
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  1088
        ^ self
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1089
    ].
2213
58cc47a8fb2d some redrawing refactored
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
  1090
    selectedTab := self selectedTab.
1963
38173bc0bd42 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1962
diff changeset
  1091
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1092
    selectedTab notNil ifTrue:[
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1093
        (line := selectedTab lineNr) ~~ 1 ifTrue:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1094
            self makeToBaseLine:line.
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1095
          ^ self
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1096
        ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1097
    ].
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 paint:(self viewBackground).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1100
    self fillRectangleX:x y:y width:w height:h.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1101
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1102
    list size == 0 ifTrue:[ ^ self ].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1103
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1104
    damage := Rectangle left:x top:y width:w height:h.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1105
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1106
    numberOfLines to:1 by:-1 do:[:aLnNr|
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1107
        list reverseDo:[:aTab|
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1108
            (     aTab lineNr == aLnNr
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1109
             and:[aTab ~~ selectedTab
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1110
             and:[aTab intersects:damage]]
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1111
            ) ifTrue:[
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1112
                self redrawTab:aTab.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1113
            ]
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
    ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1116
    self drawBorderEdges.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1117
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1118
    selectedTab isNil ifTrue:[^ self].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1119
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1120
    layout := self computeLayoutForTab:selectedTab.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1121
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1122
    (layout intersects:damage) ifTrue:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1123
        selectedLayout := selectedTab layout.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1124
        selectedTab layout:layout.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1125
        self redrawTab:selectedTab.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1126
        selectedTab layout:selectedLayout.
1401
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
! !
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
!NoteBookView methodsFor:'event handling'!
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
buttonPress:button x:x y:y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1133
    "a button is pressed; find tab under point and set the selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1134
    "
1802
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1135
    |idx tab recv menu|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1136
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1137
    enabled     ifFalse:[ ^ self ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1138
    list isEmpty ifTrue:[ ^ self ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1139
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1140
    idx := list findFirst:[:aTab| aTab containsPointX:x y:y ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1141
    idx == 0 ifTrue:[ ^ self ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1142
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1143
    tab := list at:idx.
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1144
    tab isEnabled ifFalse:[ ^ self ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1145
1802
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1146
    ((button == 2) or:[button == #menu]) ifFalse:[
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1147
        "/ change the selection
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1148
        ^ self selection:idx
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1149
    ].
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1150
    accessTabMenuAction isNil ifTrue:[ ^ self ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1151
    menu := accessTabMenuAction value:idx.
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1152
    menu isNil ifTrue:[ ^ self ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1153
1802
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1154
    menu isArray ifTrue:[
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1155
        menu := menu decodeAsLiteralArray
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1156
    ].
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1157
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1158
    menu receiver isNil ifTrue:[
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1159
        (recv := self application) isNil ifTrue:[
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1160
            recv := tab model
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1161
        ].
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1162
        recv notNil ifTrue:[
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1163
            menu receiver:recv
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1164
        ] ifFalse:[
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1165
            Transcript showCR:('%1 : MENU HAS NO RECEIVER' bindWith:(self class name)).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1166
        ]
1802
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1167
    ].
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1168
    menu startUp
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1169
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1170
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1171
keyPress:aKey x:x y:y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1172
    "selection might change; look for corresponding list entry
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1173
    "
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1174
    <resource: #keyboard (#CursorRight #CursorLeft #CursorUp #CursorDown)>
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1175
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1176
    |sensor size index n key|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1177
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1178
    (enabled and:[(size := list size) ~~ 0]) ifFalse:[
1657
061c167ce3db if disabled; call super keyPress:x:y to handle focusSequence
ca
parents: 1549
diff changeset
  1179
        ^ super keyPress:aKey x:x y:y
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1180
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1181
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1182
    (self processAccessCharacter:aKey) ifTrue:[
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1183
        ^ self
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1184
    ].
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1185
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1186
    (self processShortcutKey:aKey) ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1187
        ^ self
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1188
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1189
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1190
    (size > 1 and:[aKey isSymbol and:[aKey startsWith:'Cursor']]) ifFalse:[
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1191
        ^ super keyPress:aKey x:x y:y
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1192
    ].
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1193
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1194
    self isHorizontal ifTrue:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1195
        (aKey == #CursorRight or:[aKey == #CursorLeft]) ifFalse:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1196
            ^ self
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1197
        ].
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1198
        key := aKey.
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1199
    ] ifFalse:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1200
                 aKey == #CursorUp   ifTrue:[key := #CursorLeft]
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1201
        ifFalse:[aKey == #CursorDown ifTrue:[key := #CursorRight]
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1202
        ifFalse:[ ^ self]].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1203
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1204
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1205
    (sensor := self sensor) notNil ifTrue:[
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1206
        n := 1 + (sensor compressKeyPressEventsWithKey:aKey).
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1207
        n := (n \\ size) max:1.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1208
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1209
        key == #CursorRight ifTrue:[
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1210
            index := selection ? 1.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1211
            [   (index := index + 1) > size ifTrue:[index := 1].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1212
                (self isSelectable:index)   ifTrue:[n := n - 1].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1213
                n ~~ 0
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1214
            ] whileTrue.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1215
        ] ifFalse:[
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1216
            index := selection ? size.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1217
            [   (index := index - 1) == 0 ifTrue:[index := size].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1218
                (self isSelectable:index) ifTrue:[n     := n -1].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1219
                n ~~ 0
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1220
            ] whileTrue.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1221
        ].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1222
        self selection:index
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1223
    ]
1401
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
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1226
processShortcutKeyEvent:event
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1227
    ^ self processShortcutKey:(event key)
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1228
!
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1229
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1230
sizeChanged:how
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1231
    "size of view changed 
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
    super sizeChanged:how.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1234
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1235
    list notEmpty ifTrue:[
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1236
        lastComputedExtent ~= self extent ifTrue:[
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1237
            numberOfLines := nil.
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1238
        ]
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1239
    ].
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1240
    shown ifTrue:[self invalidate].
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1241
    self resizeCanvas.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1242
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1243
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1244
!NoteBookView methodsFor:'focus handling'!
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1245
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1246
showFocus:explicit
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1247
    "got the keyboard focus 
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1248
    "
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1249
    |selectedTab|
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1250
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1251
    self supportsFocusOnTab ifTrue:[
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1252
        selectedTab := self selectedTab.
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1253
        selectedTab notNil ifTrue:[
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1254
            self invalidateTab:selectedTab
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1255
        ]
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1256
    ] ifFalse:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1257
        super showFocus:explicit
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1258
    ]
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1259
!
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1260
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1261
showNoFocus:explicit
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1262
    "lost the keyboard focus 
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1263
    "
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1264
    |selectedTab|
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1265
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1266
    self supportsFocusOnTab ifTrue:[
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1267
        selectedTab := self selectedTab.
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1268
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1269
        selectedTab notNil ifTrue:[
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1270
            self invalidateTab:selectedTab
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1271
        ].
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1272
    ] ifFalse:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1273
        super showNoFocus:explicit
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1274
    ]
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1275
!
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1276
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1277
supportsFocusOnTab
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1278
    "returns true if focus is supported
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1279
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1280
    ^ (styleSheet at:#'focusHighlightStyle') == #win95
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1281
! !
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1282
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1283
!NoteBookView methodsFor:'help'!
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1284
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1285
helpText
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1286
    "return the helpText for the currently selected item (empty if none)
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1287
    "
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1288
    ^ self helpTextForItemAt:selection
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1289
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1290
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1291
!
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1292
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1293
helpTextAt:srcPoint
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1294
    "return the helpText for aPoint (i.e. when mouse-pointer is moved over an item).
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1295
    "
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1296
    |x y i|
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1297
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1298
    x := srcPoint x.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1299
    y := srcPoint y.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1300
    i := list findFirst:[:aTab| aTab containsPointX:x y:y ].
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1301
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1302
  ^ self helpTextForItemAt:i
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1303
!
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1304
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1305
helpTextForItemAt:anIndex
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1306
    |tab|
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1307
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1308
    (     anIndex notNil
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1309
     and:[anIndex ~~ 0
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1310
     and:[(tab := list at:anIndex ifAbsent:nil) notNil
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1311
     and:[(tab := tab model) notNil]]]
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1312
    ) ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1313
        ^ tab activeHelpText ? ''
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1314
    ].
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1315
    ^ ''
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1316
! !
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1317
1687
70888239654f category changes
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  1318
!NoteBookView methodsFor:'initialization & release'!
1401
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
destroy
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1321
    "remove dependencies
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
    list removeDependent:self.
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
    listHolder    removeDependent:self. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1326
    canvasHolder  removeDependent:self.
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
    super destroy.
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
initStyle
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1332
    "setup style attributes
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1333
    "
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1334
    |clr|
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1335
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1336
    super initStyle.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1337
    tabModus  := false.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1338
    edgeStyle := DefaultEdgeStyle.
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1339
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1340
    self font:self class defaultFont.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1341
    drawLightColor := Color veryLightGray onDevice:device.
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1342
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1343
    clr := DefaultForegroundColor ? Black.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1344
    foregroundColor := clr onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1345
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1346
    clr := DefaultForegroundColor ? foregroundColor.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1347
    activeForegroundColor := clr onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1348
1988
c4eaa4a81f89 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1964
diff changeset
  1349
    (clr := DefaultShadowColor) isNil ifTrue:[clr := viewBackground darkened].
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1350
    shadowColor := clr onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1351
1988
c4eaa4a81f89 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1964
diff changeset
  1352
    (clr := DefaultLightColor) isNil ifTrue:[clr := viewBackground lightened].
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1353
    lightColor := clr onDevice:device.
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1354
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
  1355
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1356
    edgeStyle isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1357
        halfShadowColor := shadowColor.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1358
        halfLightColor  := lightColor.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1359
        drawLightColor  := lightColor.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1360
    ] ifFalse:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1361
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1362
        (clr := DefaultHalfShadowColor) isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1363
            clr := shadowColor lightened
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1364
        ].
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1365
        halfShadowColor := clr onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1366
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1367
        (clr := DefaultHalfLightColor) isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1368
            clr := lightColor darkened.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1369
        ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1370
        halfLightColor := clr onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1371
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1372
        edgeStyle == #soft ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1373
            drawLightColor := halfShadowColor
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1374
        ] ifFalse:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1375
            drawLightColor := Color veryLightGray onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1376
        ]
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1377
    ].
1700
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1378
    (clr := DisabledForegroundColor) notNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1379
        disabledForegroundColor := clr onDevice:device
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1380
    ]ifFalse:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1381
        disabledForegroundColor := drawLightColor
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1382
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1383
!
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
initialize
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1386
    "setup default attributes
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1387
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1388
    super initialize.
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
    self cursor:Cursor hand.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1391
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1392
    list             := #().
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1393
    useIndex         := true.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1394
    direction        := #top.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1395
    fitLastRow       := true.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1396
    enabled          := true.
1685
7755214df380 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1684
diff changeset
  1397
    canvasInset      := StyleSheet at:#'noteBook.canvasInset'      default:1@1.
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1398
    keepCanvas       := false.
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1399
    tabLevel         := StyleSheet at:#'noteBook.tabLevel'         default:1.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1400
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1401
    selectionInsetX  := (2 max:(tabLevel abs)) + 1.
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1402
    selectionInsetY  := (2 max:(tabLevel abs)) + 1.
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1403
2285
0f3ce1478322 margins from styleSheet
ca
parents: 2284
diff changeset
  1404
0f3ce1478322 margins from styleSheet
ca
parents: 2284
diff changeset
  1405
    tabTopMargin := StyleSheet at:#'noteBook.tabTopMargin' default:nil.
0f3ce1478322 margins from styleSheet
ca
parents: 2284
diff changeset
  1406
0f3ce1478322 margins from styleSheet
ca
parents: 2284
diff changeset
  1407
    tabTopMargin ifNil:[
0f3ce1478322 margins from styleSheet
ca
parents: 2284
diff changeset
  1408
        "/ menus has no button renderer....
0f3ce1478322 margins from styleSheet
ca
parents: 2284
diff changeset
  1409
        StyleSheet name == #win95 ifTrue:[ tabTopMargin := 1 ]
0f3ce1478322 margins from styleSheet
ca
parents: 2284
diff changeset
  1410
                                 ifFalse:[ tabTopMargin := 4 ].
0f3ce1478322 margins from styleSheet
ca
parents: 2284
diff changeset
  1411
    ].
0f3ce1478322 margins from styleSheet
ca
parents: 2284
diff changeset
  1412
0f3ce1478322 margins from styleSheet
ca
parents: 2284
diff changeset
  1413
    tabBottomMargin := StyleSheet at:#'noteBook.tabBottomMargin' default:1.
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1414
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1415
    self lineWidth:0.
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
    canvas notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1418
        canvas := canvas in:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1419
    ].
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1420
!
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1421
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1422
realize
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1423
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1424
    (canvas notNil and:[numberOfLines isNil]) ifTrue:[
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1425
        self recomputeList
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1426
    ].
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1427
    super realize.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1428
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1429
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1430
!NoteBookView methodsFor:'layout'!
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
computeBorderLayout
2035
6cc4d73f17e1 bug fix when chaning the canvas before being realized
Claus Gittinger <cg@exept.de>
parents: 2010
diff changeset
  1433
    |xL yT xR yB tab l|
1401
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
    xL  := 0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1436
    yT  := 0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1437
    xR  := width.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1438
    yB  := height.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1439
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1440
    list notEmpty ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1441
        tab := list detect:[:aTab| aTab lineNr == 1] ifNone:nil.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1442
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1443
        tab notNil ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1444
            l := tab layout.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1445
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1446
                      direction == #top    ifTrue:[ yT := l bottom ]
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1447
            ifFalse:[ direction == #bottom ifTrue:[ yB := l top    ]
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1448
            ifFalse:[ direction == #left   ifTrue:[ xL := l right  ]
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1449
            ifFalse:[
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1450
                xR := l left
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1451
            ]]]
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1452
        ]
1401
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
    ^ Rectangle left:xL top:yT right:xR bottom:yB
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1455
!
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
computeLayoutForTab:aTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1458
    "calculate extent of a tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1459
    "
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1460
    |layout bwAbs left right top bottom inset|
1401
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
    layout := aTab layout.
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1463
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1464
    self selectedTab == aTab ifFalse:[
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1465
        ^ layout
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1466
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1467
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1468
    bwAbs  := tabLevel abs.
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1469
    left   := layout left.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1470
    right  := layout right.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1471
    top    := layout top.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1472
    bottom := layout bottom.
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1473
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1474
    bwAbs == 0 ifTrue:[ inset := 2 ]
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1475
              ifFalse:[ inset := 0 ].
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1476
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1477
    (direction == #top or:[direction == #bottom]) ifTrue:[
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1478
        left   := (left  - selectionInsetX) max:inset.
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1479
        right  := (right + selectionInsetX) min:(width - inset).
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1480
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1481
        direction == #top  ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1482
            bottom := bottom + bwAbs.
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1483
            top    := top - selectionInsetY.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1484
        ] ifFalse:[
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1485
            top    := top    - bwAbs.
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1486
            bottom := bottom + selectionInsetY.
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1487
        ].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1488
    ] ifFalse:[
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1489
        top    := (top    - selectionInsetX) max:inset.
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1490
        bottom := (bottom + selectionInsetX) min:(height - inset).
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1491
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1492
        direction == #left ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1493
            right := right + bwAbs.
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1494
            left  := left  - selectionInsetY
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1495
        ] ifFalse:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1496
            left  := left  - bwAbs.
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1497
            right := right + selectionInsetY.
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1498
        ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1499
    ].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1500
    ^ Rectangle left:left top:top right:right bottom:bottom
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1501
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1502
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1503
makeToBaseLine:aLnNr
1962
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1504
    "rotate lines to make the line #aLnNr be the new base line (i.e.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1505
     subtract (aLnNr-1) from all lines and take modulu the number of lines"
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1506
1963
38173bc0bd42 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1962
diff changeset
  1507
    |lineTopsOrLefts isHorizontal|
38173bc0bd42 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1962
diff changeset
  1508
38173bc0bd42 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1962
diff changeset
  1509
    isHorizontal := self isHorizontal.
1962
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1510
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1511
    "collect per-lineNr offsets"
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1512
    lineTopsOrLefts := (1 to:numberOfLines) collect:[:lnr |
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1513
                            |tabNr layout|
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1514
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1515
                            tabNr := list findFirst:[:aTab| aTab lineNr == lnr].
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1516
                            layout := (list at:tabNr) layout.
1963
38173bc0bd42 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1962
diff changeset
  1517
                            isHorizontal ifTrue:[
1962
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1518
                                layout top.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1519
                            ] ifFalse:[
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1520
                                layout left.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1521
                            ].
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1522
                       ].
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1523
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1524
    "change offsets of all tabs"
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1525
    list do:[:el |
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1526
        |layout topOrLeft nr newNr|
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1527
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1528
        nr := el lineNr.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1529
        newNr := nr - aLnNr + 1.
1964
Claus Gittinger <cg@exept.de>
parents: 1963
diff changeset
  1530
        newNr <= 0 ifTrue:[ newNr := newNr + numberOfLines].
1962
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1531
        newNr := ((newNr - 1) \\ numberOfLines) + 1.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1532
        topOrLeft := lineTopsOrLefts at:newNr.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1533
        layout := el layout.
1963
38173bc0bd42 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1962
diff changeset
  1534
        isHorizontal ifTrue:[
1962
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1535
            layout setTop:topOrLeft.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1536
        ] ifFalse:[
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1537
            layout setLeft:topOrLeft.            
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1538
        ].
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1539
        el lineNr:newNr.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1540
    ].
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1541
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1542
    self invalidate.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1543
!
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
recomputeList
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1546
    "recompute list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1547
    "
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1548
    numberOfLines      := 1.
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1549
    lastComputedExtent := self extent.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1550
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1551
    list size ~~ 0 ifTrue:[
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1552
        self isHorizontal ifTrue:[ self recomputeListHorizontal ]
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1553
                         ifFalse:[ self recomputeListVertical ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1554
    ].
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1555
    self resizeCanvas.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1556
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1557
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1558
recomputeListHorizontal
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1559
    "recompute list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1560
    "
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1561
    |layout lastLyt
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1562
     xLeft     "{ Class:SmallInteger }"
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1563
     xRight    "{ Class:SmallInteger }"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1564
     yTop      "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1565
     tabWidth  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1566
     tabHeight "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1567
     delta     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1568
     first     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1569
     last      "{ Class:SmallInteger }"
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1570
     border    "{ Class:SmallInteger }"
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1571
     lastLnNr  "{ Class:SmallInteger }"
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1572
     tabLvlAbs "{ Class:SmallInteger }"
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1573
     minLeft   "{ Class:SmallInteger }"
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1574
     maxRight  "{ Class:SmallInteger }"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1575
    |
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1576
    numberOfLines := 1.
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1577
    tabLvlAbs     := tabLevel abs max:1.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1578
    border        := tabLevel * 2.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1579
    tabHeight     := 0.
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1580
    minLeft       := selectionInsetX.
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1581
    maxRight      := width - selectionInsetX.
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1582
    xLeft         := minLeft.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1583
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1584
    list do:[:aTab|
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1585
        tabWidth  := aTab preferredExtentX + border.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1586
        tabHeight := (aTab preferredExtentY) max:tabHeight.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1587
        xRight    := xLeft + tabWidth.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1588
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1589
        xRight > maxRight ifTrue:[
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1590
            xLeft ~~ minLeft ifTrue:[
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1591
                numberOfLines := numberOfLines + 1.
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1592
                xLeft  := minLeft.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1593
                xRight := xLeft + tabWidth.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1594
            ].
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1595
            xRight > maxRight ifTrue:[
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1596
                tabWidth := maxRight - minLeft.
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1597
                xRight   := maxRight.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1598
            ].
1401
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
        aTab lineNr:numberOfLines.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1601
        aTab layout:(Rectangle left:xLeft top:0 width:tabWidth height:tabHeight).
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1602
        xLeft := xRight.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1603
    ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1604
    tabHeight := tabHeight + tabLvlAbs.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1605
    yTop      := selectionInsetY + tabTopMargin.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1606
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1607
    direction == #bottom ifTrue:[
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1608
        yTop  := height - tabHeight - yTop.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1609
        delta := tabHeight negated.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1610
    ] ifFalse:[
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1611
        delta := tabHeight
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1612
    ].
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1613
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1614
    lastLnNr := numberOfLines.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1615
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1616
    list reverseDo:[:aTab|
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1617
        aTab lineNr ~~ lastLnNr ifTrue:[
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1618
            lastLnNr := aTab lineNr.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1619
            yTop := yTop + delta
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1620
        ].
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1621
        layout := aTab layout.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1622
        layout setTop:yTop.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1623
        layout height:tabHeight.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1624
    ].
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1625
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1626
    tabModus ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1627
        layout := (list at:1) layout.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1628
        delta  := direction == #top ifTrue:[height - layout bottom]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1629
                                   ifFalse:[layout top negated].
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
        list do:[:aTab| aTab layout setTop:(aTab layout top + delta)].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1632
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1633
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1634
    "/ FIT LINES
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1635
    (numberOfLines ~~ 1 or:[fitLastRow]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1636
        ^ self
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1637
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1638
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1639
    first := 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1640
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1641
    1 to:numberOfLines do:[:aLnNr|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1642
        last    := list findLast:[:t|t lineNr == aLnNr].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1643
        lastLyt := (list at:last) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1644
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1645
        (delta := maxRight - lastLyt right) ~~ 0 ifTrue:[
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1646
            xLeft := minLeft.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1647
            delta := delta // (last - first + 1).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1648
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1649
            delta ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1650
                list from:first to:last do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1651
                    layout   := aTab layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1652
                    tabWidth := layout width + delta.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1653
                    layout setLeft:xLeft.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1654
                    layout width:tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1655
                    xLeft := xLeft + tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1656
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1657
            ].
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1658
            lastLyt width:(maxRight - lastLyt left)
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1659
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1660
        first := last + 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1661
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1662
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1663
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1664
recomputeListVertical
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1665
    "recompute list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1666
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1667
    |layout lastLyt
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1668
     xTop      "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1669
     yTop      "{ Class:SmallInteger }"
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1670
     yBottom   "{ Class:SmallInteger }"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1671
     tabWidth  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1672
     tabHeight "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1673
     delta     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1674
     first     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1675
     last      "{ Class:SmallInteger }"
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1676
     border    "{ Class:SmallInteger }"
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1677
     tabLvlAbs "{ Class:SmallInteger }"
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1678
     minTop    "{ Class:SmallInteger }"
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1679
     maxBottom "{ Class:SmallInteger }"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1680
    |
2010
644587a3b8e2 added tabLevel
Claus Gittinger <cg@exept.de>
parents: 2002
diff changeset
  1681
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1682
    numberOfLines := 1.
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1683
    tabLvlAbs     := (tabLevel abs) max:1.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1684
    border        := tabLvlAbs * 2.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1685
    tabHeight     := 0.
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1686
    minTop        := selectionInsetX.
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1687
    maxBottom     := height - selectionInsetX.    
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1688
    yTop          := minTop.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1689
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1690
    list do:[:aTab|
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1691
        tabWidth  := aTab preferredExtentX + border.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1692
        tabHeight := (aTab preferredExtentY) max:tabHeight.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1693
        yBottom   := yTop + tabWidth.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1694
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1695
        yBottom > maxBottom ifTrue:[
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1696
            yTop ~~ minTop ifTrue:[
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1697
                numberOfLines := numberOfLines + 1.
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1698
                yTop    := minTop.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1699
                yBottom := yTop + tabWidth.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1700
            ].
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1701
            yBottom > maxBottom ifTrue:[
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1702
                tabWidth := maxBottom - minTop.
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1703
                yBottom  := maxBottom.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1704
            ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1705
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1706
        aTab lineNr:numberOfLines.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1707
        aTab layout:(Rectangle left:0 top:yTop width:tabHeight height:tabWidth).
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1708
        yTop := yBottom
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1709
    ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1710
    tabHeight := tabHeight + tabLvlAbs.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1711
    xTop      := selectionInsetY + tabTopMargin.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1712
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1713
    direction == #right ifTrue:[
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1714
        xTop  := width - tabHeight - xTop.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1715
        delta := tabHeight negated.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1716
    ] ifFalse:[
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1717
        delta := tabHeight.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1718
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1719
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1720
    last  := numberOfLines.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1721
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1722
    list reverseDo:[:aTab|
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1723
        aTab lineNr ~~ last ifTrue:[
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1724
            last := aTab lineNr.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1725
            xTop := xTop + delta
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1726
        ].
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1727
        layout := aTab layout.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1728
        layout setLeft:xTop.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1729
        layout   width:tabHeight.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1730
    ].
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1731
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1732
    tabModus ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1733
        layout := (list at:1) layout.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  1734
        delta  := direction == #left ifTrue:[width - layout right]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1735
                                    ifFalse:[layout left negated].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1736
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1737
        list do:[:aTab| aTab layout setLeft:(aTab layout left + delta)].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1738
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1739
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1740
    "/ FIT LINES
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1741
    (numberOfLines ~~ 1 or:[fitLastRow]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1742
        ^ self
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1743
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1744
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1745
    first := 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1746
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1747
    1 to:numberOfLines do:[:aLnNr|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1748
        last    := list findLast:[:t|t lineNr == aLnNr].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1749
        lastLyt := (list at:last) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1750
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1751
        (delta := maxBottom - lastLyt bottom) ~~ 0 ifTrue:[
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1752
            yTop  := minTop.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1753
            delta := delta // (last - first + 1).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1754
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1755
            delta ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1756
                list from:first to:last do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1757
                    layout   := aTab layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1758
                    tabWidth := layout height + delta.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1759
                    layout setTop:yTop.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1760
                    layout height:tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1761
                    yTop := yTop + tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1762
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1763
            ].
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  1764
            lastLyt height:(maxBottom - lastLyt top)
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1765
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1766
        first := last + 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1767
    ]
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1768
!
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1769
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1770
resizeCanvas
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1771
    |layout borderWd|
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1772
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1773
    canvas notNil ifTrue:[
2002
d8a0fba7b75a comment
Claus Gittinger <cg@exept.de>
parents: 1988
diff changeset
  1774
        layout := self computeBorderLayout.
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1775
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1776
        list notEmpty ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1777
            borderWd := tabLevel abs.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1778
            layout   := layout insetBy:(canvasInset + borderWd).
2284
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1779
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1780
            tabBottomMargin > 0 ifTrue:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1781
                (direction == #top or:[direction == #bottom]) ifTrue:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1782
                    layout height:(layout height - tabBottomMargin).
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1783
                    direction == #top ifTrue:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1784
                        layout setTop:(layout top + tabBottomMargin)
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1785
                    ]
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1786
                ] ifFalse:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1787
                    layout width:(layout width - tabBottomMargin).
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1788
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1789
                    direction == #left ifTrue:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1790
                        layout setLeft:(layout left + tabBottomMargin)
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1791
                    ]
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1792
                ]
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1793
                
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1794
            ].
2036
6f3927ad36fc oops - strange side effect
Claus Gittinger <cg@exept.de>
parents: 2035
diff changeset
  1795
        ].
2161
f62cdcac0e9f do not change the layout, if the computation results in the
Claus Gittinger <cg@exept.de>
parents: 2139
diff changeset
  1796
        layout = canvas layout ifFalse:[
f62cdcac0e9f do not change the layout, if the computation results in the
Claus Gittinger <cg@exept.de>
parents: 2139
diff changeset
  1797
            canvas layout:layout.
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1798
        ].
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1799
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1800
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1801
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1802
!NoteBookView methodsFor:'obsolete'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1803
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1804
canvasFrameLevel
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1805
    "ignorred
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1806
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1807
    ^ 0
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1808
!
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1809
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1810
canvasFrameLevel:anInteger
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1811
    "ignorred
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1812
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1813
!
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1814
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1815
labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1816
    "return the list of labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1817
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1818
    ^ self list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1819
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1820
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1821
labels:aListOfLabels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1822
    "set the list of labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1823
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1824
    ^ self list:aListOfLabels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1825
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1826
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1827
labelsHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1828
    "get the model, which keeps the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1829
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1830
    ^ self listHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1831
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1832
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1833
labelsHolder:aValueHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1834
    "set the model, which keeps the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1835
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1836
    self listHolder:aValueHolder. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1837
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1838
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1839
!NoteBookView methodsFor:'private'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1840
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1841
processAccessCharacter:aKey
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1842
    "a character is pressed; check for tab identified y the character
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1843
     select the tab and return true or if no tab detected return false
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1844
    "
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1845
    |j size char blck|
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1846
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1847
    (aKey isCharacter and:[(size := list size) ~~ 0]) ifFalse:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1848
        ^ false
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1849
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1850
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1851
    size == selection ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1852
        size == 1 ifTrue:[^ false].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1853
        j := 1
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1854
    ] ifFalse:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1855
        j := selection isNil ifTrue:[1] ifFalse:[selection + 1]
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1856
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1857
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1858
    char := aKey asLowercase.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1859
    blck := [:i| ((list at:i) accessCharacter == char and:[self isSelectable:i]) ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1860
                      self selection:i.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1861
                    ^ true
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1862
                  ]        
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1863
            ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1864
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1865
    j to:size  do:blck.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1866
    1 to:(j-1) do:blck.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1867
  ^ false
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1868
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1869
!
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1870
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1871
processShortcutKey:aKey
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1872
    "if there is a short-key for that character, process it
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1873
     and return true. Otherwise, return false.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1874
    "
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1875
    |j k size rawKey blck|
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1876
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1877
    (size := list size) == 0 ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1878
        ^ false
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1879
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1880
    rawKey := device keyboardMap keyAtValue:aKey ifAbsent:aKey.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1881
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1882
    size == selection ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1883
        size == 1 ifTrue:[^ false].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1884
        j := 1
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1885
    ] ifFalse:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1886
        j := selection isNil ifTrue:[1] ifFalse:[selection + 1]
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1887
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1888
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1889
    blck := [:i| k := (list at:i) shortcutKey.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1890
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1891
                 (k notNil and:[(self isSelectable:i) and:[(k == aKey or:[k == rawKey])]]) ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1892
                     self selection:i.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1893
                   ^ true
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1894
                 ]
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1895
            ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1896
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1897
    j to:size  do:blck.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1898
    1 to:(j-1) do:blck.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1899
  ^ false
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1900
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1901
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1902
!NoteBookView methodsFor:'queries'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1903
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1904
isEnabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1905
    "returns enabled state
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1906
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1907
    ^ enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1908
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1909
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1910
isFirstTabInLine:aTab
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1911
    "returns true if the tab is the first tab in the line
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1912
     used by drawing
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1913
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1914
    |idx prevTab|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1915
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1916
    idx := list identityIndexOf:aTab.
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1917
    prevTab := list at:(idx - 1) ifAbsent:nil.
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1918
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1919
  ^ prevTab isNil or:[prevTab lineNr ~~ aTab lineNr]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1920
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1921
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1922
isHorizontal
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1923
    "returns true in case of direction is #top or #bottom
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1924
    "
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1925
    ^ direction == #top or:[direction == #bottom]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1926
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1927
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1928
isLastTabInLine:aTab
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1929
    "returns true if the tab is the last tab in the line
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1930
     used by drawing
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1931
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1932
    |index nextTab|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1933
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1934
    index   := list identityIndexOf:aTab.
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1935
    nextTab := list at:(index + 1) ifAbsent:nil.
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1936
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1937
  ^ nextTab isNil or:[nextTab lineNr ~~ aTab lineNr]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1938
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1939
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1940
!NoteBookView methodsFor:'selection'!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1941
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1942
isSelectable:anIndex
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1943
    "returns true if tab at an index is selectable
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1944
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1945
    (anIndex notNil and:[anIndex between:1 and:list size]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1946
        (list at:anIndex) isEnabled ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1947
            ^ selectConditionBlock isNil ifTrue:[true]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1948
                                        ifFalse:[selectConditionBlock value:anIndex]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1949
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1950
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1951
    ^ false
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1952
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1953
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1954
selectedTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1955
    "returns the selected tab ot nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1956
    "
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1957
    (selection notNil and:[selection ~~ 0]) ifTrue:[
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1958
        ^ list at:selection ifAbsent:nil
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1959
    ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1960
    ^ nil
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1961
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1962
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1963
selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1964
    "return the selection or nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1965
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1966
    selection isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1967
        ^ useIndex ifTrue:[0] ifFalse:[nil]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1968
    ].
2213
58cc47a8fb2d some redrawing refactored
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
  1969
    ^ useIndex ifTrue:[selection] ifFalse:[self selectedTab label]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1970
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1971
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1972
selection:anIndexOrNil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1973
    "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
  1974
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1975
    |oldSel|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1976
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1977
    anIndexOrNil ~~ selection ifTrue:[
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1978
        oldSel := selection.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1979
        self setSelection:anIndexOrNil.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1980
        oldSel ~~ selection ifTrue:[self selectionChanged]
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1981
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1982
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1983
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1984
selectionChanged
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1985
    "selection has changed; raise notification
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1986
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1987
    |sel|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1988
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1989
    sel := self selection.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1990
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1991
    model  notNil ifTrue:[model  value:sel].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1992
    action notNil ifTrue:[action value:sel]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1993
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1994
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1995
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1996
setSelection:anIndexOrNil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1997
    "change the selection to index or nil. No notifications are raised
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1998
    "
2215
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  1999
    |newSel tappl model oldBounds newBounds|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2000
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2001
    newSel := self listIndexOf:anIndexOrNil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2002
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2003
    (newSel notNil and:[(self isSelectable:newSel) not]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2004
        newSel := nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2005
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2006
    selection == newSel ifTrue:[^ self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2007
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2008
    (shown and:[numberOfLines notNil]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2009
        selection := newSel.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2010
        self invalidate
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2011
    ] ifTrue:[
2215
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2012
        oldBounds := newBounds := nil.
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2013
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2014
        selection ifNotNil:[
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2015
            oldBounds := self computeLayoutForTab:(self selectedTab)
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2016
        ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2017
        selection := newSel.
2215
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2018
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2019
        selection ifNotNil:[
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2020
            newBounds := self computeLayoutForTab:(self selectedTab).
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2021
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2022
            (oldBounds notNil and:[newBounds intersects:oldBounds]) ifTrue:[
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2023
                oldBounds := oldBounds merge:newBounds.
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2024
                newBounds := nil.
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2025
            ].
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2026
        ].
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2027
        oldBounds ifNotNil:[ self invalidate:oldBounds ].
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2028
        newBounds ifNotNil:[ self invalidate:newBounds ].
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2029
    ].
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2030
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2031
    (canvas notNil and:[(canvas objectAttributeAt:#isTabItem) == true]) ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2032
        canvas unmap.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2033
        canvas := nil.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2034
    ].
1724
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
  2035
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2036
    (     selection notNil
2213
58cc47a8fb2d some redrawing refactored
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
  2037
     and:[(model := self selectedTab model) notNil
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2038
     and:[(tappl := model canvasView) notNil]]
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2039
    ) ifFalse:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2040
        ^ self
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2041
    ].
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2042
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2043
    canvasHolder notNil ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2044
        canvasHolder value:tappl
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2045
    ] ifFalse:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2046
        self canvas:tappl
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2047
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2048
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2049
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2050
!NoteBookView::Tab class methodsFor:'instance creation'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2051
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2052
label:aLabel on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2053
    ^ self basicNew label:aLabel on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2054
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2055
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2056
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2057
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2058
!NoteBookView::Tab methodsFor:'accessing'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2059
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2060
accessCharacter
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2061
    "returns the access character or nil
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2062
    "
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2063
    ^ accessCharacter
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2064
!
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2065
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2066
foregroundColor
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2067
    "returns the foregroundColor or nil
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2068
    "
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2069
    model notNil ifTrue:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2070
        ^ model foregroundColor
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2071
    ].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2072
    ^ nil
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2073
!
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2074
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2075
label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2076
    "returns my original label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2077
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2078
    ^ label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2079
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2080
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2081
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2082
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2083
label:aLabel on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2084
    "initialize attributes
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2085
    "
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2086
    label           := aLabel.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2087
    model           := (aLabel isKindOf:TabItem) ifTrue:[aLabel] ifFalse:[nil].
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2088
    accessCharacter := nil.
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2089
    printableLabel  := model notNil ifTrue:[model rawLabel] ifFalse:[aLabel].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2090
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2091
    printableLabel notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2092
        printableLabel isImageOrForm ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2093
            printableLabel := printableLabel onDevice:(aGC device)
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2094
        ] ifFalse:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2095
            printableLabel isString ifTrue:[
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2096
                printableLabel := self resolveDisplayStringFor:printableLabel
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2097
            ] ifFalse:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2098
                printableLabel class == LabelAndIcon ifTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2099
                    printableLabel string:(self resolveDisplayStringFor:(printableLabel string))
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2100
                ]
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2101
            ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2102
        ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2103
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2104
        printableLabel := ''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2105
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2106
    extent := (printableLabel widthOn:aGC) @ (printableLabel heightOn:aGC).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2107
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2108
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2109
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2110
lineNr
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2111
    "get the line number within the noteBook view
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2112
     1 -> on top of the wizard
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2113
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2114
    ^ lineNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2115
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2116
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2117
lineNr:aLineNr
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2118
    "set the line number within the noteBook view
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2119
     1 -> on top of the wizard
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2120
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2121
    lineNr := aLineNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2122
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2123
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2124
model
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2125
    "returns the model, a TabItem or nil
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2126
    "
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2127
    ^ model
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2128
!
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2129
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2130
printableLabel
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2131
    "get my printable label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2132
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2133
    ^ printableLabel
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2134
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2135
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2136
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2137
shortcutKey
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2138
    "get the  key to press to select the tab item from the keyboard
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2139
    "
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2140
    model notNil ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2141
        ^ model shortcutKey
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2142
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2143
    ^ nil
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2144
!
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2145
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2146
string
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2147
    "access the printable string used for steping through a list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2148
     searching for an entry starting with a character.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2149
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2150
    ^ printableLabel perform:#string ifNotUnderstood:nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2151
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2152
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2153
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
  2154
!NoteBookView::Tab methodsFor:'accessing-dimensions'!
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2155
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2156
extent
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2157
    "returns the extent of the label, the minimum size required by the tab
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2158
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2159
    ^ extent
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2160
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2161
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2162
layout
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2163
    "get the tab's layout, set by the noteBook view
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2164
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2165
    ^ layout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2166
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2167
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2168
layout:aLayout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2169
    "set the tab's layout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2170
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2171
    layout := aLayout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2172
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2173
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2174
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2175
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2176
preferredExtentX
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2177
    "returns my preferred extent x
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2178
    "
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  2179
    ^ 2 + extent x
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2180
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2181
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2182
preferredExtentY
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2183
    "returns my preferred extent y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2184
    "
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  2185
    ^ 2 + extent y
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2186
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2187
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
  2188
!NoteBookView::Tab methodsFor:'accessing-mvc'!
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2189
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2190
addDependent:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2191
    "make the noteBook be a dependent of the tab model
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2192
    "
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2193
    model notNil ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2194
        model addDependent:aGC
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2195
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2196
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2197
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2198
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2199
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2200
removeDependent:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2201
    "make the noteBook be independent of the tab model
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2202
    "
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2203
    model notNil ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2204
        model destroyCanvas.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2205
        model removeDependent:aGC.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2206
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2207
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2208
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2209
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2210
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2211
!NoteBookView::Tab methodsFor:'drawing'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2212
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2213
displayOn:aGC inset:inset direction:aDirection
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2214
    "redraw tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2215
    "
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2216
    |dispObj lft wdt top hgt
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2217
     y  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2218
     x  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2219
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2220
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2221
    "/ REDRAW LABEL
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2222
    (aGC isEnabled and:[self isEnabled]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2223
        dispObj := printableLabel.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2224
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2225
        (dispObj := disabledLabel) isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2226
            (dispObj := printableLabel) isImageOrForm ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2227
                disabledLabel := printableLabel lightened onDevice:(aGC device)
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2228
            ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2229
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2230
    ].
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  2231
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2232
    (aDirection == #top or:[aDirection == #bottom]) ifTrue:[
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2233
        lft := layout left  + inset.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2234
        wdt := layout right - inset - lft.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2235
        wdt > 4 ifFalse:[^ self].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2236
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2237
        x := (wdt - extent x) // 2.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2238
        x < 0 ifTrue:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2239
            dispObj := '...'.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2240
            x := 0.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2241
        ].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2242
        x := x + lft.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2243
        y := layout top  + (layout height - inset - extent y // 2).
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2244
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2245
        aDirection == #top ifTrue:[ y := y + inset ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2246
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2247
        dispObj isImageOrForm ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2248
            y := y + aGC font ascent
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
  2249
        ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2250
        dispObj displayOn:aGC x:x y:y.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2251
      ^ self
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2252
    ].
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2253
    top := layout  top   + inset.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2254
    hgt := layout bottom - inset - top.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2255
    hgt > 4 ifFalse:[^ self].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2256
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2257
    y := (hgt - extent x) // 2.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2258
    y < 0 ifTrue:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2259
        dispObj := '...'.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2260
        y := 0.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2261
    ].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2262
    y := y + top.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2263
    x := layout left + (layout width  - inset - extent y // 2).
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2264
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2265
    aDirection == #left ifTrue:[ x := x + inset ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2266
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2267
    dispObj isImageOrForm ifFalse:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2268
        dispObj isString ifTrue:[ 
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2269
            x := x + aGC font descent.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
  2270
        ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2271
        "/ workaround for a bug in display-with-angle,
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2272
        "/ iff displayed string is a labelAndIcon.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2273
        "/ (In this case, display is always opaque, and the current
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2274
        "/  backgroundPaint color is used to fill the underlying rectangle)
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2275
        "/
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2276
        aGC backgroundPaint:aGC backgroundColor.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2277
        aGC displayString:dispObj x:x y:y angle:90.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2278
    ] ifTrue:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2279
        (dispObj rotated:90) displayOn:aGC x:x y:y.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2280
    ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2281
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2282
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2283
!NoteBookView::Tab methodsFor:'private'!
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2284
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2285
resolveDisplayStringFor:aString
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2286
    |string size rest pos idx|
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2287
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2288
    size   := aString size.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2289
    string := aString.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2290
    pos    := 0.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2291
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2292
    size > 1 ifTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2293
        (model notNil and:[(pos := model accessCharacterPosition) ~~ 0]) ifTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2294
            pos > size ifTrue:[pos := 0]
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2295
        ] ifFalse:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2296
            idx := 1.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2297
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2298
            [((idx := string indexOf:$& startingAt:idx) ~~ 0 and:[idx < size])] whileTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2299
                rest := string copyFrom:(idx+1).
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2300
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2301
                idx == 1 ifTrue:[string := rest]
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2302
                        ifFalse:[string := (string copyFrom:1 to:(idx-1)), rest].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2303
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2304
                (string at:idx) == $& ifTrue:[idx := idx + 1]
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2305
                                     ifFalse:[pos := idx].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2306
                size := size - 1.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2307
            ]
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2308
        ]
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2309
    ].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2310
    size ~~ 0 ifTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2311
        pos == 0 ifTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2312
            pos := 1
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2313
        ] ifFalse:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2314
            string isText ifFalse:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2315
                string := Text string:string
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2316
            ].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2317
            string emphasisAt:pos add:#underline
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2318
        ].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2319
        accessCharacter := (string at:pos) asLowercase
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2320
    ] ifFalse:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2321
        accessCharacter := nil
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2322
    ].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2323
    ^ string
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2324
! !
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2325
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2326
!NoteBookView::Tab methodsFor:'testing'!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2327
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2328
containsPointX:x y:y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2329
    "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
  2330
    "
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2331
    layout isNil ifTrue:[^ false].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2332
  ^ layout containsPointX:x y:y
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2333
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2334
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2335
intersects:aRectangle
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2336
    "return true, if the intersection between the argument, aRectangle
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2337
     and the tab is not empty
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2338
    "
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2339
    layout isNil ifTrue:[^ false].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2340
  ^ layout intersects:aRectangle
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2341
!
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
  2342
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2343
isEnabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2344
    "returne true if no model exists or the model is enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2345
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2346
    ^ (model isNil or:[model isEnabled])
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2347
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2348
386
eb0dd3efd92c bug fixes
ca
parents: 375
diff changeset
  2349
! !
eb0dd3efd92c bug fixes
ca
parents: 375
diff changeset
  2350
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2351
!NoteBookView class methodsFor:'documentation'!
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2352
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2353
version
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2354
    ^ '$Header: /cvs/stx/stx/libwidg2/NoteBookView.st,v 1.70 2002-10-14 07:01:38 ca Exp $'
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2355
! !