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