NoteBookView.st
author Claus Gittinger <cg@exept.de>
Thu, 19 Jan 2006 11:59:09 +0100
changeset 2881 5449571d2ea7
parent 2877 6f7df547445b
child 2882 26dc6f5eee5a
permissions -rw-r--r--
destroyButton geom.
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
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
    17
	instanceVariableNames:'list listHolder foregroundColor backgroundColor selection enabled
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
    18
		action useIndex direction numberOfLines selectConditionBlock
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
    19
		accessTabMenuAction canvas canvasInset canvasHolder
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
    20
		halfLightColor halfShadowColor fitLastRow tabModus
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
    21
		lastComputedExtent keepCanvas activeForegroundColor
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
    22
		activeBackgroundColor drawLightColor edgeStyle tabInset
2431
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
    23
		tabLabelInset disabledForegroundColor tabLevel tabTopMargin
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
    24
		tabBottomMargin selectionInsetX selectionInsetY translateLabel
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
    25
		buttonPrev buttonNext tabRightMargin tabLeftMargin
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
    26
		showDestroyTabButton destroyTabAction'
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
    27
	classVariableNames:'DefaultForegroundColor DefaultBackgroundColor
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
    28
		DefaultActiveForegroundColor DefaultActiveBackgroundColor
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
    29
		DefaultShadowColor DefaultHalfShadowColor DefaultLightColor
2758
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
    30
		DefaultHalfLightColor DefaultEdgeStyle DisabledForegroundColor
2763
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
    31
		DefaultActiveTabMarkerColor DefaultActiveTabMarkerFgColor'
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    32
	poolDictionaries:''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    33
	category:'Views-Layout'
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    34
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    35
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    36
Object subclass:#Tab
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
    37
	instanceVariableNames:'label model printableLabel disabledLabel lineNr layout extent
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
    38
		accessCharacter'
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    39
	classVariableNames:''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    40
	poolDictionaries:''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    41
	privateIn:NoteBookView
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    42
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    43
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    44
!NoteBookView class methodsFor:'documentation'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    45
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    46
copyright
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    47
"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    48
 COPYRIGHT (c) 1997 by eXept Software AG
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    49
              All Rights Reserved
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    50
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    51
 This software is furnished under a license and may be used
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    52
 only in accordance with the terms of that license and with the
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    53
 inclusion of the above copyright notice.   This software may not
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    54
 be provided or otherwise made available to, or used by, any
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    55
 other person.  No title to or ownership of the software is
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    56
 hereby transferred.
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    57
"
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    58
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
!
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
documentation
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    63
    implements the noteBook.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    64
    May also be used on its own (without a surrounding noteBook).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    65
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    66
    [author:]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    67
        Claus Atzkern
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    68
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    69
    [see also:]
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    70
        TabView
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    72
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    73
!
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    75
examples
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    76
"
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    77
    tabs at top ( default )
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    78
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    79
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    80
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    81
    top  := StandardSystemView extent:250@100.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
    82
    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
    83
    tab list:#( 'Foo' 'Bar' 'Baz' ).
2529
ce78ec72df65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2496
diff changeset
    84
    tab action:[:index| Transcript showCR:index].
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    85
    top open.
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    86
                                                                                [exEnd]
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    87
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    88
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    89
    tabs at bottom
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    90
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    91
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    92
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    93
    top  := StandardSystemView extent:250@100.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
    94
    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
    95
    tab direction:#bottom.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
    96
    tab list:#( 'Foo' 'Bar' 'Baz' ).
2529
ce78ec72df65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2496
diff changeset
    97
    tab action:[:index| Transcript showCR:index].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
    98
    top open.
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
    99
                                                                                [exEnd]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   100
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   101
    tabs at left
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   102
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   103
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   104
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   105
    top  := StandardSystemView extent:100@200.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
   106
    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
   107
    tab direction:#left.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   108
    tab list:#( 'Foo' 'Bar' 'Baz' ).
2529
ce78ec72df65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2496
diff changeset
   109
    tab action:[:index| Transcript showCR:index].
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   110
    top open.
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   111
                                                                                [exEnd]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   112
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   113
    tabs at right
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   114
                                                                                [exBegin]                                      
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   115
    |top tab|
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   116
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   117
    top  := StandardSystemView extent:100@200.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
   118
    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
   119
    tab direction:#right.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   120
    tab list:#( 'Foo' 'Bar' 'Baz' ).
2529
ce78ec72df65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2496
diff changeset
   121
    tab action:[:index| Transcript showCR:index].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   122
    top open.
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   123
                                                                                [exEnd]
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   124
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   125
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   126
"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   127
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   128
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   129
!NoteBookView class methodsFor:'defaults'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   130
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   131
defaultFont
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   132
    ^ MenuView defaultFont
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   133
!
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   134
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   135
updateStyleCache
2777
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2763
diff changeset
   136
    "extract values from the styleSheet and cache them in class variables"
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2763
diff changeset
   137
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2763
diff changeset
   138
    <resource: #style (#'noteBook.foregroundColor' #'noteBook.backgroundColor'
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2763
diff changeset
   139
                       #'noteBook.activeForegroundColor' #'noteBook.activeBackgroundColor'
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2763
diff changeset
   140
                       #'noteBook.lightColor' #'noteBook.halfLightColor' #'noteBook.shadowColor'
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2763
diff changeset
   141
                       #'noteBook.halfShadowColor' #'noteBook.edgeStyle'
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2763
diff changeset
   142
                       #'noteBook.activeTabMarkerColor'
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2763
diff changeset
   143
                      )>
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2763
diff changeset
   144
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   145
    DefaultForegroundColor := StyleSheet colorAt:#'noteBook.foregroundColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   146
    DefaultForegroundColor isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   147
        DefaultForegroundColor := StyleSheet colorAt:#'button.foregroundColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   148
    ].
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   149
    DefaultBackgroundColor := StyleSheet colorAt:#'noteBook.backgroundColor'.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   150
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   151
    DefaultActiveForegroundColor := StyleSheet colorAt:#'noteBook.activeForegroundColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   152
    DefaultActiveForegroundColor isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   153
        DefaultActiveForegroundColor := StyleSheet colorAt:#'button.activeForegroundColor'
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   154
    ].
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   155
    DefaultActiveBackgroundColor := StyleSheet colorAt:#'noteBook.activeBackgroundColor'.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   156
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   157
    DefaultLightColor := StyleSheet colorAt:#'noteBook.lightColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   158
    DefaultLightColor isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   159
        DefaultLightColor := StyleSheet colorAt:'button.lightColor'
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   160
    ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   161
    DefaultHalfLightColor := StyleSheet colorAt:#'noteBook.halfLightColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   162
    DefaultHalfLightColor isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   163
        DefaultHalfLightColor := StyleSheet colorAt:#'button.halfLightColor'
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   164
    ].    
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   165
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   166
    DefaultShadowColor := StyleSheet colorAt:#'noteBook.shadowColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   167
    DefaultShadowColor isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   168
        DefaultShadowColor := StyleSheet colorAt:'button.shadowColor'
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   169
    ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   170
    DefaultHalfShadowColor := StyleSheet colorAt:#'noteBook.halfShadowColor'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   171
    DefaultHalfShadowColor isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   172
        DefaultHalfShadowColor := StyleSheet colorAt:#'button.halfShadowColor'
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   173
    ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   174
    DefaultEdgeStyle := StyleSheet at:#'noteBook.edgeStyle'.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   175
    DefaultEdgeStyle isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   176
        DefaultEdgeStyle := StyleSheet at:#'button.edgeStyle'
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   177
    ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   178
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
   179
    DefaultEdgeStyle == #softWin95 ifFalse:[
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   180
        DefaultEdgeStyle := nil
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   181
    ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   182
2758
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
   183
    DefaultActiveTabMarkerColor := StyleSheet colorAt:#'noteBook.activeTabMarkerColor'.
2763
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
   184
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
   185
    DefaultActiveTabMarkerColor isNil ifTrue:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
   186
        DefaultActiveTabMarkerFgColor := nil.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
   187
    ] ifFalse:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
   188
        DefaultActiveTabMarkerFgColor :=  Color redByte:255 greenByte:138 blueByte:41.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
   189
    ].
2777
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2763
diff changeset
   190
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2763
diff changeset
   191
    "
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2763
diff changeset
   192
     self updateStyleCache
56bb352f6b91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2763
diff changeset
   193
    "
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   194
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   195
2496
36a30ce247c9 method category rename
Claus Gittinger <cg@exept.de>
parents: 2492
diff changeset
   196
!NoteBookView methodsFor:'accepting-items'!
1724
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   197
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   198
tabAtIndex:tabIndex put:newLabel
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   199
    "called if the contents of a tab changed; test whether the old layout can
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   200
     be reused otherwise we must recompute the whole list
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   201
    "
2431
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   202
    |tab layout prefX prefY tabExtent|
1724
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   203
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   204
    "/ 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
   205
    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
   206
    tab notNil ifTrue:[
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   207
        tab label:newLabel on:self.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   208
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   209
        "/ 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
   210
        "/ and is not too small for current tab-layout
1880
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   211
        layout := tab layout.
2431
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   212
        tabExtent := self preferredExtentForTab:tab.
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   213
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   214
        (     (prefX := tabExtent x) <= layout width
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   215
         and:[(prefY := tabExtent y) <= layout height]
1880
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   216
        ) ifTrue:[
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   217
            "/ the new string fits into current tab-layout
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   218
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   219
            numberOfLines == 1 ifTrue:[         "/ do not change the layout
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   220
                ^ self invalidateTab:tab
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   221
            ].
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   222
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   223
            "/ check whether the string is not too small for current tab-layout
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   224
            ((layout width <= (prefX * 1.5)) and:[layout height <= (prefY * 1.5)]) ifTrue:[
f133d40bd2b0 handle recomputation of layout if label changed
ca
parents: 1818
diff changeset
   225
                ^ self invalidateTab:tab.      "/ do not change the layout
1724
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   226
            ].
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   227
        ].
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   228
        self recomputeList.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   229
        self invalidate.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   230
        ^ self.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   231
    ].
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   232
    "/ can this happen ?
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   233
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   234
    "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
   235
! !
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   236
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   237
!NoteBookView methodsFor:'accessing'!
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   239
canvas
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   240
    "returns the canvas; the containter view
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   241
    "
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   242
    ^ canvas
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   243
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   244
2492
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   245
canvas:newCanvas
2010
644587a3b8e2 added tabLevel
Claus Gittinger <cg@exept.de>
parents: 2002
diff changeset
   246
    "change the canvas; the containter view
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   247
    "
