View Javadoc
1   /*
2    * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4    *
5    * This code is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License version 2 only, as
7    * published by the Free Software Foundation.  Oracle designates this
8    * particular file as subject to the "Classpath" exception as provided
9    * by Oracle in the LICENSE file that accompanied this code.
10   *
11   * This code is distributed in the hope that it will be useful, but WITHOUT
12   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14   * version 2 for more details (a copy is included in the LICENSE file that
15   * accompanied this code).
16   *
17   * You should have received a copy of the GNU General Public License version
18   * 2 along with this work; if not, write to the Free Software Foundation,
19   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20   *
21   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22   * or visit www.oracle.com if you need additional information or have any
23   * questions.
24   */
25  
26  package sun.awt;
27  
28  import java.awt.AWTException;
29  import java.awt.BufferCapabilities;
30  import java.awt.Color;
31  import java.awt.Component;
32  import java.awt.Cursor;
33  import java.awt.Dimension;
34  import java.awt.Font;
35  import java.awt.FontMetrics;
36  import java.awt.Graphics;
37  import java.awt.GraphicsConfiguration;
38  import java.awt.Image;
39  import java.awt.Insets;
40  import java.awt.MenuBar;
41  import java.awt.Point;
42  import java.awt.Event;
43  import java.awt.event.PaintEvent;
44  import java.awt.image.ColorModel;
45  import java.awt.image.ImageObserver;
46  import java.awt.image.ImageProducer;
47  import java.awt.image.VolatileImage;
48  import java.awt.peer.CanvasPeer;
49  import java.awt.peer.LightweightPeer;
50  import java.awt.peer.PanelPeer;
51  import java.awt.peer.ComponentPeer;
52  import java.awt.peer.ContainerPeer;
53  import java.awt.Rectangle;
54  import sun.java2d.pipe.Region;
55  
56  
57  /**
58   * Implements the LightweightPeer interface for use in lightweight components
59   * that have no native window associated with them.  This gets created by
60   * default in Component so that Component and Container can be directly
61   * extended to create useful components written entirely in java.  These
62   * components must be hosted somewhere higher up in the component tree by a
63   * native container (such as a Frame).
64   *
65   * This implementation provides no useful semantics and serves only as a
66   * marker.  One could provide alternative implementations in java that do
67   * something useful for some of the other peer interfaces to minimize the
68   * native code.
69   *
70   * This was renamed from java.awt.LightweightPeer (a horrible and confusing
71   * name) and moved from java.awt.Toolkit into sun.awt as a public class in
72   * its own file.
73   *
74   * @author Timothy Prinzing
75   * @author Michael Martak
76   */
77  
78  public class NullComponentPeer implements LightweightPeer,
79      CanvasPeer, PanelPeer {
80  
81      public boolean isObscured() {
82          return false;
83      }
84  
85      public boolean canDetermineObscurity() {
86          return false;
87      }
88  
89      public boolean isFocusable() {
90          return false;
91      }
92  
93      public void setVisible(boolean b) {
94      }
95  
96      public void show() {
97      }
98  
99      public void hide() {
100     }
101 
102     public void setEnabled(boolean b) {
103     }
104 
105     public void enable() {
106     }
107 
108     public void disable() {
109     }
110 
111     public void paint(Graphics g) {
112     }
113 
114     public void repaint(long tm, int x, int y, int width, int height) {
115     }
116 
117     public void print(Graphics g) {
118     }
119 
120     public void setBounds(int x, int y, int width, int height, int op) {
121     }
122 
123     public void reshape(int x, int y, int width, int height) {
124     }
125 
126     public void coalescePaintEvent(PaintEvent e) {
127     }
128 
129     public boolean handleEvent(Event e) {
130         return false;
131     }
132 
133     public void handleEvent(java.awt.AWTEvent arg0) {
134     }
135 
136     public Dimension getPreferredSize() {
137         return new Dimension(1,1);
138     }
139 
140     public Dimension getMinimumSize() {
141         return new Dimension(1,1);
142     }
143 
144     public ColorModel getColorModel() {
145         return null;
146     }
147 
148     public Graphics getGraphics() {
149         return null;
150     }
151 
152     public GraphicsConfiguration getGraphicsConfiguration() {
153         return null;
154     }
155 
156     public FontMetrics  getFontMetrics(Font font) {
157         return null;
158     }
159 
160     public void dispose() {
161     // no native code
162     }
163 
164     public void setForeground(Color c) {
165     }
166 
167     public void setBackground(Color c) {
168     }
169 
170     public void setFont(Font f) {
171     }
172 
173     public void updateCursorImmediately() {
174     }
175 
176     public void setCursor(Cursor cursor) {
177     }
178 
179     public boolean requestFocus
180         (Component lightweightChild, boolean temporary,
181          boolean focusedWindowChangeAllowed, long time, CausedFocusEvent.Cause cause) {
182         return false;
183     }
184 
185     public Image createImage(ImageProducer producer) {
186         return null;
187     }
188 
189     public Image createImage(int width, int height) {
190         return null;
191     }
192 
193     public boolean prepareImage(Image img, int w, int h, ImageObserver o) {
194         return false;
195     }
196 
197     public int  checkImage(Image img, int w, int h, ImageObserver o) {
198         return 0;
199     }
200 
201     public Dimension preferredSize() {
202         return getPreferredSize();
203     }
204 
205     public Dimension minimumSize() {
206         return getMinimumSize();
207     }
208 
209     public Point getLocationOnScreen() {
210         return new Point(0,0);
211     }
212 
213     public Insets getInsets() {
214         return insets();
215     }
216 
217     public void beginValidate() {
218     }
219 
220     public void endValidate() {
221     }
222 
223     public Insets insets() {
224         return new Insets(0, 0, 0, 0);
225     }
226 
227     public boolean isPaintPending() {
228         return false;
229     }
230 
231     public boolean handlesWheelScrolling() {
232         return false;
233     }
234 
235     public VolatileImage createVolatileImage(int width, int height) {
236         return null;
237     }
238 
239     public void beginLayout() {
240     }
241 
242     public void endLayout() {
243     }
244 
245     public void createBuffers(int numBuffers, BufferCapabilities caps)
246         throws AWTException {
247         throw new AWTException(
248             "Page-flipping is not allowed on a lightweight component");
249     }
250     public Image getBackBuffer() {
251         throw new IllegalStateException(
252             "Page-flipping is not allowed on a lightweight component");
253     }
254     public void flip(int x1, int y1, int x2, int y2,
255                      BufferCapabilities.FlipContents flipAction)
256     {
257         throw new IllegalStateException(
258             "Page-flipping is not allowed on a lightweight component");
259     }
260     public void destroyBuffers() {
261     }
262 
263     /**
264      * @see java.awt.peer.ComponentPeer#isReparentSupported
265      */
266     public boolean isReparentSupported() {
267         return false;
268     }
269 
270     /**
271      * @see java.awt.peer.ComponentPeer#reparent
272      */
273     public void reparent(ContainerPeer newNativeParent) {
274         throw new UnsupportedOperationException();
275     }
276 
277     public void layout() {
278     }
279 
280     public Rectangle getBounds() {
281         return new Rectangle(0, 0, 0, 0);
282     }
283 
284 
285     /**
286       * Applies the shape to the native component window.
287       * @since 1.7
288       */
289     public void applyShape(Region shape) {
290     }
291 
292     /**
293      * Lowers this component at the bottom of the above HW peer. If the above parameter
294      * is null then the method places this component at the top of the Z-order.
295      */
296     public void setZOrder(ComponentPeer above) {
297     }
298 
299     public boolean updateGraphicsData(GraphicsConfiguration gc) {
300         return false;
301     }
302 
303     public GraphicsConfiguration getAppropriateGraphicsConfiguration(
304                         GraphicsConfiguration gc)
305     {
306         return gc;
307     }
308 }