NoteBookView.st
author ca
Thu, 13 Apr 2000 14:32:41 +0200
changeset 1759 a8b1d1fad2f1
parent 1724 6557e3112383
child 1770 67d5517ba9df
permissions -rw-r--r--
add more functionality; canvas and help
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
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    18
		direction numberOfLines selectConditionBlock expandSelection
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
    19
		canvas canvasInset canvasFrameLevel canvasHolder halfLightColor
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
    20
		halfShadowColor fitLastRow tabModus lastComputedExtent keepCanvas
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
    21
		tabMargin activeForegroundColor drawLightColor edgeStyle
1700
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
    22
		tabBgColor activeTabBgColor disabledForegroundColor'
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
    23
	classVariableNames:'DefaultForegroundColor DefaultActiveForegroundColor
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
    24
		DefaultShadowColor DefaultHalfShadowColor DefaultLightColor
1700
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
    25
		DefaultHalfLightColor DefaultEdgeStyle DisabledForegroundColor'
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    26
	poolDictionaries:''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    27
	category:'Views-Layout'
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    28
!
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
Object subclass:#Tab
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
    31
	instanceVariableNames:'label model printableLabel disabledLabel lineNr layout extent
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
    32
		accessCharacter'
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    33
	classVariableNames:''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    34
	poolDictionaries:''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    35
	privateIn:NoteBookView
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    36
!
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
!NoteBookView class methodsFor:'documentation'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    39
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    40
copyright
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    41
"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    42
 COPYRIGHT (c) 1997 by eXept Software AG
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    43
              All Rights Reserved
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    44
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    45
 This software is furnished under a license and may be used
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    46
 only in accordance with the terms of that license and with the
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    47
 inclusion of the above copyright notice.   This software may not
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    48
 be provided or otherwise made available to, or used by, any
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    49
 other person.  No title to or ownership of the software is
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    50
 hereby transferred.
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    51
"
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    52
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
!
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
documentation
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    57
    implements the noteBook.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    58
    May also be used on its own (without a surrounding noteBook).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    59
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    60
    [author:]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    61
        Claus Atzkern
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    62
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    63
    [see also:]
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    64
        TabView
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    66
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    67
!
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    69
examples
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    70
"
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    71
    tabs at top ( default )
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    72
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    73
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    74
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    75
    top  := StandardSystemView extent:250@100.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
    76
    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
    77
    tab list:#( 'Foo' 'Bar' 'Baz' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    78
    tab action:[:aName| Transcript showCR:aName].
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    79
    top open.
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    80
                                                                                [exEnd]
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    81
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    82
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    83
    tabs at bottom
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    84
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    85
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    86
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    87
    top  := StandardSystemView extent:250@100.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
    88
    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
    89
    tab direction:#bottom.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    90
    tab list:#( 'Foo' 'Bar' 'Baz' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    91
    tab action:[:aName| Transcript showCR:aName].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    92
    top open.
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    93
                                                                                [exEnd]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    94
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    95
    tabs at left
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    96
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    97
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    98
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    99
    top  := StandardSystemView extent:100@200.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
   100
    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
   101
    tab direction:#left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   102
    tab list:#( 'Foo' 'Bar' 'Baz' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   103
    tab action:[:aName| Transcript showCR:aName].
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   104
    top open.
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   105
                                                                                [exEnd]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   106
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   107
    tabs at right
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   108
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   109
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   110
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   111
    top  := StandardSystemView extent:100@200.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
   112
    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
   113
    tab direction:#right.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   114
    tab list:#( 'Foo' 'Bar' 'Baz' ).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   115
    tab action:[:aName| Transcript showCR:aName].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   116
    top open.
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   117
                                                                                [exEnd]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   118
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   119
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   120
"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   121
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   122
! !
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
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   175
    |tab|
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
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   184
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   185
        ((tab layout width >= tab preferredExtentX) 
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   186
        and:[tab layout height >= tab preferredExtentY]) ifTrue:[
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   187
            ((tab layout width <= (tab preferredExtentX * 1.5)) 
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   188
            and:[tab layout height <= (tab preferredExtentY * 1.5)]) ifTrue:[
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   189
                self invalidateTab:tab.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   190
                ^ self
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   191
            ].
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   192
        ].
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   193
        self recomputeList.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   194
        self invalidate.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   195
        ^ self.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   196
    ].
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   197
    "/ can this happen ?
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
    "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
   200
