OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [gnu/] [java/] [awt/] [peer/] [swing/] [SwingButtonPeer.java] - Blame information for rev 769

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 769 jeremybenn
/* SwingButtonPeer.java -- A Swing based peer for AWT buttons
2
   Copyright (C)  2006, 2007  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.Button;
41
import java.awt.Container;
42
import java.awt.Graphics;
43
import java.awt.Image;
44
import java.awt.Point;
45
import java.awt.event.ActionEvent;
46
import java.awt.event.ActionListener;
47
import java.awt.event.FocusEvent;
48
import java.awt.event.KeyEvent;
49
import java.awt.event.MouseEvent;
50
import java.awt.peer.ButtonPeer;
51
 
52
import javax.swing.JButton;
53
import javax.swing.JComponent;
54
 
55
/**
56
 * A Swing based peer for the AWT button.
57
 *
58
 * @author Roman Kennke (kennke@aicas.com)
59
 */
60
public class SwingButtonPeer
61
  extends SwingComponentPeer
62
  implements ButtonPeer
63
{
64
 
65
  /**
66
   * A specialized Swing button to be used as AWT button.
67
   *
68
   * @author Roman Kennke (kennke@aicas.com)
69
   */
70
  class SwingButton
71
    extends JButton
72
    implements SwingComponent
73
  {
74
    Button button;
75
 
76
    SwingButton(Button button)
77
    {
78
      this.button = button;
79
    }
80
 
81
    /**
82
     * Overridden so that this method returns the correct value even without a
83
     * peer.
84
     *
85
     * @return the screen location of the button
86
     */
87
    public Point getLocationOnScreen()
88
    {
89
      return SwingButtonPeer.this.getLocationOnScreen();
90
    }
91
 
92
    /**
93
     * Overridden so that the isShowing method returns the correct value for the
94
     * swing button, even if it has no peer on its own.
95
     *
96
     * @return <code>true</code> if the button is currently showing,
97
     *         <code>false</code> otherwise
98
     */
99
    public boolean isShowing()
100
    {
101
      boolean retVal = false;
102
      if (button != null)
103
        retVal = button.isShowing();
104
      return retVal;
105
    }
106
 
107
    /**
108
     * Overridden, so that the Swing button can create an Image without its
109
     * own peer.
110
     *
111
     * @param w the width of the image
112
     * @param h the height of the image
113
     *
114
     * @return an image
115
     */
116
    public Image createImage(int w, int h)
117
    {
118
      return SwingButtonPeer.this.createImage(w, h);
119
    }
120
 
121
    /**
122
     * Overridden, so that the Swing button can create a Graphics without its
123
     * own peer.
124
     *
125
     * @return a graphics instance for the button
126
     */
127
    public Graphics getGraphics()
128
    {
129
      return SwingButtonPeer.this.getGraphics();
130
    }
131
 
132
    /**
133
     * Returns this button.
134
     *
135
     * @return this button
136
     */
137
    public JComponent getJComponent()
138
    {
139
      return this;
140
    }
141
 
142
    /**
143
     * Handles mouse events by forwarding it to
144
     * <code>processMouseEvent()</code> after having retargetted it to this
145
     * button.
146
     *
147
     * @param ev the mouse event
148
     */
149
    public void handleMouseEvent(MouseEvent ev)
150
    {
151
      ev.setSource(this);
152
      processMouseEvent(ev);
153
    }
154
 
155
    /**
156
     * Handles mouse motion events by forwarding it to
157
     * <code>processMouseMotionEvent()</code> after having retargetted it to
158
     * this button.
159
     *
160
     * @param ev the mouse motion event
161
     */
162
    public void handleMouseMotionEvent(MouseEvent ev)
163
    {
164
      ev.setSource(this);
165
      processMouseMotionEvent(ev);
166
    }
167
 
168
    /**
169
     * Handles key events by forwarding it to
170
     * <code>processKeyEvent()</code> after having retargetted it to this
171
     * button.
172
     *
173
     * @param ev the mouse event
174
     */
175
    public void handleKeyEvent(KeyEvent ev)
176
    {
177
      ev.setSource(this);
178
      processKeyEvent(ev);
179
    }
180
 
181
    public Container getParent()
182
    {
183
      Container par = null;
184
      if (button != null)
185
        par = button.getParent();
186
      return par;
187
    }
188
 
189
    /**
190
     * Handles focus events by forwarding it to
191
     * <code>processFocusEvent()</code>.
192
     *
193
     * @param ev the Focus event
194
     */
195
    public void handleFocusEvent(FocusEvent ev)
196
    {
197
      processFocusEvent(ev);
198
    }
199
 
200
    public void requestFocus() {
201
        SwingButtonPeer.this.requestFocus(awtComponent, false, true, 0);
202
    }
203
 
204
    public boolean requestFocus(boolean temporary) {
205
        return SwingButtonPeer.this.requestFocus(awtComponent, temporary,
206
                                                 true, 0);
207
    }
208
  }
209
 
210
  /**
211
   * Listens for ActionEvents on the Swing button and triggers corresponding
212
   * ActionEvents on the AWT button.
213
   *
214
   * @author Roman Kennke (kennke@aicas.com)
215
   */
216
  class SwingButtonListener implements ActionListener
217
  {
218
 
219
    /**
220
     * Receives notification when an action was performend on the button.
221
     *
222
     * @param event the action event
223
     */
224
    public void actionPerformed(ActionEvent event)
225
    {
226
      Button b = (Button) SwingButtonPeer.this.awtComponent;
227
      ActionListener[] l = b.getActionListeners();
228
      if (l.length == 0)
229
        return;
230
      ActionEvent ev = new ActionEvent(b, ActionEvent.ACTION_PERFORMED,
231
                                       b.getActionCommand());
232
      for (int i = 0; i < l.length; ++i)
233
        l[i].actionPerformed(ev);
234
    }
235
 
236
  }
237
 
238
  /**
239
   * Constructs a new SwingButtonPeer.
240
   *
241
   * @param theButton the AWT button for this peer
242
   */
243
  public SwingButtonPeer(Button theButton)
244
  {
245
    SwingButton button = new SwingButton(theButton);
246
    button.setText(theButton.getLabel());
247
    button.addActionListener(new SwingButtonListener());
248
    init(theButton, button);
249
  }
250
 
251
  /**
252
   * Sets the label of the button. This call is forwarded to the setText method
253
   * of the managed Swing button.
254
   *
255
   * @param label the label to set
256
   */
257
  public void setLabel(String label)
258
  {
259
    ((SwingButton) swingComponent).setText(label);
260
  }
261
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.