TabSpecRuler.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 02 Sep 2022 11:25:39 +0100
branchjv
changeset 6261 9b7eb7159d29
parent 5970 53fd42d2c814
permissions -rw-r--r--
Fix loong standing bug with some menus not being translated / resolved This has happened with browser "View" menu when sometimes it had the slice resolved and sometimes not. It turned out that it was because the code disabled resources (and therefore slices) resolution when processing shortcuts, so the menu was created and cached unresolved. This fixes the issue. eXept apparently run into the same problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
38
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
     1
"
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
     2
 COPYRIGHT (c) 1994 by Claus Gittinger
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
     3
	      All Rights Reserved
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
     4
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
     5
 This software is furnished under a license and may be used
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
     6
 only in accordance with the terms of that license and with the
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
     8
 be provided or otherwise made available to, or used by, any
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
     9
 other person.  No title to or ownership of the software is
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    10
 hereby transferred.
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    11
"
2659
3af857eb52fb invalidate checks itself for shown-flag
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
    12
"{ Package: 'stx:libwidg2' }"
3af857eb52fb invalidate checks itself for shown-flag
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
    13
4997
ce7b2fcf39d8 device access
Claus Gittinger <cg@exept.de>
parents: 4517
diff changeset
    14
"{ NameSpace: Smalltalk }"
ce7b2fcf39d8 device access
Claus Gittinger <cg@exept.de>
parents: 4517
diff changeset
    15
49
claus
parents: 40
diff changeset
    16
SimpleView subclass:#TabSpecRuler
342
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    17
	instanceVariableNames:'tabSpec titles handleStyle handleCursor movedTabIndex movedTabX
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    18
		synchronousOperation handleWidth fixedTabs tabsAreVariable
1445
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
    19
		hiddenTabs masterView'
200
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    20
	classVariableNames:'DefaultHandleStyle'
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    21
	poolDictionaries:''
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    22
	category:'Views-Misc'
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
    23
!
b1663ac8f532 Initial revision
claus
parents:
diff changeset
    24
b1663ac8f532 Initial revision
claus
parents:
diff changeset
    25
!TabSpecRuler class methodsFor:'documentation'!
b1663ac8f532 Initial revision
claus
parents:
diff changeset
    26
38
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    27
copyright
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    28
"
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    29
 COPYRIGHT (c) 1994 by Claus Gittinger
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    30
	      All Rights Reserved
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    31
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    32
 This software is furnished under a license and may be used
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    33
 only in accordance with the terms of that license and with the
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    35
 be provided or otherwise made available to, or used by, any
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    36
 other person.  No title to or ownership of the software is
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    37
 hereby transferred.
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    38
"
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    39
!
858ec30d05fe *** empty log message ***
claus
parents: 36
diff changeset
    40
36
160b8f0dfd7d *** empty log message ***
claus
parents: 29
diff changeset
    41
documentation
160b8f0dfd7d *** empty log message ***
claus
parents: 29
diff changeset
    42
"
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    43
    It shows the tabulator positions of a TabulatorSpecification
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    44
    and allows its tab positions to be manipulated.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    45
    (as shown in a FileBrowser, when the longList is enabled).
200
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    46
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    47
    [author]
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    48
        Claus Gittinger
200
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    49
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    50
    [see also:]
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    51
        TabulatorSpecification
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    52
        Ruler
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
    53
        ListView
36
160b8f0dfd7d *** empty log message ***
claus
parents: 29
diff changeset
    54
"
160b8f0dfd7d *** empty log message ***
claus
parents: 29
diff changeset
    55
!
160b8f0dfd7d *** empty log message ***
claus
parents: 29
diff changeset
    56
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
    57
examples
b1663ac8f532 Initial revision
claus
parents:
diff changeset
    58
"
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    59
                                                                [exBegin]
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    60
    |top head spec|
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
    61
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    62
    top := View new.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    63
    top extent:300@100.
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
    64
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    65
    head := TabSpecRuler in:top.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    66
    head width:1.0.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    67
    head level:1.
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
    68
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    69
    spec := TabulatorSpecification new.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    70
    spec unit:#inch.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    71
    spec positions:#(0     1     2.5    3.5    4       5        ).
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    72
    spec align:    #(#left #left #right #right #center #decimal ).
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
    73
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    74
    head tabulatorSpecification:spec.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    75
    top open.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
    76
                                                                [exEnd]
