Source for gnu.java.awt.peer.GLightweightPeer

   1: /* GLightweightPeer.java --
   2:    Copyright (C) 2003, 2004, 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: 
  39: package gnu.java.awt.peer;
  40: 
  41: import java.awt.AWTEvent;
  42: import java.awt.AWTException;
  43: import java.awt.BufferCapabilities;
  44: import java.awt.Color;
  45: import java.awt.Component;
  46: import java.awt.Cursor;
  47: import java.awt.Dimension;
  48: import java.awt.Font;
  49: import java.awt.FontMetrics;
  50: import java.awt.Graphics;
  51: import java.awt.GraphicsConfiguration;
  52: import java.awt.Image;
  53: import java.awt.Insets;
  54: import java.awt.Point;
  55: import java.awt.Rectangle;
  56: import java.awt.Toolkit;
  57: import java.awt.event.PaintEvent;
  58: import java.awt.image.ColorModel;
  59: import java.awt.image.ImageObserver;
  60: import java.awt.image.ImageProducer;
  61: import java.awt.image.VolatileImage;
  62: import java.awt.peer.ContainerPeer;
  63: import java.awt.peer.LightweightPeer;
  64: 
  65: /**
  66:  * A stub class that implements the ComponentPeer and ContainerPeer
  67:  * interfaces using callbacks into the Component and Container
  68:  * classes.  GLightweightPeer allows the Component and Container
  69:  * classes to treat lightweight and heavyweight peers in the same way.
  70:  *
  71:  * Lightweight components are painted directly onto their parent
  72:  * containers through an Image object provided by the toolkit.
  73:  */
  74: public class GLightweightPeer
  75:   implements LightweightPeer, ContainerPeer
  76: {
  77:   public GLightweightPeer()
  78:   {
  79:     // Nothing to do here.
  80:   }
  81: 
  82:   // -------- java.awt.peer.ContainerPeer implementation:
  83: 
  84:   public Insets insets()
  85:   {
  86:     // Nothing to do here for lightweights.
  87:     return null;
  88:   }
  89: 
  90:   public Insets getInsets()
  91:   {
  92:     // Nothing to do here for lightweights.
  93:     return null;
  94:   }
  95: 
  96:   public void beginValidate()
  97:   {
  98:     // Nothing to do here for lightweights.
  99:   }
 100: 
 101:   public void endValidate()
 102:   {
 103:     // Nothing to do here for lightweights.
 104:   }
 105: 
 106:   public void beginLayout()
 107:   {
 108:     // Nothing to do here for lightweights.
 109:   }
 110: 
 111:   public void endLayout()
 112:   {
 113:     // Nothing to do here for lightweights.
 114:   }
 115: 
 116:   public boolean isPaintPending()
 117:   {
 118:     // Nothing to do here for lightweights.
 119:     return false;
 120:   }
 121: 
 122:   // -------- java.awt.peer.ComponentPeer implementation:
 123: 
 124:   public int checkImage(Image img, int width, int height, ImageObserver o)
 125:   {
 126:     // Nothing to do here for lightweights.
 127:     return -1;
 128:   }
 129: 
 130:   public Image createImage(ImageProducer prod)
 131:   {
 132:     // Nothing to do here for lightweights.
 133:     return null;
 134:   }
 135: 
 136:   /* This method is not called. */
 137:   public Image createImage(int width, int height)
 138:   {
 139:     // Nothing to do here for lightweights.
 140:     return null;
 141:   }
 142: 
 143:   public void disable()
 144:   {
 145:     // Nothing to do here for lightweights.
 146:   }
 147: 
 148:   public void dispose()
 149:   {
 150:     // Nothing to do here for lightweights.
 151:   }
 152: 
 153:   public void enable()
 154:   {
 155:     // Nothing to do here for lightweights.
 156:   }
 157: 
 158:   public GraphicsConfiguration getGraphicsConfiguration()
 159:   {
 160:     // Nothing to do here for lightweights.
 161:     return null;
 162:   }
 163: 
 164:   public FontMetrics getFontMetrics(Font f)
 165:   {
 166:     // We shouldn't end up here, but if we do we can still try do something
 167:     // reasonable.
 168:     Toolkit tk = Toolkit.getDefaultToolkit();
 169:     return tk.getFontMetrics(f);
 170:   }
 171: 
 172:   /* Returning null here tells the Component object that called us to
 173:    * use its parent's Graphics. */
 174:   public Graphics getGraphics()
 175:   {
 176:     // Nothing to do here for lightweights.
 177:     return null;
 178:   }
 179: 
 180:   public Point getLocationOnScreen()
 181:   {
 182:     // Nothing to do here for lightweights.
 183:     return null;
 184:   }
 185: 
 186:   public Dimension getMinimumSize()
 187:   {
 188:     return minimumSize();
 189:   }
 190: 
 191:   public Dimension getPreferredSize()
 192:   {
 193:     return preferredSize();
 194:   }
 195: 
 196:   /* Returning null here tells the Component object that called us to
 197:    * use its parent's Toolkit. */
 198:   public Toolkit getToolkit()
 199:   {
 200:     // Nothing to do here for lightweights.
 201:     return null;
 202:   }
 203: 
 204:   public void handleEvent(AWTEvent e)
 205:   {
 206:     // This can only happen when an application posts a PaintEvent for
 207:     // a lightweight component directly. We still support painting for
 208:     // this case.
 209:     if (e instanceof PaintEvent)
 210:       {
 211:         PaintEvent pe = (PaintEvent) e;
 212:         Component target = (Component) e.getSource();
 213:         if (target != null && target.isShowing())
 214:           {
 215:             Graphics g = target.getGraphics();
 216:             if (g != null)
 217:               {
 218:                 try
 219:                   {
 220:                     Rectangle clip = pe.getUpdateRect();
 221:                     g.setClip(clip);
 222:                     target.paint(g);
 223:                   }
 224:                 finally
 225:                   {
 226:                     g.dispose();
 227:                   }
 228:               }
 229:           }
 230:       }
 231:   }
 232: 
 233:   public void hide()
 234:   {
 235:     // Nothing to do here for lightweights.
 236:   }
 237: 
 238:   public boolean isFocusable()
 239:   {
 240:     // Nothing to do here for lightweights.
 241:     return false;
 242:   }
 243: 
 244:   public boolean isFocusTraversable()
 245:   {
 246:     // Nothing to do here for lightweights.
 247:     return false;
 248:   }
 249: 
 250:   public Dimension minimumSize()
 251:   {
 252:     return new Dimension(0, 0);
 253:   }
 254: 
 255:   public Dimension preferredSize()
 256:   {
 257:     return new Dimension(0, 0);
 258:   }
 259: 
 260:   public void paint(Graphics graphics)
 261:   {
 262:     // Nothing to do here for lightweights.
 263:   }
 264: 
 265:   public boolean prepareImage(Image img, int width, int height,
 266:                               ImageObserver o)
 267:   {
 268:     // Nothing to do here for lightweights.
 269:     return false;
 270:   }
 271: 
 272:   public void print(Graphics graphics)
 273:   {
 274:     // Nothing to do here for lightweights.
 275:   }
 276: 
 277:   public void repaint(long tm, int x, int y, int width, int height)
 278:   {
 279:     // Nothing to do here for lightweights.
 280:   }
 281: 
 282:   public void requestFocus()
 283:   {
 284:     // Nothing to do here for lightweights.
 285:   }
 286: 
 287:   public boolean requestFocus(Component source, boolean bool1, boolean bool2,
 288:                               long x)
 289:   {
 290:     // Nothing to do here for lightweights.
 291:     return false;
 292:   }
 293: 
 294:   public void reshape(int x, int y, int width, int height)
 295:   {
 296:     // Nothing to do here for lightweights.
 297:   }
 298: 
 299:   public void setBackground(Color color)
 300:   {
 301:     // Nothing to do here for lightweights.
 302:   }
 303: 
 304:   public void setBounds(int x, int y, int width, int height)
 305:   {
 306:     // Nothing to do here for lightweights.
 307:   }
 308: 
 309:   /**
 310:    * Sets the cursor on the heavy-weight parent peer.
 311:    * Called by the MouseListener on mouse enter.
 312:    */
 313:   public void setCursor(Cursor cursor)
 314:   {
 315:     // Nothing to do here for lightweights.
 316:   }
 317: 
 318:   public void setEnabled(boolean enabled)
 319:   {
 320:     // Nothing to do here for lightweights.
 321:   }
 322: 
 323:   public void setEventMask(long eventMask)
 324:   {
 325:     // Nothing to do here for lightweights.
 326:   }
 327: 
 328:   public void setFont(Font font)
 329:   {
 330:     // Nothing to do here for lightweights.
 331:   }
 332: 
 333:   public void setForeground(Color color)
 334:   {
 335:     // Nothing to do here for lightweights.
 336:   }
 337: 
 338:   public void setVisible(boolean visible)
 339:   {
 340:     // Nothing to do here for lightweights.
 341:   }
 342: 
 343:   public void show()
 344:   {
 345:     // Nothing to do here for lightweights.
 346:   }
 347: 
 348:   public ColorModel getColorModel()
 349:   {
 350:     // Nothing to do here for lightweights.
 351:     return null;
 352:   }
 353: 
 354:   public boolean isObscured()
 355:   {
 356:     // Nothing to do here for lightweights.
 357:     return false;
 358:   }
 359: 
 360:   public boolean canDetermineObscurity()
 361:   {
 362:     // Nothing to do here for lightweights.
 363:     return false;
 364:   }
 365: 
 366:   public void coalescePaintEvent(PaintEvent e)
 367:   {
 368:     // Nothing to do here for lightweights.
 369:   }
 370: 
 371:   public void updateCursorImmediately()
 372:   {
 373:     // Nothing to do here for lightweights.
 374:   }
 375: 
 376:   public VolatileImage createVolatileImage(int width, int height)
 377:   {
 378:     // Nothing to do here for lightweights.
 379:     return null;
 380:   }
 381: 
 382:   public boolean handlesWheelScrolling()
 383:   {
 384:     // Nothing to do here for lightweights.
 385:     return false;
 386:   }
 387: 
 388:   public void createBuffers(int x, BufferCapabilities capabilities)
 389:     throws AWTException
 390:   {
 391:     // Nothing to do here for lightweights.
 392:   }
 393: 
 394:   public Image getBackBuffer()
 395:   {
 396:     // Nothing to do here for lightweights.
 397:     return null;
 398:   }
 399: 
 400:   public void flip(BufferCapabilities.FlipContents contents)
 401:   {
 402:     // Nothing to do here for lightweights.
 403:   }
 404: 
 405:   public void destroyBuffers()
 406:   {
 407:     // Nothing to do here for lightweights.
 408:   }
 409: 
 410:   public boolean isRestackSupported()
 411:   {
 412:     // Nothing to do here for lightweights.
 413:     return false;
 414:   }
 415: 
 416:   public void cancelPendingPaint(int x, int y, int width, int height)
 417:   {
 418:     // Nothing to do here for lightweights.
 419:   }
 420: 
 421:   public void restack()
 422:   {
 423:     // Nothing to do here for lightweights.
 424:   }
 425: 
 426:   public Rectangle getBounds()
 427:   {
 428:     // Nothing to do here for lightweights.
 429:     return null;
 430:   }
 431: 
 432:   public void reparent(ContainerPeer parent)
 433:   {
 434:     // Nothing to do here for lightweights.
 435:   }
 436: 
 437:   public void setBounds(int x, int y, int z, int width, int height)
 438:   {
 439:     // Nothing to do here for lightweights.
 440:   }
 441: 
 442:   public boolean isReparentSupported()
 443:   {
 444:     // Nothing to do here for lightweights.
 445:     return true;
 446:   }
 447: 
 448:   public void layout()
 449:   {
 450:     // Nothing to do here for lightweights.
 451:   }
 452: 
 453:   public boolean requestFocus(Component lightweightChild, boolean temporary,
 454:                               boolean focusedWindowChangeAllowed,
 455:                               long time, sun.awt.CausedFocusEvent.Cause cause)
 456:   {
 457:     // Always grant focus request.
 458:     return true;
 459:   }
 460: 
 461: }