2492
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   248
    |oldCanvas|
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   249
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   250
    oldCanvas := canvas.
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   251
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   252
    newCanvas ~~ oldCanvas ifTrue:[
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   253
        oldCanvas notNil ifTrue:[
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   254
            (keepCanvas or:[(oldCanvas objectAttributeAt:#isTabItem) == true]) ifTrue:[
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   255
                oldCanvas unmap.
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   256
            ] ifFalse:[
2492
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   257
                oldCanvas destroy.
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   258
            ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   259
        ].
2492
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   260
        canvas := newCanvas.
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   261
        newCanvas notNil ifTrue:[
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   262
            tabModus := false.
2035
6cc4d73f17e1 bug fix when chaning the canvas before being realized
Claus Gittinger <cg@exept.de>
parents: 2010
diff changeset
   263
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   264
            self resizeCanvas.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   265
2492
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   266
            (subViews size == 0 or:[(subViews includesIdentical:newCanvas) not]) ifTrue:[
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   267
                self addSubView:newCanvas
1549
4c09c03efa29 never add a subcanvas twice
Stefan Vogel <sv@exept.de>
parents: 1543
diff changeset
   268
            ].
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
   269
1687
70888239654f category changes
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
   270
            realized ifTrue:[
2492
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   271
                newCanvas realize.
b71fe0be4188 must always use #realize for new canvas
martin
parents: 2485
diff changeset
   272
                newCanvas raise.
1687
70888239654f category changes
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
   273
            ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   274
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   275
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   276
!
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
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   279
    "return the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   280
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   281
    ^ list collect:[:aTab| aTab label ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   282
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   283
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   284
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   285
list:aList
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   286
    "set the list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   287
    "
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
   288
    |name newList|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   289
1771
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   290
    name    := self selection.
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   291
    newList := OrderedCollection new.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   292
1771
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   293
    aList size == 0 ifTrue:[
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   294
        list do:[:aTab| aTab removeDependent:self].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   295
    ] ifFalse:[
1771
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   296
        list do:[:aTab| |m|
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   297
            (     (m := aTab model) notNil
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   298
             and:[(aList includesIdentical:m)]
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   299
            ) ifFalse:[
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   300
                aTab removeDependent:self
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   301
            ]
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   302
        ].
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   303
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   304
        aList do:[:el| |i tab|
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   305
            (    el isNil
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   306
             or:[(tab := list detect:[:t| t model == el] ifNone:nil) isNil]
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   307
            ) ifTrue:[
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   308
                tab := Tab label:el on:self.
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   309
                tab addDependent:self.
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   310
            ].
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   311
            newList add:tab
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   312
        ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   313
    ].
1771
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   314
09f150c518d5 error fix when adding dynamicly new tab models
ps
parents: 1770
diff changeset
   315
    list            := newList.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   316
    preferredExtent := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   317
    numberOfLines   := nil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   318
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   319
    selection notNil ifTrue:[
1433
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   320
        useIndex ifTrue:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   321
            selection > list size ifTrue:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   322
                selection := nil.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   323
                self selectionChanged.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   324
            ]
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   325
        ] ifFalse:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   326
            selection := list findFirst:[:el| el label = name ].
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   327
            selection == 0 ifTrue:[
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   328
                selection := nil.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   329
                self selectionChanged.
54d98f39bc51 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1413
diff changeset
   330
            ]
1401
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
    ].
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   333
    self recomputeList.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
   334
    self invalidate.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   335
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   336
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   337
listIndexOf:something
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   338
    "convert something to an index into the list;
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   339
     returns the index or nil if not found
1401
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
    |index|
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
    something isNil ifTrue:[^ nil ].
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
    something isNumber ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   346
        index := something
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   347
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   348
        index := list findFirst:[:aTab|aTab label = something].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   349
        index == 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   350
            index := list findFirst:[:aTab|aTab printableLabel = something]
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
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   353
    ^ (index between:1 and:list size) ifTrue:[index] ifFalse:[nil]
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
useIndex
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   357
    "use index instead of tab name
1401
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
    ^ useIndex
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   360
!
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
useIndex:aBoolean
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   363
    "set/clear the useIndex flag. If set, both actionBlock and change-messages
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   364
     are passed the index(indices) of the selection as argument. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   365
     If clear, the value(s) (i.e. the selected string) is passed.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   366
     Default is false."
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
    useIndex := aBoolean
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   369
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   370
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   371
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   372
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   373
!NoteBookView methodsFor:'accessing-actions'!
1802
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   374
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   375
accessTabMenuAction
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   376
    "callback to retrieve the menu for a specific tab.
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   377
     the argument to the block is the index of the tab
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   378
    "
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   379
    ^ accessTabMenuAction
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   380
!
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   381
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   382
accessTabMenuAction:aOneArgAction
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   383
    "callback to retrieve the menu for a specific tab.
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   384
     the argument to the block is the index of the tab
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   385
    "
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   386
    accessTabMenuAction := aOneArgAction.
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   387
!
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   388
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   389
action
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   390
    "get the action block to be performed on select; the argument to
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   391
     the block is the selected index or nil in case of no selection.
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   392
    "
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   393
    ^ action
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   394
!
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   395
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   396
action:oneArgBlock
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   397
    "set the action block to be performed on select; the argument to
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   398
     the block is the selected index or nil in case of no selection.
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   399
    "
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   400
    action := oneArgBlock.
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   401
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   402
! !
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
   403
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   404
!NoteBookView methodsFor:'accessing-behavior'!
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   405
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   406
destroyTabAction
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   407
    ^ destroyTabAction
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   408
!
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   409
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   410
destroyTabAction:aOneArgBlock
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   411
    destroyTabAction := aOneArgBlock
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   412
!
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   413
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   414
enabled
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   415
    "returns true if tabs are enabled"
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   416
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   417
    ^ enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   418
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   419
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   420
enabled:aState
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   421
    "set the enabled state of tabs"
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   422
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   423
    |state|
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
    state := aState ? true.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   426
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   427
    enabled ~~ state ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   428
        enabled := state.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   429
        self invalidate.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   430
    ]
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   431
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   432
2698
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   433
isEnabled
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   434
    "returns the enabled state"
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   435
2698
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   436
    ^ enabled
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   437
!
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   438
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   439
keepCanvas:aBoolean
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   440
    "if false (the default), the previous canvas is destroyed, whenever
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   441
     a new canvas is set.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   442
     if true, it is unmapped and kept.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   443
     Set this flag, if the application changes the canvas but wants
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   444
     them to be kept for fast switching."
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   445
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   446
    keepCanvas := aBoolean.
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   447
!
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   448
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   449
selectConditionBlock
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   450
    "get the conditionBlock; this block is evaluated before a selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   451
     change is performed; the change will not be done, if the evaluation
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   452
     returns false. The argument to the block is the selection index."
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   453
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   454
    ^ selectConditionBlock
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   455
!
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   456
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   457
selectConditionBlock:aOneArgBlock
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   458
    "get the conditionBlock; this block is evaluated before a selection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   459
     change is performed; the change will not be done, if the evaluation
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   460
     returns false. The argument to the block is the selection index."
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   461
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   462
    selectConditionBlock := aOneArgBlock
2629
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   463
!
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   464
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   465
translateLabel
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   466
    "true if labels are translated"
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   467
2629
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   468
    ^ translateLabel    
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   469
!
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   470
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   471
translateLabel:aBoolean
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   472
    "set to true if labels should be translated"
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   473
2629
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   474
    translateLabel := aBoolean.
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   475
!
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   476
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   477
translateToDisplayLabel:aString
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   478
    "translate the label"
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   479
2629
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   480
    |application builder string|
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   481
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   482
    translateLabel ifFalse:[ ^ aString ].
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   483
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   484
    aString isEmptyOrNil ifTrue:[ ^ aString ].
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   485
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   486
    application := self application.
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   487
    application isNil ifTrue:[^ aString ].
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   488
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   489
    builder := application builder.
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   490
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   491
    builder isNil ifTrue:[
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   492
        string := application resources string:aString.
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   493
    ] ifFalse:[
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   494
        
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   495
        string := builder aspectAt:(aString asSymbol).
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   496
        string notNil ifTrue:[^ string ].
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   497
        string := builder resources string:aString.
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   498
    ].
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
   499
    ^ string ? aString
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   500
! !
dedc8dee12f5 created:
ca
parents: 419
diff changeset
   501
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   502
!NoteBookView methodsFor:'accessing-colors'!
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   503
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   504
activeBackgroundColor
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   505
    "returns the bg color used when drawing the active tabs label"
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   506
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   507
    ^ activeBackgroundColor
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   508
!
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   509
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   510
activeForegroundColor
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   511
    "returns the color used when drawing the active tabs label"
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   512
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   513
    ^ activeForegroundColor
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   514
!
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
   515
2758
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
   516
activeTabMarkerColor
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
   517
    "win-XP style marker"
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
   518
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
   519
    ^ DefaultActiveTabMarkerColor    
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
   520
!
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
   521
2763
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
   522
activeTabMarkerFgColor
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
   523
    "win-XP style marker"
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
   524
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
   525
    ^ DefaultActiveTabMarkerFgColor
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
   526
!
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
   527
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   528
backgroundColor
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   529
    "return the backgroundColor of the notebook view"
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   530
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   531
    ^ backgroundColor
408
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   532
!
e7f5e51656be delegate font:
ca
parents: 403
diff changeset
   533
1700
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   534
disabledForegroundColor
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   535
    "returns the color used when drawing disabled tab labels"
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   536
1700
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   537
    ^ disabledForegroundColor
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   538
!
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
   539
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   540
drawLightColor
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   541
    "get the color to be used for lighted edges; bug fix caused by common drawEdge"
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   542
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   543
    ^ drawLightColor
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   544
!
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
   545
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   546
foregroundColor
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   547
    "return the color used for drawing text"
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   548
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   549
    ^ foregroundColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   550
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   551
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   552
foregroundColor:aColor
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   553
    "set the color to be used for drawing text"
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   554
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   555
    aColor ~= foregroundColor ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   556
        foregroundColor := aColor.
2659
3af857eb52fb invalidate checks itself for shown-flag
Claus Gittinger <cg@exept.de>
parents: 2629
diff changeset
   557
        self invalidate
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   558
    ]
419
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   559
!
893e322a86e9 colors derived from background
ca
parents: 408
diff changeset
   560
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   561
halfLightColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   562
    ^ halfLightColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   563
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   564
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   565
halfShadowColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   566
    ^ halfShadowColor
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   567
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   568
1684
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   569
viewBackground:aColor
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   570
    super viewBackground:aColor.
377fa4df07e3 if viewBackground change, recompute half..Colors !!
ca
parents: 1683
diff changeset
   571
2292
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
   572
"/    (edgeStyle isNil and:[viewBackground isColor]) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
   573
"/        halfShadowColor := shadowColor.
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
   574
"/        halfLightColor  := lightColor.
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
   575
"/        drawLightColor  := lightColor.
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
   576
"/    ].
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
   577
"/
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
   578
"/    DefaultShadowColor isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
   579
"/        shadowColor := aColor darkened onDevice:device
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
   580
"/    ].
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
   581
"/    DefaultLightColor isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
   582
"/        lightColor := aColor lightened onDevice:device
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
   583
"/    ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   584
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   585
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   586
!NoteBookView methodsFor:'accessing-dimension'!
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   587
2881
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   588
activeTabMarkerHeight
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   589
    ^ 3
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   590
!
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   591
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   592
destroyButtonFrameForTab:aTab
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   593
    |l bW bH dX dY bLeft bTop|
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   594
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   595
    bW := self destroyButtonWidth.
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   596
    bH := self destroyButtonHeight.
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   597
    dX := self destroyButtonSepX.
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   598
    dY := self destroyButtonSepY.
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   599
    l := aTab layout.
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   600
    bLeft := l right - bW - dX.
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   601
    bTop := l top + dY.
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   602
    self selectedTab == aTab ifTrue:[
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   603
        bTop := bTop + (self activeTabMarkerHeight).
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   604
    ].
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   605
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   606
    ^ (bLeft @ bTop) extent:(bW @bH )
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   607
!
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   608
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   609
destroyButtonHeight
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   610
    ^ 8
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   611
!
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   612
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   613
destroyButtonSepX
2881
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   614
    "separating space between tabs right and the destroyButton"
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   615
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   616
    ^ 2
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   617
!
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   618
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   619
destroyButtonSepY
2881
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   620
    "separating space between tabs top and the destroyButton"
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   621
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
   622
    ^ 2
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   623
!
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   624
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   625
destroyButtonWidth
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   626
    ^ 8
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   627
!
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   628
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   629
preferredExtent
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   630
    "compute max extent x/y based on one line"
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   631
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   632
    |lvl size x y isHorizontal insetX insetY ext|
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   633
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   634
    preferredExtent notNil ifTrue:[ ^ preferredExtent ].
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   635
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   636
    x := y := 0.
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   637
    lvl := (tabLevel abs) max:1.
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   638
    size  := list size.
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   639
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   640
    size ~~ 0 ifTrue:[
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   641
        list do:[:aTab|
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   642
            |tabExtent|
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   643
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   644
            tabExtent := self preferredExtentForTab:aTab.
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   645
            x := tabExtent x + x.
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   646
            y := tabExtent y max:y.
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   647
        ].
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   648
    ].
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   649
    y := y + selectionInsetY + lvl + tabTopMargin + tabBottomMargin.
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   650
    x := x + selectionInsetX + selectionInsetX + (lvl + lvl * size).
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
   651
2284
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   652
    isHorizontal := self isHorizontal.
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   653
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   654
    isHorizontal ifTrue:[
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   655
        x := x + self tabLeftMargin + self tabRightMargin
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   656
    ] ifFalse:[
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   657
        y := y + self tabLeftMargin + self tabRightMargin
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   658
    ].
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   659
2284
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   660
    tabModus ifFalse:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   661
        canvasInset isPoint ifTrue:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   662
            insetX := canvasInset x.
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   663
            insetY := canvasInset y.
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   664
        ] ifFalse:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   665
            insetX := insetY := canvasInset.
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   666
        ].
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   667
        canvas notNil ifTrue:[ ext := canvas preferredExtent ]
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   668
                     ifFalse:[ ext := 100@100 ].
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   669
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   670
        y := y + insetY + insetY + ext y.
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   671
        x := x max:ext x.
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   672
        x := x + insetX + insetX + lvl + lvl.
2284
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   673
    ].
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   674
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
   675
    isHorizontal ifTrue:[ ^ x @ y ].
2431
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   676
    ^ y @ x
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   677
!
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   678
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   679
preferredExtentForTab:aTab
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   680
    "returns the preferred extent of a specific tab"
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   681
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   682
    |e|
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   683
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   684
    e := aTab extent + tabLabelInset.
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   685
    showDestroyTabButton ifTrue:[
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   686
        e := e + (self destroyButtonWidth @ 0).
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   687
        e := e + (self destroyButtonSepX @ 0).
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   688
        e := e + (self destroyButtonSepX @ 0).
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   689
    ].
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   690
    ^ e.
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   691
! !
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   692
2532
7a06df99a078 category change
Claus Gittinger <cg@exept.de>
parents: 2529
diff changeset
   693
!NoteBookView methodsFor:'accessing-mvc'!
7a06df99a078 category change
Claus Gittinger <cg@exept.de>
parents: 2529
diff changeset
   694
2698
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   695
canvasHolder
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   696
    "get the model, which keeps the canvas, a kind of SimpleView
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   697
    "
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   698
    ^ canvasHolder
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   699
!
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   700
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   701
canvasHolder:aValueHolder
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   702
    "set the model, which keeps the canvas, a kind of SimpleView
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   703
    "
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   704
    canvasHolder removeDependent:self. 
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   705
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   706
    (canvasHolder := aValueHolder) notNil ifTrue:[
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   707
        canvasHolder addDependent:self.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   708
        self canvas:(canvasHolder value)
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   709
    ]
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   710
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   711
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   712
!
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   713
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   714
listHolder
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   715
    "get the model, which keeps the list of Tabs or Labels
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   716
    "
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   717
    ^ listHolder
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   718
!
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   719
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   720
listHolder:aValueHolder
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   721
    "set the model, which keeps the list of Tabs or Labels
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   722
    "
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   723
    listHolder removeDependent:self. 
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   724
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   725
    (listHolder := aValueHolder) notNil ifTrue:[
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   726
        listHolder addDependent:self.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   727
        self list:listHolder value.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   728
    ].
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   729
!
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   730
2532
7a06df99a078 category change
Claus Gittinger <cg@exept.de>
parents: 2529
diff changeset
   731
model:aValueHolder
2533
93463469dba8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2532
diff changeset
   732
    "set the model, which keeps the selection"
93463469dba8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2532
diff changeset
   733
2532
7a06df99a078 category change
Claus Gittinger <cg@exept.de>
parents: 2529
diff changeset
   734
    super model:aValueHolder.
7a06df99a078 category change
Claus Gittinger <cg@exept.de>
parents: 2529
diff changeset
   735
7a06df99a078 category change
Claus Gittinger <cg@exept.de>
parents: 2529
diff changeset
   736
    model notNil ifTrue:[
7a06df99a078 category change
Claus Gittinger <cg@exept.de>
parents: 2529
diff changeset
   737
        self selection:(model value)
7a06df99a078 category change
Claus Gittinger <cg@exept.de>
parents: 2529
diff changeset
   738
    ]
7a06df99a078 category change
Claus Gittinger <cg@exept.de>
parents: 2529
diff changeset
   739
! !
7a06df99a078 category change
Claus Gittinger <cg@exept.de>
parents: 2529
diff changeset
   740
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
   741
!NoteBookView methodsFor:'accessing-style'!
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   742
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   743
canvasInset
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   744
    "inset of the canvas relative to my frame
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   745
        tabLevel + canvasInset == origin of canvas
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   746
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   747
    ^ canvasInset
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   748
!
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   749
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   750
canvasInset:anInset
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   751
    "inset of the canvas relative to my frame
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   752
        tabLevel + canvasInset == origin of canvas
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   753
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   754
    anInset ~~ canvasInset ifTrue:[
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   755
        canvasInset := anInset.
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   756
        self styleChanged.
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   757
    ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   758
!
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   759
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   760
direction
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   761
    "returns the direction of tabs as symbol. On default the value is
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   762
     set to #top. Valid symbols are:
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   763
	#top       arrange tabs to be on top of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   764
	#bottom    arrange tabs to be on bottom of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   765
	#left      arrange tabs to be on left of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   766
	#right     arrange tabs to be on right of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   767
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   768
    ^ direction
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   769
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
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   772
direction:aDirection
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   773
    "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
   774
     Valid symbols are:
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   775
        #top       arrange tabs to be on top of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   776
        #bottom    arrange tabs to be on bottom of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   777
        #left      arrange tabs to be on left of a view
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   778
        #right     arrange tabs to be on right of a view
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
    direction ~~ aDirection ifTrue:[
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   781
        direction := aDirection.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   782
        self styleChanged.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   783
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   784
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   785
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   786
fitLastRow
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   787
    "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
   788
     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
   789
     preferred extent (x or y) dependant on the direction.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   790
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   791
    ^ fitLastRow
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   792
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   793
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   794
fitLastRow:aBool
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   795
    "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
   796
     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
   797
     preferred extent (x or y) dependant on the direction.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   798
    "
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   799
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   800
    fitLastRow ~~ aBool ifTrue:[
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   801
        fitLastRow := aBool.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   802
        self styleChanged.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   803
    ].
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   804
!
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   805
2698
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   806
hasScrollButtons
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   807
    ^ buttonNext notNil
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   808
!
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   809
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   810
hasScrollButtons:aBoolean
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   811
    |hasScrollButtons|
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   812
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   813
    hasScrollButtons := self hasScrollButtons.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   814
    hasScrollButtons == aBoolean ifTrue:[^ self].
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   815
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   816
    hasScrollButtons ifTrue:[
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   817
        buttonNext destroy.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   818
        buttonPrev destroy.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   819
        buttonNext := buttonPrev := nil.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   820
    ] ifFalse:[
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   821
        buttonNext := ArrowButton in:self.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   822
        buttonPrev := ArrowButton in:self.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   823
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   824
        buttonNext beInvisible.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   825
        buttonPrev beInvisible.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   826
        
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   827
"/        realized ifTrue:[
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   828
"/            buttonNext create. "/ realize.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   829
"/            buttonPrev create. "/ realize.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   830
"/        ].
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   831
        buttonNext action:[ self scrollButtonPressed:#scrollRight  ].
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   832
        buttonPrev action:[ self scrollButtonPressed:#scrollLeft  ].
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   833
    ].
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   834
    self styleChanged.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   835
!
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   836
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   837
isHorizontal
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   838
    "returns true in case of direction is #top or #bottom
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   839
    "
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   840
    ^ direction == #top or:[direction == #bottom]
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   841
!
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
   842
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   843
showDestroyTabButton
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   844
    ^ showDestroyTabButton
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   845
!
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   846
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   847
showDestroyTabButton:aBoolean
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   848
    showDestroyTabButton == aBoolean ifTrue:[^ self].
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   849
    showDestroyTabButton := aBoolean.
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   850
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   851
    self styleChanged.
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   852
!
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
   853
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   854
tabBottomMargin
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   855
    "returns the margin between the tabs and the canvas
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   856
    "
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   857
    ^ tabBottomMargin
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   858
!
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   859
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   860
tabBottomMargin:aMargin
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   861
    "set the margin between the tabs and the canvas
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   862
    "
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   863
    |margin|
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   864
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   865
    margin := aMargin max:0.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   866
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   867
    margin ~~ tabBottomMargin ifTrue:[
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   868
        tabBottomMargin := margin.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   869
        self styleChanged.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   870
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   871
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   872
2431
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   873
tabLabelInset
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   874
    "inset (a point) of the label relative to its frame
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   875
         preferredExtent of Tab: label extent + tabLabelInset
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   876
    "
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   877
    ^ tabLabelInset
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   878
!
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   879
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   880
tabLabelInset:aPoint
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   881
    "inset (a point) of the label relative to its frame
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   882
         preferredExtent of Tab: label extent + tabLabelInset
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   883
    "
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   884
    |p|
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   885
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   886
    aPoint isNumber ifTrue:[ p := Point x:aPoint y:aPoint ]
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   887
                   ifFalse:[ p := aPoint ].
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   888
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   889
    p ~= tabLabelInset ifTrue:[
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   890
        tabLabelInset := p.
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   891
        self styleChanged.
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   892
    ].
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   893
!
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
   894
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   895
tabLeftMargin
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   896
    "margin to the first visible tab or scroller button
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   897
    "
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   898
    ^ tabLeftMargin
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   899
!
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   900
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   901
tabLeftMargin:aMargin
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   902
    "margin to the first visible tab or scroller button
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   903
    "
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   904
    |margin|
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   905
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   906
    margin := aMargin max:0.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   907
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   908
    margin ~~ tabLeftMargin ifTrue:[
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   909
        tabLeftMargin := margin.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   910
        self styleChanged.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   911
    ].
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   912
!
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   913
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   914
tabLevel
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   915
    "the level of the tabs and noteBook frame
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   916
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   917
    ^ tabLevel
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   918
!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   919
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   920
tabLevel:aLevel
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   921
    "the level of the tabs and noteBook frame
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   922
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   923
    aLevel ~~ tabLevel ifTrue:[
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   924
        tabLevel := aLevel.
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   925
        self styleChanged.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   926
    ].
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   927
!
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   928
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   929
tabRightMargin
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   930
    "margin from the last visible tab or scroller button to the view
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   931
    "
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   932
    ^ tabRightMargin
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   933
!
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   934
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   935
tabRightMargin:aMargin
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   936
    "margin from the last visible tab or scroller button to the view
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   937
    "
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   938
    |margin|
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   939
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   940
    margin := aMargin max:0.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   941
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   942
    margin ~~ tabRightMargin ifTrue:[
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   943
        tabRightMargin := margin.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   944
        self styleChanged.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   945
    ].
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   946
!
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   947
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   948
tabTopMargin
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   949
    "returns the margin between the tabs and the widget (not canvas)
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   950
    "
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   951
    ^ tabTopMargin
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   952
!
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   953
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   954
tabTopMargin:aMargin
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
   955
    "set the margin between the tabs and the widget (not canvas)
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   956
    "
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   957
    |margin|
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   958
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   959
    margin := aMargin max:0.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   960
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   961
    margin ~~ tabTopMargin ifTrue:[
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   962
        tabTopMargin := margin.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   963
        self styleChanged.
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
   964
    ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   965
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   966
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   967
!NoteBookView methodsFor:'change & update'!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
   968
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   969
styleChanged
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   970
    "called if the tab style changed
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   971
     list must be recomputed
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   972
    "
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   973
    preferredExtent := nil.
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   974
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   975
    numberOfLines isNil ifTrue:[
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   976
        ^ self.         "/ layout not yet computed
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   977
    ].
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   978
    self recomputeList.
2659
3af857eb52fb invalidate checks itself for shown-flag
Claus Gittinger <cg@exept.de>
parents: 2629
diff changeset
   979
    self invalidate
2282
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   980
!
cc14f465b708 *** empty log message ***
ca
parents: 2281
diff changeset
   981
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   982
update:something with:aParameter from:changedObject
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   983
    "one of my models changed its value
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   984
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   985
    |idx tab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   986
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   987
    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
   988
    changedObject == listHolder    ifTrue:[
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   989
        something == #at: ifTrue:[
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   990
            "/ 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
   991
            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
   992
            ^ self.
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   993
        ].
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   994
        ^ self list:(listHolder value)
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
   995
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   996
    changedObject == enableChannel ifTrue:[^ self enabled:enableChannel value].
1413
fa86dd0c4246 added #keepCanvas flag.
tm
parents: 1407
diff changeset
   997
    changedObject == canvasHolder  ifTrue:[^ self canvas:canvasHolder value].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   998
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
   999
    (idx := list findFirst:[:aTab| aTab label == changedObject]) ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1000
        tab := list at:idx.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1001
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1002
        idx == selection ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1003
            tab isEnabled ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1004
                ^ self selection:nil
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
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1007
        tab label:(tab label) on:self.
2529
ce78ec72df65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2496
diff changeset
  1008
        self invalidateTab:tab.
ce78ec72df65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2496
diff changeset
  1009
        ^ self.
ce78ec72df65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2496
diff changeset
  1010
    ].
ce78ec72df65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2496
diff changeset
  1011
ce78ec72df65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2496
diff changeset
  1012
    ^ super update:something with:aParameter from:changedObject
1724
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
  1013
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
  1014
    "Modified: / 25.2.2000 / 14:14:29 / cg"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1015
! !
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
!NoteBookView methodsFor:'drawing'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1018
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1019
computeDrawingClipX:x y:y width:w height:h
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1020
    |trans xOrY wOrHInset|
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1021
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1022
    self hasScrollButtons ifFalse:[^ nil].
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1023
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1024
    trans     := self transformation.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1025
    xOrY      := self tabLeftMargin.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1026
    wOrHInset := self tabRightMargin + xOrY.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1027
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1028
    self isHorizontal ifTrue:[
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1029
        trans notNil ifTrue:[
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1030
            xOrY := trans applyInverseToX:xOrY.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1031
        ].
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1032
        ^ Rectangle left:xOrY top:y width:(self width - wOrHInset) height:h.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1033
    ].
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1034
    trans notNil ifTrue:[
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1035
        xOrY := trans applyInverseToY:xOrY.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1036
    ].
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1037
    ^ Rectangle left:x top:xOrY width:w height:(self height - wOrHInset)
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1038
!
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1039
2763
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1040
drawActiveTabMarker:aTab
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1041
    "draw a tabs focus-rectangle"
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1042
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1043
    |layout w h yRct yPnt xRct xPnt incY incX markerHeight fgColor bgColor|
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1044
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1045
    layout := aTab layout.
2881
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
  1046
    markerHeight := self activeTabMarkerHeight.
2763
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1047
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1048
    bgColor := self activeTabMarkerColor.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1049
    fgColor := self activeTabMarkerFgColor.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1050
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1051
    self isHorizontal ifTrue:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1052
        xPnt := layout left + 1.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1053
        w := layout width - 2.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1054
        h := markerHeight.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1055
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1056
        direction == #top ifTrue:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1057
            yPnt := yRct := layout top.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1058
            incY := 1.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1059
        ] ifFalse:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1060
            incY := -1.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1061
            yRct := layout bottom - h.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1062
            yPnt := layout bottom - 1.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1063
        ].
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1064
        bgColor notNil ifTrue:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1065
            self paint:bgColor.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1066
            self fillRectangleX:xPnt y:yRct width:w height:h.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1067
        ].
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1068
        fgColor notNil ifTrue:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1069
            self paint:fgColor.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1070
            self displayLineFromX:xPnt y:yPnt toX:(xPnt + w - 1) y:yPnt.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1071
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1072
            (markerHeight - 1) timesRepeat:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1073
                yPnt := yPnt + incY.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1074
                self displayPointX:(xPnt - 1) y:yPnt.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1075
                self displayPointX:(xPnt + w) y:yPnt.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1076
            ].
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1077
        ].
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1078
    ] ifFalse:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1079
        w := markerHeight.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1080
        h := layout height - 2.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1081
        yRct := layout top + 1.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1082
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1083
        direction == #left ifTrue:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1084
            incX := 1.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1085
            xRct := xPnt := layout left.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1086
        ] ifFalse:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1087
            incX := -1.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1088
            xRct := layout right - w.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1089
            xPnt := layout right - 1.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1090
        ].
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1091
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1092
        bgColor notNil ifTrue:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1093
            self paint:bgColor.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1094
            self fillRectangleX:xRct y:yRct width:w height:h.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1095
        ].
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1096
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1097
        fgColor notNil ifTrue:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1098
            self paint:fgColor.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1099
            self displayLineFromX:xPnt y:yRct toX:xPnt y:yRct + h - 1.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1100
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1101
            (markerHeight - 1) timesRepeat:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1102
                xPnt := xPnt + incX.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1103
                self displayPointX:xPnt y:(yRct - 1).
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1104
                self displayPointX:xPnt y:(yRct + h).
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1105
            ].
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1106
        ].
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1107
    ].
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1108
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1109
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1110
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1111
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1112
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1113
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1114
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1115
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1116
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1117
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1118
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1119
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1120
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1121
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1122
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1123
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1124
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1125
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1126
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1127
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1128
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1129
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1130
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1131
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1132
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1133
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1134
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1135
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1136
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1137
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1138
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1139
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1140
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1141
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1142
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1143
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1144
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1145
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1146
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1147
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1148
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1149
""
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1150
!
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1151
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1152
drawBorderEdges
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1153
    |layout x0 x1 y0 y1 trans|
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1154
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1155
    "/ test whether TabView and not NoteBookView
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1156
    tabModus ifTrue:[^ self].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1157
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1158
    layout := self computeBorderLayout.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1159
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1160
    tabLevel ~~ 0 ifTrue:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1161
        self drawEdgesForX:(layout left)
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1162
                         y:(layout top)
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1163
                     width:(layout width) 
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1164
                    height:(layout height)
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1165
                     level:tabLevel.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1166
      ^ self
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1167
    ].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1168
    list size > 1 ifFalse:[^ self].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1169
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1170
    self paint:lightColor ? lightColor.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1171
    trans := self transformation.
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1172
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1173
    (direction == #top or:[direction == #bottom]) ifTrue:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1174
        direction == #top ifTrue:[ y0 := layout top - 1 ]
2284
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  1175
                         ifFalse:[ y0 := layout bottom ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1176
        y1 := y0.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1177
        x0 := 0.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1178
        trans notNil ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1179
            x0 := trans applyInverseToX:x0.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1180
        ].
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1181
        x1 := x0 + self width.
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1182
    ] ifFalse:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1183
        direction == #left ifTrue:[ x0 := layout left - 1 ]
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1184
                          ifFalse:[ x0 := layout right    ].
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1185
        x1 := x0.
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1186
        y0 := 0.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1187
        trans notNil ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1188
            y0 := trans applyInverseToY:y0.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1189
        ].
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1190
        y1 := y0 + self height.
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1191
    ].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1192
    self displayLineFromX:x0 y:y0 toX:x1 y:y1.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1193