! !
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   201
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   202
!NoteBookView methodsFor:'accessing'!
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   204
action:oneArgBlock
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   205
    "set the action block to be performed on select; the argument to
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   206
     the block is the selected index or nil in case of no selection.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   207
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   208
    action := oneArgBlock.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   209
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   210
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   211
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   212
canvas
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   213
    ^ canvas
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   214
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   215
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   216
canvas:aCanvas
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   217
    "change canvas; the containter view
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   218
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   219
    aCanvas == canvas ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   220
        canvas notNil ifTrue:[
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   221
            (keepCanvas or:[(canvas objectAttributeAt:#isTabItem) == true]) ifTrue:[
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   222
                canvas unmap.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   223
            ] ifFalse:[
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   224
                canvas destroy.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   225
            ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   226
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   227
        (canvas := aCanvas) notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   228
            tabModus := false.
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:[
70888239654f category changes
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
   236
                canvas realize.
70888239654f category changes
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
   237
            ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   238
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   239
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   240
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   241
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   242
canvasFrameLevel
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   243
    "inset of the canvas relative to my canvas boundery
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   244
    "
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   245
    ^ canvasFrameLevel
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   246
!
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   247
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   248
canvasFrameLevel:aFrameLevel
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   249
    "inset of the canvas relative to my canvas boundery
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   250
    "
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   251
    canvasFrameLevel ~~ aFrameLevel ifTrue:[
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   252
        canvasFrameLevel := aFrameLevel.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   253
        self recomputeList.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   254
        self invalidate.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   255
    ].
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   256
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   257
!
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   258
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   259
canvasInset
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   260
    "inset of the canvas relativr to my frame
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   261
    "
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   262
    ^ canvasInset
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   263
!
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   264
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   265
canvasInset:anInset
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   266
    "inset of the canvas relativr to my frame
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   267
    "
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   268
    anInset ~~ canvasInset ifTrue:[
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   269
        canvasInset := anInset.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   270
        self recomputeList.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   271
        self invalidate.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   272
    ].
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   273
!
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   274
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   275
list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   276
    "return the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   277
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   278
    ^ list collect:[:aTab| aTab label ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   279
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   280
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   281
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   282
list:aList
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   283
    "set the list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   284
    "
1438
5d710aed8366 oops - instvar name was overwritten
Claus Gittinger <cg@exept.de>
parents: 1433
diff changeset
   285
    |size name|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   286
1433
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   287
    name := self selection.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   288
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   289
    list do:[:aTab| aTab removeDependent:self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   290
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   291
    aList notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   292
        list := aList collect:[:el| Tab label:el on:self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   293
        list do:[:aTab| aTab addDependent:self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   294
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   295
        list := #()
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   296
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   297
    preferredExtent := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   298
    numberOfLines   := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   299
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   300
    selection notNil ifTrue:[
1433
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   301
        useIndex ifTrue:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   302
            selection > list size ifTrue:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   303
                selection := nil.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   304
                self selectionChanged.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   305
            ]
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   306
        ] ifFalse:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   307
            selection := list findFirst:[:el| el label = name ].
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   308
            selection == 0 ifTrue:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   309
                selection := nil.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   310
                self selectionChanged.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   311
            ]
1401
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
    ].
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   314
    self recomputeList.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   315
    self invalidate.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   316
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   317
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   318
listIndexOf:something
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   319
    "convert something to an index into list or nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   320
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   321
    |index|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   322
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   323
    something isNil ifTrue:[^ nil ].
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
    something isNumber ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   326
        index := something
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   327
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   328
        index := list findFirst:[:aTab|aTab label = something].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   329
        index == 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   330
            index := list findFirst:[:aTab|aTab printableLabel = something]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   331
        ]
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
    ^ (index between:1 and:list size) ifTrue:[index] ifFalse:[nil]
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
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   339
    "use index instead of name
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   340
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   341
    ^ useIndex
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   342
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   343
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   344
!
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
useIndex:aBoolean
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   347
    "set/clear the useIndex flag. If set, both actionBlock and change-messages
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   348
     are passed the index(indices) of the selection as argument. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   349
     If clear, the value(s) (i.e. the selected string) is passed.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   350
     Default is false."
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   351
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   352
    useIndex := aBoolean
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   353
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   354
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   355
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   356
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   357
!NoteBookView methodsFor:'accessing behavior'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   358
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   359
enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   360
    "returns true if tabs are enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   361
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   362
    ^ enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   363
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   364
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   365
enabled:aState
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   366
    "set enabled state
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   367
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   368
    |state|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   369
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   370
    state := aState ? true.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   371
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   372
    enabled ~~ state ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   373
        enabled := state.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   374
        self invalidate.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   375
    ]
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   376
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   377
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   378
keepCanvas:aBoolean
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   379
    "if false (the default), the previous canvas is destroyed, whenever
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   380
     a new canvas is set.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   381
     if true, it is unmapped and kept.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   382
     Set this flag, if the application changes the canvas but wants
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   383
     them to be kept for fast switching."
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   384
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   385
    keepCanvas := aBoolean.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   386
!
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   387
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   388
selectConditionBlock
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   389
    "get the conditionBlock; this block is evaluated before a selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   390
     change is performed; the change will not be done, if the evaluation
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   391
     returns false. The argument to the block is the selection index
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
    ^ selectConditionBlock
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   394
!
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   395
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   396
selectConditionBlock:aOneArgBlock
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   397
    "get the conditionBlock; this block is evaluated before a selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   398
     change is performed; the change will not be done, if the evaluation
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   399
     returns false. The argument to the block is the selection index
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   400
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   401
    selectConditionBlock := aOneArgBlock
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   402
! !
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   403
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   404
!NoteBookView methodsFor:'accessing channels/holders'!
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   405
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   406
canvasHolder
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   407
    "get the model, which keeps the canvas, a kind of SimpleView
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   408
    "
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   409
    ^ canvasHolder
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
!
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   412
canvasHolder:aValueHolder
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   413
    "set the model, which keeps the canvas, a kind of SimpleView
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   414
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   415
    canvasHolder removeDependent:self. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   416
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   417
    (canvasHolder := aValueHolder) notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   418
        canvasHolder addDependent:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   419
        self canvas:(canvasHolder value)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   420
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   421
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   422
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
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   425
listHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   426
    "get the model, which keeps the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   427
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   428
    ^ listHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   429
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   430
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   431
listHolder:aValueHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   432
    "set the model, which keeps the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   433
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   434
    listHolder removeDependent:self. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   435
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   436
    (listHolder := aValueHolder) notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   437
        listHolder addDependent:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   438
        self list:listHolder value.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   439
    ].
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   440
!
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   441
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   442
model:aValueHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   443
    "set the model, which keeps the selection
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
    super model:aValueHolder.
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
    model notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   448
        self selection:(model value)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   449
    ]
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
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   452
!NoteBookView methodsFor:'accessing dimension'!
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
maxTabHeight
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   455
    |e y|
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
    e := self preferredExtent.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   458
    y := self isHorizontal ifTrue:[e y] ifFalse:[e x].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   459
  ^ y - (expandSelection y)
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   460
!
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   461
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   462
preferredExtent
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   463
    "compute max extent x/y based on one line
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   464
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   465
    |x "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   466
     y "{ Class:SmallInteger }"
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
    preferredExtent isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   469
        y := 0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   470
        x := 0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   471
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   472
        list notEmpty ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   473
            list do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   474
                x := x + aTab preferredExtentX.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   475
                y := y max:(aTab preferredExtentY).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   476
            ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   477
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   478
        y := y + (expandSelection y).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   479
        x := x + (expandSelection x).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   480
        preferredExtent := self isHorizontal ifTrue:[x @ y] ifFalse:[y @ x]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   481
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   482
    ^ preferredExtent
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   483
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   484
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   485
preferredSizeXorY
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   486
    "returns preferred size dependant on the current view layout and
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   487
     the direction of the tabs
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   488
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   489
    |e y|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   490
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   491
    list isEmpty ifTrue:[^ 0].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   492
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   493
    y := self maxTabHeight.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   494
    e := expandSelection y.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   495
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   496
    numberOfLines isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   497
        self shown ifFalse:[^ y + e ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   498
        self recomputeList.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   499
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   500
    ^ numberOfLines * y + e
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   501
! !
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   502
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   503
!NoteBookView methodsFor:'accessing look'!
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   504
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   505
activeForegroundColor
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   506
    "get the color to be used for drawing text
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   507
    "
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   508
    ^ activeForegroundColor
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   509
!
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   510
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   511
activeTabBackgroundColor
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   512
    "get the backgroundColor of the tabs
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   513
    "
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   514
    ^ activeTabBgColor
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   515
!
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   516
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   517
backgroundColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   518
    "get backgroundColor of the notebook view
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   519
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   520
    ^ viewBackground
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   521
!
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   522
1700
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   523
disabledForegroundColor
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   524
    ^ disabledForegroundColor
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   525
!
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   526
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   527
drawLightColor
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   528
    "get the color to be used for lighted edges; bug fix caused by common
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   529
     drawEdge
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   530
    "
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   531
    ^ drawLightColor
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   532
!
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   533
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   534
foregroundColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   535
    "get the color to be used for drawing text
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   536
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   537
    ^ foregroundColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   538
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   539
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   540
foregroundColor:aColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   541
    "set the color to be used for drawing text
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   542
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   543
    aColor ~= foregroundColor ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   544
        foregroundColor := aColor.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   545
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   546
        shown ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   547
            self invalidate
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   548
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   549
    ]
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   550
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   551
!
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   552
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   553
halfLightColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   554
    "get the color to be used for drawing text
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   555
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   556
    ^ halfLightColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   557
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   558
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   559
halfShadowColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   560
    ^ halfShadowColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   561
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   562
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   563
shadowColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   564
    "get the color to be used for shadowed edges
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   565
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   566
    ^ shadowColor
1684
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   567
!
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   568
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   569
shadowColor:aColor
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   570
    "get the color to be used for shadowed edges
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   571
    "
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   572
    super shadowColor:aColor
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   573
!
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   574
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   575
tabBackgroundColor
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   576
    "get the backgroundColor of the tabs
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   577
    "
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   578
    ^ tabBgColor
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   579
!
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   580
1684
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   581
viewBackground:aColor
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   582
    "get backgroundColor of the notebook view
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   583
    "
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   584
    |sameTab sameActiveTab|
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   585
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   586
    sameTab := tabBgColor == viewBackground.
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   587
    sameActiveTab := activeTabBgColor == viewBackground.
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   588
1684
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   589
    super viewBackground:aColor.
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   590
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   591
    (edgeStyle isNil and:[viewBackground isColor]) ifTrue:[
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   592
        halfShadowColor := shadowColor.
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   593
        halfLightColor  := lightColor.
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   594
        drawLightColor  := lightColor.
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   595
    ].
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   596
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   597
    DefaultShadowColor isNil ifTrue:[
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   598
        shadowColor := aColor darkened onDevice:device
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   599
    ].
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   600
    DefaultLightColor isNil ifTrue:[
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   601
        lightColor := aColor lightened onDevice:device
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   602
    ].
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   603
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   604
    sameTab ifTrue:[
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   605
        tabBgColor := viewBackground.
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   606
    ].
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   607
    sameActiveTab ifTrue:[
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   608
        activeTabBgColor := viewBackground.
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   609
    ]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   610
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   611
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   612
!NoteBookView methodsFor:'accessing style'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   613
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   614
direction
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   615
    "returns the direction of tabs as symbol. On default the value is
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   616
     set to #top. Valid symbols are:
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   617
	#top       arrange tabs to be on top of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   618
	#bottom    arrange tabs to be on bottom of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   619
	#left      arrange tabs to be on left of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   620
	#right     arrange tabs to be on right of a view
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
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   623
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   624
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   625
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   626
direction:aDirection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   627
    "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
   628
     Valid symbols are:
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   629
        #top       arrange tabs to be on top of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   630
        #bottom    arrange tabs to be on bottom of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   631
        #left      arrange tabs to be on left of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   632
        #right     arrange tabs to be on right of a view
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
    direction ~~ aDirection ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   635
        direction       := aDirection.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   636
        preferredExtent := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   637
        numberOfLines   := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   638
        self invalidate.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   639
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   640
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   641
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   642
fitLastRow
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   643
    "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
   644
     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
   645
     preferred extent (x or y) dependant on the direction.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   646
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   647
    ^ fitLastRow
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   648
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   649
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   650
fitLastRow:aBool
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   651
    "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
   652
     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
   653
     preferred extent (x or y) dependant on the direction.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   654
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   655
    fitLastRow := aBool
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   656
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   657
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   658
tabModus
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   659
    ^ tabModus
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   660
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   661
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   662
tabModus:aBoolean
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   663
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   664
    tabModus ~~ aBoolean ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   665
        (aBoolean and:[canvas notNil]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   666
            tabModus := aBoolean.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   667
            numberOfLines := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   668
            shown ifTrue:[self invalidate]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   669
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   670
    ]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   671
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   672
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   673
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   674
!NoteBookView methodsFor:'change & update'!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   675
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   676
update:something with:aParameter from:changedObject
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   677
    "one of my models changed its value
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   678
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   679
    |idx tab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   680
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   681
    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
   682
    changedObject == listHolder    ifTrue:[
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   683
        something == #at: ifTrue:[
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   684
            "/ 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
   685
            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
   686
            ^ self.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   687
        ].
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   688
        ^ self list:(listHolder value)
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   689
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   690
    changedObject == enableChannel ifTrue:[^ self enabled:enableChannel value].
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   691
    changedObject == canvasHolder  ifTrue:[^ self canvas:canvasHolder value].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   692
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   693
    (idx := list findFirst:[:aTab| aTab label == changedObject]) ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   694
        tab := list at:idx.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   695
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   696
        idx == selection ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   697
            tab isEnabled ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   698
                ^ self selection:nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   699
            ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   700
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   701
        tab label:(tab label) on:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   702
        self invalidateTab:tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   703
    ]
1724
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   704
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   705
    "Modified: / 25.2.2000 / 14:14:29 / cg"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   706
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   707
1700
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   708
!NoteBookView methodsFor:'defaults'!
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   709
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   710
updateStyleCache
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   711
"
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   712
self updateStyleCache
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   713
"
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   714
    DefaultForegroundColor := StyleSheet colorAt:#'noteBook.foregroundColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   715
    DefaultForegroundColor isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   716
        DefaultForegroundColor := StyleSheet colorAt:#'button.foregroundColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   717
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   718
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   719
    DefaultActiveForegroundColor := StyleSheet colorAt:#'noteBook.activeForegroundColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   720
    DefaultActiveForegroundColor isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   721
        DefaultActiveForegroundColor := StyleSheet colorAt:#'button.activeForegroundColor'
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   722
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   723
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   724
    DefaultLightColor := StyleSheet colorAt:#'noteBook.lightColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   725
    DefaultLightColor isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   726
        DefaultLightColor := StyleSheet colorAt:'button.lightColor'
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   727
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   728
    DefaultHalfLightColor := StyleSheet colorAt:#'noteBook.halfLightColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   729
    DefaultHalfLightColor isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   730
        DefaultHalfLightColor := StyleSheet colorAt:#'button.halfLightColor'
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   731
    ].    
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   732
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   733
    DefaultShadowColor := StyleSheet colorAt:#'noteBook.shadowColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   734
    DefaultShadowColor isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   735
        DefaultShadowColor := StyleSheet colorAt:'button.shadowColor'
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   736
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   737
    DefaultHalfShadowColor := StyleSheet colorAt:#'noteBook.halfShadowColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   738
    DefaultHalfShadowColor isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   739
        DefaultHalfShadowColor := StyleSheet colorAt:#'button.halfShadowColor'
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   740
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   741
    DefaultEdgeStyle := StyleSheet at:#'noteBook.edgeStyle'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   742
    DefaultEdgeStyle isNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   743
        DefaultEdgeStyle := StyleSheet at:#'button.edgeStyle'
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   744
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   745
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   746
    DisabledForegroundColor := StyleSheet at:#'noteBook.disabledForegroundColor'.
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   747
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   748
    DefaultEdgeStyle == #softWin95 ifFalse:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   749
        DefaultEdgeStyle := nil
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   750
    ].
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   751
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   752
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   753
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   754
! !
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   755
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   756
!NoteBookView methodsFor:'drawing'!
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
invalidateTab:aTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   759
    "invalidate a tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   760
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   761
    shown ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   762
        self invalidate:(self computeLayoutForTab:aTab)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   763
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   764
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   765
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   766
redrawX:x y:y width:w height:h
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   767
    "a region must be redrawn
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   768
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   769
    |savClip selTab damage lyt savLyt|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   770
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   771
    self shown ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   772
        ^ self
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   773
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   774
    numberOfLines isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   775
        self recomputeList.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   776
      ^ self invalidate
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   777
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   778
    selTab := selection notNil ifTrue:[list at:selection] ifFalse:[nil].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   779
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   780
    (selTab notNil and:[selTab lineNr ~~ 1]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   781
        self makeToBaseLine:(selTab lineNr).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   782
      ^ self invalidate
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   783
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   784
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   785
    self paint:(self viewBackground).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   786
    self fillRectangleX:x y:y width:w height:h.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   787
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   788
    savClip := clipRect.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   789
    damage  := Rectangle left:x top:y width:w height:h.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   790
    self clippingRectangle:damage.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   791
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   792
    list notEmpty ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   793
        numberOfLines to:1 by:-1 do:[:aLnNr|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   794
            list reverseDo:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   795
                (     aTab lineNr == aLnNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   796
                 and:[aTab ~~ selTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   797
                 and:[aTab intersects:damage]]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   798
                ) ifTrue:[
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   799
                    tabBgColor ~~ viewBackground ifTrue:[
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   800
                        self paint:tabBgColor.
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   801
                        self fillRectangle:aTab layout.
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   802
                    ].
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   803
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   804
                    aTab redrawAt:direction selected:false on:self
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   805
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   806
            ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   807
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   808
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   809
        selTab := nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   810
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   811
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   812
    tabModus ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   813
        lyt := self computeBorderLayout.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   814
        self drawEdgesForX:lyt left 
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   815
                         y:lyt top
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   816
                     width:lyt width 
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   817
                    height:lyt height
1685
7755214df380 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1684
diff changeset
   818
                     level:canvasFrameLevel
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   819
                    shadow:shadowColor 
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   820
                     light:lightColor
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   821
                halfShadow:halfShadowColor 
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   822
                 halfLight:halfLightColor
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   823
                     style:edgeStyle
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   824
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   825
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   826
    selTab notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   827
        lyt := self computeLayoutForTab:selTab.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   828
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   829
        (lyt intersects:damage) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   830
            savLyt := selTab layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   831
            selTab layout:lyt.
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   832
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   833
            activeTabBgColor ~~ viewBackground ifTrue:[
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   834
                self paint:activeTabBgColor.
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   835
                self fillRectangle:lyt.
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
   836
            ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   837
            selTab redrawAt:direction selected:true on:self.
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   838
1696
f1bae6d68ffe eliminated styleSheet name = win95 queries
Claus Gittinger <cg@exept.de>
parents: 1689
diff changeset
   839
            (self hasFocus 
f1bae6d68ffe eliminated styleSheet name = win95 queries
Claus Gittinger <cg@exept.de>
parents: 1689
diff changeset
   840
            and:[(styleSheet at:#'focusHighlightStyle') == #win95]) ifTrue:[
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   841
                selTab drawWin95FocusFrameOn:self
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   842
            ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   843
            selTab layout:savLyt.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   844
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   845
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   846
    self clippingRectangle:savClip
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   847
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   848
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   849
!NoteBookView methodsFor:'event handling'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   850
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   851
buttonPress:button x:x y:y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   852
    "a button is pressed; find tab under point and set the selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   853
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   854
    |idx|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   855
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   856
    (enabled and:[list notEmpty]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   857
        idx := list findFirst:[:aTab| aTab containsPointX:x y:y ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   858
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   859
        (idx ~~ 0 and:[idx ~~ selection and:[(list at:idx) isEnabled]]) ifTrue:[
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   860
            self selection:idx
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   861
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   862
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   863
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   864
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   865
keyPress:aKey x:x y:y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   866
    "selection might change; look for corresponding list entry
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   867
    "
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   868
    <resource: #keyboard (#CursorRight #CursorLeft #CursorUp #CursorDown)>
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   869
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
   870
    |sensor size index n key|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   871
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
   872
    (enabled and:[(size := list size) ~~ 0]) ifFalse:[
1657
061c167ce3db if disabled; call super keyPress:x:y to handle focusSequence
ca
parents: 1549
diff changeset
   873
        ^ super keyPress:aKey x:x y:y
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   874
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   875
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
   876
    (self processAccessCharacter:aKey) ifTrue:[
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   877
        ^ self
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   878
    ].
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
   879
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
   880
    (self processShortcutKey:aKey) ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
   881
        ^ self
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
   882
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
   883
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
   884
    (size > 1 and:[aKey isSymbol and:[aKey startsWith:'Cursor']]) ifFalse:[
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   885
        ^ super keyPress:aKey x:x y:y
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   886
    ].
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   887
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   888
    self isHorizontal ifTrue:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   889
        (aKey == #CursorRight or:[aKey == #CursorLeft]) ifFalse:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   890
            ^ self
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   891
        ].
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   892
        key := aKey.
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   893
    ] ifFalse:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   894
                 aKey == #CursorUp   ifTrue:[key := #CursorLeft]
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   895
        ifFalse:[aKey == #CursorDown ifTrue:[key := #CursorRight]
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   896
        ifFalse:[ ^ self]].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   897
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   898
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   899
    (sensor := self sensor) notNil ifTrue:[
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   900
        n := 1 + (sensor compressKeyPressEventsWithKey:aKey).
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   901
        n := (n \\ size) max:1.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   902
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   903
        key == #CursorRight ifTrue:[
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   904
            index := selection ? 1.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   905
            [   (index := index + 1) > size ifTrue:[index := 1].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   906
                (self isSelectable:index)   ifTrue:[n := n - 1].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   907
                n ~~ 0
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   908
            ] whileTrue.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   909
        ] ifFalse:[
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   910
            index := selection ? size.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   911
            [   (index := index - 1) == 0 ifTrue:[index := size].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   912
                (self isSelectable:index) ifTrue:[n     := n -1].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   913
                n ~~ 0
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   914
            ] whileTrue.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   915
        ].
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   916
        self selection:index
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
   917
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   918
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   919
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
   920
processShortcutKeyEvent:event
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
   921
    ^ self processShortcutKey:(event key)
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
   922
!
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
   923
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   924
sizeChanged:how
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   925
    "size of view changed 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   926
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   927
    super sizeChanged:how.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   928
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   929
    list notEmpty ifTrue:[
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   930
        lastComputedExtent ~= self extent ifTrue:[
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   931
            numberOfLines := nil.
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
   932
        ]
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   933
    ].
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   934
    shown ifTrue:[self invalidate].
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   935
    self resizeCanvas.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   936
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   937
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   938
!NoteBookView methodsFor:'focus handling'!
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   939
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   940
showFocus:explicit
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   941
    "got the keyboard focus 
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   942
    "
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   943
    |tab|
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   944
1696
f1bae6d68ffe eliminated styleSheet name = win95 queries
Claus Gittinger <cg@exept.de>
parents: 1689
diff changeset
   945
    (styleSheet at:#'focusHighlightStyle') == #win95 ifTrue:[
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   946
        (tab := self selectedTab) notNil ifTrue:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   947
            self invalidateTab:tab
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   948
        ]
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   949
    ] ifFalse:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   950
        super showFocus:explicit
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   951
    ]
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   952
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   953
!
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   954
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   955
showNoFocus:explicit
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   956
    "lost the keyboard focus 
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   957
    "
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   958
    |tab|
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   959
1696
f1bae6d68ffe eliminated styleSheet name = win95 queries
Claus Gittinger <cg@exept.de>
parents: 1689
diff changeset
   960
    (styleSheet at:#'focusHighlightStyle') == #win95 ifTrue:[
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   961
        (tab := self selectedTab) notNil ifTrue:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   962
            self invalidateTab:tab
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   963
        ]
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   964
    ] ifFalse:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   965
        super showNoFocus:explicit
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   966
    ]
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   967
! !
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
   968
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   969
!NoteBookView methodsFor:'help'!
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   970
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   971
helpText
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   972
    "return the helpText for the currently selected item (empty if none)
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   973
    "
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   974
    ^ self helpTextForItemAt:selection
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   975
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   976
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   977
!
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   978
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   979
helpTextAt:srcPoint
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   980
    "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
   981
    "
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   982
    |x y i|
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   983
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   984
    x := srcPoint x.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   985
    y := srcPoint y.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   986
    i := list findFirst:[:aTab| aTab containsPointX:x y:y ].
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   987
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   988
  ^ self helpTextForItemAt:i
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   989
!
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   990
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   991
helpTextForItemAt:anIndex
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   992
    |tab|
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   993
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   994
    (     anIndex notNil
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   995
     and:[anIndex ~~ 0
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   996
     and:[(tab := list at:anIndex ifAbsent:nil) notNil
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   997
     and:[(tab := tab model) notNil]]]
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   998
    ) ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   999
        ^ tab activeHelpText ? ''
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1000
    ].
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1001
    ^ ''
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1002
! !
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1003
1687
70888239654f category changes
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  1004
!NoteBookView methodsFor:'initialization & release'!
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1005
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1006
destroy
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1007
    "remove dependencies
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1008
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1009
    list removeDependent:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1010
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1011
    listHolder    removeDependent:self. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1012
    enableChannel removeDependent:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1013
    canvasHolder  removeDependent:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1014
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1015
    super destroy.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1016
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1017
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1018
initStyle
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1019
    "setup style attributes
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1020
    "
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1021
    |clr|
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1022
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1023
    super initStyle.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1024
    tabModus  := false.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1025
    edgeStyle := DefaultEdgeStyle.
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1026
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1027
    self font:self class defaultFont.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1028
    drawLightColor := Color veryLightGray onDevice:device.
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1029
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1030
    clr := DefaultForegroundColor ? Black.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1031
    foregroundColor := clr onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1032
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1033
    clr := DefaultForegroundColor ? foregroundColor.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1034
    activeForegroundColor := clr onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1035
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
  1036
    clr := DefaultShadowColor ifNil:[viewBackground darkened].
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1037
    shadowColor := clr onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1038
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
  1039
    clr := DefaultLightColor ifNil:[viewBackground lightened].
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1040
    lightColor := clr onDevice:device.
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1041
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
  1042
    tabBgColor := viewBackground.
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
  1043
    activeTabBgColor := viewBackground.
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
  1044
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1045
    edgeStyle isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1046
        halfShadowColor := shadowColor.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1047
        halfLightColor  := lightColor.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1048
        drawLightColor  := lightColor.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1049
    ] ifFalse:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1050
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1051
        (clr := DefaultHalfShadowColor) isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1052
            clr := shadowColor lightened
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1053
        ].
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1054
        halfShadowColor := clr onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1055
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1056
        (clr := DefaultHalfLightColor) isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1057
            clr := lightColor darkened.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1058
        ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1059
        halfLightColor := clr onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1060
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1061
        edgeStyle == #soft ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1062
            drawLightColor := halfShadowColor
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1063
        ] ifFalse:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1064
            drawLightColor := Color veryLightGray onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1065
        ]
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1066
    ].