342
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    77
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    78
                                                                [exBegin]
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    79
    |top head spec|
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    80
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    81
    top := View new.
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    82
    top extent:300@100.
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    83
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    84
    head := TabSpecRuler in:top.
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    85
    head width:1.0.
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    86
    head level:1.
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    87
    head titles:#('col1' 'col2' 'col3' 'col4' 'col5' 'col6').
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    88
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    89
    spec := TabulatorSpecification new.
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    90
    spec unit:#inch.
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    91
    spec positions:#(0     1     2.5    3.5    4       5        ).
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    92
    spec align:    #(#left #left #right #right #center #decimal ).
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    93
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    94
    head tabulatorSpecification:spec.
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    95
    top open.
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    96
                                                                [exEnd]
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
    97
"
b1663ac8f532 Initial revision
claus
parents:
diff changeset
    98
b1663ac8f532 Initial revision
claus
parents:
diff changeset
    99
! !
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   100
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   101
!TabSpecRuler class methodsFor:'defaults'!
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   102
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   103
updateStyleCache
566
11ca5c6ba3d8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 365
diff changeset
   104
    <resource: #style (#'tabRuler.handleStyle')>
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   105
566
11ca5c6ba3d8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 365
diff changeset
   106
    DefaultHandleStyle := StyleSheet at:'tabRuler.handleStyle'.
11ca5c6ba3d8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 365
diff changeset
   107
11ca5c6ba3d8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 365
diff changeset
   108
    "Modified: 20.10.1997 / 15:14:47 / cg"
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   109
! !
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   110
200
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   111
!TabSpecRuler methodsFor:'accessing'!
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   112
2741
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   113
beAsynchronous
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   114
    "clear synchronousOperation mode;
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   115
     if on, a move is immediately forwarded to dependents;
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   116
     of off, its forwarded when the mouse button is released."
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   117
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   118
    synchronousOperation := false.
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   119
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   120
    "Modified: 28.3.1997 / 15:02:07 / cg"
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   121
!
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   122
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   123
beSynchronous
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   124
    "set synchronousOperation mode;
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   125
     if on, a move is immediately forwarded to dependents;
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   126
     of off, its forwarded when the mouse button is released."
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   127
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   128
    synchronousOperation := true.
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   129
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   130
    "Modified: 28.3.1997 / 15:02:07 / cg"
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   131
!
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   132
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   133
fixedTabs
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   134
    "return the collection of tabIndices which are fixed;
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   135
     or nil, if all are variable"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   136
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   137
    ^ fixedTabs
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   138
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   139
    "Created: 28.3.1997 / 15:02:29 / cg"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   140
    "Modified: 28.3.1997 / 15:03:05 / cg"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   141
!
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   142
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   143
fixedTabs:something
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   144
    "set the collection of tabIndices which are fixed;
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   145
     nil, if all are to be variable"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   146
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   147
    fixedTabs := something.
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   148
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   149
    "Created: 28.3.1997 / 15:02:29 / cg"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   150
    "Modified: 28.3.1997 / 15:03:18 / cg"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   151