!
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1194
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1195
drawDestroyButtonForTab:aTab
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1196
    "redraw a tabs destroy button"
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1197
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1198
    |bFrame|
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1199
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1200
    bFrame := self destroyButtonFrameForTab:aTab.
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1201
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1202
    self paint:foregroundColor.
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1203
    self displayRectangle:bFrame.
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1204
    self displayLineFrom:bFrame topLeft to:bFrame bottomRight-(1@1).
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1205
    self displayLineFrom:bFrame topRight - (1@0) to:bFrame bottomLeft-(0@1).
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1206
!
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1207
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1208
drawTabEdgesFor:aTab
2763
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1209
    |layout count leftFg leftHalfFg rightFg x0 x1 y0 y1 isSelected
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1210
     yT "{ Class:SmallInteger }"
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1211
     xL "{ Class:SmallInteger }"
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1212
     xR "{ Class:SmallInteger }"
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1213
     yB "{ Class:SmallInteger }"
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1214
    |
2758
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1215
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1216
    count      := tabLevel.
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1217
    isSelected := (self selectedTab == aTab).
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1218
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1219
    count <= 0 ifTrue:[
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1220
        isSelected ifFalse:[ ^ self ].
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1221
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1222
        count == 0 ifTrue:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1223
            list size > 1 ifFalse:[^ self].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1224
            count := 1
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1225
        ] ifFalse:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1226
            count := count negated
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1227
        ].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1228
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1229
        rightFg    := lightColor.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1230
        leftFg     := shadowColor.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1231
        leftHalfFg := halfShadowColor.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1232
    ] ifFalse:[
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1233
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1234
        ((edgeStyle == #soft) and:[tabLevel > 1]) ifTrue:[ rightFg := halfShadowColor ]
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1235
                                                 ifFalse:[ rightFg := shadowColor ].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1236
        leftFg     := lightColor.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1237
        leftHalfFg := halfLightColor.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1238
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1239
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1240
    (leftHalfFg notNil and:[edgeStyle == #soft and:[tabLevel > 0]]) ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1241
        leftFg := leftHalfFg
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1242
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1243
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1244
    layout := aTab layout.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1245
    xL := layout left.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1246
    yT := layout top.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1247
    xR := layout right  - 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1248
    yB := layout bottom - 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1249
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1250
    x0 := xL + count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1251
    x1 := xR - count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1252
    y0 := yT + count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1253
    y1 := yB - count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1254
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1255
    direction == #top ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1256
        self paint:rightFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1257
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1258
        0 to:count - 1 do:[:i|              "/ vertical: right
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1259
            self displayLineFromX:xR - i y:yB toX:xR - i  y:y0 - i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1260
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1261
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1262
        self paint:leftFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1263
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1264
        0 to:count - 1 do:[:i|              "/ horizontal: left       
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1265
            self displayLineFromX:xL + i y:y0 - i toX:xL + i y:yB.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1266
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1267
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1268
        0 to:count - 1 do:[:i|              "/ horizontal: top
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1269
            self displayLineFromX:x0 - i y:yT + i toX:x1 y:yT + i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1270
        ].
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1271
        (isSelected and:[count > 1]) ifFalse:[^ self].
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1272
        (self isLastTabInLine:aTab)   ifTrue:[^ self].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1273
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1274
        y0 := yB + 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1275
        x1 := x1 + 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1276
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1277
        1 to:count - 1 do:[:i|              "/ horizontal line
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1278
            self displayLineFromX:x1 + i y:y0 - i toX:xR  y:y0 - i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1279
        ].
2758
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1280
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1281
        ^ self
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1282
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1283
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1284
    direction == #bottom ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1285
        self paint:leftFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1286
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1287
        0 to:count - 1 do:[:i|              "/ vertical : left
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1288
            self displayLineFromX:xL + i y:yT toX:xL + i y:y1+i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1289
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1290
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1291
        self paint:rightFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1292
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1293
        0 to:count - 1 do:[:i|              "/ horizontal: bottom
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1294
            self displayLineFromX:x0 y:yB-i toX:x1 + i y:yB-i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1295
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1296
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1297
        0 to:count - 1 do:[:i|              "/ vertical: right
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1298
            self displayLineFromX:xR-i y:yT toX:xR-i y:y1+i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1299
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1300
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1301
        (isSelected and:[count > 1]) ifFalse:[^ self].
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1302
        (self isFirstTabInLine:aTab)  ifTrue:[^ self].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1303
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1304
        x0 := x0 - 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1305
        y0 := yT - 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1306
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1307
        1 to:count - 1 do:[:i|              "/ selection shadow
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1308
            self displayLineFromX:xL y:y0 + i toX:x0-i  y:y0 + i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1309
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1310
        ^ self
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1311
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1312
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1313
    direction == #right ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1314
        self paint:leftFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1315
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1316
        0 to:count - 1 do:[:i|              "/ horizontal: top
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1317
            self displayLineFromX:xL y:yT + i toX:x1+i  y:yT + i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1318
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1319
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1320
        self paint:rightFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1321
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1322
        0 to:count - 1 do:[:i|              "/ vertical: right
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1323
            self displayLineFromX:xR-i y:y0 toX:xR-i  y:y1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1324
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1325
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1326
        1 to:count do:[:i|              "/ horizontal: bottom
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1327
            self displayLineFromX:xL y:y1+i toX:xR-i  y:y1+i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1328
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1329
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1330
        (isSelected and:[count > 1]) ifFalse:[^ self].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1331
        (self isFirstTabInLine:aTab)  ifTrue:[^ self].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1332
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1333
        x0 := x0 - 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1334
        y0 := yT - 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1335
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1336
        1 to:count - 1 do:[:i|              "/ selection shadow
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1337
            self displayLineFromX:xL y:y0 + i toX:x0-i  y:y0 + i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1338
        ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1339
        ^ self
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1340
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1341
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1342
    "/ direction == #left
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1343
    self paint:rightFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1344
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1345
    x0 := xL + count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1346
    x1 := xR - count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1347
    y0 := yT + count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1348
    y1 := yB - count.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1349
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1350
    0 to:count - 1 do:[:i|      "/ horizontal: bottom
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1351
        self displayLineFromX:x0 - i y:yB - i toX:xR  y:yB - i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1352
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1353
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1354
    self paint:leftFg.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1355
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1356
    0 to:count - 1 do:[:i|      "/ vertical: left
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1357
        self displayLineFromX:xL + i y:y0 toX:xL + i y:y1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1358
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1359
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1360
    1 to:count do:[:i|          "/ horizontal: top
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1361
        self displayLineFromX:xL + i y:y0 - i toX:xR y:y0 - i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1362
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1363
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1364
    (isSelected and:[count > 1]) ifFalse:[^ self].
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1365
    (self isLastTabInLine:aTab)   ifTrue:[^ self].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1366
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1367
    x1 := x1 + 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1368
    y0 := yB + 1.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1369
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1370
    1 to:count - 1 do:[:i|      "/ selection shadow
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1371
        self displayLineFromX:x1+i y:yB + 1 - i toX:xR  y:yB + 1 - i.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1372
    ].
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1373
!
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1374
2762
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1375
drawTabFocus:aTab
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1376
    "draw a tabs focus-rectangle"
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1377
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1378
    |layout extent voffs hoffs|
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1379
2763
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1380
    self supportsFocusOnTab ifFalse:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1381
        ^ self.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1382
    ].
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1383
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1384
    self activeTabMarkerColor notNil ifTrue:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1385
        self drawActiveTabMarker:aTab.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1386
        ^ self.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1387
    ].
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1388
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1389
    self hasFocus ifFalse:[
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1390
        ^ self.
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1391
    ].
2762
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1392
    layout := aTab layout.
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1393
    extent := aTab extent.
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1394
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1395
    self isHorizontal ifTrue:[
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1396
        voffs  := (layout height - extent y) // 2 max:0.
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1397
        hoffs  := (layout width  - extent x) // 2 max:0.
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1398
    ] ifFalse:[
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1399
        voffs  := (layout height - extent x) // 2 max:0.
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1400
        hoffs  := (layout width  - extent y) // 2 max:0.
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1401
    ].
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1402
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1403
    self paint:(Color black).
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1404
2763
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1405
    self displayDottedRectangleX:(layout left   + hoffs - 1)
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1406
                               y:(layout top    + voffs - 1)
2762
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1407
                           width:(layout width  - hoffs - hoffs + 2)
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1408
                          height:(layout height - voffs - voffs + 2).
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1409
!
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1410
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1411
invalidateSelectedTab
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1412
    |selectedTab|
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1413
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1414
    selectedTab := self selectedTab.
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1415
    selectedTab notNil ifTrue:[
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1416
        self invalidateTab:selectedTab
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1417
    ].
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1418
!
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1419
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1420
invalidateTab:aTab
2762
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1421
    "invalidate a tab (i.e. force it to be redrawn)"
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1422
2213
58cc47a8fb2d some redrawing refactored
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
  1423
    |tabBounds|
58cc47a8fb2d some redrawing refactored
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
  1424
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1425
    shown ifTrue:[
2213
58cc47a8fb2d some redrawing refactored
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
  1426
        tabBounds := self computeLayoutForTab:aTab.
58cc47a8fb2d some redrawing refactored
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
  1427
        self invalidate:tabBounds.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1428
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1429
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1430
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1431
redrawTab:aTab
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1432
    "redraw a tab
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1433
    "
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1434
    |isSelected fgColor|
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1435
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1436
    isSelected := self selectedTab == aTab.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1437
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1438
    self paint:(isSelected ifTrue:[self activeBackgroundColor] ifFalse:[self backgroundColor]).
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1439
    self fillRectangle:(aTab layout).
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1440
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1441
    (enabled and:[aTab isEnabled]) ifFalse:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1442
        fgColor := disabledForegroundColor.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1443
    ] ifTrue:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1444
        fgColor := aTab foregroundColor.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1445
        fgColor isNil ifTrue:[
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1446
            fgColor := isSelected ifTrue:[activeForegroundColor] ifFalse:[foregroundColor].
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1447
        ]
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1448
    ].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1449
    self paint:fgColor.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1450
    aTab displayOn:self inset:(tabLevel abs) direction:direction.
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1451
    showDestroyTabButton ifTrue:[
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1452
        self drawDestroyButtonForTab:aTab.
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1453
    ].
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1454
    self drawTabEdgesFor:aTab.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1455
2763
844f86135a02 markers XP style support
ca
parents: 2762
diff changeset
  1456
    isSelected ifTrue:[
2762
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1457
        self drawTabFocus:aTab
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1458
    ].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1459
!
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1460
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1461
redrawX:x y:y width:w height:h
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1462
    "a region must be redrawn
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1463
    "
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1464
    |selectedTab line damage layout selectedLayout clip|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1465
2035
6cc4d73f17e1 bug fix when chaning the canvas before being realized
Claus Gittinger <cg@exept.de>
parents: 2010
diff changeset
  1466
    shown ifFalse:[ ^ self ].
6cc4d73f17e1 bug fix when chaning the canvas before being realized
Claus Gittinger <cg@exept.de>
parents: 2010
diff changeset
  1467
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1468
    numberOfLines isNil ifTrue:[
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1469
        self recomputeList.
2215
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  1470
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1471
        numberOfLines notNil ifTrue:[
2215
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  1472
            self invalidate
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  1473
        ].
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  1474
        ^ self
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1475
    ].
2213
58cc47a8fb2d some redrawing refactored
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
  1476
    selectedTab := self selectedTab.
1963
38173bc0bd42 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1962
diff changeset
  1477
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1478
    selectedTab notNil ifTrue:[
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1479
        (line := selectedTab lineNr) ~~ 1 ifTrue:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1480
            self makeToBaseLine:line.
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
  1481
            ^ self
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1482
        ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1483
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1484
    self paint:(self viewBackground).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1485
    self fillRectangleX:x y:y width:w height:h.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1486
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1487
    list size == 0 ifTrue:[ ^ self ].
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1488
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1489
    self drawBorderEdges.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1490
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1491
    damage := Rectangle left:x top:y width:w height:h.
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1492
    clip   := self computeDrawingClipX:x y:y width:w height:h.
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1493
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1494
    numberOfLines to:1 by:-1 do:[:aLnNr|
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1495
        list reverseDo:[:aTab|
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1496
            (     aTab lineNr == aLnNr
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1497
             and:[aTab ~~ selectedTab
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1498
             and:[aTab intersects:damage]]
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1499
            ) ifTrue:[
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1500
                clip notNil ifTrue:[
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1501
                    self clippingRectangle:clip.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1502
                    clip := nil.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1503
                ].
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1504
                self redrawTab:aTab.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1505
            ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1506
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1507
    ].
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1508
    selectedTab isNil ifTrue:[
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1509
        ^ self
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1510
    ].
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1511
    layout := self computeLayoutForTab:selectedTab.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1512
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1513
    (layout intersects:damage) ifTrue:[
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1514
        clip notNil ifTrue:[
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1515
            self clippingRectangle:clip.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1516
            clip := nil.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1517
        ].
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1518
        selectedLayout := selectedTab layout.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1519
        selectedTab layout:layout.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1520
        self redrawTab:selectedTab.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  1521
        selectedTab layout:selectedLayout.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1522
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1523
! !
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:'event handling'!
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
buttonPress:button x:x y:y
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1528
    "a button is pressed; find tab under point and set the selection"
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1529
1802
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1530
    |idx tab recv menu|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1531
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1532
    enabled     ifFalse:[ ^ self ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1533
    list isEmpty ifTrue:[ ^ self ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1534
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1535
    idx := list findFirst:[:aTab| aTab containsPointX:x y:y ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1536
    idx == 0 ifTrue:[ ^ self ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1537
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1538
    tab := list at:idx.
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1539
2877
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1540
"/    (showDestroyTabButton and:[destroyTabAction notNil]) ifTrue:[
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1541
"/        ((self destroyButtonFrameForTab:tab) containsPointX:x y:y) ifTrue:[
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1542
"/            destroyTabAction value:idx.
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1543
"/            ^ self.
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1544
"/        ].
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1545
"/    ].
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1546
    tab isEnabled ifFalse:[ ^ self ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1547
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1548
    ((button ~~ 2) and:[button ~~ #menu]) ifTrue:[
1802
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1549
        "/ change the selection
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1550
        tab ~~ self selectedTab ifTrue:[
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1551
            self selection:idx
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1552
        ].
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1553
        ^ self.
1802
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1554
    ].
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1555
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1556
    accessTabMenuAction isNil ifTrue:[ ^ self ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1557
    menu := accessTabMenuAction value:idx.
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1558
    menu isNil ifTrue:[ ^ self ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1559
1802
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1560
    menu isArray ifTrue:[
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1561
        menu := menu decodeAsLiteralArray
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1562
    ].
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1563
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1564
    menu receiver isNil ifTrue:[
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1565
        (recv := self application) isNil ifTrue:[
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1566
            recv := tab model
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1567
        ].
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1568
        recv notNil ifTrue:[
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1569
            menu receiver:recv
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1570
        ] ifFalse:[
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1571
            Transcript showCR:('%1 : Menu has no receiver' bindWith:(self class name)).
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1572
        ]
1802
131532a28106 adding callback for tab menus
ca
parents: 1801
diff changeset
  1573
    ].
2333
eeff6439157e can now specify if menu action is to be performed by
ca
parents: 2292
diff changeset
  1574
    self startUpMenu:menu
1401
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
2877
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1577
buttonRelease:button x:x y:y
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1578
    "a button is released; see if its the destroyTab button"
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1579
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1580
    |idx tab|
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1581
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1582
    enabled     ifFalse:[ ^ self ].
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1583
    list isEmpty ifTrue:[ ^ self ].
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1584
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1585
    idx := list findFirst:[:aTab| aTab containsPointX:x y:y ].
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1586
    idx == 0 ifTrue:[ ^ self ].
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1587
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1588
    tab := list at:idx.
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1589
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1590
    (showDestroyTabButton and:[destroyTabAction notNil]) ifTrue:[
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1591
        ((self destroyButtonFrameForTab:tab) containsPointX:x y:y) ifTrue:[
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1592
            destroyTabAction value:idx.
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1593
            ^ self.
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1594
        ].
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1595
    ].
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1596
    super buttonRelease:button x:x y:y
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1597
!
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1598
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1599
keyPress:aKey x:x y:y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1600
    "selection might change; look for corresponding list entry
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1601
    "
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1602
    <resource: #keyboard (#CursorRight #CursorLeft #CursorUp #CursorDown)>
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1603
2758
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1604
    |sensor size index n selectNext selectPrev|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1605
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1606
    (enabled and:[(size := list size) ~~ 0]) ifFalse:[
1657
061c167ce3db if disabled; call super keyPress:x:y to handle focusSequence
ca
parents: 1549
diff changeset
  1607
        ^ super keyPress:aKey x:x y:y
1401
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
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1610
    (self processAccessCharacter:aKey) ifTrue:[
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1611
        ^ self
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1612
    ].
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1613
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1614
    (self processShortcutKey:aKey) ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1615
        ^ self
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1616
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  1617
2758
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1618
    selectNext := selectPrev := false.
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1619
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1620
    ((aKey == #CursorRight) or:[aKey == #CursorDown]) ifTrue:[
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1621
        selectNext := true.
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1622
    ] ifFalse:[ ((aKey == #CursorLeft) or:[aKey == #CursorUp]) ifTrue:[
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1623
        selectPrev := true.
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1624
    ] ifFalse:[ aKey == #Tab ifTrue:[
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1625
        selectNext := true.
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1626
    ] ifFalse:[
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1627
        ^ super keyPress:aKey x:x y:y
2758
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1628
    ]]].
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1629
2396
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1630
    sensor := self sensor.
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1631
    sensor notNil ifTrue:[
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1632
        n := 1 + (sensor compressKeyPressEventsWithKey:aKey).
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1633
        n := (n \\ size) max:1.
2396
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1634
    ] ifFalse:[
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1635
        n := 1.
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1636
    ].
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1637
    index := selection ? 0.
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1638
2758
89a2c0da11ec *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  1639
    selectNext ifTrue:[
2396
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1640
        n timesRepeat:[
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1641
            index := self nextSelectableAfter:index wrapAtEnd:true.
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1642
            index == 0 ifTrue:[^ self].
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  1643
        ].
2396
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1644
    ] ifFalse:[
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1645
        n timesRepeat:[
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1646
            index := self previousSelectableBefore:index wrapAtBegin:true.
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1647
            index == 0 ifTrue:[^ self].
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1648
        ].
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1649
    ].
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  1650
    self selection:index.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1651
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1652
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1653
processShortcutKeyEvent:event
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1654
    ^ self processShortcutKey:(event key)
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1655
!
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  1656
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1657
sizeChanged:how
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1658
    "size of view changed 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1659
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1660
    super sizeChanged:how.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1661
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1662
    list notEmpty ifTrue:[
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1663
        lastComputedExtent ~= self extent ifTrue:[
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1664
            numberOfLines := nil.
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1665
        ]
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1666
    ].
2659
3af857eb52fb invalidate checks itself for shown-flag
Claus Gittinger <cg@exept.de>
parents: 2629
diff changeset
  1667
    self invalidate.
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1668
    self resizeCanvas.
1401
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
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1671
!NoteBookView methodsFor:'focus handling'!
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1672
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1673
showFocus:explicit
2762
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1674
    "got the keyboard focus"
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1675
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1676
    self supportsFocusOnTab ifTrue:[
2762
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1677
        self invalidateSelectedTab
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1678
    ] ifFalse:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1679
        super showFocus:explicit
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1680
    ]
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1681
!
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1682
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1683
showNoFocus:explicit
2762
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1684
    "lost the keyboard focus"
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1685
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1686
    self supportsFocusOnTab ifTrue:[
2762
98eb83162881 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2760
diff changeset
  1687
        self invalidateSelectedTab
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1688
    ] ifFalse:[
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1689
        super showNoFocus:explicit
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1690
    ]
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1691
!
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1692
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1693
supportsFocusOnTab
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1694
    "returns true if focus is supported
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1695
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1696
    ^ (styleSheet at:#'focusHighlightStyle') == #win95
1659
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1697
! !
905be916cd83 showFocus for window style
ca
parents: 1658
diff changeset
  1698
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1699
!NoteBookView methodsFor:'help'!
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1700
2877
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1701
flyByHelpTextAt:srcPoint
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1702
    ^ self helpTextAt:srcPoint
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1703
!
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1704
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1705
helpText
2877
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1706
    "return the helpText for the currently selected item (empty if none)"
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1707
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1708
    ^ self helpTextForItemAt:selection
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1709
!
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1710
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1711
helpTextAt:srcPoint
2877
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1712
    "return the helpText for aPoint (i.e. when mouse-pointer is moved over an item)."
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1713
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1714
    |x y idx tab|
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1715
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1716
    x := srcPoint x.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1717
    y := srcPoint y.
2877
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1718
    idx := list findFirst:[:aTab| aTab containsPointX:x y:y ].
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1719
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1720
    idx ~~ 0 ifTrue:[
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1721
        (showDestroyTabButton and:[destroyTabAction notNil]) ifTrue:[
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1722
            tab := list at:idx.
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1723
            ((self destroyButtonFrameForTab:tab) containsPointX:x y:y) ifTrue:[
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1724
                ^ resources string:'Remove this Tab'
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1725
            ].
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1726
        ].
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1727
    ].
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1728
    ^ self helpTextForItemAt:idx
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1729
!
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1730
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1731
helpTextForItemAt:anIndex
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1732
    |tab|
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1733
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1734
    (     anIndex notNil
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1735
     and:[anIndex ~~ 0
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1736
     and:[(tab := list at:anIndex ifAbsent:nil) notNil
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1737
     and:[(tab := tab model) notNil]]]
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1738
    ) ifTrue:[
2877
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1739
        ^ tab activeHelpText "/ ? ''
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1740
    ].
2877
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1741
    ^ nil "/ ''
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1742
! !
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  1743
1687
70888239654f category changes
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  1744
!NoteBookView methodsFor:'initialization & release'!
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1745
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1746
destroy
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1747
    "remove dependencies
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
    list removeDependent:self.
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
    listHolder    removeDependent:self. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1752
    canvasHolder  removeDependent:self.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1753
2723
8532bbba673b call #releaseAsSubCanvas on destroyed applications
ca
parents: 2718
diff changeset
  1754
    list notEmptyOrNil ifTrue:[
8532bbba673b call #releaseAsSubCanvas on destroyed applications
ca
parents: 2718
diff changeset
  1755
        list do:[:anItem| |model|
8532bbba673b call #releaseAsSubCanvas on destroyed applications
ca
parents: 2718
diff changeset
  1756
            model := anItem model.
8532bbba673b call #releaseAsSubCanvas on destroyed applications
ca
parents: 2718
diff changeset
  1757
            model notNil ifTrue:[
8532bbba673b call #releaseAsSubCanvas on destroyed applications
ca
parents: 2718
diff changeset
  1758
                model destroyCanvas.
8532bbba673b call #releaseAsSubCanvas on destroyed applications
ca
parents: 2718
diff changeset
  1759
            ]
8532bbba673b call #releaseAsSubCanvas on destroyed applications
ca
parents: 2718
diff changeset
  1760
        ]
8532bbba673b call #releaseAsSubCanvas on destroyed applications
ca
parents: 2718
diff changeset
  1761
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1762
    super destroy.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1763
!
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
initStyle
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1766
    "setup style attributes
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1767
    "
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1768
    |clr|
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1769
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1770
    super initStyle.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1771
    tabModus  := false.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1772
    edgeStyle := DefaultEdgeStyle.
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1773
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
  1774
    clr := styleSheet colorAt:#'noteBook.viewBackground'.
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
  1775
    clr notNil ifTrue:[ viewBackground := clr ].
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
  1776
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1777
    self font:self class defaultFont.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1778
    drawLightColor := Color veryLightGray onDevice:device.
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1779
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1780
    clr := DefaultForegroundColor ? Black.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1781
    foregroundColor := clr onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1782
2760
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
  1783
    clr := DefaultBackgroundColor ? viewBackground.
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
  1784
    backgroundColor := clr onDevice:device.
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
  1785
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
  1786
    clr := DefaultActiveBackgroundColor ? backgroundColor.
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
  1787
    activeBackgroundColor := clr onDevice:device.
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
  1788
80be1c193c4f more xp style
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
  1789
    clr := DefaultActiveForegroundColor ? foregroundColor.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1790
    activeForegroundColor := clr onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1791
2292
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1792
"/    (clr := DefaultShadowColor) isNil ifTrue:[clr := viewBackground darkened].
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1793
"/    shadowColor := clr onDevice:device.
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1794
"/    (clr := DefaultLightColor) isNil ifTrue:[clr := viewBackground lightened].
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1795
"/    lightColor := clr onDevice:device.
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1796
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1797
    (clr := DefaultShadowColor) notNil ifTrue:[shadowColor := clr onDevice:device].
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1798
    (clr := DefaultLightColor) notNil ifTrue:[lightColor := clr onDevice:device].
1689
ecb51abe4a6b preps to allow for tabColor and activeTabColor to be
Claus Gittinger <cg@exept.de>
parents: 1687
diff changeset
  1799
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1800
    edgeStyle isNil ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1801
        halfShadowColor := shadowColor.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1802
        halfLightColor  := lightColor.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1803
        drawLightColor  := lightColor.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1804
    ] ifFalse:[
2292
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1805
"/        (clr := DefaultHalfShadowColor) isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1806
"/            clr := shadowColor lightened
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1807
"/        ].
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1808
"/        halfShadowColor := clr onDevice:device.
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1809
"/
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1810
"/        (clr := DefaultHalfLightColor) isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1811
"/            clr := lightColor darkened.
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1812
"/        ].
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1813
"/        halfLightColor := clr onDevice:device.
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1814
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1815
        (clr := DefaultHalfShadowColor) notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1816
            halfShadowColor := clr onDevice:device.
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1817
        ].
2292
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1818
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1819
        (clr := DefaultHalfLightColor) notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1820
            halfLightColor := clr onDevice:device.
1682
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1821
        ].
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1822
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1823
        edgeStyle == #soft ifTrue:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1824
            drawLightColor := halfShadowColor
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1825
        ] ifFalse:[
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1826
            drawLightColor := Color veryLightGray onDevice:device.
3c43fa6f9fdf drawing
ca
parents: 1680
diff changeset
  1827
        ]
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  1828
    ].
1700
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1829
    (clr := DisabledForegroundColor) notNil ifTrue:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1830
        disabledForegroundColor := clr onDevice:device
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1831
    ]ifFalse:[
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1832
        disabledForegroundColor := drawLightColor
e2cda6e56205 support DisabledForegroundColor
ca
parents: 1696
diff changeset
  1833
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1834
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1835
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1836
initialize
2746
2c614cc1559c Do not hardcode noteBook.tabTobMargin for windows
Stefan Vogel <sv@exept.de>
parents: 2740
diff changeset
  1837
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1838
    super initialize.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1839
2877
6f7df547445b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2875
diff changeset
  1840
    self enableMotionEvents.  "/ for flyByHelp
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1841
    self cursor:Cursor hand.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1842
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1843
    list             := #().
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1844
    useIndex         := true.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1845
    direction        := #top.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1846
    fitLastRow       := true.
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1847
    enabled          := true.
2875
6aaefc7aae54 destroy tabs
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
  1848
    showDestroyTabButton := false.
1685
7755214df380 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1684
diff changeset
  1849
    canvasInset      := StyleSheet at:#'noteBook.canvasInset'      default:1@1.
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  1850
    keepCanvas       := false.
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1851
    tabLevel         := StyleSheet at:#'noteBook.tabLevel'         default:1.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1852
    tabLabelInset    := StyleSheet at:#'noteBook.tabLabelInset'    default:6@4.
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1853
    selectionInsetX  := (2 max:(tabLevel abs)) + 1.
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1854
    selectionInsetY  := (2 max:(tabLevel abs)) + 1.
2629
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  1855
    translateLabel   := false.
2285
0f3ce1478322 margins from styleSheet
ca
parents: 2284
diff changeset
  1856
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1857
    tabRightMargin   := 0.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1858
    tabLeftMargin    := 0.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1859
2746
2c614cc1559c Do not hardcode noteBook.tabTobMargin for windows
Stefan Vogel <sv@exept.de>
parents: 2740
diff changeset
  1860
    tabTopMargin    := StyleSheet at:#'noteBook.tabTopMargin' default:4.
2285
0f3ce1478322 margins from styleSheet
ca
parents: 2284
diff changeset
  1861
    tabBottomMargin := StyleSheet at:#'noteBook.tabBottomMargin' default:1.
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1862
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1863
    self lineWidth:0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1864
2529
ce78ec72df65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2496
diff changeset
  1865
"/    canvas notNil ifTrue:[
ce78ec72df65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2496
diff changeset
  1866
"/        canvas := canvas in:self.
ce78ec72df65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2496
diff changeset
  1867
"/    ].
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1868
!
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1869
2682
765eccde4ba7 raise canvas on map
ca
parents: 2677
diff changeset
  1870
mapped
765eccde4ba7 raise canvas on map
ca
parents: 2677
diff changeset
  1871
765eccde4ba7 raise canvas on map
ca
parents: 2677
diff changeset
  1872
    super mapped.
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1873
2682
765eccde4ba7 raise canvas on map
ca
parents: 2677
diff changeset
  1874
    canvas notNil ifTrue:[
765eccde4ba7 raise canvas on map
ca
parents: 2677
diff changeset
  1875
        canvas raise
765eccde4ba7 raise canvas on map
ca
parents: 2677
diff changeset
  1876
    ].
765eccde4ba7 raise canvas on map
ca
parents: 2677
diff changeset
  1877
!
765eccde4ba7 raise canvas on map
ca
parents: 2677
diff changeset
  1878
2739
f54f0d4e08b1 enhancements by Jan
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1879
postRealize
f54f0d4e08b1 enhancements by Jan
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1880
    "automatically set the initially selected notebook tab;
f54f0d4e08b1 enhancements by Jan
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1881
     unless it has been set already (by setup code)"
f54f0d4e08b1 enhancements by Jan
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1882
f54f0d4e08b1 enhancements by Jan
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1883
    selection isNil ifTrue:[
f54f0d4e08b1 enhancements by Jan
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1884
        self setSelection:1.
f54f0d4e08b1 enhancements by Jan
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1885
    ].
f54f0d4e08b1 enhancements by Jan
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1886
    super postRealize.
f54f0d4e08b1 enhancements by Jan
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1887
!
f54f0d4e08b1 enhancements by Jan
Claus Gittinger <cg@exept.de>
parents: 2725
diff changeset
  1888
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1889
realize
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1890
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1891
    (canvas notNil and:[numberOfLines isNil]) ifTrue:[
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1892
        self recomputeList
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1893
    ].
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  1894
    super realize.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1895
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1896
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1897
!NoteBookView methodsFor:'layout'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1898
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1899
computeBorderLayout
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1900
    "returns the layout of the frame araound the canvas
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1901
    "
2035
6cc4d73f17e1 bug fix when chaning the canvas before being realized
Claus Gittinger <cg@exept.de>
parents: 2010
diff changeset
  1902
    |xL yT xR yB tab l|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1903
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1904
    xL  := 0.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1905
    yT  := 0.
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1906
    xR  := self width.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1907
    yB  := self height.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1908
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1909
    list notEmpty ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1910
        tab := list detect:[:aTab| aTab lineNr == 1] ifNone:nil.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1911
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1912
        tab notNil ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1913
            l := tab layout.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1914
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1915
                      direction == #top    ifTrue:[ yT := l bottom ]
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1916
            ifFalse:[ direction == #bottom ifTrue:[ yB := l top    ]
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1917
            ifFalse:[ direction == #left   ifTrue:[ xL := l right  ]
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  1918
            ifFalse:[
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1919
                xR := l left
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1920
            ]]]
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1921
        ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1922
    ].
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1923
    self buttonLayoutUpdate.        
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1924
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1925
    ^ Rectangle left:xL top:yT right:xR bottom:yB
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1926
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1927
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1928
computeLayoutForTab:aTab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1929
    "calculate extent of a tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1930
    "
2289
d09c42411c8d *** empty log message ***
ca
parents: 2288
diff changeset
  1931
    |layout bwAbs left right top bottom|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1932
2687
7c7bedb930c6 bugfix for empty selection
ca
parents: 2686
diff changeset
  1933
    aTab isNil ifTrue:[^ nil].
7c7bedb930c6 bugfix for empty selection
ca
parents: 2686
diff changeset
  1934
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1935
    layout := aTab layout.
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1936
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1937
    self selectedTab == aTab ifFalse:[
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1938
        ^ layout
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1939
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1940
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1941
    bwAbs  := tabLevel abs.
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1942
    left   := layout left.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1943
    right  := layout right.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1944
    top    := layout top.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1945
    bottom := layout bottom.
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1946
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1947
    (direction == #top or:[direction == #bottom]) ifTrue:[
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1948
        left   := left - selectionInsetX.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1949
        right  := right + selectionInsetX.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1950
2289
d09c42411c8d *** empty log message ***
ca
parents: 2288
diff changeset
  1951
        bwAbs == 0 ifTrue:[
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1952
            left  == 0          ifTrue:[ left  := left  - 1 ].
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1953
            right == self width ifTrue:[ right := right + 1 ].
2289
d09c42411c8d *** empty log message ***
ca
parents: 2288
diff changeset
  1954
        ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  1955
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1956
        direction == #top  ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1957
            bottom := bottom + bwAbs.
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1958
            top    := top - selectionInsetY.
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  1959
        ] ifFalse:[
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1960
            top    := top    - bwAbs.
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1961
            bottom := bottom + selectionInsetY.
1658
3011b6a68e38 bug fixes in drawing bottom and left handles
ca
parents: 1657
diff changeset
  1962
        ].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1963
    ] ifFalse:[
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1964
        top    := top    - selectionInsetX.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1965
        bottom := bottom + selectionInsetX.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  1966
2289
d09c42411c8d *** empty log message ***
ca
parents: 2288
diff changeset
  1967
        bwAbs == 0 ifTrue:[
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1968
            top    == 0           ifTrue:[ top    := top    - 1 ].
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  1969
            bottom == self height ifTrue:[ bottom := bottom + 1 ].
2289
d09c42411c8d *** empty log message ***
ca
parents: 2288
diff changeset
  1970
        ].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1971
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1972
        direction == #left ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1973
            right := right + bwAbs.
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1974
            left  := left  - selectionInsetY
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1975
        ] ifFalse:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1976
            left  := left  - bwAbs.
2280
93b2df2d91fd *** empty log message ***
ca
parents: 2279
diff changeset
  1977
            right := right + selectionInsetY.
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1978
        ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1979
    ].
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  1980
    ^ Rectangle left:left top:top right:right bottom:bottom
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1981
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1982
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  1983
makeToBaseLine:aLnNr
1962
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1984
    "rotate lines to make the line #aLnNr be the new base line (i.e.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1985
     subtract (aLnNr-1) from all lines and take modulu the number of lines"
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1986
1963
38173bc0bd42 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1962
diff changeset
  1987
    |lineTopsOrLefts isHorizontal|
38173bc0bd42 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1962
diff changeset
  1988
38173bc0bd42 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1962
diff changeset
  1989
    isHorizontal := self isHorizontal.
1962
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1990
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1991
    "collect per-lineNr offsets"
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1992
    lineTopsOrLefts := (1 to:numberOfLines) collect:[:lnr |
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1993
                            |tabNr layout|
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1994
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1995
                            tabNr := list findFirst:[:aTab| aTab lineNr == lnr].
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1996
                            layout := (list at:tabNr) layout.
1963
38173bc0bd42 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1962
diff changeset
  1997
                            isHorizontal ifTrue:[
1962
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1998
                                layout top.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  1999
                            ] ifFalse:[
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2000
                                layout left.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2001
                            ].
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2002
                       ].
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2003
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2004
    "change offsets of all tabs"
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2005
    list do:[:el |
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2006
        |layout topOrLeft nr newNr|
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2007
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2008
        nr := el lineNr.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2009
        newNr := nr - aLnNr + 1.
1964
Claus Gittinger <cg@exept.de>
parents: 1963
diff changeset
  2010
        newNr <= 0 ifTrue:[ newNr := newNr + numberOfLines].
1962
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2011
        newNr := ((newNr - 1) \\ numberOfLines) + 1.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2012
        topOrLeft := lineTopsOrLefts at:newNr.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2013
        layout := el layout.
1963
38173bc0bd42 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1962
diff changeset
  2014
        isHorizontal ifTrue:[
1962
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2015
            layout setTop:topOrLeft.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2016
        ] ifFalse:[
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2017
            layout setLeft:topOrLeft.            
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2018
        ].
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2019
        el lineNr:newNr.
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2020
    ].
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2021
5b0098ec76a8 preserve the tabs order when selecting a tab
Claus Gittinger <cg@exept.de>
parents: 1892
diff changeset
  2022
    self invalidate.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2023
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2024
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2025
recomputeList
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2026
    "recompute list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2027
    "
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2028
    |tab|
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2029
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2030
    numberOfLines      := 1.
1403
2bf484705c41 optimize opening
Claus Gittinger <cg@exept.de>
parents: 1401
diff changeset
  2031
    lastComputedExtent := self extent.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2032
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2033
    self transformation:nil.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2034
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  2035
    list size ~~ 0 ifTrue:[
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2036
        self isHorizontal ifTrue:[ self recomputeListHorizontal ]
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2037
                         ifFalse:[ self recomputeListVertical ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2038
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2039
        tab := self selectedTab.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2040
        tab isNil ifTrue:[tab := list first].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2041
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2042
    ].
2725
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2043
    self validateVisibleCanvas.
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  2044
    self resizeCanvas.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2045
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2046
    self hasScrollButtons ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2047
        self isHorizontal ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2048
            buttonNext direction:#right.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2049
            buttonPrev direction:#left.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2050
        ] ifFalse:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2051
            buttonNext direction:#down.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2052
            buttonPrev direction:#up.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2053
        ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2054
        self makeVisible:tab.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2055
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2056
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2057
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2058
recomputeListHorizontal
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2059
    "recompute list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2060
    "
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2061
    |layout lastLyt tabExtent isScrollable
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2062
     xLeft       "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2063
     xRight      "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2064
     yTop        "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2065
     tabWidth    "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2066
     tabHeight   "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2067
     delta       "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2068
     first       "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2069
     last        "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2070
     border      "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2071
     lastLnNr    "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2072
     tabLvlAbs   "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2073
     minLeft     "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2074
     maxRight    "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2075
     leftMargin  "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2076
     rightMargin "{ Class:SmallInteger }"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2077
    |
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2078
    numberOfLines := 1.
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2079
    tabLvlAbs     := tabLevel abs max:1.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2080
    border        := tabLevel * 2.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2081
    tabHeight     := 0.
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2082
    leftMargin    := self tabLeftMargin.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2083
    rightMargin   := self tabRightMargin.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2084
    minLeft       := leftMargin + selectionInsetX.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2085
    maxRight      := self width - rightMargin - selectionInsetX.
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2086
    xLeft         := minLeft.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2087
    isScrollable  := self hasScrollButtons.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2088
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2089
    list do:[:aTab|
2431
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
  2090
        tabExtent := self preferredExtentForTab:aTab.
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
  2091
        tabWidth  := tabExtent x + border.
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
  2092
        tabHeight := tabExtent y max:tabHeight.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2093
        xRight    := xLeft + tabWidth.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2094
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2095
        (isScrollable not and:[xRight > maxRight]) ifTrue:[
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2096
            xLeft ~~ minLeft ifTrue:[
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2097
                numberOfLines := numberOfLines + 1.
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2098
                xLeft  := minLeft.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2099
                xRight := xLeft + tabWidth.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2100
            ].
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2101
            xRight > maxRight ifTrue:[
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2102
                tabWidth := maxRight - minLeft.
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2103
                xRight   := maxRight.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2104
            ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2105
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2106
        aTab lineNr:numberOfLines.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2107
        aTab layout:(Rectangle left:xLeft top:0 width:tabWidth height:tabHeight).
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2108
        xLeft := xRight.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2109
    ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2110
    tabHeight := tabHeight + tabLvlAbs.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2111
    yTop      := selectionInsetY + tabTopMargin.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2112
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2113
    direction == #bottom ifTrue:[
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2114
        yTop  := self height - tabHeight - yTop.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2115
        delta := tabHeight negated.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2116
    ] ifFalse:[
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2117
        delta := tabHeight
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2118
    ].
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2119
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2120
    lastLnNr := numberOfLines.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2121
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2122
    list reverseDo:[:aTab|
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2123
        aTab lineNr ~~ lastLnNr ifTrue:[
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2124
            lastLnNr := aTab lineNr.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2125
            yTop := yTop + delta
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2126
        ].
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2127
        layout := aTab layout.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2128
        layout setTop:yTop.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2129
        layout height:tabHeight.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2130
    ].
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2131
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2132
    tabModus ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2133
        layout := (list at:1) layout.
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2134
        delta  := direction == #top ifTrue:[self height - layout bottom]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2135
                                   ifFalse:[layout top negated].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2136
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2137
        list do:[:aTab| aTab layout setTop:(aTab layout top + delta)].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2138
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2139
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2140
    "/ FIT LINES
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2141
    (numberOfLines ~~ 1 or:[fitLastRow]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2142
        ^ self
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2143
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2144
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2145
    first := 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2146
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2147
    1 to:numberOfLines do:[:aLnNr|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2148
        last    := list findLast:[:t|t lineNr == aLnNr].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2149
        lastLyt := (list at:last) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2150
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2151
        (delta := maxRight - lastLyt right) > 0 ifTrue:[
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2152
            xLeft := minLeft.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2153
            delta := delta // (last - first + 1).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2154
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2155
            delta ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2156
                list from:first to:last do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2157
                    layout   := aTab layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2158
                    tabWidth := layout width + delta.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2159
                    layout setLeft:xLeft.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2160
                    layout width:tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2161
                    xLeft := xLeft + tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2162
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2163
            ].
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2164
            lastLyt width:(maxRight - lastLyt left)
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2165
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2166
        first := last + 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2167
    ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2168
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2169
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2170
recomputeListVertical
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2171
    "recompute list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2172
    "
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2173
    |layout lastLyt tabExtent isScrollable
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2174
     xTop        "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2175
     yTop        "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2176
     yBottom     "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2177
     tabWidth    "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2178
     tabHeight   "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2179
     delta       "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2180
     first       "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2181
     last        "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2182
     border      "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2183
     tabLvlAbs   "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2184
     minTop      "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2185
     maxBottom   "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2186
     leftMargin  "{ Class:SmallInteger }"
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2187
     rightMargin "{ Class:SmallInteger }"
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2188
    |
2010
644587a3b8e2 added tabLevel
Claus Gittinger <cg@exept.de>
parents: 2002
diff changeset
  2189
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2190
    numberOfLines := 1.
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2191
    tabLvlAbs     := (tabLevel abs) max:1.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2192
    border        := tabLvlAbs * 2.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2193
    tabHeight     := 0.
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2194
    leftMargin    := self tabLeftMargin.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2195
    rightMargin   := self tabRightMargin.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2196
    minTop        := leftMargin + selectionInsetX.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2197
    maxBottom     := self height - rightMargin - selectionInsetX.    
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2198
    yTop          := minTop.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2199
    isScrollable  := self hasScrollButtons.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2200
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2201
    list do:[:aTab|
2431
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
  2202
        tabExtent := self preferredExtentForTab:aTab.
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
  2203
        tabWidth  := tabExtent x + border.
1b643b88adb1 configurable tabLabelInset (default from Stylesheet)
ca
parents: 2396
diff changeset
  2204
        tabHeight := tabExtent y max:tabHeight.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2205
        yBottom   := yTop + tabWidth.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2206
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2207
        (isScrollable not and:[yBottom > maxBottom]) ifTrue:[
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2208
            yTop ~~ minTop ifTrue:[
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2209
                numberOfLines := numberOfLines + 1.
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2210
                yTop    := minTop.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2211
                yBottom := yTop + tabWidth.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2212
            ].
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2213
            yBottom > maxBottom ifTrue:[
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2214
                tabWidth := maxBottom - minTop.
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2215
                yBottom  := maxBottom.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2216
            ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2217
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2218
        aTab lineNr:numberOfLines.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2219
        aTab layout:(Rectangle left:0 top:yTop width:tabHeight height:tabWidth).
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2220
        yTop := yBottom
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2221
    ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2222
    tabHeight := tabHeight + tabLvlAbs.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  2223
    xTop      := selectionInsetY + tabTopMargin.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2224
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2225
    direction == #right ifTrue:[
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2226
        xTop  := self width - tabHeight - xTop.
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2227
        delta := tabHeight negated.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2228
    ] ifFalse:[
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2229
        delta := tabHeight.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2230
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2231
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2232
    last  := numberOfLines.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2233
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2234
    list reverseDo:[:aTab|
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2235
        aTab lineNr ~~ last ifTrue:[
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2236
            last := aTab lineNr.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2237
            xTop := xTop + delta
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2238
        ].
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2239
        layout := aTab layout.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2240
        layout setLeft:xTop.
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2241
        layout   width:tabHeight.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2242
    ].
2281
7a0aed755e96 *** empty log message ***
ca
parents: 2280
diff changeset
  2243
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2244
    tabModus ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2245
        layout := (list at:1) layout.
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2246
        delta  := direction == #left ifTrue:[self width - layout right]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2247
                                    ifFalse:[layout left negated].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2248
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2249
        list do:[:aTab| aTab layout setLeft:(aTab layout left + delta)].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2250
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2251
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2252
    "/ FIT LINES
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2253
    (numberOfLines ~~ 1 or:[fitLastRow]) ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2254
        ^ self
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2255
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2256
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2257
    first := 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2258
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2259
    1 to:numberOfLines do:[:aLnNr|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2260
        last    := list findLast:[:t|t lineNr == aLnNr].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2261
        lastLyt := (list at:last) layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2262
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2263
        (delta := maxBottom - lastLyt bottom) > 0 ifTrue:[
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2264
            yTop  := minTop.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2265
            delta := delta // (last - first + 1).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2266
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2267
            delta ~~ 0 ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2268
                list from:first to:last do:[:aTab|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2269
                    layout   := aTab layout.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2270
                    tabWidth := layout height + delta.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2271
                    layout setTop:yTop.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2272
                    layout height:tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2273
                    yTop := yTop + tabWidth.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2274
                ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2275
            ].
2286
43f23901a999 *** empty log message ***
ca
parents: 2285
diff changeset
  2276
            lastLyt height:(maxBottom - lastLyt top)
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2277
        ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2278
        first := last + 1.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2279
    ]
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  2280
!
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  2281
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  2282
resizeCanvas
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  2283
    |layout borderWd|
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  2284
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  2285
    canvas notNil ifTrue:[
2002
d8a0fba7b75a comment
Claus Gittinger <cg@exept.de>
parents: 1988
diff changeset
  2286
        layout := self computeBorderLayout.
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  2287
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  2288
        list notEmpty ifTrue:[
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  2289
            borderWd := tabLevel abs.
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  2290
            layout   := layout insetBy:(canvasInset + borderWd).
2284
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2291
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2292
            tabBottomMargin > 0 ifTrue:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2293
                (direction == #top or:[direction == #bottom]) ifTrue:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2294
                    layout height:(layout height - tabBottomMargin).
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2295
                    direction == #top ifTrue:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2296
                        layout setTop:(layout top + tabBottomMargin)
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2297
                    ]
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2298
                ] ifFalse:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2299
                    layout width:(layout width - tabBottomMargin).
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2300
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2301
                    direction == #left ifTrue:[
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2302
                        layout setLeft:(layout left + tabBottomMargin)
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2303
                    ]
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2304
                ]
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2305
                
98fe5dda1454 *** empty log message ***
ca
parents: 2283
diff changeset
  2306
            ].
2036
6f3927ad36fc oops - strange side effect
Claus Gittinger <cg@exept.de>
parents: 2035
diff changeset
  2307
        ].
2161
f62cdcac0e9f do not change the layout, if the computation results in the
Claus Gittinger <cg@exept.de>
parents: 2139
diff changeset
  2308
        layout = canvas layout ifFalse:[
f62cdcac0e9f do not change the layout, if the computation results in the
Claus Gittinger <cg@exept.de>
parents: 2139
diff changeset
  2309
            canvas layout:layout.
2278
1ce91d0009e8 *** empty log message ***
ca
parents: 2215
diff changeset
  2310
        ].
1680
f4214f754c57 bug fixes redraw;
ca
parents: 1678
diff changeset
  2311
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2312
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2313
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2314
!NoteBookView methodsFor:'obsolete'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2315
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2316
canvasFrameLevel
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2317
    "ignorred
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2318
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2319
    ^ 0
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2320
!
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2321
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2322
canvasFrameLevel:anInteger
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2323
    "ignorred
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2324
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2325
!
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2326
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2327
labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2328
    "return the list of labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2329
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2330
    ^ self list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2331
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2332
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2333
labels:aListOfLabels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2334
    "set the list of labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2335
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2336
    ^ self list:aListOfLabels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2337
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2338
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2339
labelsHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2340
    "get the model, which keeps the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2341
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2342
    ^ self listHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2343
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2344
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2345
labelsHolder:aValueHolder
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2346
    "set the model, which keeps the list of Tabs or Labels
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2347
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2348
    self listHolder:aValueHolder. 
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2349
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2350
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2351
!NoteBookView methodsFor:'private'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2352
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2353
processAccessCharacter:aKey
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2354
    "a character is pressed; check for tab identified y the character
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2355
     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
  2356
    "
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2357
    |j size char blck|
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2358
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2359
    (aKey isCharacter and:[(size := list size) ~~ 0]) ifFalse:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2360
        ^ false
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2361
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2362
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2363
    size == selection ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2364
        size == 1 ifTrue:[^ false].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2365
        j := 1
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2366
    ] ifFalse:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2367
        j := selection isNil ifTrue:[1] ifFalse:[selection + 1]
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2368
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2369
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2370
    char := aKey asLowercase.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2371
    blck := [:i| ((list at:i) accessCharacter == char and:[self isSelectable:i]) ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2372
                      self selection:i.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2373
                    ^ true
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2374
                  ]        
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2375
            ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2376
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2377
    j to:size  do:blck.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2378
    1 to:(j-1) do:blck.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2379
  ^ false
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2380
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2381
!
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2382
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2383
processShortcutKey:aKey
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2384
    "if there is a short-key for that character, process it
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2385
     and return true. Otherwise, return false.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2386
    "
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2387
    |j k size rawKey blck|
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2388
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2389
    (size := list size) == 0 ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2390
        ^ false
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2391
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2392
    rawKey := device keyboardMap keyAtValue:aKey ifAbsent:aKey.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2393
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2394
    size == selection ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2395
        size == 1 ifTrue:[^ false].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2396
        j := 1
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2397
    ] ifFalse:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2398
        j := selection isNil ifTrue:[1] ifFalse:[selection + 1]
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2399
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2400
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2401
    blck := [:i| k := (list at:i) shortcutKey.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2402
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2403
                 (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
  2404
                     self selection:i.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2405
                   ^ true
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2406
                 ]
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2407
            ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2408
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2409
    j to:size  do:blck.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2410
    1 to:(j-1) do:blck.
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2411
  ^ false
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2412
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2413
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2414
!NoteBookView methodsFor:'private-buttons'!
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2415
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2416
buttonLayoutUpdate
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2417
    |layout bW h y w x e|
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2418
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2419
    self hasScrollButtons ifFalse:[^ self].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2420
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2421
    (numberOfLines isNil or:[list size == 0]) ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2422
        self transformation:nil.
2706
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2423
        self hideButton:buttonPrev.
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2424
        self hideButton:buttonNext.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2425
        ^ self
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2426
    ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2427
    layout := list first layout.
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2428
    bW := self buttonWidth.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2429
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2430
    self isHorizontal ifTrue:[
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2431
        y := layout top.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2432
        h := layout height.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2433
        e := bW @ h.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2434
        buttonPrev origin:(self tabLeftMargin)@y extent:e.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2435
        buttonNext origin:(self width - self tabRightMargin - bW) @ y extent:e.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2436
    ] ifFalse:[
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2437
        x := layout left.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2438
        w := layout width.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2439
        e := w @ bW.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2440
        buttonPrev origin:x@(self tabLeftMargin) extent:e.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2441
        buttonNext origin:x@(self height - self tabRightMargin - bW) extent:e.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2442
    ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2443
!
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2444
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2445
buttonWidth
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2446
    "returns the button extent x or y dependent on the layout
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2447
    "
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2448
    ^ 16
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2449
!
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2450
2706
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2451
hideButton:aButton
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2452
    aButton controller buttonRelease:#select x:0 y:0.
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2453
    aButton unmap.
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2454
!
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2455
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2456
makeVisible:aTab
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2457
    "setup transformation to make the selection visible;
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2458
     returns true if the transformation has changed otherwise false.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2459
    "
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2460
    |layoutLast isHorizontal max maxAllowed oldTrans newTrans leftMargin rightMargin|
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2461
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2462
    (numberOfLines notNil and:[self hasScrollButtons]) ifFalse:[
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2463
        ^ false
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2464
    ].
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2465
2687
7c7bedb930c6 bugfix for empty selection
ca
parents: 2686
diff changeset
  2466
    aTab isNil ifTrue:[
7c7bedb930c6 bugfix for empty selection
ca
parents: 2686
diff changeset
  2467
        list size == 0 ifTrue:[
2706
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2468
            self hideButton:buttonPrev.
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2469
            self hideButton:buttonNext.
2687
7c7bedb930c6 bugfix for empty selection
ca
parents: 2686
diff changeset
  2470
            self transformation:nil.
7c7bedb930c6 bugfix for empty selection
ca
parents: 2686
diff changeset
  2471
        ].
7c7bedb930c6 bugfix for empty selection
ca
parents: 2686
diff changeset
  2472
        ^ false.
7c7bedb930c6 bugfix for empty selection
ca
parents: 2686
diff changeset
  2473
    ].
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2474
    oldTrans     := self transformation.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2475
    isHorizontal := self isHorizontal.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2476
    layoutLast   := list last layout.
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2477
    leftMargin   := self tabLeftMargin.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2478
    rightMargin  := self tabRightMargin.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2479
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2480
    isHorizontal ifTrue:[
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2481
        max        := layoutLast right.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2482
        maxAllowed := self width - rightMargin.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2483
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2484
        max > maxAllowed ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2485
            self makeVisibleHorizontal:aTab.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2486
        ] ifFalse:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2487
            self transformation:nil.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2488
        ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2489
    ] ifFalse:[
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2490
        max        := layoutLast bottom.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2491
        maxAllowed := self height - rightMargin.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2492
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2493
        max > maxAllowed ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2494
            self makeVisibleVertical:aTab.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2495
        ] ifFalse:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2496
            self transformation:nil.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2497
        ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2498
    ].                
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2499
    newTrans := self transformation.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2500
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2501
    newTrans isNil ifTrue:[
2706
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2502
        self hideButton:buttonPrev.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2503
    ] ifFalse:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2504
        buttonPrev map.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2505
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2506
        max := isHorizontal ifTrue:[newTrans applyToX:max]
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2507
                           ifFalse:[newTrans applyToY:max].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2508
    ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2509
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2510
    max > maxAllowed ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2511
        buttonNext map
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2512
    ] ifFalse:[
2706
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2513
        self hideButton:buttonNext.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2514
    ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2515
    ^ oldTrans ~~ newTrans
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2516
!
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2517
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2518
makeVisibleHorizontal:aTab
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2519
    "setup transformation to make the horizontal selection visible
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2520
    "
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2521
    |trans bounds xL xR xI minLeft maxRight|
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2522
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2523
    trans  := self transformation.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2524
    bounds := self computeLayoutForTab:aTab.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2525
    xL     := bounds left.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2526
    xI     := self buttonWidth.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2527
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2528
    trans notNil ifTrue:[ xL := trans applyToX:xL ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2529
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2530
    minLeft := self tabLeftMargin.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2531
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2532
    xL < (xI + minLeft) ifTrue:[
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2533
        list first == aTab ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2534
            trans := nil.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2535
        ] ifFalse:[
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2536
            trans := WindowingTransformation scale:nil translation:(((xI + minLeft) - bounds left) @ 0).
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2537
        ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2538
        self transformation:trans.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2539
        ^ self
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2540
    ].
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2541
    xR       := xL + bounds width.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2542
    maxRight := self width - self tabRightMargin.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2543
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2544
    xR > (maxRight - xI) ifTrue:[
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2545
        list last == aTab ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2546
            xI := 0.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2547
        ].
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2548
        trans := WindowingTransformation scale:nil translation:((maxRight - xI - bounds right) @ 0).
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2549
        self transformation:trans.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2550
    ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2551
!
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2552
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2553
makeVisibleVertical:aTab
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2554
    "setup transformation to make the vertical selection visible
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2555
    "
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2556
    |trans bounds xL xR xI minTop maxBot|
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2557
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2558
    trans   := self transformation.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2559
    bounds  := self computeLayoutForTab:aTab.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2560
    xL      := bounds top.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2561
    xI      := self buttonWidth.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2562
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2563
    trans notNil ifTrue:[ xL := trans applyToY:xL ].
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2564
    minTop := self tabLeftMargin.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2565
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2566
    xL < (xI + minTop) ifTrue:[
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2567
        list first == aTab ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2568
            trans := nil
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2569
        ] ifFalse:[
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2570
            trans := WindowingTransformation scale:nil translation:(0@((minTop + xI) - bounds top)).
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2571
        ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2572
        self transformation:trans.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2573
        ^ self
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2574
    ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2575
    xR := xL + bounds height.
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2576
    maxBot := self height - self tabRightMargin.
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2577
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2578
    xR > (maxBot - xI) ifTrue:[
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2579
        list last == aTab ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2580
            xI := 0.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2581
        ].
2691
e0c0363d973b support of left and right margin
ca
parents: 2687
diff changeset
  2582
        trans := WindowingTransformation scale:nil translation:(0@ (maxBot - xI - bounds bottom)).
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2583
        self transformation:trans.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2584
    ].
2698
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2585
!
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2586
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2587
scrollButtonPressed:whichButton
2706
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2588
    |trans idx isNext nIdx pIdx|
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2589
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2590
    list isEmptyOrNil ifTrue:[^ self].
2698
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2591
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2592
    whichButton == #scrollRight ifTrue:[
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2593
        isNext := true
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2594
    ] ifFalse:[
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2595
        whichButton == #scrollLeft ifFalse:[^ self].
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2596
        isNext := false.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2597
    ].
2706
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2598
    trans := self transformation.
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2599
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2600
    self isHorizontal ifTrue:[ |y xN xP|
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2601
        y  := list first layout top.
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2602
        xN := buttonNext origin x + 2.
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2603
        xP := buttonPrev corner x - 2.   
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2604
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2605
        trans notNil ifTrue:[
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2606
            xN := trans applyInverseToX:xN.
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2607
            xP := trans applyInverseToX:xP.
2698
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2608
        ].
2706
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2609
        nIdx := list findFirst:[:aTab| aTab containsPointX:xN y:y ].
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2610
        pIdx := list findFirst:[:aTab| aTab containsPointX:xP y:y ].
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2611
    ] ifFalse:[ |x yN yP|
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2612
        x  := list first layout left.
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2613
        yN := buttonNext origin y + 2.
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2614
        yP := buttonPrev corner y - 2.
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2615
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2616
        trans notNil ifTrue:[
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2617
            yN := trans applyInverseToY:yN.
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2618
            yP := trans applyInverseToY:yP.
2698
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2619
        ].
2706
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2620
        nIdx := list findFirst:[:aTab| aTab containsPointX:x y:yN ].
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2621
        pIdx := list findFirst:[:aTab| aTab containsPointX:x y:yP ].
2698
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2622
    ].
2706
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2623
    idx := isNext ifTrue:[nIdx] ifFalse:[pIdx].
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2624
2698
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2625
    idx == 0 ifTrue:[
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2626
        idx := isNext ifTrue:[list size] ifFalse:[1].
2706
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2627
    ] ifFalse:[ |revIdx|
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2628
        revIdx := isNext ifTrue:[pIdx] ifFalse:[nIdx].
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2629
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2630
        revIdx == idx ifTrue:[
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2631
            isNext ifTrue:[
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2632
                idx := revIdx + 1 min:(list size).
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2633
            ] ifFalse:[
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2634
                idx := revIdx - 1 max:1.
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2635
            ]
396f42adc012 bugfix: scroll next/prev on very long tab labels
ca
parents: 2698
diff changeset
  2636
        ].
2698
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2637
    ].
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2638
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2639
    (self makeVisible:(list at:idx ifAbsent:nil)) ifTrue:[
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2640
        self invalidate.
b7a80e7a16d2 Checkin for cg.
martin
parents: 2691
diff changeset
  2641
    ].
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2642
! !
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2643
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2644
!NoteBookView methodsFor:'queries'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2645
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2646
isFirstTabInLine:aTab
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2647
    "returns true if the tab is the first tab in the line
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2648
     used by drawing
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2649
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2650
    |idx prevTab|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2651
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2652
    idx := list identityIndexOf:aTab.
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2653
    prevTab := list at:(idx - 1) ifAbsent:nil.
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2654
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2655
  ^ prevTab isNil or:[prevTab lineNr ~~ aTab lineNr]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2656
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2657
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2658
isLastTabInLine:aTab
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2659
    "returns true if the tab is the last tab in the line
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2660
     used by drawing
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2661
    "
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2662
    |index nextTab|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2663
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2664
    index   := list identityIndexOf:aTab.
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2665
    nextTab := list at:(index + 1) ifAbsent:nil.
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2666
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2667
  ^ nextTab isNil or:[nextTab lineNr ~~ aTab lineNr]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2668
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2669
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2670
!NoteBookView methodsFor:'selection'!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2671
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2672
isSelectable:anIndex
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2673
    "returns true if tab at an index is selectable
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2674
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2675
    (anIndex notNil and:[anIndex between:1 and:list size]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2676
        (list at:anIndex) isEnabled ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2677
            ^ selectConditionBlock isNil ifTrue:[true]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2678
                                        ifFalse:[selectConditionBlock value:anIndex]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2679
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2680
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2681
    ^ false
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2682
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2683
2396
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2684
nextSelectableAfter:anIndex wrapAtEnd:wrapAtEnd
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2685
    "return the index of the next selectable entry after the index;
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2686
     wrap at end if the wrapAtEnd flag is set to true.
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2687
    "
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2688
    |size idx|
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2689
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2690
    size := list size.
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2691
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2692
    size > 1 ifTrue:[
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2693
        idx := anIndex + 1.
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2694
        idx to:size do:[:i| (self isSelectable:i) ifTrue:[^ i] ].
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2695
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2696
        wrapAtEnd ifTrue:[
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2697
            idx := anIndex - 1.
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2698
            1 to:idx do:[:i| (self isSelectable:i) ifTrue:[^ i] ].
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2699
        ]
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2700
    ].
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2701
    ^ 0
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2702
!
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2703
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2704
previousSelectableBefore:anIndex wrapAtBegin:wrapAtBegin
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2705
    "return the index of the previous selectable entry before the index;
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2706
     wrap at begin if the wrapAtBegin flag is set to true.
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2707
    "
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2708
    |size idx|
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2709
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2710
    size := list size.
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2711
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2712
    size > 1 ifTrue:[
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2713
        idx := anIndex - 1.
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2714
        idx to:1 by:-1 do:[:i| (self isSelectable:i) ifTrue:[^ i] ].
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2715
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2716
        wrapAtBegin ifTrue:[
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2717
            idx := anIndex + 1.
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2718
            size to:idx by:-1 do:[:i| (self isSelectable:i) ifTrue:[^ i] ].
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2719
        ]
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2720
    ].
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2721
    ^ 0
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2722
!
775112222b05 add #nextSelectableAfter:.. and #previousSelectableBefore:...; prepared for Tabbing
ca
parents: 2391
diff changeset
  2723
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2724
selectedTab
2718
3da9fcf60559 *** empty log message ***
ca
parents: 2706
diff changeset
  2725
    "returns the selected tab or nil
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2726
    "
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2727
    (selection notNil and:[selection ~~ 0]) ifTrue:[
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2728
        ^ list at:selection ifAbsent:nil
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2729
    ].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2730
    ^ nil
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2731
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2732
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2733
selection
2740
c9812e019351 enhancements by Jan
Claus Gittinger <cg@exept.de>
parents: 2739
diff changeset
  2734
    "return the selection or nil/o; caring for the useIndex setting.
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2735
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2736
    selection isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2737
        ^ useIndex ifTrue:[0] ifFalse:[nil]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2738
    ].
2213
58cc47a8fb2d some redrawing refactored
Claus Gittinger <cg@exept.de>
parents: 2161
diff changeset
  2739
    ^ useIndex ifTrue:[selection] ifFalse:[self selectedTab label]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2740
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2741
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2742
selection:anIndexOrNil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2743
    "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
  2744
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2745
    |oldSel|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2746
1407
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  2747
    anIndexOrNil ~~ selection ifTrue:[
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  2748
        oldSel := selection.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  2749
        self setSelection:anIndexOrNil.
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  2750
        oldSel ~~ selection ifTrue:[self selectionChanged]
4f151198c452 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1403
diff changeset
  2751
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2752
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2753
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2754
selectionChanged
2532
7a06df99a078 category change
Claus Gittinger <cg@exept.de>
parents: 2529
diff changeset
  2755
    "selection has changed; update model and evaluate change action"
7a06df99a078 category change
Claus Gittinger <cg@exept.de>
parents: 2529
diff changeset
  2756
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2757
    |sel|
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2758
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2759
    sel := self selection.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2760
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2761
    model  notNil ifTrue:[model  value:sel].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2762
    action notNil ifTrue:[action value:sel]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2763
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2764
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2765
setSelection:anIndexOrNil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2766
    "change the selection to index or nil. No notifications are raised
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2767
    "
2725
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2768
    |newSel oldSel oldBounds newBounds|
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2769
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2770
    newSel := self listIndexOf:anIndexOrNil.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2771
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2772
    (newSel notNil and:[(self isSelectable:newSel) not]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2773
        newSel := nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2774
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2775
    selection == newSel ifTrue:[^ self].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2776
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2777
    numberOfLines isNil ifTrue:[
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2778
        selection := newSel.
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2779
        ^ self.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2780
    ].
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2781
    oldSel    := selection.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2782
    selection := newSel.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2783
    newBounds := self computeLayoutForTab:(self selectedTab).
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2784
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2785
    (self makeVisible:(self selectedTab)) ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2786
        self invalidate.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2787
    ] ifFalse:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2788
        shown ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2789
            oldSel notNil ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2790
                selection := oldSel.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2791
                oldBounds := self computeLayoutForTab:(self selectedTab).
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2792
                selection := newSel.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2793
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2794
                (newBounds notNil and:[newBounds intersects:oldBounds]) ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2795
                    newBounds := newBounds merge:oldBounds.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2796
                ] ifFalse:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2797
                    self invalidate:oldBounds
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2798
                ].
2215
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2799
            ].
2686
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2800
            newBounds notNil ifTrue:[
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2801
                self invalidate:newBounds.
9f19f9c776e1 new functionality: make scrollable
ca
parents: 2682
diff changeset
  2802
            ]
2215
cdec3af44868 bug fix in setSelection:
ca
parents: 2213
diff changeset
  2803
        ].
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2804
    ].
2725
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2805
    self validateVisibleCanvas.
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2806
!
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2807
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2808
validateVisibleCanvas
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2809
    |model newCanvas selectedTab|
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2810
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2811
    selectedTab := self selectedTab.
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2812
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2813
    selectedTab notNil ifTrue:[
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2814
        model := selectedTab model.
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2815
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2816
        model isNil ifTrue:[
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2817
            ^ self
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2818
        ].
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2819
        newCanvas := model canvasView.
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2820
    ].
1724
6557e3112383 avoid redraw/resize if a tabItems label has changed,
Claus Gittinger <cg@exept.de>
parents: 1700
diff changeset
  2821
2725
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2822
    newCanvas == canvas ifTrue:[
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2823
        ^ self
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2824
    ].
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2825
2725
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2826
    canvas notNil ifTrue:[
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2827
        (canvas objectAttributeAt:#isTabItem) == true ifFalse:[
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2828
            ^ self.
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2829
        ]
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2830
    ].
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2831
    self canvas:newCanvas.
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2832
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2833
    canvasHolder notNil ifTrue:[
2725
69a5b53b1b72 bugfix: update visible canvas if selection changed
ca
parents: 2723
diff changeset
  2834
        canvasHolder value:newCanvas.
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2835
    ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2836
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2837
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2838
!NoteBookView::Tab class methodsFor:'instance creation'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2839
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2840
label:aLabel on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2841
    ^ self basicNew label:aLabel on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2842
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2843
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2844
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2845
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2846
!NoteBookView::Tab methodsFor:'accessing'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2847
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2848
accessCharacter
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2849
    "returns the access character or nil
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2850
    "
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2851
    ^ accessCharacter
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2852
!
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2853
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2854
foregroundColor
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2855
    "returns the foregroundColor or nil
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2856
    "
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2857
    model notNil ifTrue:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2858
        ^ model foregroundColor
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2859
    ].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2860
    ^ nil
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2861
!
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2862
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2863
label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2864
    "returns my original label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2865
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2866
    ^ label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2867
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2868
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2869
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2870
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2871
label:aLabel on:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2872
    "initialize attributes
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2873
    "
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2874
    label           := aLabel.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2875
    model           := (aLabel isKindOf:TabItem) ifTrue:[aLabel] ifFalse:[nil].
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2876
    accessCharacter := nil.
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2877
    printableLabel  := model notNil ifTrue:[model rawLabel] ifFalse:[aLabel].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2878
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2879
    printableLabel notNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2880
        printableLabel isImageOrForm ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2881
            printableLabel := printableLabel onDevice:(aGC device)
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2882
        ] ifFalse:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2883
            printableLabel isString ifTrue:[
2629
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  2884
                printableLabel := self resolveDisplayStringFor:printableLabel on:aGC.
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2885
            ] ifFalse:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2886
                printableLabel class == LabelAndIcon ifTrue:[
2629
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  2887
                    printableLabel string:(self resolveDisplayStringFor:(printableLabel string) on:aGC)
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  2888
                ]
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2889
            ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  2890
        ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2891
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2892
        printableLabel := ''
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2893
    ].
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2894
    extent := (printableLabel widthOn:aGC) @ (printableLabel heightOn:aGC).
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2895
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2896
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2897
lineNr
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2898
    "get the line number within the noteBook view
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2899
     1 -> on top of the wizard
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2900
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2901
    ^ lineNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2902
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2903
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2904
lineNr:aLineNr
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2905
    "set the line number within the noteBook view
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2906
     1 -> on top of the wizard
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2907
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2908
    lineNr := aLineNr
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2909
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2910
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2911
model
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2912
    "returns the model, a TabItem or nil
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2913
    "
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2914
    ^ model
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2915
!
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2916
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2917
printableLabel
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2918
    "get my printable label
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2919
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2920
    ^ printableLabel
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2921
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2922
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2923
1672
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2924
shortcutKey
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2925
    "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
  2926
    "
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2927
    model notNil ifTrue:[
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2928
        ^ model shortcutKey
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2929
    ].
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2930
    ^ nil
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2931
!
31dcb579f88a support accelerator and accessCharacter (position or &)
ca
parents: 1663
diff changeset
  2932
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2933
string
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2934
    "access the printable string used for steping through a list
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2935
     searching for an entry starting with a character.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2936
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2937
    ^ printableLabel perform:#string ifNotUnderstood:nil
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2938
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2939
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2940
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
  2941
!NoteBookView::Tab methodsFor:'accessing-dimensions'!
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2942
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2943
extent
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2944
    "returns the extent of the label, the minimum size required by the tab
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2945
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2946
    ^ extent
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2947
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2948
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2949
layout
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  2950
    "get the tab's layout, set by the noteBook view
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2951
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2952
    ^ layout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2953
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2954
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2955
layout:aLayout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2956
    "set the tab's layout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2957
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2958
    layout := aLayout
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2959
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2960
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2961
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2962
1818
fe99c5c721e9 category changes
Claus Gittinger <cg@exept.de>
parents: 1802
diff changeset
  2963
!NoteBookView::Tab methodsFor:'accessing-mvc'!
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2964
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2965
addDependent:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2966
    "make the noteBook be a dependent of the tab model
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2967
    "
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2968
    model notNil ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2969
        model addDependent:aGC
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2970
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2971
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2972
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2973
!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2974
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2975
removeDependent:aGC
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2976
    "make the noteBook be independent of the tab model
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2977
    "
1759
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2978
    model notNil ifTrue:[
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2979
        model destroyCanvas.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2980
        model removeDependent:aGC.
a8b1d1fad2f1 add more functionality; canvas and help
ca
parents: 1724
diff changeset
  2981
    ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2982
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2983
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2984
! !
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2985
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2986
!NoteBookView::Tab methodsFor:'drawing'!
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2987
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2988
displayOn:aGC inset:inset direction:aDirection
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2989
    "redraw tab
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2990
    "
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  2991
    |dispObj lft wdt top hgt
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2992
     y  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2993
     x  "{ Class:SmallInteger }"
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2994
    |
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2995
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2996
    "/ REDRAW LABEL
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2997
    (aGC isEnabled and:[self isEnabled]) ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2998
        dispObj := printableLabel.
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  2999
    ] ifFalse:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3000
        (dispObj := disabledLabel) isNil ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3001
            (dispObj := printableLabel) isImageOrForm ifTrue:[
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3002
                disabledLabel := printableLabel lightened onDevice:(aGC device)
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  3003
            ]
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3004
        ]
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3005
    ].
1442
afa1cabf4e9c viewStyle
Claus Gittinger <cg@exept.de>
parents: 1438
diff changeset
  3006
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3007
    (aDirection == #top or:[aDirection == #bottom]) ifTrue:[
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3008
        lft := layout left  + inset.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3009
        wdt := layout right - inset - lft.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3010
        wdt > 4 ifFalse:[^ self].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3011
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3012
        x := (wdt - extent x) // 2.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3013
        x < 0 ifTrue:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3014
            dispObj := '...'.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3015
            x := 0.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3016
        ].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3017
        x := x + lft.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3018
        y := layout top  + (layout height - inset - extent y // 2).
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3019
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3020
        aDirection == #top ifTrue:[ y := y + inset ].
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3021
2485
b3d92f4a5f7b correct use of ascentOn: for display
Claus Gittinger <cg@exept.de>
parents: 2431
diff changeset
  3022
        y := y + (dispObj ascentOn:aGC).
b3d92f4a5f7b correct use of ascentOn: for display
Claus Gittinger <cg@exept.de>
parents: 2431
diff changeset
  3023
"/        dispObj isImageOrForm ifFalse:[
b3d92f4a5f7b correct use of ascentOn: for display
Claus Gittinger <cg@exept.de>
parents: 2431
diff changeset
  3024
"/            y := y + aGC font ascent
b3d92f4a5f7b correct use of ascentOn: for display
Claus Gittinger <cg@exept.de>
parents: 2431
diff changeset
  3025
"/        ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3026
        dispObj displayOn:aGC x:x y:y.
2485
b3d92f4a5f7b correct use of ascentOn: for display
Claus Gittinger <cg@exept.de>
parents: 2431
diff changeset
  3027
        ^ self
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3028
    ].
2288
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3029
    top := layout  top   + inset.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3030
    hgt := layout bottom - inset - top.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3031
    hgt > 4 ifFalse:[^ self].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3032
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3033
    y := (hgt - extent x) // 2.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3034
    y < 0 ifTrue:[
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3035
        dispObj := '...'.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3036
        y := 0.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3037
    ].
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3038
    y := y + top.
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3039
    x := layout left + (layout width  - inset - extent y // 2).
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3040
43db53a74240 *** empty log message ***
ca
parents: 2287
diff changeset
  3041
    aDirection == #left ifTrue:[ x := x + inset ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3042
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3043
    dispObj isImageOrForm ifFalse:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3044
        dispObj isString ifTrue:[ 
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3045
            x := x + aGC font descent.
1683
282290942a56 bug fixes in category examples
ca
parents: 1682
diff changeset
  3046
        ].
2283
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3047
        "/ workaround for a bug in display-with-angle,
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3048
        "/ iff displayed string is a labelAndIcon.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3049
        "/ (In this case, display is always opaque, and the current
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3050
        "/  backgroundPaint color is used to fill the underlying rectangle)
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3051
        "/
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3052
        aGC backgroundPaint:aGC backgroundColor.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3053
        aGC displayString:dispObj x:x y:y angle:90.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3054
    ] ifTrue:[
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3055
        (dispObj rotated:90) displayOn:aGC x:x y:y.
1ee9ad793fbd *** empty log message ***
ca
parents: 2282
diff changeset
  3056
    ].
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  3057
! !
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  3058
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3059
!NoteBookView::Tab methodsFor:'private'!
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3060
2629
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3061
resolveDisplayStringFor:aString on:aNoteBook
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3062
    |string size rest pos idx|
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3063
2629
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3064
    accessCharacter := nil.
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3065
    string := aNoteBook translateToDisplayLabel:aString.
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3066
    size   := string size.
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3067
    pos    := 0.
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3068
2629
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3069
    size == 0 ifTrue:[ ^ string ].
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3070
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3071
    (model notNil and:[(pos := model accessCharacterPosition) ~~ 0]) ifTrue:[
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3072
        pos > size ifTrue:[pos := 0]
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3073
    ] ifFalse:[
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3074
        idx := 1.
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3075
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3076
        [((idx := string indexOf:$& startingAt:idx) ~~ 0 and:[idx < size])] whileTrue:[
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3077
            rest := string copyFrom:(idx+1).
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3078
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3079
            idx == 1 ifTrue:[string := rest]
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3080
                    ifFalse:[string := (string copyFrom:1 to:(idx-1)), rest].
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3081
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3082
            (string at:idx) == $& ifTrue:[idx := idx + 1]
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3083
                                 ifFalse:[pos := idx].
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3084
            size := size - 1.
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3085
        ]
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3086
    ].
2629
ccf1cca9d6e0 support of translateLabel
ca
parents: 2608
diff changeset
  3087
1677
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3088
    size ~~ 0 ifTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3089
        pos == 0 ifTrue:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3090
            pos := 1
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3091
        ] ifFalse:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3092
            string isText ifFalse:[
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3093
                string := Text string:string
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3094
            ].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3095
            string emphasisAt:pos add:#underline
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3096
        ].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3097
        accessCharacter := (string at:pos) asLowercase
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3098
    ].
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3099
    ^ string
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3100
! !
f5a30ef6a195 accessCharacter for LabelAndIcon support
ca
parents: 1672
diff changeset
  3101
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3102
!NoteBookView::Tab methodsFor:'testing'!
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  3103
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3104
containsPointX:x y:y
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3105
    "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
  3106
    "
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  3107
    layout isNil ifTrue:[^ false].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  3108
  ^ layout containsPointX:x y:y
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  3109
!
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  3110
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3111
intersects:aRectangle
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3112
    "return true, if the intersection between the argument, aRectangle
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3113
     and the tab is not empty
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  3114
    "
2279
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  3115
    layout isNil ifTrue:[^ false].
5a50cd5af676 *** empty log message ***
ca
parents: 2278
diff changeset
  3116
  ^ layout intersects:aRectangle
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3117
!
432
dedc8dee12f5 created:
ca
parents: 419
diff changeset
  3118
1401
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3119
isEnabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3120
    "returne true if no model exists or the model is enabled
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3121
    "
e92d55efca08 total redeisign
Claus Gittinger <cg@exept.de>
parents: 1386
diff changeset
  3122
    ^ (model isNil or:[model isEnabled])
375
365d33b8e942 so far so good
ca
parents: 355
diff changeset
  3123
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  3124
386
eb0dd3efd92c bug fixes
ca
parents: 375
diff changeset
  3125
! !
eb0dd3efd92c bug fixes
ca
parents: 375
diff changeset
  3126
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  3127
!NoteBookView class methodsFor:'documentation'!
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  3128
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  3129
version
2881
5449571d2ea7 destroyButton geom.
Claus Gittinger <cg@exept.de>
parents: 2877
diff changeset
  3130
    ^ '$Header: /cvs/stx/stx/libwidg2/NoteBookView.st,v 1.107 2006-01-19 10:59:09 cg Exp $'
355
4f9e1c795986 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents:
diff changeset
  3131
! !