--- a/TabSpecRuler.st Fri Mar 28 15:20:35 1997 +0100
+++ b/TabSpecRuler.st Fri Mar 28 15:20:59 1997 +0100
@@ -12,7 +12,8 @@
SimpleView subclass:#TabSpecRuler
instanceVariableNames:'tabSpec titleEntry handleStyle handleCursor movedTabIndex
- movedTabX synchronousOperation handleWidth'
+ movedTabX synchronousOperation handleWidth fixedTabs
+ tabsAreVariable'
classVariableNames:'DefaultHandleStyle'
poolDictionaries:''
category:'Views-Misc'
@@ -83,6 +84,64 @@
!TabSpecRuler methodsFor:'accessing'!
+fixedTabs
+ "return the collection of tabIndices which are fixed;
+ or nil, if all are variable"
+
+ ^ fixedTabs
+
+ "Created: 28.3.1997 / 15:02:29 / cg"
+ "Modified: 28.3.1997 / 15:03:05 / cg"
+!
+
+fixedTabs:something
+ "set the collection of tabIndices which are fixed;
+ nil, if all are to be variable"
+
+ fixedTabs := something.
+
+ "Created: 28.3.1997 / 15:02:29 / cg"
+ "Modified: 28.3.1997 / 15:03:18 / cg"
+!
+
+synchronousOperation
+ "return the synchronousOperation mode settings value"
+
+ ^ synchronousOperation
+
+ "Created: 28.3.1997 / 15:01:17 / cg"
+ "Modified: 28.3.1997 / 15:02:20 / cg"
+!
+
+synchronousOperation:something
+ "set/clear synchronousOperation mode;
+ if on, a move is immediately forwarded to dependents;
+ of off, its forwarded when the mouse button is released."
+
+ synchronousOperation := something.
+
+ "Modified: 28.3.1997 / 15:02:07 / cg"
+!
+
+tabsAreVariable
+ "return the value of the instance variable 'tabsAreVariable' (automatically generated)"
+
+ ^ tabsAreVariable
+
+ "Created: 28.3.1997 / 15:05:27 / cg"
+!
+
+tabsAreVariable:something
+ "set/clear movability of tabs. If false, tab positions are only
+ displayed - but cannot be moved by the user.
+ The default is true."
+
+ tabsAreVariable := something.
+
+ "Created: 28.3.1997 / 15:05:27 / cg"
+ "Modified: 28.3.1997 / 15:06:19 / cg"
+!
+
tabulatorSpecification:aTabSpec
"set my tabulator specification"
@@ -100,8 +159,9 @@
|left right limit1 limit2 minSpacing newX|
- minSpacing := 5.
movedTabIndex notNil ifTrue:[
+ minSpacing := 5.
+
left := limit1 := 0.
movedTabIndex > 1 ifTrue:[
left := self positionOfTabAtIndex:(movedTabIndex-1).
@@ -128,28 +188,27 @@
]
]
] ifFalse:[
- (self indexOfTabAtX:x y:y) ~~ 0 ifTrue:[
+ (self canMoveTabAtX:x) ifTrue:[
self cursor:handleCursor
] ifFalse:[
self cursor:(Cursor normal)
]
]
- "Modified: 28.3.1997 / 14:43:23 / cg"
+ "Modified: 28.3.1997 / 15:17:14 / cg"
!
buttonPress:button x:x y:y
"mouse-button was pressed;
start moving the tab"
- (movedTabIndex := self indexOfTabAtX:x y:y) ~~ 0 ifTrue:[
+ movedTabIndex := nil.
+ (self canMoveTabAtX:x) ifTrue:[
+ movedTabIndex := self indexOfTabAtX:x.
self cursor:handleCursor.
- ] ifFalse:[
- movedTabIndex := nil
]
- "Created: 28.3.1997 / 13:56:14 / cg"
- "Modified: 28.3.1997 / 13:56:54 / cg"
+ "Modified: 28.3.1997 / 15:13:15 / cg"
!
buttonRelease:button x:x y:y
@@ -160,11 +219,13 @@
idx := movedTabIndex.
movedTabIndex := nil.
- synchronousOperation == true ifFalse:[
- self moveTabAtIndex:idx toX:movedTabX
+ idx notNil ifTrue:[
+ synchronousOperation == true ifFalse:[
+ self moveTabAtIndex:idx toX:movedTabX
+ ]
]
- "Modified: 28.3.1997 / 14:43:30 / cg"
+ "Modified: 28.3.1997 / 15:10:23 / cg"
!
pointerLeave:state
@@ -194,6 +255,8 @@
initialize
super initialize.
+ tabsAreVariable := true.
+
self enableMotionEvents.
self enableEnterLeaveEvents.
@@ -203,12 +266,28 @@
TabSpecRuler new open
"
- "Modified: 28.3.1997 / 13:44:55 / cg"
+ "Modified: 28.3.1997 / 15:06:29 / cg"
! !
!TabSpecRuler methodsFor:'private'!
-indexOfTabAtX:x y:y
+canMoveTabAtX:x
+ |idx|
+
+ tabsAreVariable ifTrue:[
+ (idx := self indexOfTabAtX:x) ~~ 0 ifTrue:[
+ (fixedTabs notNil and:[fixedTabs includes:idx]) ifFalse:[
+ ^ true
+ ]
+ ]
+ ].
+ ^ false
+
+ "Created: 28.3.1997 / 15:12:05 / cg"
+ "Modified: 28.3.1997 / 15:19:01 / cg"
+!
+
+indexOfTabAtX:x
|xTab minDelta bestIndex|
tabSpec isNil ifTrue:[^ 0].
@@ -227,11 +306,16 @@
^ bestIndex
"Modified: 28.3.1997 / 13:43:47 / cg"
+ "Created: 28.3.1997 / 15:12:09 / cg"
!
moveTabAtIndex:idx toX:movedTabX
+ |unitPosition|
- "Created: 28.3.1997 / 14:43:03 / cg"
+ unitPosition := (tabSpec unitsPerPixelOn:self) * movedTabX.
+ tabSpec moveTabAtIndex:idx to:unitPosition.
+
+ "Modified: 28.3.1997 / 14:54:58 / cg"
! !
!TabSpecRuler methodsFor:'redrawing'!
@@ -250,10 +334,10 @@
!
positionOfTabAtIndex:idx
- ^ ( tabSpec positionOfTab:idx on:self ) rounded + 1.
+ ^ ( tabSpec positionOfTab:idx on:self ) rounded.
"Created: 28.3.1997 / 14:26:28 / cg"
- "Modified: 28.3.1997 / 14:36:44 / cg"
+ "Modified: 28.3.1997 / 15:14:03 / cg"
!
redraw
@@ -289,5 +373,5 @@
!TabSpecRuler class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libwidg2/TabSpecRuler.st,v 1.8 1997-03-28 13:48:38 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg2/TabSpecRuler.st,v 1.9 1997-03-28 14:20:59 cg Exp $'
! !