OSDN Git Service

Merged gcj-eclipse branch to trunk.
[pf3gnuchains/gcc-fork.git] / libjava / classpath / gnu / java / awt / peer / swing / SwingLabelPeer.java
1 /* SwingLabelPeer.java -- A Swing based peer for AWT labels
2    Copyright (C)  2006  Free Software Foundation, Inc.
3
4 This file is part of GNU Classpath.
5
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING.  If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 02110-1301 USA.
20
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library.  Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
25
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module.  An independent module is a module which is not derived from
33 or based on this library.  If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so.  If you do not wish to do so, delete this
36 exception statement from your version. */
37
38 package gnu.java.awt.peer.swing;
39
40 import java.awt.Container;
41 import java.awt.Graphics;
42 import java.awt.Image;
43 import java.awt.Label;
44 import java.awt.Point;
45 import java.awt.event.KeyEvent;
46 import java.awt.event.MouseEvent;
47 import java.awt.peer.LabelPeer;
48
49 import javax.swing.JComponent;
50 import javax.swing.JLabel;
51
52
53 /**
54  * A Label peer based on {@link JLabel}.
55  *
56  * @author Roman Kennke (kennke@aicas.com)
57  */
58 public class SwingLabelPeer
59   extends SwingComponentPeer
60   implements LabelPeer
61 {
62
63   /**
64    * A spezialized Swing label used to paint the label for the AWT Label. 
65    *
66    * @author Roman Kennke (kennke@aicas.com)
67    */
68   private class SwingLabel
69     extends JLabel
70     implements SwingComponent
71   {
72     Label label;
73       
74       
75     SwingLabel(Label label)
76     {
77         this.label = label;
78     }
79     
80     /**
81      * Returns this label.
82      *
83      * @return <code>this</code>
84      */
85     public JComponent getJComponent()
86     {
87       return this;
88     }
89
90     /**
91      * Handles mouse events by forwarding it to
92      * <code>processMouseEvent()</code>.
93      *
94      * @param ev the mouse event
95      */
96     public void handleMouseEvent(MouseEvent ev)
97     {
98       processMouseEvent(ev);
99     }
100
101     /**
102      * Handles mouse motion events by forwarding it to
103      * <code>processMouseMotionEvent()</code>.
104      *
105      * @param ev the mouse motion event
106      */
107     public void handleMouseMotionEvent(MouseEvent ev)
108     {
109       processMouseMotionEvent(ev);
110     }
111
112     /**
113      * Handles key events by forwarding it to <code>processKeyEvent()</code>.
114      *
115      * @param ev the mouse event
116      */
117     public void handleKeyEvent(KeyEvent ev)
118     {
119       processKeyEvent(ev);
120     }
121
122     /**
123      * Overridden so that this method returns the correct value even without a
124      * peer.
125      *
126      * @return the screen location of the button
127      */
128     public Point getLocationOnScreen()
129     {
130       return SwingLabelPeer.this.getLocationOnScreen();
131     }
132
133     /**
134      * Overridden so that the isShowing method returns the correct value for the
135      * swing button, even if it has no peer on its own.
136      *
137      * @return <code>true</code> if the button is currently showing,
138      *         <code>false</code> otherwise
139      */
140     public boolean isShowing()
141     {
142       boolean retVal = false;
143       if (label != null)
144         retVal = label.isShowing();
145       return retVal;
146     }
147
148     /**
149      * Overridden, so that the Swing button can create an Image without its
150      * own peer.
151      *
152      * @param w the width of the image
153      * @param h the height of the image
154      *
155      * @return an image
156      */
157     public Image createImage(int w, int h)
158     {
159       return SwingLabelPeer.this.createImage(w, h);
160     }
161
162     public Graphics getGraphics()
163     {
164       return SwingLabelPeer.this.getGraphics();
165     }
166
167     public Container getParent()
168     {
169       Container par = null;
170       if (label != null)
171         par = label.getParent();
172       return par;
173     }
174   }
175
176   /**
177    * Creates a new <code>SwingLabelPeer</code> for the specified AWT label.
178    *
179    * @param label the AWT label
180    */
181   public SwingLabelPeer(Label label)
182   {
183     super();
184     SwingLabel swingLabel = new SwingLabel(label);
185     swingLabel.setText(label.getText());
186     swingLabel.setOpaque(true);
187     init(label, swingLabel);
188     setAlignment(label.getAlignment());
189   }
190
191   /**
192    * Sets the text of the label. This is implemented to set the text on the
193    * Swing label.
194    *
195    * @param text the text to be set
196    */
197   public void setText(String text)
198   {
199     ((JLabel) swingComponent.getJComponent()).setText(text);
200   }
201
202   /**
203    * Sets the horizontal alignment of the label. This is implemented to
204    * set the alignment on the Swing label.
205    *
206    * @param alignment the horizontal alignment
207    *
208    * @see Label#LEFT
209    * @see Label#RIGHT
210    * @see Label#CENTER
211    */
212   public void setAlignment(int alignment)
213   {
214     JLabel swingLabel = (JLabel) swingComponent.getJComponent();
215     switch (alignment)
216       {
217       case Label.RIGHT:
218         swingLabel.setHorizontalAlignment(JLabel.RIGHT);
219         break;
220       case Label.CENTER:
221         swingLabel.setHorizontalAlignment(JLabel.CENTER);
222         break;
223       case Label.LEFT:
224       default:
225         swingLabel.setHorizontalAlignment(JLabel.LEFT);
226         break;
227       }
228   }
229
230 }