!
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   152
330
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   153
hiddenTabs
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   154
    "return the collection of tabs which are to be hidden
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   155
     (or nil if all are to be shown)"
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   156
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   157
    ^ hiddenTabs
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   158
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   159
    "Created: 28.3.1997 / 15:35:54 / cg"
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   160
    "Modified: 28.3.1997 / 15:36:18 / cg"
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   161
!
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   162
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   163
hiddenTabs:something
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   164
    "set the collection of tabs which are to be hidden
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   165
     (or nil if all are to be shown)"
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   166
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   167
    hiddenTabs := something.
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   168
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   169
    "Created: 28.3.1997 / 15:35:54 / cg"
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   170
    "Modified: 28.3.1997 / 15:36:24 / cg"
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   171
!
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   172
2741
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   173
isSynchronous
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   174
    "return the synchronousOperation mode settings value"
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   175
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   176
    ^ synchronousOperation
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   177
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   178
    "Created: 28.3.1997 / 15:01:17 / cg"
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   179
    "Modified: 28.3.1997 / 15:02:20 / cg"
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   180
!
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   181
1445
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   182
masterView:aView
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   183
    "set my master view - if non-nil, I will follow the masters scroll-offset"
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   184
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   185
    masterView notNil ifTrue:[
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   186
        masterView removeDependent:self
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   187
    ].
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   188
    masterView := aView.
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   189
    masterView notNil ifTrue:[
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   190
        masterView addDependent:self
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   191
    ].
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   192
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   193
!
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   194
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   195
synchronousOperation
3644
bfe0b80eb056 Mark obsolete methods
Stefan Vogel <sv@exept.de>
parents: 2741
diff changeset
   196
    <resource: #obsolete>
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   197
    "return the synchronousOperation mode settings value"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   198
2741
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   199
    self obsoleteMethodWarning:'use #isSynchronous'.
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   200
    ^ synchronousOperation
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   201
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   202
    "Created: 28.3.1997 / 15:01:17 / cg"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   203
    "Modified: 28.3.1997 / 15:02:20 / cg"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   204
!
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   205
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   206
synchronousOperation:something
3644
bfe0b80eb056 Mark obsolete methods
Stefan Vogel <sv@exept.de>
parents: 2741
diff changeset
   207
    <resource: #obsolete>
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   208
    "set/clear synchronousOperation mode;
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   209
     if on, a move is immediately forwarded to dependents;
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   210
     of off, its forwarded when the mouse button is released."
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   211
2741
cc19b3a131b8 *** empty log message ***
ca
parents: 2672
diff changeset
   212
    self obsoleteMethodWarning:'use #beSynchronous / #beAsynchronous'.
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   213
    synchronousOperation := something.
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   214
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   215
    "Modified: 28.3.1997 / 15:02:07 / cg"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   216
!
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   217
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   218
tabsAreVariable
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   219
    "return the value of the instance variable 'tabsAreVariable' (automatically generated)"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   220
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   221
    ^ tabsAreVariable
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   222
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   223
    "Created: 28.3.1997 / 15:05:27 / cg"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   224
!
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   225
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   226
tabsAreVariable:something
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   227
    "set/clear movability of tabs. If false, tab positions are only
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   228
     displayed - but cannot be moved by the user.
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   229
     The default is true."
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   230
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   231
    tabsAreVariable := something.
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   232
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   233
    "Created: 28.3.1997 / 15:05:27 / cg"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   234
    "Modified: 28.3.1997 / 15:06:19 / cg"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   235
!
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   236
200
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   237
tabulatorSpecification:aTabSpec
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   238
    "set my tabulator specification"
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   239
365
4228b1451bc9 redraw when the spec is changed
Claus Gittinger <cg@exept.de>
parents: 342
diff changeset
   240
    tabSpec := aTabSpec.
2659
3af857eb52fb invalidate checks itself for shown-flag
Claus Gittinger <cg@exept.de>
parents: 1445
diff changeset
   241
    self invalidate
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   242
365
4228b1451bc9 redraw when the spec is changed
Claus Gittinger <cg@exept.de>
parents: 342
diff changeset
   243
    "Modified: 18.4.1997 / 18:16:07 / cg"
