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