KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > rcm > awt > MultiLineLabel


1 /*
2  * Copyright (c) 1998-2002 Carnegie Mellon University. All rights
3  * reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * 1. Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * 2. Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in
14  * the documentation and/or other materials provided with the
15  * distribution.
16  *
17  * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND
18  * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
19  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
21  * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  *
29  */

30
31 package rcm.awt;
32
33 import java.awt.*;
34
35 public class MultiLineLabel extends Canvas {
36     private String JavaDoc text;
37     private MultiLineString multilabel;
38     private int alignment;
39
40     private Dimension minSize; // cached result of getMinimumSize()
41

42     public MultiLineLabel (String JavaDoc string) {
43         setText (string);
44         setAlignment (Label.LEFT);
45     }
46
47     public MultiLineLabel (String JavaDoc string, int alignment) {
48         setText (string);
49         setAlignment (alignment);
50     }
51
52     public String JavaDoc getText () {
53         return text;
54     }
55     public void setText (String JavaDoc string) {
56         text = string;
57         multilabel = new MultiLineString (string);
58         minSize = null;
59     }
60
61     public int getAlignment () {
62         return alignment;
63     }
64     public void setAlignment (int align) {
65         alignment = align;
66     }
67
68     public void setFont (Font font) {
69         super.setFont (font);
70         minSize = null;
71     }
72
73     public Dimension minimumSize () {
74         // FIX: cache this size
75
if (minSize == null) {
76             FontMetrics fm = getFontMetrics (getFont ());
77             minSize = new Dimension (multilabel.getWidth (fm),
78                                      multilabel.getHeight (fm));
79         }
80         return minSize;
81     }
82
83     public Dimension preferredSize () {
84         return minimumSize ();
85     }
86
87     public synchronized void paint (Graphics g) {
88         g.setFont (getFont ());
89         multilabel.draw (g, 0, 0, alignment);
90     }
91 }
92
93
Popular Tags