342
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   244
!
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   245
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   246
titles:aCollectionOfStrings
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   247
    titles := aCollectionOfStrings
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   248
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   249
    "Created: 1.4.1997 / 13:52:37 / cg"
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   250
! !
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   251
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   252
!TabSpecRuler methodsFor:'event handling'!
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   253
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   254
buttonMotion:state x:x y:y
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   255
    "mouse-button was moved while pressed;
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   256
     redraw thumb at its new position and, if scroll-mode is asynchronous, 
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   257
     the scroll action is performed"
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   258
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   259
    |left right limit1 limit2 minSpacing newX|
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   260
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   261
    movedTabIndex notNil ifTrue:[
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   262
        minSpacing := 5.
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   263
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   264
        left := limit1 := 0.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   265
        movedTabIndex > 1 ifTrue:[
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   266
            left := self positionOfTabAtIndex:(movedTabIndex-1).
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   267
            limit1 := left + minSpacing.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   268
        ].
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   269
        right := limit2 := width.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   270
        movedTabIndex < tabSpec size ifTrue:[
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   271
            right := self positionOfTabAtIndex:(movedTabIndex+1).
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   272
            limit2 := right - minSpacing.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   273
        ].
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   274
        newX := (x max:limit1) min:limit2.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   275
        x ~= newX ifTrue:[
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   276
            self cursor:Cursor stop.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   277
        ] ifFalse:[
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   278
            self cursor:handleCursor
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   279
        ].
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   280
        newX ~= movedTabX ifTrue:[
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   281
            movedTabX := newX.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   282
            self clearRectangleX:left+handleWidth y:0 
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   283
                           width:(right-left-handleWidth-handleWidth) height:height.
342
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   284
            movedTabIndex ~~ 1 ifTrue:[
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   285
                self redrawTitleAtIndex:(movedTabIndex - 1).
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   286
            ].
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   287
            self redrawTabAtIndex:movedTabIndex.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   288
            synchronousOperation == true ifTrue:[
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   289
                self moveTabAtIndex:movedTabIndex toX:movedTabX
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   290
            ]
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   291
        ]
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   292
    ] ifFalse:[
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   293
        (self canMoveTabAtX:x) ifTrue:[
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   294
            self cursor:handleCursor
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   295
        ] ifFalse:[
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   296
            self cursor:(Cursor normal)
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   297
        ]
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   298
    ]
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   299
342
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   300
    "Modified: 1.4.1997 / 15:21:16 / cg"
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   301
!
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   302
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   303
buttonPress:button x:x y:y
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   304
    "mouse-button was pressed;
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   305
     start moving the tab"
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   306
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   307
    movedTabIndex := nil.
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   308
    (self canMoveTabAtX:x) ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   309
        movedTabIndex := self indexOfTabAtX:x.
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   310
        self cursor:handleCursor.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   311
    ]
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   312
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   313
    "Modified: 28.3.1997 / 15:13:15 / cg"
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   314
!
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   315
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   316
buttonRelease:button x:x y:y
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   317
    "mouse-button was pressed;
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   318
     start moving the tab"
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   319
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   320
    |idx|
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   321
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   322
    idx := movedTabIndex.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   323
    movedTabIndex := nil.
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   324
    idx notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   325
        synchronousOperation == true ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   326
            self moveTabAtIndex:idx toX:movedTabX
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   327
        ]
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   328
    ]
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   329
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   330
    "Modified: 28.3.1997 / 15:10:23 / cg"
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   331
!
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   332
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   333
pointerLeave:state
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   334
    "mouse left view - restore cursor."
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   335
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   336
    self cursor:(Cursor normal).
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   337
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   338
    "Created: 28.3.1997 / 13:37:52 / cg"
1445
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   339
!
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   340
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   341
update:something with:aParameter from:changedObject
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   342
    changedObject == masterView ifTrue:[
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   343
        something == #originOfContents ifTrue:[
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   344
            self scrollTo:(masterView viewOrigin x @ 0).
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   345
        ].
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   346
    ].
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   347
! !
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   348
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   349
!TabSpecRuler methodsFor:'initialization'!
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   350
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   351
initStyle
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   352
    super initStyle.
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   353
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   354
    handleStyle := DefaultHandleStyle.
