--- a/Label.st Wed Jan 31 02:53:04 1996 +0100
+++ b/Label.st Sun Feb 04 21:40:21 1996 +0100
@@ -67,8 +67,9 @@
aLabel adjust:how
- where how is one of the symbols left, #right, #center, #centerLeft or
- #centerRight (see the comment in Label>>adjust:). The default is #center.
+ where how is one of the symbols left, #right, #center, #centerLeft,
+ #centerRight, #leftRight or #rightLeft (see the comment in Label>>adjust:).
+ The default is #center.
model-less operation (ok for static labels):
if no model is set, the labels contents is set with:
@@ -147,321 +148,368 @@
simple (default position is 0@0):
- |top l|
+ |top l|
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label in:top.
- l label:'hello world'.
+ l := Label in:top.
+ l label:'hello world'.
- top open
+ top open
there is also a creation message which sets the label:
- |top l|
+ |top l|
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label label:'hello world' in:top.
+ l := Label label:'hello world' in:top.
- top open
+ top open
placement:
- |top l|
+ |top l|
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label in:top.
- l label:'hello world'.
- l origin:50@100.
+ l := Label in:top.
+ l label:'hello world'.
+ l origin:50@100.
- top open
+ top open
level:
- |top l|
+ |top l|
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label in:top.
- l level:5.
- l label:'hello world'.
- l origin:50@100.
+ l := Label in:top.
+ l level:5.
+ l label:'hello world'.
+ l origin:50@100.
- top open
+ top open
another level:
- |top l|
+ |top l|
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label in:top.
- l level:-1.
- l label:'hello world'.
- l origin:50@100.
+ l := Label in:top.
+ l level:-1.
+ l label:'hello world'.
+ l origin:50@100.
- top open
+ top open
colors & font:
- |top l|
+ |top l|
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label in:top.
- l level:-1.
- l font:(Font family:'Times' size:18).
- l foregroundColor:Color yellow.
- l backgroundColor:Color red.
- l label:'hello world'.
- l origin:50@100.
+ l := Label in:top.
+ l level:-1.
+ l font:(Font family:'Times' size:18).
+ l foregroundColor:Color yellow.
+ l backgroundColor:Color red.
+ l label:'hello world'.
+ l origin:50@100.
- top open
+ top open
border & colors:
- |top l|
+ |top l|
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label in:top.
- l level:0.
- l borderWidth:1.
- l borderColor:Color red.
- l foregroundColor:Color green darkened.
- l backgroundColor:Color green lightened.
- l label:'hello world'.
- l origin:50@100.
+ l := Label in:top.
+ l level:0.
+ l borderWidth:1.
+ l borderColor:Color red.
+ l foregroundColor:Color green darkened.
+ l backgroundColor:Color green lightened.
+ l label:'hello world'.
+ l origin:50@100.
- top open
+ top open
- adjust (resize to see):
- |top l|
+ different adjusts (resize to see):
+ |top l|
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(300 @ 250).
+ top label:'make me smaller'.
+
+ l := Label in:top.
+ l borderWidth:1.
+ l label:'default - #centered'.
+ l origin:0.1@40.
+ l width:0.8.
- l := Label in:top.
- l borderWidth:1.
- l label:'default - centered'.
- l origin:0.0@40.
- l width:1.0.
+ l := Label in:top.
+ l borderWidth:1.
+ l adjust:#left.
+ l label:'#left adjust'.
+ l origin:0.1@70.
+ l width:0.8.
- l := Label in:top.
- l borderWidth:1.
- l adjust:#left.
- l label:'left adjust'.
- l origin:0.0@70.
- l width:1.0.
+ l := Label in:top.
+ l borderWidth:1.
+ l adjust:#right.
+ l label:'#right adjust'.
+ l origin:0.1@100.
+ l width:0.8.
- l := Label in:top.
- l borderWidth:1.
- l adjust:#centerLeft.
- l label:'centerLeft adjust and a bit too long'.
- l origin:0.0@100.
- l width:1.0.
+ l := Label in:top.
+ l borderWidth:1.
+ l adjust:#centerLeft.
+ l label:'#centerLeft adjust with a long text'.
+ l origin:0.1@130.
+ l width:0.8.
+
+ l := Label in:top.
+ l borderWidth:1.
+ l adjust:#centerRight.
+ l label:'#centerRight adjust with a long text'.
+ l origin:0.1@160.
+ l width:0.8.
- l := Label in:top.
- l borderWidth:1.
- l adjust:#right.
- l label:'right adjust'.
- l origin:0.0@130.
- l width:1.0.
+ l := Label in:top.
+ l borderWidth:1.
+ l adjust:#leftRight.
+ l label:'#leftRight adjust with a long text'.
+ l origin:0.1@190.
+ l width:0.8.
- l := Label in:top.
- l borderWidth:1.
- l adjust:#centerRight.
- l label:'centerRight adjust and a bit too long'.
- l origin:0.0@160.
- l width:1.0.
+ l := Label in:top.
+ l borderWidth:1.
+ l adjust:#rightLeft.
+ l label:'#rightLeft adjust with a long text'.
+ l origin:0.1@220.
+ l width:0.8.
- top open
+ top open
fitting-adjust (resize to see):
Warning: #fit is experimental and should not be used.
- |top l|
+ |top l|
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label origin:0.25 @ 0.25 corner:0.75@0.75 in:top.
- l label:'stretch'.
- l level:-1.
- l adjust:#fit.
+ l := Label origin:0.25 @ 0.25 corner:0.75@0.75 in:top.
+ l label:'stretch'.
+ l level:-1.
+ l adjust:#fit.
- top open
+ top open
or:
Warning: #fit is experimental and should not be used.
- |top l|
+ |top l|
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label origin:0.25 @ 0.25 corner:0.75@0.75 in:top.
- l label:(Image fromFile:'bitmaps/SBrowser.xbm').
- l level:-1.
- l adjust:#fit.
+ l := Label origin:0.25 @ 0.25 corner:0.75@0.75 in:top.
+ l label:(Image fromFile:'bitmaps/SBrowser.xbm').
+ l level:-1.
+ l adjust:#fit.
- top open
+ top open
just a reminder, that instead of doing placement manually
as in ...:
- |top l|
+ |top l|
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label in:top.
- l borderWidth:1.
- l label:'default - centered'.
- l origin:0.1@70.
- l width:0.8.
+ l := Label in:top.
+ l borderWidth:1.
+ l label:'default - centered'.
+ l origin:0.1@70.
+ l width:0.8.
- l := Label in:top.
- l borderWidth:1.
- l adjust:#left.
- l label:'left adjust'.
- l origin:0.1@100.
- l width:0.8.
+ l := Label in:top.
+ l borderWidth:1.
+ l adjust:#left.
+ l label:'left adjust'.
+ l origin:0.1@100.
+ l width:0.8.
- l := Label in:top.
- l borderWidth:1.
- l adjust:#right.
- l label:'right adjust'.
- l origin:0.1@130.
- l width:0.8.
+ l := Label in:top.
+ l borderWidth:1.
+ l adjust:#right.
+ l label:'right adjust'.
+ l origin:0.1@130.
+ l width:0.8.
- top open
+ top open
... it is much easier, to use a geometry handler, such as
a VerticalPanel. Try:
- |top panel l|
+ |top panel l|
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- panel := VerticalPanelView
- origin:0.0 @ 0.0
- corner:1.0 @ 1.0
- in:top.
+ panel := VerticalPanelView
+ origin:0.1 @ 0.0
+ corner:0.9 @ 1.0
+ in:top.
- panel horizontalLayout:#fit.
- panel verticalLayout:#center.
+ panel horizontalLayout:#fit.
+ panel verticalLayout:#center.
- l := Label in:panel.
- l borderWidth:1.
- l label:'default - centered'.
+ l := Label in:panel.
+ l borderWidth:1.
+ l label:'default - centered'.
- l := Label in:panel.
- l borderWidth:1.
- l adjust:#left.
- l label:'left adjust'.
+ l := Label in:panel.
+ l borderWidth:1.
+ l adjust:#left.
+ l label:'left adjust'.
- l := Label in:panel.
- l borderWidth:1.
- l adjust:#right.
- l label:'right adjust'.
+ l := Label in:panel.
+ l borderWidth:1.
+ l adjust:#right.
+ l label:'right adjust'.
- top open
+ top open
labels with bitmaps or images:
- |top l|
+ |top l|
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label in:top.
- l level:-1.
- l label:((Image fromFile:'bitmaps/garfield.gif') magnifyBy:0.2 @ 0.2).
- l origin:50@100.
+ l := Label in:top.
+ l level:-1.
+ l label:((Image fromFile:'bitmaps/garfield.gif') magnifyBy:0.2 @ 0.2).
+ l origin:50@100.
- top open
+ top open
- Channel operation
+ that even works with #fit:
+
+ |top l|
+
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
+
+ l := Label in:top.
+ l adjust:#fit.
+ l level:-1.
+ l label:(Image fromFile:'bitmaps/garfield.gif').
+ l origin:0.2@0.2 corner:0.8@0.8.
+
+ top open
+
+
+ notice, that Buttons inherit from Label; thus:
+
+ |top b|
+
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
+
+ b := Button in:top.
+ b adjust:#fit.
+ b label:(Image fromFile:'bitmaps/garfield.gif').
+ b origin:0.2@0.2 corner:0.8@0.8.
+ b action:[Transcript showCr:'wow'].
+
+ top open
+
+
+ Channel operation (controlling gf, bg and labelText via ValueHolders)
-----------------
- |top panel logoChannel fgChannel bgChannel l b|
+ |top panel logoChannel fgChannel bgChannel l b|
- top := StandardSystemView new.
- top extent:(450 @ 200).
+ top := StandardSystemView new.
+ top extent:(450 @ 200).
- panel := HorizontalPanelView origin:0.0@0.0 corner:1.0@1.0 in:top.
+ panel := HorizontalPanelView origin:0.0@0.0 corner:1.0@1.0 in:top.
- l := Label in:panel.
- l level:-1.
- l label:'change my colors'.
- l origin:50@100.
- l sizeFixed:true.
+ l := Label in:panel.
+ l level:-1.
+ l label:'change my colors'.
+ l origin:50@100.
+ l sizeFixed:true.
- fgChannel := Color blue asValue.
- bgChannel := Color grey asValue.
- logoChannel := 'change me' asValue.
+ fgChannel := Color blue asValue.
+ bgChannel := Color grey asValue.
+ logoChannel := 'change me' asValue.
- b := Toggle label:'change fg' in:panel. b showLamp:false; onLevel:-2.
- b pressAction:[fgChannel value:Color red].
- b releaseAction:[fgChannel value:Color blue].
+ b := Toggle label:'change fg' in:panel. b showLamp:false; onLevel:-2.
+ b pressAction:[fgChannel value:Color red].
+ b releaseAction:[fgChannel value:Color blue].
- b := Toggle label:'change bg' in:panel.
- b pressAction:[bgChannel value:Color yellow].
- b releaseAction:[bgChannel value:Color grey].
+ b := Toggle label:'change bg' in:panel.
+ b pressAction:[bgChannel value:Color yellow].
+ b releaseAction:[bgChannel value:Color grey].
- b := Toggle label:'change text' in:panel.
- b pressAction:[logoChannel value:'wow'].
- b releaseAction:[logoChannel value:'not bad' ].
+ b := Toggle label:'change text' in:panel.
+ b pressAction:[logoChannel value:'wow'].
+ b releaseAction:[logoChannel value:'not bad' ].
- l labelChannel:logoChannel.
- l foregroundChannel:fgChannel.
- l backgroundChannel:bgChannel.
+ l labelChannel:logoChannel.
+ l foregroundChannel:fgChannel.
+ l backgroundChannel:bgChannel.
- top open
+ top open
multiple labels on one channel:
- |l1 l2 b conv|
+ |l1 l2 b conv|
- l1 := Label label:'label1'.
+ l1 := Label label:'label1'.
- l2 := Label label:'label2'.
+ l2 := Label label:'label2'.
- b := Button label:'change'.
- conv := (ConvertedValue new
- conversion:[:input |
- input ifTrue:[
- Color red
- ] ifFalse:[
- Color blue
- ]]).
- conv value:false.
+ b := Button label:'change'.
+ conv := (ConvertedValue new
+ conversion:[:input |
+ input ifTrue:[
+ Color red
+ ] ifFalse:[
+ Color blue
+ ]]).
+ conv value:false.
- b controller pressChannel:conv.
- l1 foregroundChannel:conv.
- l2 foregroundColor:Color white; backgroundChannel:conv.
+ b controller pressChannel:conv.
+ l1 foregroundChannel:conv.
+ l2 foregroundColor:Color white; backgroundChannel:conv.
- b open.
- l1 open.
- l2 open.
+ b open.
+ l1 open.
+ l2 open.
MVC operation
@@ -469,208 +517,208 @@
model provides the label):
(have to use a plug to simulate a model which responds to
- the #someAspect message):
+ the #someAspect message):
- |top l model|
+ |top l model|
- model := Plug new.
- model respondTo:#someAspect with:['models labelString'].
+ model := Plug new.
+ model respondTo:#someAspect with:['models labelString'].
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label in:top.
- l model:model; labelMessage:#someAspect.
+ l := Label in:top.
+ l model:model; labelMessage:#someAspect.
- top open
- ...
+ top open
+ ...
- model changed:#someAspect
- ...
+ model changed:#someAspect
+ ...
concrete example (track a counters value):
(here, the default aspect #value is used both to notify the label about
changes and to aquire a new value from the model).
- |top l model|
+ |top l model|
- model := ValueHolder new.
- model value:'0'.
- [
- 1 to:20 do:[:i |
- (Delay forSeconds:1) wait.
- model value:i printString
- ].
- top destroy
- ] fork.
+ model := ValueHolder new.
+ model value:'0'.
+ [
+ 1 to:20 do:[:i |
+ (Delay forSeconds:1) wait.
+ model value:i printString
+ ].
+ top destroy
+ ] fork.
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label in:top.
- l level:-1.
- l model:model; labelMessage:#value.
+ l := Label in:top.
+ l level:-1.
+ l model:model; labelMessage:#value.
- top open
+ top open
with a printConverter:
- |top l model|
+ |top l model|
- model := Date today asValue.
- [
- 1 to:50 do:[:i |
- (Delay forSeconds:1) wait.
- model value:(model value addDays:1)
- ].
- top destroy
- ] fork.
+ model := Date today asValue.
+ [
+ 1 to:50 do:[:i |
+ (Delay forSeconds:1) wait.
+ model value:(model value addDays:1)
+ ].
+ top destroy
+ ] fork.
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label in:top.
- l level:-1.
- l converter:(PrintConverter new initForDate).
- l model:model; labelMessage:#value.
+ l := Label in:top.
+ l level:-1.
+ l converter:(PrintConverter new initForDate).
+ l model:model; labelMessage:#value.
- top open
+ top open
model changes aspect after a while; two labels on the same model:
- |top l model|
+ |top l model|
- model := Plug new.
- model respondTo:#labelValue1 with:['models labelString1'].
- model respondTo:#labelValue2 with:['models labelString2'].
+ model := Plug new.
+ model respondTo:#labelValue1 with:['models labelString1'].
+ model respondTo:#labelValue2 with:['models labelString2'].
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label origin:0.0@0.0 corner:1.0@0.5 in:top.
- l model:model; aspect:#someAspect; labelMessage:#labelValue1.
- l := Label origin:0.0@0.5 corner:1.0@1.0 in:top.
- l model:model; aspect:#someAspect; labelMessage:#labelValue2.
+ l := Label origin:0.0@0.0 corner:1.0@0.5 in:top.
+ l model:model; aspect:#someAspect; labelMessage:#labelValue1.
+ l := Label origin:0.0@0.5 corner:1.0@1.0 in:top.
+ l model:model; aspect:#someAspect; labelMessage:#labelValue2.
- top open.
+ top open.
- (Delay forSeconds:5) wait.
- model respondTo:#labelValue1 with:['new string1'].
- model respondTo:#labelValue2 with:['new string2'].
+ (Delay forSeconds:5) wait.
+ model respondTo:#labelValue1 with:['new string1'].
+ model respondTo:#labelValue2 with:['new string2'].
- model changed:#someAspect
+ model changed:#someAspect
plugged MVC operation (getBlock returns the label):
- |top l model|
+ |top l model|
- model := PluggableAdaptor new
- getBlock:[:m | 'hello']
- putBlock:nil
- updateBlock:nil.
+ model := PluggableAdaptor new
+ getBlock:[:m | 'hello']
+ putBlock:nil
+ updateBlock:nil.
- top := StandardSystemView new.
- top extent:(200 @ 200).
+ top := StandardSystemView new.
+ top extent:(200 @ 200).
- l := Label origin:0.0@0.0 corner:1.0@0.5 in:top.
- l model:model; labelMessage:#value.
+ l := Label origin:0.0@0.0 corner:1.0@0.5 in:top.
+ l model:model; labelMessage:#value.
- top open.
+ top open.
use different label-selectors to access fields of a complex model:
- |top panel model|
+ |top panel model|
- model := Plug new.
- model respondTo:#field1 with:['value1'].
- model respondTo:#field2 with:['value2'].
- model respondTo:#field3 with:['value3'].
- model respondTo:#field4 with:['value4'].
+ model := Plug new.
+ model respondTo:#field1 with:['value1'].
+ model respondTo:#field2 with:['value2'].
+ model respondTo:#field3 with:['value3'].
+ model respondTo:#field4 with:['value4'].
- top := StandardSystemView new.
+ top := StandardSystemView new.
- panel := VerticalPanelView origin:0.0@0.0 corner:1.0@1.0 in:top.
- panel elementsChangeSize:true.
+ panel := VerticalPanelView origin:0.0@0.0 corner:1.0@1.0 in:top.
+ panel elementsChangeSize:true.
- panel addSubView:((Label on:model) labelMessage:#field1).
- panel addSubView:((Label on:model) labelMessage:#field2).
- panel addSubView:((Label on:model) labelMessage:#field3).
- panel addSubView:((Label on:model) labelMessage:#field4).
+ panel addSubView:((Label on:model) labelMessage:#field1).
+ panel addSubView:((Label on:model) labelMessage:#field2).
+ panel addSubView:((Label on:model) labelMessage:#field3).
+ panel addSubView:((Label on:model) labelMessage:#field4).
- top extent:(200 @ 200).
- top open.
+ top extent:(200 @ 200).
+ top open.
- (Delay forSeconds:5) wait.
+ (Delay forSeconds:5) wait.
- model respondTo:#field2 with:['new value2'].
- model changed:#value
+ model respondTo:#field2 with:['new value2'].
+ model changed:#value
same as above, using default aspects in the label, and an adaptor
to translate aspects:
- |top panel model v1|
+ |top panel model v1|
- model := Plug new.
- model respondTo:#field1 with:[v1].
- model respondTo:#field1: with:[:arg | v1 := arg. model changed:#field1].
- model respondTo:#field2 with:['value2'].
- model respondTo:#field2: with:[:arg |].
- model respondTo:#field3 with:['value3'].
- model respondTo:#field3: with:[:arg |].
- model respondTo:#field4 with:['value4'].
- model respondTo:#field4: with:[:arg |].
+ model := Plug new.
+ model respondTo:#field1 with:[v1].
+ model respondTo:#field1: with:[:arg | v1 := arg. model changed:#field1].
+ model respondTo:#field2 with:['value2'].
+ model respondTo:#field2: with:[:arg |].
+ model respondTo:#field3 with:['value3'].
+ model respondTo:#field3: with:[:arg |].
+ model respondTo:#field4 with:['value4'].
+ model respondTo:#field4: with:[:arg |].
- top := StandardSystemView new.
+ top := StandardSystemView new.
- panel := VerticalPanelView origin:0.0@0.0 corner:1.0@1.0 in:top.
- panel elementsChangeSize:true.
+ panel := VerticalPanelView origin:0.0@0.0 corner:1.0@1.0 in:top.
+ panel elementsChangeSize:true.
- panel addSubView:((Label on:((AspectAdaptor subject:model) forAspect:#field1)) labelMessage:#value).
- panel addSubView:((Label on:((AspectAdaptor subject:model) forAspect:#field2)) labelMessage:#value).
- panel addSubView:((Label on:((AspectAdaptor subject:model) forAspect:#field3)) labelMessage:#value).
- panel addSubView:((Label on:((AspectAdaptor subject:model) forAspect:#field4)) labelMessage:#value).
+ panel addSubView:((Label on:((AspectAdaptor subject:model) forAspect:#field1)) labelMessage:#value).
+ panel addSubView:((Label on:((AspectAdaptor subject:model) forAspect:#field2)) labelMessage:#value).
+ panel addSubView:((Label on:((AspectAdaptor subject:model) forAspect:#field3)) labelMessage:#value).
+ panel addSubView:((Label on:((AspectAdaptor subject:model) forAspect:#field4)) labelMessage:#value).
- top extent:(200 @ 200).
- top open.
+ top extent:(200 @ 200).
+ top open.
- (Delay forSeconds:5) wait.
+ (Delay forSeconds:5) wait.
- model field1:'new value1'.
+ model field1:'new value1'.
use an adapter to access fields of a complex model:
- |top l panel model|
+ |top l panel model|
- model := #('one' 'two' 'three') asValue.
+ model := #('one' 'two' 'three') asValue.
- top := StandardSystemView new.
+ top := StandardSystemView new.
- panel := VerticalPanelView origin:0.0@0.0 corner:1.0@1.0 in:top.
- panel elementsChangeSize:true.
+ panel := VerticalPanelView origin:0.0@0.0 corner:1.0@1.0 in:top.
+ panel elementsChangeSize:true.
- panel addSubView:((Label on:(ProtocolAdaptor
- subjectChannel:model
- accessPath:#(1))) labelMessage:#value).
- panel addSubView:((Label on:(ProtocolAdaptor
- subjectChannel:model
- accessPath:#(2))) labelMessage:#value).
- panel addSubView:((Label on:(ProtocolAdaptor
- subjectChannel:model
- accessPath:#(3))) labelMessage:#value).
+ panel addSubView:((Label on:(ProtocolAdaptor
+ subjectChannel:model
+ accessPath:#(1))) labelMessage:#value).
+ panel addSubView:((Label on:(ProtocolAdaptor
+ subjectChannel:model
+ accessPath:#(2))) labelMessage:#value).
+ panel addSubView:((Label on:(ProtocolAdaptor
+ subjectChannel:model
+ accessPath:#(3))) labelMessage:#value).
- top extent:(200 @ 200).
- top open.
+ top extent:(200 @ 200).
+ top open.
- (Delay forSeconds:5) wait.
+ (Delay forSeconds:5) wait.
- model value:#('oneone' 'twotwo' 'threethree').
+ model value:#('oneone' 'twotwo' 'threethree').
"
! !
@@ -705,11 +753,11 @@
updateStyleCache
DefaultForegroundColor := StyleSheet colorAt:'labelForegroundColor'.
DefaultForegroundColor isNil ifTrue:[
- DefaultForegroundColor := StyleSheet colorAt:'foregroundColor' default:Black.
+ DefaultForegroundColor := StyleSheet colorAt:'foregroundColor' default:Black.
].
DefaultBackgroundColor := StyleSheet colorAt:'labelBackgroundColor'.
DefaultBackgroundColor isNil ifTrue:[
- DefaultBackgroundColor := StyleSheet colorAt:'backgroundColor'.
+ DefaultBackgroundColor := StyleSheet colorAt:'backgroundColor'.
].
DefaultFont := StyleSheet fontAt:'labelFont'.
@@ -776,8 +824,8 @@
"set the background color"
aColor ~~ bgColor ifTrue:[
- bgColor := aColor on:device.
- shown ifTrue:[self redraw]
+ bgColor := aColor on:device.
+ shown ifTrue:[self redraw]
]
"Modified: 17.12.1995 / 15:09:03 / cg"
@@ -793,8 +841,8 @@
"set the foreground color"
aColor ~~ fgColor ifTrue:[
- fgColor := aColor on:device.
- shown ifTrue:[self redraw]
+ fgColor := aColor on:device.
+ shown ifTrue:[self redraw]
].
"Modified: 17.12.1995 / 15:09:15 / cg"
@@ -886,12 +934,23 @@
#left -> left adjust logo
#right -> right adjust logo
#center -> center logo
- #centerRight -> center logo; if no fit, right adjust
+
+ #centerRight -> center logo if it fits;
+ if it does not fit, right adjust
(use with filenames, where the interesting part is
at the right if the label is too small)
- #centerLeft -> center logo; if it does not fit, left adjust it
+ #centerLeft -> center logo if it fits;
+ if it does not fit, left adjust it
(use with strings where the interesting part is at the
left if the label is too small)
+
+ #leftRight -> left adjust logo if it fits
+ if it does not fit, right adjust
+ (use with filenames, where the interesting part is
+ at the right if the label is too small)
+
+ #rightLeft -> right adjust logo if it fits
+ if it does not fit, left adjust
"
(adjust ~~ how) ifTrue:[
@@ -1100,9 +1159,9 @@
!Label methodsFor:'private'!
computeLabelOrigin
- "(re)compute the origin of the label whenever label or font changes"
+ "(re)compute the origin of the label whenever label, font or view-size changes"
- |x y|
+ |x y a|
labelHeight isNil ifTrue:[^ self].
@@ -1113,7 +1172,7 @@
"if it does not fit, should we make the origin visible,
or the center (for text, the center seems better. For images,
- I dont really know ehich is better ...
+ I dont really know which is better ...
The commented code below makes the origin visible
"
"/ (labelHeight < height) ifTrue:[
@@ -1127,29 +1186,43 @@
labelOriginY := y.
- (((adjust == #center)
- or:[adjust == #centerRight])
- or:[adjust == #centerLeft]) ifTrue:[
- " center text/form in button "
- x := (width - labelWidth) // 2.
- (width < labelWidth) ifTrue:[
- "no fit"
- (adjust == #centerLeft) ifTrue:[
- x := margin
+ a := adjust.
+ (width < labelWidth) ifTrue:[
+ ((adjust == #centerRight) or:[adjust == #leftRight]) ifTrue:[
+ a := #right
+ ] ifFalse:[
+ ((adjust == #centerLeft) or:[adjust == #rightLeft]) ifTrue:[
+ a := #left
+ ].
+ ]
+ ] ifFalse:[
+ ((adjust == #centerRight) or:[adjust == #centerLeft]) ifTrue:[
+ a := #center
+ ] ifFalse:[
+ adjust == #leftRight ifTrue:[
+ a := #left
] ifFalse:[
- (adjust == #centerRight) ifTrue:[
- x := width - labelWidth - margin
+ adjust == #rightLeft ifTrue:[
+ a := #right
]
]
]
+ ].
+
+ (a == #center) ifTrue:[
+ " center text/form in button "
+ x := (width - labelWidth) // 2.
] ifFalse:[
- (adjust == #left) ifTrue:[
+ (a == #left) ifTrue:[
x := margin
] ifFalse:[
+ "/ #right
x := width - labelWidth - margin
]
].
labelOriginX := x
+
+ "Modified: 4.2.1996 / 21:03:17 / cg"
!
computeLabelSize
@@ -1228,12 +1301,12 @@
|extra|
logo isNil ifTrue:[
- self label:''
+ self label:''
].
logo notNil ifTrue:[
- extra := margin * 2.
- ^ (labelWidth + extra + hSpace) @ (labelHeight + extra + vSpace)
+ extra := margin * 2.
+ ^ (labelWidth + extra + hSpace) @ (labelHeight + extra + vSpace)
].
^ super preferredExtent
@@ -1378,5 +1451,5 @@
!Label class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libwidg/Label.st,v 1.44 1996-01-26 17:32:04 ah Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg/Label.st,v 1.45 1996-02-04 20:40:21 cg Exp $'
! !