Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
TextMorph example with wrapFlag: true
Last updated at 11:34 am UTC on 31 August 2017
TextMorph example

Use the default font and fixed width of the TextMorph. Vertical expansion as needed so that the string fits.
Vertical expansion is cause by
 textMorph wrapFlag: true.

Try the code snippet with and without this statement.

|  textMorph  |

textMorph :=TextMorph new 
contents: 'a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text '.

textMorph wrapFlag: true.
textMorph width: 400.

textMorph color: Color white.
textMorph backgroundColor: Color blue.

textMorph openInHand



The same as above but with another font:

|  fontRef textMorph aString aText |

aString := 'Text: abcde fghij klmno pqrst uvwxy z  ... a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text a text '.

fontRef  :=  (TextFontReference toFont:  (StrikeFont familyName: 'Atlanta' size: 22)).

aText  := aString asText addAttribute: fontRef.

textMorph :=TextMorph new contents: aText.
textMorph wrapFlag: true.
textMorph width: 400.

textMorph color: Color white.
textMorph backgroundColor: Color blue.

textMorph openInHand



Two TextMorph instances with vertical expansion in a container.

 container := AlignmentMorph newColumn.

With the method #newColumn an instance of AligmentMorph is obtained where the Example - aRectangleMorph addMorph: anotherMorph will be stacked vertically.

 container  hResizing: #shrinkWrap; 
            vResizing: #shrinkWrap.

These settings make the extent of the container adapt to the size needed by the Example - aRectangleMorph addMorph: anotherMorph:

tm1 : aTextMorph
tm2 : aTextMorph

tm1 (the title morph) is added first.

Then
 container addMorphBack: tm2 
is used to add the text body after tm1. It #addMorph: would have been used it would have been added in front of tm1.


|  container fontRef tm1 tm2 aString aText |

fontRef  :=  (TextFontReference toFont:  (StrikeFont familyName: 'Atlanta' size: 22)).


aString := 'a Title (= a short text in instance 1 of TextMorph) '.

tm1 :=TextMorph new contents: (aString asText addAttribute: fontRef).
tm1 backgroundColor: Color white.
tm1 wrapFlag: true.
tm1 width: 400.


aString := 'Text in instance 2 of TextMorph: abcde fghij klmno pqrst uvwxy z  ... ABCDE FGHIJ KLMNO PQRST UVWXY Z a text a text a text a text a text a text a text a text a text  a text  a text a text '.
aText  := aString asText addAttribute: fontRef.

tm2 :=TextMorph new contents: aText.
tm2 wrapFlag: true.
tm2 width: 400.

tm2 color: Color white.
tm2 backgroundColor: Color blue.

container := AlignmentMorph newColumn.
container  hResizing: #shrinkWrap; 
                vResizing: #shrinkWrap.
container addMorph: tm1.
container addMorphBack: tm2.


container openInHand


Alignment_newColumn_with_to_instances_of_TextMorph.png


Note


In this case the AlignmentMorph is not really needed. The following gives a similar result

 container := Morph new.
 container  hResizing: #shrinkWrap; 
            vResizing: #shrinkWrap.