4997
ce7b2fcf39d8 device access
Claus Gittinger <cg@exept.de>
parents: 4517
diff changeset
   355
    handleCursor := (VariablePanel cursorForOrientation:#horizontal onDevice:device) onDevice:device.
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   356
    self is3D ifTrue:[
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   357
        handleWidth := 2.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   358
    ] ifFalse:[
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   359
        handleWidth := 1
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   360
    ]
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   361
1157
7e64e555a971 pass device to #cursorForOrientation.
Claus Gittinger <cg@exept.de>
parents: 1120
diff changeset
   362
    "Modified: / 30.9.1998 / 18:20:20 / cg"
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   363
!
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   364
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   365
initialize
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   366
    super initialize.
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   367
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   368
    tabsAreVariable := true.
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   369
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   370
    self enableMotionEvents.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   371
    self enableEnterLeaveEvents.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   372
4517
32a1b1fdfc39 class: TabSpecRuler
Stefan Vogel <sv@exept.de>
parents: 3644
diff changeset
   373
    self height:(gc font height + (2 * gc font descent)). 
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   374
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   375
    "
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   376
     TabSpecRuler new open
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   377
    "
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   378
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   379
    "Modified: 28.3.1997 / 15:06:29 / cg"
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   380
! !
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   381
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   382
!TabSpecRuler methodsFor:'private'!
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   383
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   384
canMoveTabAtX:x
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   385
    |idx|
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   386
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   387
    tabsAreVariable ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   388
        (idx := self indexOfTabAtX:x) ~~ 0 ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   389
            (fixedTabs notNil and:[fixedTabs includes:idx]) ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   390
                ^ true
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   391
            ]
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   392
        ]
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   393
    ].
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   394
    ^ false
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   395
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   396
    "Created: 28.3.1997 / 15:12:05 / cg"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   397
    "Modified: 28.3.1997 / 15:19:01 / cg"
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   398
!
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   399
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   400
indexOfTabAtX:x
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   401
    |xTab minDelta bestIndex|
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   402
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   403
    tabSpec isNil ifTrue:[^ 0].
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   404
    bestIndex := 0.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   405
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   406
    1 to:tabSpec size do:[:i |
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   407
        xTab := tabSpec positionOfTab:i on:self.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   408
        (x between:(xTab-5) and:(xTab+5)) ifTrue:[
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   409
            (minDelta isNil 
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   410
            or:[(x - xTab) abs < minDelta]) ifTrue:[
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   411
                minDelta := (x - xTab) abs.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   412
                bestIndex := i.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   413
            ]
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   414
        ]
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   415
    ].
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   416
    ^ bestIndex
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   417
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   418
    "Modified: 28.3.1997 / 13:43:47 / cg"
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   419
    "Created: 28.3.1997 / 15:12:09 / cg"
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   420
!
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   421
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   422
moveTabAtIndex:idx toX:movedTabX
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   423
    |unitPosition|
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   424
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   425
    unitPosition := (tabSpec unitsPerPixelOn:self) * movedTabX.
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   426
    tabSpec moveTabAtIndex:idx to:unitPosition.
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   427
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   428
    "Modified: 28.3.1997 / 14:54:58 / cg"
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   429
! !
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   430
1445
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   431
!TabSpecRuler methodsFor:'queries'!
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   432
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   433
widthOfContents
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   434
    masterView notNil ifTrue:[^ masterView heightOfContents].
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   435
    ^ super heightOfContents.
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   436
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   437
! !
b272f318bdef allow hooking me to a masterView.
Claus Gittinger <cg@exept.de>
parents: 1157
diff changeset
   438
200
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   439
!TabSpecRuler methodsFor:'redrawing'!
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   440
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   441
drawHandleAtX:x type:handleType
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   442
    "redraw a tabulator handle"
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   443
4517
32a1b1fdfc39 class: TabSpecRuler
Stefan Vogel <sv@exept.de>
parents: 3644
diff changeset
   444
    self paint:self blackColor.
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   445
    self displayLineFromX:x y:0 toX:x y:height - 1.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   446
    self is3D ifTrue:[
4517
32a1b1fdfc39 class: TabSpecRuler
Stefan Vogel <sv@exept.de>
parents: 3644
diff changeset
   447
        self paint:self whiteColor.
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   448
        self displayLineFromX:x+1 y:0 toX:x+1 y:height - 1
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   449
    ]