1700
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1067
    (clr := DisabledForegroundColor) notNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1068
        disabledForegroundColor := clr onDevice:device
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1069
    ]ifFalse:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1070
        disabledForegroundColor := drawLightColor
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1071
    ].
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1072
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1073
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1074
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1075
initialize
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1076
    "setup default attributes
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1077
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1078
    super initialize.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1079
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1080
    self cursor:Cursor hand.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1081
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1082
    list             := #().
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1083
    useIndex         := true.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1084
    direction        := #top.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1085
    fitLastRow       := true.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1086
    enabled          := true.
1685
7755214df380 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1684
diff changeset
  1087
    expandSelection  := StyleSheet at:#'noteBook.expandSelection'  default:8@8.
7755214df380 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1684
diff changeset
  1088
    canvasInset      := StyleSheet at:#'noteBook.canvasInset'      default:1@1.
7755214df380 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1684
diff changeset
  1089
    canvasFrameLevel := StyleSheet at:#'noteBook.canvasFrameLevel' default:2.
7755214df380 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1684
diff changeset
  1090
    tabMargin        := StyleSheet at:#'noteBook.canvasTabMargin'  default:2.
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1091
    keepCanvas       := false.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1092
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1093
    self lineWidth:0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1094
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1095
    canvas notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1096
        canvas := canvas in:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1097
    ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1098
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1099
!
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1100
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1101
realize
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1102
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1103
    (canvas notNil and:[numberOfLines isNil]) ifTrue:[
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1104
        self recomputeList
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1105
    ].
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1106
    super realize.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1107
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1108
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1109
!NoteBookView methodsFor:'layout'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1110
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1111
computeBorderLayout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1112
    |xL yT xR yB tab|
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
    tab := list detect:[:aTab| aTab lineNr == 1] ifNone:nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1115
    xL  := 0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1116
    yT  := 0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1117
    xR  := width.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1118
    yB  := height.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1119
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1120
    tab notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1121
                 direction == #top    ifTrue:[yT := tab layout bottom]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1122
        ifFalse:[direction == #bottom ifTrue:[yB := tab layout top]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1123
        ifFalse:[direction == #left   ifTrue:[xL := tab layout right]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1124
                                     ifFalse:[xR := tab layout left]]]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1125
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1126
    ^ Rectangle left:xL top:yT right:xR bottom:yB
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
computeLayoutForTab:aTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1131
    "calculate extent of a tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1132
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1133
    |layout x y w h level|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1134
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1135
    layout := aTab layout.
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1136
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1137
    self selectedTab == aTab ifFalse:[
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1138
        ^ layout
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1139
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1140
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1141
    level  := canvasFrameLevel abs.
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1142
    layout := layout copy.
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1143
    w := expandSelection x.
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1144
    h := expandSelection y.
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1145
    x := w // 2.
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1146
    y := h // 2.
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1147
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1148
    (direction == #top or:[direction == #bottom]) ifTrue:[
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1149
        layout setLeft:(layout left   - x).
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1150
        layout   width:(layout width  + w).
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1151
        layout  height:(layout height + y + level).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1152
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1153
        direction == #top ifTrue:[
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1154
            layout setTop:(layout top - y).
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1155
        ] ifFalse:[
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1156
            layout setTop:(layout top - level).
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1157
        ].
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1158
        ^ layout
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1159
    ].
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1160
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1161
    layout  setTop:(layout top    - x).
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1162
    layout  height:(layout height + w).
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1163
    layout   width:(layout width  + y + level).
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1164
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1165
    direction == #left ifTrue:[
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1166
        layout setLeft:(layout left - y).
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1167
    ] ifFalse:[
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1168
        layout setLeft:(layout left - level)
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1169
    ].
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1170
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1171
  ^ layout
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1172
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1173
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1174
makeToBaseLine:aLnNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1175
    |layout1 layoutN topN top1 leftN left1
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1176
     nr "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1177
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1178
    nr := list findFirst:[:aTab| aTab lineNr == 1].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1179
    layout1 := (list at:nr) layout.
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
    nr := list findFirst:[:aTab| aTab lineNr == aLnNr].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1182
    layoutN := (list at:nr) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1183
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1184
    self isHorizontal ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1185
        top1 := layout1 top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1186
        topN := layoutN top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1187
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1188
        list do:[:el|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1189
            (nr := el lineNr) == 1 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1190
                el layout setTop:topN. el lineNr:aLnNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1191
            ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1192
                nr == aLnNr ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1193
                    el layout setTop:top1. el lineNr:1
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1194
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1195
            ]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1196
        ]
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1197
    ] ifFalse:[
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1198
        left1 := layout1 left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1199
        leftN := layoutN left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1200
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1201
        list do:[:el|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1202
            (nr := el lineNr) == 1 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1203
                el layout setLeft:leftN. el lineNr:aLnNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1204
            ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1205
                nr == aLnNr ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1206
                    el layout setLeft:left1. el lineNr:1
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1207
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1208
            ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1209
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1210
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1211
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1212
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1213
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1214
recomputeList
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1215
    "recompute list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1216
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1217
    numberOfLines := 1.
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1218
    lastComputedExtent := self extent.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1219
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1220
    list size ~~ 0 ifTrue:[
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1221
        self isHorizontal ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1222
            self recomputeListHorizontal
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1223
        ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1224
            self recomputeListVertical
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1225
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1226
    ].
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1227
    self resizeCanvas.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1228
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1229
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1230
recomputeListHorizontal
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1231
    "recompute list
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
    |layout lastLyt checkDir
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1234
     xLeft     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1235
     yTop      "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1236
     tabWidth  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1237
     tabHeight "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1238
     lineWidth "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1239
     startX    "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1240
     delta     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1241
     first     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1242
     last      "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1243
    |
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1244
    startX     := expandSelection x // 2 + canvasFrameLevel abs - 2.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1245
    lineWidth  := self width - startX.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1246
    tabHeight  := self maxTabHeight.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1247
    xLeft      := startX.
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1248
    yTop       := expandSelection y // 2 + tabMargin.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1249
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1250
    checkDir := canvas isNil ifTrue:[#top] ifFalse:[#bottom].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1251
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1252
    direction == #bottom ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1253
        yTop := self height - tabHeight - yTop
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1254
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1255
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1256
    list do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1257
        tabWidth := aTab preferredExtentX.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1258
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1259
        (xLeft + tabWidth > lineWidth and:[xLeft ~~ startX]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1260
            numberOfLines := numberOfLines + 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1261
            xLeft := startX.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1262
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1263
        aTab lineNr:numberOfLines.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1264
        aTab layout:(Rectangle left:xLeft top:yTop width:tabWidth height:tabHeight).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1265
        xLeft := xLeft + tabWidth
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1266
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1267
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1268
    numberOfLines ~~ 1 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1269
        last  := numberOfLines.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1270
        delta := direction == #bottom ifFalse:[tabHeight]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1271
                                       ifTrue:[tabHeight negated].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1272
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1273
        list reverseDo:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1274
            aTab lineNr ~~ last ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1275
                last := aTab lineNr.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1276
                yTop := yTop + delta
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1277
            ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1278
            aTab layout setTop:yTop
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1279
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1280
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1281
    tabModus ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1282
        layout := (list at:1) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1283
        delta  := direction == #top ifTrue:[self height - layout bottom]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1284
                                   ifFalse:[layout top negated].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1285
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1286
        list do:[:aTab| aTab layout setTop:(aTab layout top + delta)].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1287
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1288
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1289
    "/ FIT LINES
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1290
    (numberOfLines ~~ 1 or:[fitLastRow]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1291
        ^ self
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1292
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1293
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1294
    first := 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1295
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1296
    1 to:numberOfLines do:[:aLnNr|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1297
        last    := list findLast:[:t|t lineNr == aLnNr].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1298
        lastLyt := (list at:last) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1299
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1300
        (delta := lineWidth - lastLyt right) ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1301
            xLeft := startX.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1302
            delta := delta // (last - first + 1).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1303
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1304
            delta ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1305
                list from:first to:last do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1306
                    layout   := aTab layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1307
                    tabWidth := layout width + delta.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1308
                    layout setLeft:xLeft.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1309
                    layout width:tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1310
                    xLeft := xLeft + tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1311
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1312
            ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1313
            lastLyt width:(lineWidth - lastLyt left)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1314
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1315
        first := last + 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1316
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1317
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1318
!
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
recomputeListVertical
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1321
    "recompute list
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
    |layout lastLyt
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1324
     xTop      "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1325
     yTop      "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1326
     tabWidth  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1327
     tabHeight "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1328
     lineHeight "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1329
     startY    "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1330
     delta     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1331
     first     "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1332
     last      "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1333
    |
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1334
    startY     := expandSelection x // 2 + canvasFrameLevel abs - 2.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1335
    lineHeight := self height - startY.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1336
    tabHeight  := self maxTabHeight.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1337
    yTop       := startY.
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1338
    xTop       := expandSelection y // 2 + tabMargin.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1339
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1340
    direction == #right ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1341
        xTop  := self width - tabHeight - xTop
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1342
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1343
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1344
    list do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1345
        tabWidth := aTab preferredExtentX.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1346
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1347
        (yTop + tabWidth > lineHeight and:[yTop ~~ startY])ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1348
            numberOfLines := numberOfLines + 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1349
            yTop := startY.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1350
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1351
        aTab lineNr:numberOfLines.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1352
        aTab layout:(Rectangle left:xTop top:yTop width:tabHeight height:tabWidth).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1353
        yTop := yTop + tabWidth
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1354
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1355
    numberOfLines ~~ 1 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1356
        last  := numberOfLines.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1357
        delta := direction == #left ifTrue:[tabHeight] ifFalse:[tabHeight negated].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1358
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1359
        list reverseDo:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1360
            aTab lineNr ~~ last ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1361
                last := aTab lineNr.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1362
                xTop := xTop + delta
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1363
            ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1364
            aTab layout setLeft:xTop
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1365
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1366
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1367
    tabModus ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1368
        layout := (list at:1) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1369
        delta  := direction == #left ifTrue:[self width - layout right]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1370
                                    ifFalse:[layout left negated].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1371
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1372
        list do:[:aTab| aTab layout setLeft:(aTab layout left + delta)].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1373
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1374
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1375
    "/ FIT LINES
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1376
    (numberOfLines ~~ 1 or:[fitLastRow]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1377
        ^ self
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1378
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1379
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1380
    first := 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1381
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1382
    1 to:numberOfLines do:[:aLnNr|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1383
        last    := list findLast:[:t|t lineNr == aLnNr].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1384
        lastLyt := (list at:last) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1385
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1386
        (delta := lineHeight - lastLyt bottom) ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1387
            yTop  := startY.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1388
            delta := delta // (last - first + 1).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1389
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1390
            delta ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1391
                list from:first to:last do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1392
                    layout   := aTab layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1393
                    tabWidth := layout height + delta.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1394
                    layout setTop:yTop.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1395
                    layout height:tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1396
                    yTop := yTop + tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1397
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1398
            ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1399
            lastLyt height:(lineHeight - lastLyt top)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1400
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1401
        first := last + 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1402
    ]
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1403
!
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1404
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1405
resizeCanvas
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1406
    |layout|
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1407
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1408
    canvas notNil ifTrue:[
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1409
        layout := self computeBorderLayout insetBy:(canvasInset + canvasFrameLevel abs).
1687
70888239654f category changes
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  1410
        canvas layout:layout.
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1411
    ]
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1412
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1413
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1414
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1415
!NoteBookView methodsFor:'obsolete'!
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
labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1418
    "return the list of labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1419
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1420
    ^ self list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1421
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1422
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1423
labels:aListOfLabels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1424
    "set the list of labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1425
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1426
    ^ self list:aListOfLabels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1427
!
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
labelsHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1430
    "get the model, which keeps the list of Tabs or Labels
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
    ^ self listHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1433
!
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
labelsHolder:aValueHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1436
    "set the model, which keeps the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1437
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1438
    self listHolder:aValueHolder. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1439
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1440
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1441
moveSelectedRow
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1442
     ^ true
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1443
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1444
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1445
moveSelectedRow:something
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1446
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1447
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1448
oneTabPerLine
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1449
    ^ false
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1450
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1451
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1452
oneTabPerLine:something
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
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1455
tabWidget
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1456
    ^ nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1457
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1458
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1459
tabWidget:something
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1460
! !
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
!NoteBookView methodsFor:'private'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1463
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1464
processAccessCharacter:aKey
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1465
    "a character is pressed; check for tab identified y the character
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1466
     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
  1467
    "
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1468
    |j size char blck|
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1469
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1470
    (aKey isCharacter and:[(size := list size) ~~ 0]) ifFalse:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1471
        ^ false
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1472
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1473
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1474
    size == selection ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1475
        size == 1 ifTrue:[^ false].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1476
        j := 1
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1477
    ] ifFalse:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1478
        j := selection isNil ifTrue:[1] ifFalse:[selection + 1]
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1479
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1480
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1481
    char := aKey asLowercase.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1482
    blck := [:i| ((list at:i) accessCharacter == char and:[self isSelectable:i]) ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1483
                      self selection:i.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1484
                    ^ true
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1485
                  ]        
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1486
            ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1487
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1488
    j to:size  do:blck.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1489
    1 to:(j-1) do:blck.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1490
  ^ false
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1491
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1492
!
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1493
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1494
processShortcutKey:aKey
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1495
    "if there is a short-key for that character, process it
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1496
     and return true. Otherwise, return false.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1497
    "
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1498
    |j k size rawKey blck|
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1499
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1500
    (size := list size) == 0 ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1501
        ^ false
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1502
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1503
    rawKey := device keyboardMap keyAtValue:aKey ifAbsent:aKey.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1504
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1505
    size == selection ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1506
        size == 1 ifTrue:[^ false].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1507
        j := 1
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1508
    ] ifFalse:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1509
        j := selection isNil ifTrue:[1] ifFalse:[selection + 1]
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1510
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1511
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1512
    blck := [:i| k := (list at:i) shortcutKey.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1513
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1514
                 (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
  1515
                     self selection:i.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1516
                   ^ true
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1517
                 ]
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1518
            ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1519
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1520
    j to:size  do:blck.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1521
    1 to:(j-1) do:blck.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1522
  ^ false
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1523
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1524
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1525
!NoteBookView methodsFor:'queries'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1526
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1527
isEnabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1528
    "returns enabled state
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1529
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1530
    ^ enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1531
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1532
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1533
isFirstTabInLine:aTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1534
    |idx tab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1535
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1536
    idx := list identityIndexOf:aTab.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1537
    tab := list at:(idx - 1) ifAbsent:nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1538
  ^ (tab isNil or:[tab lineNr ~~ aTab lineNr])
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1539
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1540
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1541
isHorizontal
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1542
    "returns true in case of direction is #top or #bottom
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
    ^ (direction == #top or:[direction == #bottom])
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1545
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1546
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1547
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1548
isLastTabInLine:aTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1549
    |index tab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1550
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1551
    index := list identityIndexOf:aTab.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1552
    tab := list at:(index + 1) ifAbsent:nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1553
  ^ (tab isNil or:[tab lineNr ~~ aTab lineNr])
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1554
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1555
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1556
!NoteBookView methodsFor:'selection'!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1557
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1558
isSelectable:anIndex
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1559
    "returns true if tab at an index is selectable
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1560
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1561
    (anIndex notNil and:[anIndex between:1 and:list size]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1562
        (list at:anIndex) isEnabled ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1563
            ^ selectConditionBlock isNil ifTrue:[true]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1564
                                        ifFalse:[selectConditionBlock value:anIndex]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1565
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1566
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1567
    ^ false
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1568
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1569
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1570
selectedTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1571
    "returns the selected tab ot nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1572
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1573
    ^ selection notNil ifTrue:[list at:selection] ifFalse:[nil]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1574
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1575
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1576
selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1577
    "return the selection or nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1578
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1579
    selection isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1580
        ^ useIndex ifTrue:[0] ifFalse:[nil]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1581
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1582
    ^ useIndex ifTrue:[selection] ifFalse:[(list at:selection) label]
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
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1585
selection:anIndexOrNil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1586
    "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
  1587
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1588
    |oldSel|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1589
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1590
    anIndexOrNil ~~ selection ifTrue:[
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1591
        oldSel := selection.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1592
        self setSelection:anIndexOrNil.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1593
        oldSel ~~ selection ifTrue:[self selectionChanged]
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1594
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1595
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1596
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1597
selectionChanged
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1598
    "selection has changed; raise notification
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
    |sel|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1601
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1602
    sel := self selection.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1603
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1604
    model  notNil ifTrue:[model  value:sel].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1605
    action notNil ifTrue:[action value:sel]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1606
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1607
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1608
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1609
setSelection:anIndexOrNil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1610
    "change the selection to index or nil. No notifications are raised
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1611
    "
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1612
    |newSel lnNr tappl model|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1613
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1614
    newSel := self listIndexOf:anIndexOrNil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1615
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1616
    (newSel notNil and:[(self isSelectable:newSel) not]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1617
        newSel := nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1618
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1619
    selection == newSel ifTrue:[^ self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1620
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1621
    (shown and:[numberOfLines notNil]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1622
        selection := newSel.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1623
        self invalidate
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1624
    ] ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1625
        selection notNil ifTrue:[self invalidateTab:(list at:selection)].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1626
        selection := newSel.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1627
        selection notNil ifTrue:[self invalidateTab:(list at:selection)].
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1628
    ].
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1629
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1630
    (canvas notNil and:[(canvas objectAttributeAt:#isTabItem) == true]) ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1631
        canvas unmap.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1632
        canvas := nil.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1633
    ].
1724
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
  1634
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1635
    (     selection notNil
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1636
     and:[(model := (list at:selection) model) notNil
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1637
     and:[(tappl := model canvasView) notNil]]
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1638
    ) ifFalse:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1639
        ^ self
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1640
    ].
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1641
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1642
    canvasHolder notNil ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1643
        canvasHolder value:tappl
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1644
    ] ifFalse:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1645
        self canvas:tappl
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1646
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1647
! !
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
!NoteBookView::Tab class methodsFor:'instance creation'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1650
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1651
label:aLabel on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1652
    ^ self basicNew label:aLabel on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1653
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1654
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1655
! !
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
!NoteBookView::Tab methodsFor:'accessing'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1658
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1659
accessCharacter
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1660
    ^ accessCharacter
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1661
!
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1662
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1663
label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1664
    "returns my original label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1665
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1666
    ^ label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1667
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1668
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1669
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1670
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1671
label:aLabel on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1672
    "initialize attributes
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1673
    "
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1674
    label           := aLabel.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1675
    model           := (aLabel isKindOf:TabItem) ifTrue:[aLabel] ifFalse:[nil].
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1676
    accessCharacter := nil.
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1677
    printableLabel  := model notNil ifTrue:[model rawLabel] ifFalse:[aLabel].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1678
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1679
    printableLabel notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1680
        printableLabel isImageOrForm ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1681
            printableLabel := printableLabel onDevice:(aGC device)
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1682
        ] ifFalse:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1683
            printableLabel isString ifTrue:[
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1684
                printableLabel := self resolveDisplayStringFor:printableLabel
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1685
            ] ifFalse:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1686
                printableLabel class == LabelAndIcon ifTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1687
                    printableLabel string:(self resolveDisplayStringFor:(printableLabel string))
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1688
                ]
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1689
            ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1690
        ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1691
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1692
        printableLabel := ''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1693
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1694
    extent := (printableLabel widthOn:aGC) @ (printableLabel heightOn:aGC).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1695
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1696
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1697
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1698
lineNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1699
    "get the line number
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1700
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1701
    ^ lineNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1702
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1703
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1704
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1705
lineNr:aLineNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1706
    "set the line number
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1707
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1708
    lineNr := aLineNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1709
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1710
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1711
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1712
model
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1713
    "returns the model, a TabItem or nil
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1714
    "
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1715
    ^ model
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1716
!
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1717
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1718
printableLabel
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1719
    "get my printable label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1720
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1721
    ^ printableLabel
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1722
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1723
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1724
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1725
shortcutKey
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1726
    "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
  1727
    "
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1728
    model notNil ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1729
        ^ model shortcutKey
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1730
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1731
    ^ nil
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1732
!
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1733
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1734
string
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1735
    "access the printable string used for steping through a list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1736
     searching for an entry starting with a character.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1737
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1738
    ^ printableLabel perform:#string ifNotUnderstood:nil
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
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1741
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1742
!NoteBookView::Tab methodsFor:'accessing dimensions'!
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
extent
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1745
    "returns the extent of the label
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
    ^ extent
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1748
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1749
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1750
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1751
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1752
layout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1753
    "get the tab's layout
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
    ^ layout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1756
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1757
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1758
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1759
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1760
layout:aLayout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1761
    "set the tab's layout
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
    layout := aLayout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1764
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
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1767
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1768
preferredExtentX
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1769
    "returns my preferred extent x
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1770
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1771
    ^ 4 + extent x
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1772
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1773
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1774
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1775
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1776
preferredExtentY
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1777
    "returns my preferred extent y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1778
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1779
    ^ 4 + extent y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1780
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1781
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1782
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1783
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1784
!NoteBookView::Tab methodsFor:'accessing mvc'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1785
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1786
addDependent:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1787
    "make the noteBook be a dependent of the tab model
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1788
    "
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1789
    model notNil ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1790
        model addDependent:aGC
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1791
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1792
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1793
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1794
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1795
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1796
removeDependent:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1797
    "make the noteBook be independent of the tab model
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1798
    "
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1799
    model notNil ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1800
        model destroyCanvas.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1801
        model removeDependent:aGC.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1802
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1803
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1804
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1805
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1806
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1807
!NoteBookView::Tab methodsFor:'drawing'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1808
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1809
drawAtBottomOn:aGC selected:isSelected
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1810
    "redraw tab at bottom of view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1811
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1812
    |yT "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1813
     xL "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1814
     xR "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1815
     yB "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1816
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1817
    xL := layout left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1818
    yT := layout top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1819
    xR := layout right  - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1820
    yB := layout bottom - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1821
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1822
    aGC paint:(aGC halfLightColor).
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1823
    aGC displayLineFromX:xL+1 y:yB-1   toX:xL+1 y:yT.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1824
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1825
    aGC paint:(aGC drawLightColor).
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1826
    aGC displayLineFromX:xL y:yB-2 toX:xL   y:yT.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1827
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1828
    aGC paint:(aGC shadowColor).
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1829
    aGC displayLineFromX:xL+2 y:yB  toX:xR-2 y:yB.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1830
    aGC displayLineFromX:xR   y:yT   toX:xR   y:yB-2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1831
    aGC displayPointX:xR-1    y:yB-1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1832
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1833
    aGC paint:(aGC halfShadowColor).
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1834
    aGC displayLineFromX:xR-1 y:yT   toX:xR-1 y:yB-2.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1835
    aGC displayLineFromX:xL+2 y:yB-1 toX:xR-2 y:yB-1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1836
    aGC displayPointX:xR-2    y:yB-2.
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
    isSelected ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1839
        (aGC  isLastTabInLine:self) ifFalse:[aGC displayPointX:xR y:yT].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1840
        (aGC isFirstTabInLine:self) ifFalse:[aGC displayPointX:xL y:yT].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1841
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1842
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1843
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1844
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1845
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1846
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1847
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1848
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1849
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1850
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1851
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1852
drawAtLeftOn:aGC selected:isSelected
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1853
    "redraw tab at left of view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1854
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1855
    |yT "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1856
     xL "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1857
     xR "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1858
     yB "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1859
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1860
    xL := layout left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1861
    yT := layout top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1862
    xR := layout right  - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1863
    yB := layout bottom - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1864
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1865
    aGC paint:(aGC shadowColor).
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1866
    aGC displayLineFromX:xR y:yB toX:xL+2 y:yB.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1867
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1868
    aGC paint:(aGC halfShadowColor).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1869
    aGC displayLineFromX:xR y:yB-1 toX:xL+1 y:yB-1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1870
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1871
    aGC paint:(aGC drawLightColor).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1872
    aGC displayLineFromX:xL+2 y:yT   toX:xR   y:yT.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1873
    aGC displayLineFromX:xL   y:yT+2 toX:xL   y:yB-2.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1874
    aGC displayPointX:xL+1 y:yT+1.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1875
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1876
    aGC paint:(aGC halfLightColor).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1877
    aGC displayLineFromX:xL+1 y:yT+2 toX:xL+1 y:yB-2.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1878
    aGC displayLineFromX:xL+2 y:yT+1 toX:xR   y:yT+1.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1879
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1880
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1881
    (aGC isLastTabInLine:self)  ifFalse:[aGC displayPointX:xR y:yB].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1882
    (aGC isFirstTabInLine:self) ifFalse:[aGC displayPointX:xR y:yT].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1883
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1884
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1885
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1886
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1887
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1888
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1889
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1890
drawAtRightOn:aGC selected:isSelected
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1891
    "redraw tab at right of view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1892
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1893
    |yT "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1894
     xL "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1895
     xR "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1896
     yB "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1897
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1898
    xL := layout left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1899
    yT := layout top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1900
    xR := layout right - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1901
    yB := layout bottom - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1902
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1903
    aGC paint:(aGC drawLightColor).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1904
    aGC displayLineFromX:xL   y:yT   toX:xR-2 y:yT.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1905
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1906
    aGC paint:(aGC halfLightColor).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1907
    aGC displayLineFromX:xL   y:yT+1 toX:xR-2   y:yT+1.
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
    aGC paint:(aGC shadowColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1910
    aGC displayLineFromX:xR-2   y:yB   toX:xL y:yB.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1911
    aGC displayLineFromX:xR   y:yT+2 toX:xR y:yB-2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1912
    aGC displayPointX:xR-1 y:yB-1.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1913
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1914
    aGC paint:(aGC halfShadowColor).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1915
    aGC displayLineFromX:xR-2 y:yB-1 toX:xL y:yB-1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1916
    aGC displayLineFromX:xR-1 y:yT+1 toX:xR-1 y:yB-2.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1917
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1918
    isSelected ifFalse:[^ self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1919
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1920
    (aGC isLastTabInLine:self)  ifFalse:[aGC displayPointX:xL y:yB].
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
    (aGC isFirstTabInLine:self) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1923
        aGC displayPointX:xL y:yT+1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1924
        aGC displayPointX:xL y:yT
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  1925
    ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1926
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1927
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1928
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1929
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1930
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1931
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1932
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1933
drawAtTopOn:aGC selected:isSelected
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1934
    "redraw tab at top of view
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1935
    "
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1936
    |
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1937
     yT "{ Class:SmallInteger }"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1938
     xL "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1939
     xR "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1940
     yB "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1941
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1942
    xL := layout left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1943
    yT := layout top.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1944
    xR := layout right  - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1945
    yB := layout bottom - 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1946
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1947
    aGC paint:(aGC shadowColor).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1948
    aGC displayLineFromX:xR   y:yB toX:xR   y:yT+2.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1949
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1950
    aGC paint:(aGC halfShadowColor).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1951
    aGC displayLineFromX:xR-1 y:yB toX:xR-1 y:yT+1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1952
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1953
    aGC paint:(aGC drawLightColor).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1954
    aGC displayLineFromX:xL+2 y:yT toX:xR-2 y:yT.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1955
    aGC displayLineFromX:xL   y:yB toX:xL   y:yT+2.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1956
    aGC displayPointX:xL+1    y:yT+1.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1957
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1958
    aGC paint:(aGC halfLightColor).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1959
    aGC displayLineFromX:xL+2 y:yT+1 toX:xR-2 y:yT+1.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1960
    aGC displayLineFromX:xL+1 y:yB toX:xL+1 y:yT+2.
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
    isSelected ifFalse:[^ self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1963
    (aGC isLastTabInLine:self)  ifFalse:[aGC displayPointX:xR y:yB].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1964
    (aGC isFirstTabInLine:self) ifFalse:[aGC displayPointX:xL y:yB].
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
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1967
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1968
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1969
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1970
1401
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
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1973
drawWin95FocusFrameOn:aGC
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1974
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1975
"/aGC notNil ifTrue:[^ self].
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1976
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1977
    aGC displayDottedRectangleX:(layout left   + 4)
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1978
                              y:(layout top    + 4)
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1979
                          width:(layout width  - 8)
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1980
                         height:(layout height - 8).
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1981
!
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1982
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1983
redrawAt:aDirection selected:isSelected on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1984
    "redraw tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1985
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1986
    |dispObj fgColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1987
     y  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1988
     x  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1989
    |
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
    isSelected ifTrue:[
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
  1992
        aGC paint:(aGC activeTabBackgroundColor).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1993
        layout displayFilledOn:aGC.
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
             aDirection == #top    ifTrue:[self drawAtTopOn:aGC    selected:isSelected]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1996
    ifFalse:[aDirection == #bottom ifTrue:[self drawAtBottomOn:aGC selected:isSelected]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1997
    ifFalse:[aDirection == #right  ifTrue:[self drawAtRightOn:aGC  selected:isSelected]
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1998
    ifFalse:[                              self drawAtLeftOn:aGC   selected:isSelected]]].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1999
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2000
    "/ REDRAW LABEL
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2001
    (aGC isEnabled and:[self isEnabled]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2002
        dispObj := printableLabel.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2003
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2004
        (model isNil or:[(fgColor := model foregroundColor) isNil]) ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2005
            fgColor := isSelected ifTrue:[aGC activeForegroundColor]
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2006
                                 ifFalse:[aGC foregroundColor].
1401
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
    ] ifFalse:[
1700
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  2009
        fgColor := aGC disabledForegroundColor.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2010
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2011
        (dispObj := disabledLabel) isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2012
            (dispObj := printableLabel) isImageOrForm ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2013
                disabledLabel := printableLabel lightened onDevice:(aGC device)
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2014
            ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2015
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2016
    ].
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  2017
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2018
    aGC paint:fgColor.
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  2019
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2020
    (aDirection == #top or:[aDirection == #bottom]) ifTrue:[
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  2021
        x := layout left + (layout width  - extent x // 2).
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  2022
        y := layout top  + (layout height - extent y // 2).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2023
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  2024
        aDirection == #bottom ifTrue:[y := y - 1] ifFalse:[y := y + 1].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2025
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2026
        dispObj isImageOrForm ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2027
            y := y + aGC font ascent
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
  2028
        ].
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
  2029
        dispObj displayOn:aGC x:x y:y
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2030
    ] ifFalse:[
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  2031
        x := layout left + (layout width  - extent y // 2).
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  2032
        y := layout top  + (layout height - extent x // 2).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2033
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
  2034
        aDirection == #left ifTrue:[
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
  2035
            x := x + 1.
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
  2036
        ] ifFalse:[
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
  2037
            x := x - 1.
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
  2038
        ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2039
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2040
        dispObj isImageOrForm ifFalse:[
1663
d8a1a6a12a67 bugfix in: Tab:: redrawAt:selected:on: when rotating
ca
parents: 1659
diff changeset
  2041
d8a1a6a12a67 bugfix in: Tab:: redrawAt:selected:on: when rotating
ca
parents: 1659
diff changeset
  2042
            dispObj isString ifTrue:[ 
d8a1a6a12a67 bugfix in: Tab:: redrawAt:selected:on: when rotating
ca
parents: 1659
diff changeset
  2043
                x := x + aGC font descent.
d8a1a6a12a67 bugfix in: Tab:: redrawAt:selected:on: when rotating
ca
parents: 1659
diff changeset
  2044
            ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2045
            "/ workaround for a bug in display-with-angle,
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2046
            "/ iff displayed string is a labelAndIcon.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2047
            "/ (In this case, display is always opaque, and the current
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2048
            "/  backgroundPaint color is used to fill the underlying rectangle)
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2049
            "/
1663
d8a1a6a12a67 bugfix in: Tab:: redrawAt:selected:on: when rotating
ca
parents: 1659
diff changeset
  2050
            aGC paint:fgColor.
d8a1a6a12a67 bugfix in: Tab:: redrawAt:selected:on: when rotating
ca
parents: 1659
diff changeset
  2051
            aGC backgroundPaint:aGC backgroundColor.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
  2052
            aGC displayString:dispObj x:x y:y angle:90.
1663
d8a1a6a12a67 bugfix in: Tab:: redrawAt:selected:on: when rotating
ca
parents: 1659
diff changeset
  2053
        ] ifTrue:[
d8a1a6a12a67 bugfix in: Tab:: redrawAt:selected:on: when rotating
ca
parents: 1659
diff changeset
  2054
            (dispObj rotated:90) displayOn:aGC x:x y:y.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2055
        ]
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
  2056
    ]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2057
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2058
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2059
!NoteBookView::Tab methodsFor:'private'!
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2060
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2061
resolveDisplayStringFor:aString
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2062
    |string size rest pos idx|
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2063
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2064
    size   := aString size.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2065
    string := aString.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2066
    pos    := 0.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2067
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2068
    size > 1 ifTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2069
        (model notNil and:[(pos := model accessCharacterPosition) ~~ 0]) ifTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2070
            pos > size ifTrue:[pos := 0]
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2071
        ] ifFalse:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2072
            idx := 1.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2073
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2074
            [((idx := string indexOf:$& startingAt:idx) ~~ 0 and:[idx < size])] whileTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2075
                rest := string copyFrom:(idx+1).
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2076
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2077
                idx == 1 ifTrue:[string := rest]
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2078
                        ifFalse:[string := (string copyFrom:1 to:(idx-1)), rest].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2079
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2080
                (string at:idx) == $& ifTrue:[idx := idx + 1]
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2081
                                     ifFalse:[pos := idx].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2082
                size := size - 1.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2083
            ]
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2084
        ]
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2085
    ].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2086
    size ~~ 0 ifTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2087
        pos == 0 ifTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2088
            pos := 1
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2089
        ] ifFalse:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2090
            string isText ifFalse:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2091
                string := Text string:string
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2092
            ].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2093
            string emphasisAt:pos add:#underline
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2094
        ].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2095
        accessCharacter := (string at:pos) asLowercase
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2096
    ] ifFalse:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2097
        accessCharacter := nil
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2098
    ].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2099
    ^ string
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2100
! !
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2101
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2102
!NoteBookView::Tab methodsFor:'testing'!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2103
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2104
containsPointX:x y:y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2105
    "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
  2106
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2107
    ^ layout notNil ifTrue:[layout containsPointX:x y:y]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2108
                   ifFalse:[false].
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
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2111
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2112
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2113
intersects:aRectangle
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2114
    "return true, if the intersection between the argument, aRectangle
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2115
     and the tab is not empty
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2116
    "
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2117
    ^ layout notNil ifTrue:[layout intersects:aRectangle]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2118
                   ifFalse:[false].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2119
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
  2120
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2121
!
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
  2122
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2123
isEnabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2124
    "returne true if no model exists or the model is enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2125
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2126
    ^ (model isNil or:[model isEnabled])
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2127
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2128
386
eb0dd3efd92c bug fixes
ca
parents: 375
diff changeset
  2129
! !
eb0dd3efd92c bug fixes
ca
parents: 375
diff changeset
  2130
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2131
!NoteBookView class methodsFor:'documentation'!
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2132
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2133
version
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2134
    ^ '$Header: /cvs/stx/stx/libwidg2/NoteBookView.st,v 1.40 2000-04-13 12:32:41 ca Exp $'
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  2135
! !