200
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   450
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   451
    "Modified: 28.3.1997 / 14:35:48 / cg"
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   452
!
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   453
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   454
positionOfTabAtIndex:idx
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   455
    ^ ( tabSpec positionOfTab:idx on:self ) rounded.
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   456
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   457
    "Created: 28.3.1997 / 14:26:28 / cg"
328
Claus Gittinger <cg@exept.de>
parents: 326
diff changeset
   458
    "Modified: 28.3.1997 / 15:14:03 / cg"
200
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   459
!
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   460
200
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   461
redraw
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   462
    "redraw the handles from by tabSpec"
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   463
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   464
    tabSpec isNil ifTrue:[^ self].
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   465
    shown ifFalse:[^ self].
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   466
2672
7a308cf0b29e clear -> clearView
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
   467
    self clearView.
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   468
    1 to:tabSpec size do:[:idx |
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   469
        self redrawTabAtIndex:idx.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   470
    ]
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   471
342
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   472
    "Modified: 1.4.1997 / 15:13:16 / cg"
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   473
!
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   474
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   475
redrawTabAtIndex:idx
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   476
    "redraw a single handle"
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   477
342
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   478
    |x s|
200
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   479
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   480
    tabSpec isNil ifTrue:[^ self].
342
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   481
    idx == movedTabIndex ifTrue:[
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   482
        x := movedTabX
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   483
    ] ifFalse:[
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   484
        x := self positionOfTabAtIndex:idx.
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   485
    ].
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   486
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   487
    (hiddenTabs notNil and:[hiddenTabs includes:idx]) ifFalse:[
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   488
        self drawHandleAtX:x type:(tabSpec typeOfTab:idx).
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   489
    ].
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   490
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   491
    titles notNil ifTrue:[
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   492
        s := titles at:idx.
5169
b18ad544fca8 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 4997
diff changeset
   493
        self paint:self blackColor.
4517
32a1b1fdfc39 class: TabSpecRuler
Stefan Vogel <sv@exept.de>
parents: 3644
diff changeset
   494
        s displayOn:self x:x+3 y:(gc font ascent).
342
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   495
    ].
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   496
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   497
    "Created: 28.3.1997 / 13:57:54 / cg"
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   498
    "Modified: 1.4.1997 / 15:29:19 / cg"
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   499
!
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   500
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   501
redrawTitleAtIndex:idx
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   502
    "redraw a single handle"
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   503
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   504
    |x s|
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   505
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   506
    tabSpec isNil ifTrue:[^ self].
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   507
    titles isNil ifTrue:[^ self].
330
e216c5a56f88 hiding tabs
Claus Gittinger <cg@exept.de>
parents: 328
diff changeset
   508
326
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   509
    idx == movedTabIndex ifTrue:[
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   510
        x := movedTabX
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   511
    ] ifFalse:[
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   512
        x := self positionOfTabAtIndex:idx.
7abb145cb6f4 moving - not yet finished
Claus Gittinger <cg@exept.de>
parents: 200
diff changeset
   513
    ].
200
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   514
342
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   515
    s := titles at:idx.
5169
b18ad544fca8 #OTHER by stefan
Stefan Vogel <sv@exept.de>
parents: 4997
diff changeset
   516
    self paint:self blackColor.
4517
32a1b1fdfc39 class: TabSpecRuler
Stefan Vogel <sv@exept.de>
parents: 3644
diff changeset
   517
    s displayOn:self x:x+3 y:(gc font ascent).
342
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   518
9e7148fb27c4 prepared to show titles
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   519
    "Modified: 1.4.1997 / 15:20:31 / cg"
29
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   520
! !
b1663ac8f532 Initial revision
claus
parents:
diff changeset
   521
200
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   522
!TabSpecRuler class methodsFor:'documentation'!
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   523
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   524
version
4997
ce7b2fcf39d8 device access
Claus Gittinger <cg@exept.de>
parents: 4517
diff changeset
   525
    ^ '$Header$'
200
e1ba0782f37c comments
Claus Gittinger <cg@exept.de>
parents: 86
diff changeset
   526
! !
4517
32a1b1fdfc39 class: TabSpecRuler
Stefan Vogel <sv@exept.de>
parents: 3644
diff changeset
   527