diff options
Diffstat (limited to 'libjava/java/awt/Component.java')
-rw-r--r-- | libjava/java/awt/Component.java | 1329 |
1 files changed, 1280 insertions, 49 deletions
diff --git a/libjava/java/awt/Component.java b/libjava/java/awt/Component.java index d842910..d578826 100644 --- a/libjava/java/awt/Component.java +++ b/libjava/java/awt/Component.java @@ -1,108 +1,1339 @@ /* Copyright (C) 1999, 2000 Free Software Foundation - This file is part of libjava. + This file is part of libgcj. This software is copyrighted work licensed under the terms of the -Libjava License. Please consult the file "LIBJAVA_LICENSE" for +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for details. */ package java.awt; import java.awt.event.*; -//import java.awt.peer.ComponentPeer; +import java.awt.image.*; +import java.io.PrintStream; +import java.io.PrintWriter; +import java.lang.reflect.*; +import java.util.EventListener; +import java.util.Locale; +import java.util.ResourceBundle; +import java.util.Vector; +import java.awt.peer.ComponentPeer; +import java.beans.PropertyChangeSupport; +import java.beans.PropertyChangeListener; +// import javax.accessibility.AccessibleContext; -/* A very incomplete placeholder. */ +/* Status: Incomplete. The event dispatch mechanism is implemented. All + other methods defined in the J2SE 1.3 API javadoc exist, but are mostly + incomplete or only stubs; except for methods relating to the Drag and Drop, + Input Method, and Accessibility frameworks: These methods are present but + commented out. */ -public abstract class Component implements MenuContainer +public abstract class Component implements ImageObserver, MenuContainer, + java.io.Serializable { - Container parent; - java.awt.peer.ComponentPeer peer; - int x, y, width, height; - public Container getParent () { return parent; } + /* Constants for use with getAlignmentX()/getAlignmentY(). */ + public static final float BOTTOM_ALIGNMENT = 1.0f, + CENTER_ALIGNMENT = 0.5f, + LEFT_ALIGNMENT = 0.0f, + RIGHT_ALIGNMENT = 1.0f, + TOP_ALIGNMENT = 0.0f; + /* Serialized fields from the serialization spec. */ + // FIXME: Default values? + int x; + int y; + int width; + int height; + Color foreground; + Color background; + Font font; + Font peerFont; + Cursor cursor; + Locale locale; + boolean visible; + boolean enabled; + boolean valid; + boolean hasFocus; + //DropTarget dropTarget; + Vector popups; + String name; + boolean nameExplicitlySet; + Dimension minSize; + Dimension prefSize; + boolean newEventsOnly; + long eventMask; + PropertyChangeSupport changeSupport; + boolean isPacked; + int componentSerializedDataVersion; + /* AccessibleContext accessibleContext; */ + + /* Anything else is non-serializable, and should be declared "transient". */ + transient Container parent; + transient java.awt.peer.ComponentPeer peer; + + transient ComponentListener componentListener; + transient FocusListener focusListener; + transient KeyListener keyListener; + transient MouseListener mouseListener; + transient MouseMotionListener mouseMotionListener; + transient InputMethodListener inputMethodListener; + transient HierarchyListener hierarchyListener; + transient HierarchyBoundsListener hierarchyBoundsListener; + + protected Component() + { + } + + public String getName() + { + if (name == null && !nameExplicitlySet) + name = generateName(); + return name; + } + + public void setName(String name) + { + nameExplicitlySet = true; + this.name = name; + } + + /** Subclasses should override this to return unique component names like + * "menuitem0". + */ + String generateName() + { + // Component is abstract. + return null; + } + + public Container getParent() + { + return parent; + } + + /** @deprecated */ + public java.awt.peer.ComponentPeer getPeer() + { + return peer; + } + + // FIXME: java.awt.dnd classes not yet implemented + /* + public void setDropTarget(DropTarget dt) + { + this.dropTarget = dt; + } + + public DropTarget getDropTarget() + { + return dropTarget; + } + */ + + /** @since 1.3 */ + public GraphicsConfiguration getGraphicsConfiguration() + { + // FIXME + return null; + } + + public final Object getTreeLock() + { + // FIXME + return null; + } + + public Toolkit getToolkit() + { + // FIXME + return null; + } + + public boolean isValid() + { + // FIXME + return false; + } + + /** @since 1.2 */ + public boolean isDisplayable() + { + // FIXME + return false; + } + + public boolean isVisible() + { + return visible; + } + + public boolean isShowing() + { + // FIXME + return false; + } + + public boolean isEnabled() + { + return enabled; + } + + public void setEnabled(boolean b) + { + this.enabled = b; + } + + /** @deprecated */ + public void enable() + { + setEnabled(true); + } + + /** @deprecated */ + public void enable(boolean b) + { + setEnabled(b); + } + /** @deprecated */ - public java.awt.peer.ComponentPeer getPeer () { return peer; } + public void disable() + { + setEnabled(false); + } + + public boolean isDoubleBuffered() + { + return false; + } + + /** @since 1.2 */ + public void enableInputMethods(boolean enable) + { + // FIXME + } + + public void setVisible(boolean b) + { + visible = true; + // FIXME + } + + /** @deprecated */ + public void show() + { + setVisible(true); + } + + /** @deprecated */ + public void show(boolean b) + { + setVisible(b); + } + + /** @deprecated */ + public void hide() + { + setVisible(false); + } + + public Color getForeground() + { + return this.foreground; + } + + public void setForeground(Color c) + { + this.foreground = c; + } + + public Color getBackground() + { + return this.background; + } + + public void setBackground(Color c) + { + this.background = c; + } + + public Font getFont() + { + return this.font; + } + + public void setFont(Font f) + { + this.font = f; + } - public void setVisible (boolean b) - { /* FIXME */ } + public Locale getLocale() throws IllegalComponentStateException + { + if (locale != null) + return locale; + if (parent == null) + throw new IllegalComponentStateException + ("Component has no parent: Can not determine Locale"); + return parent.getLocale(); + } + + public void setLocale(Locale l) + { + this.locale = l; + } + + public ColorModel getColorModel() + { + // FIXME + return null; + } - public void setSize (Dimension d) - { setSize(d.width, d.height); } + public Point getLocation() + { + return new Point(x, y); + } - public void setSize (int width, int height) + public Point getLocationOnScreen() { - this.width = width; this.height = height; - if (peer != null) - peer.setBounds(x, y, width, height); + // FIXME + return null; + } + + /** @deprecated Use getLocation() instead. */ + public Point location() + { + return getLocation(); } public void setLocation (int x, int y) { - this.x = x; this.y = y; + this.x = x; + this.y = y; if (peer != null) peer.setBounds(x, y, width, height); } - public void setLocation (Point pt) - { setLocation(pt.x, pt.y); } - - public void setBounds (int x, int y, int w, int h) + /** @deprecated */ + public void move(int x, int y) + { + setLocation(x,y); + } + + public void setLocation(Point p) + { + setLocation(p.x, p.y); + } + + public Dimension getSize() + { + return new Dimension(width, height); + } + + /** @deprecated */ + public Dimension size() + { + return getSize(); + } + + public void setSize(int width, int height) { - this.x = x; this.y = y; - this.width = w; this.height = h; + this.width = width; + this.height = height; if (peer != null) - peer.setBounds(x, y, w, h); + peer.setBounds(x, y, width, height); + } + + /** @deprecated */ + public void resize(int width, int height) + { + setSize(width, height); + } + + public void setSize(Dimension d) + { + setSize(d.width, d.height); } - public void setBounds (Rectangle rect) - { setBounds(rect.x, rect.y, rect.width, rect.height); } - - public Rectangle getBounds () + /** @deprecated */ + public void resize(Dimension d) { - return new Rectangle(x, y, width, height); + setSize(d.width, d.height); } - public Point getLocation () + public Rectangle getBounds() { - return new Point(x, y); + return new Rectangle (x, y, width, height); } - public int getX () + /** @deprecated */ + public Rectangle bounds() + { + return getBounds(); + } + + public void setBounds(int x, int y, int w, int h) + { + this.x = x; + this.y = y; + this.width = w; + this.height = h; + if (peer != null) + peer.setBounds(x, y, w, h); + } + + /** @deprecated */ + public void reshape(int x, int y, int width, int height) + { + setBounds(x, y, width, height); + } + + public void setBounds(Rectangle r) + { + setBounds(r.x, r.y, r.width, r.height); + } + + /** @since 1.2 */ + public int getX() { return x; } - - public int getY () + + /** @since 1.2 */ + public int getY() { return y; } - - public Dimension getSize () + + /** @since 1.2 */ + public int getWidth() { - return new Dimension(width, height); + return width; } - - public Dimension getMinimumSize () + + /** @since 1.2 */ + public int getHeight() + { + return height; + } + + public Rectangle getBounds(Rectangle r) + { + r.x = this.x; + r.y = this.y; + r.width = this.width; + r.height = this.height; + return r; + } + + public Dimension getSize(Dimension d) + { + d.width = this.width; + d.height = this.height; + return d; + } + + public Point getLocation(Point p) + { + p.x = x; + p.y = y; + return p; + } + + /** @since 1.2 */ + public boolean isOpaque() + { + return false; + } + + /** @since 1.2 */ + public boolean isLightweight() + { + // FIXME + return false; + } + + public Dimension getPreferredSize() { + // FIXME? if (peer == null) return new Dimension(width, height); else - return peer.getMinimumSize(); + return peer.getPreferredSize(); } - public Dimension getPreferredSize () + /** @deprecated */ + public Dimension preferredSize() { + return getPreferredSize(); + } + + public Dimension getMinimumSize() + { + // FIXME? if (peer == null) return new Dimension(width, height); else - return peer.getPreferredSize(); + return peer.getMinimumSize(); } - public synchronized void addKeyListener (KeyListener listener) - { /* FIXME */ } + /** @deprecated */ + public Dimension minimumSize() + { + return getMinimumSize(); + } + + public Dimension getMaximumSize() + { + // FIXME + return null; + } + + public float getAlignmentX() + { + // FIXME + return 0; + } + + public float getAlignmentY() + { + // FIXME + return 0; + } + + public void doLayout() + { + // FIXME + } + + /** @deprecated */ + public void layout() + { + doLayout(); + } + + public void validate() + { + // FIXME + } + + public void invalidate() + { + // FIXME + } + + public Graphics getGraphics() + { + // FIXME + return null; + } + + public FontMetrics getFontMetrics(Font font) + { + // FIXME + return null; + } + + public void setCursor(Cursor cursor) + { + this.cursor = cursor; + } + + public Cursor getCursor() + { + return this.cursor; + } + + public void paint(Graphics g) + { + } + + public void update(Graphics g) + { + // FIXME + } + + public void paintAll(Graphics g) + { + } + + public void repaint() + { + // FIXME + } + + public void repaint(long tm) + { + // FIXME + } + + public void repaint(int x, int y, int width, int height) + { + // FIXME + } + + public void repaint(long tm, int x, int y, int width, int height) + { + // FIXME + } + + public void print(Graphics g) + { + // FIXME + } + + public void printAll(Graphics g) + { + // FIXME + } + + public boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h) + { + // FIXME + return false; + } + + public Image createImage(ImageProducer producer) + { + // FIXME + return null; + } + + public Image createImage(int width, int height) + { + // FIXME + return null; + } + + public boolean prepareImage(Image image, ImageObserver observer) + { + // FIXME + return false; + } + + public boolean prepareImage(Image image, int width, int height, ImageObserver observer) + { + // FIXME + return false; + } - public boolean isFocusTraversable () - { /* FIXME */ return false; } + public int checkImage(Image image, ImageObserver observer) + { + // FIXME + return false; + } + + public int checkImage(Image image, int width, int height, ImageObserver observer) + { + // FIXME + return 0; + } + + public boolean contains(int x, int y) + { + return (x >= 0) && (y >= 0) && (x < width) && (y < height); + } + + /** @deprecated */ + public boolean inside(int x, int y) + { + return contains(x,y); + } + + public boolean contains(Point p) + { + return contains(p.x, p.y); + } + + public Component getComponentAt(int x, int y) + { + if (contains(x,y)) + return this; + return null; + } + + /** @deprecated */ + public Component locate(int x, int y) + { + return getComponentAt(x, y); + } + + public Component getComponentAt(Point p) + { + return getComponentAt(p.x, p.y); + } + + /** @deprecated */ + public void deliverEvent(Event e) + { + + } + + /** Forward AWT events to processEvent() if: + * - Events have been enabled for this type of event via enableEvents(), + * OR: + * - There is at least one registered listener for this type of event + * + * @specnote This method is final, but we need to be able to + * override it in order to handle other event types in our + * subclasses. The solution is to define a second, non-final + * method - dispatchEventImpl() - to actually do the work. + * Investigations with Thread.dumpStack() on the dispatch thread + * in JDK 1.3 show Sun's implementation is doing the same + * thing. + */ + public final void dispatchEvent(AWTEvent e) + { + dispatchEventImpl(e); + } + /* This code needs to be split up and put in to dispatchEventImpl() in the + appropriate Component subclasses: + + else if ((e.id <= WindowEvent.WINDOW_LAST + && e.id >= WindowEvent.WINDOW_FIRST) + && (windowListener != null + || eventMask & AWTEvent.WINDOW_EVENT_MASK != 0)) + processEvent(e); + else if ((e.id <= AdjustmentEvent.ADJUSTMENT_LAST + && e.id >= AdjustmentEvent.ADJUSTMENT_FIRST) + && (adjustmentListener != null + || eventMask & AWTEvent.ADJUSTMENT_EVENT_MASK != 0)) + processEvent(e); + else if ((e.id <= ItemEvent.ITEM_LAST + && e.id >= ItemEvent.ITEM_FIRST) + && (itemListener != null + || eventMask & AWTEvent.ITEM_EVENT_MASK != 0)) + processEvent(e); + else if ((e.id <= PaintEvent.PAINT_LAST + && e.id >= PaintEvent.PAINT_FIRST) + && (paintListener != null + || eventMask & AWTEvent.PAINT_EVENT_MASK != 0)) + processEvent(e); + else if ((e.id <= TextEvent.TEXT_LAST + && e.id >= TextEvent.TEXT_FIRST) + && (textListener != null + || eventMask & AWTEvent.TEXT_EVENT_MASK != 0)) + processEvent(e); + else if ((e.id <= InvocationEvent.INVOCATION_LAST + && e.id >= InvocationEvent.INVOCATION_FIRST) + && (invocationListener != null + || eventMask & AWTEvent.INVOCATION_EVENT_MASK != 0)) + processEvent(e); + } + */ + + void dispatchEventImpl(AWTEvent e) + { + // Make use of event id's in order to avoid multiple instanceof tests. + if (e.id <= ComponentEvent.COMPONENT_LAST + && e.id >= ComponentEvent.COMPONENT_FIRST + && (componentListener != null + || (eventMask & AWTEvent.COMPONENT_EVENT_MASK) != 0)) + processEvent(e); + else if (e.id <= KeyEvent.KEY_LAST + && e.id >= KeyEvent.KEY_FIRST + && (keyListener != null + || (eventMask & AWTEvent.KEY_EVENT_MASK) != 0)) + processEvent(e); + else if (e.id <= MouseEvent.MOUSE_LAST + && e.id >= MouseEvent.MOUSE_FIRST + && (mouseListener != null + || mouseMotionListener != null + || (eventMask & AWTEvent.MOUSE_EVENT_MASK) != 0)) + processEvent(e); + else if (e.id <= FocusEvent.FOCUS_LAST + && e.id >= FocusEvent.FOCUS_FIRST + && (focusListener != null + || (eventMask & AWTEvent.FOCUS_EVENT_MASK) != 0)) + processEvent(e); + else if (e.id <= InputMethodEvent.INPUT_METHOD_LAST + && e.id >= InputMethodEvent.INPUT_METHOD_FIRST + && (inputMethodListener != null + || (eventMask & AWTEvent.INPUT_METHOD_EVENT_MASK) != 0)) + processEvent(e); + else if (e.id <= HierarchyEvent.HIERARCHY_LAST + && e.id >= HierarchyEvent.HIERARCHY_FIRST + && (hierarchyListener != null + || hierarchyBoundsListener != null + || (eventMask & AWTEvent.HIERARCHY_EVENT_MASK) != 0)) + processEvent(e); + } + + /** @deprecated */ + public boolean postEvent(Event e) + { + return false; + } + + public synchronized void addComponentListener(ComponentListener l) + { + componentListener = AWTEventMulticaster.add(componentListener, l); + if (componentListener != null) + enableEvents(AWTEvent.COMPONENT_EVENT_MASK); + } + + public synchronized void removeComponentListener(ComponentListener l) + { + componentListener = AWTEventMulticaster.remove(componentListener, l); + } + + public synchronized void addFocusListener(FocusListener l) + { + focusListener = AWTEventMulticaster.add(focusListener, l); + if (focusListener != null) + enableEvents(AWTEvent.FOCUS_EVENT_MASK); + } + + public synchronized void removeFocusListener(FocusListener l) + { + focusListener = AWTEventMulticaster.remove(focusListener, l); + } + + /** @since 1.3 */ + public synchronized void addHierarchyListener(HierarchyListener l) + { + hierarchyListener = AWTEventMulticaster.add(hierarchyListener, l); + if (hierarchyListener != null) + enableEvents(AWTEvent.HIERARCHY_EVENT_MASK); + } + + /** @since 1.3 */ + public synchronized void removeHierarchyListener(HierarchyListener l) + { + hierarchyListener = AWTEventMulticaster.remove(hierarchyListener, l); + } + + /** @since 1.3 */ + public synchronized void addHierarchyBoundsListener(HierarchyBoundsListener l) + { + hierarchyBoundsListener = + AWTEventMulticaster.add(hierarchyBoundsListener, l); + if (hierarchyBoundsListener != null) + enableEvents(AWTEvent.HIERARCHY_EVENT_MASK); + } + + /** @since 1.3 */ + public synchronized void + removeHierarchyBoundsListener(HierarchyBoundsListener l) + { + hierarchyBoundsListener = + AWTEventMulticaster.remove(hierarchyBoundsListener, l); + } + + public synchronized void addKeyListener(KeyListener l) + { + keyListener = AWTEventMulticaster.add(keyListener, l); + if (keyListener != null) + enableEvents(AWTEvent.KEY_EVENT_MASK); + } + + public synchronized void removeKeyListener(KeyListener l) + { + keyListener = AWTEventMulticaster.remove(keyListener, l); + } - public void addNotify () { } + public synchronized void addMouseListener(MouseListener l) + { + mouseListener = AWTEventMulticaster.add(mouseListener, l); + if (mouseListener != null) + enableEvents(AWTEvent.MOUSE_EVENT_MASK); + } + + public synchronized void removeMouseListener(MouseListener l) + { + mouseListener = AWTEventMulticaster.remove(mouseListener, l); + } + + public synchronized void addMouseMotionListener(MouseMotionListener l) + { + mouseMotionListener = AWTEventMulticaster.add(mouseMotionListener, l); + if (mouseMotionListener != null) + enableEvents(AWTEvent.MOUSE_EVENT_MASK); + } + + public synchronized void removeMouseMotionListener(MouseMotionListener l) + { + mouseMotionListener = AWTEventMulticaster.remove(mouseMotionListener, l); + } + + /** @since 1.2 */ + public synchronized void addInputMethodListener(InputMethodListener l) + { + inputMethodListener = AWTEventMulticaster.add(inputMethodListener, l); + if (inputMethodListener != null) + enableEvents(AWTEvent.INPUT_METHOD_EVENT_MASK); + } + + /** @since 1.2 */ + public synchronized void removeInputMethodListener(InputMethodListener l) + { + inputMethodListener = AWTEventMulticaster.remove(inputMethodListener, l); + } + + /** Returns all registered EventListers of the given listenerType. + * listenerType must be a subclass of EventListener, or a + * ClassClassException is thrown. + * @since 1.3 + */ + public EventListener[] getListeners(Class listenerType) + { + if (listenerType == ComponentListener.class) + return getListenersImpl(listenerType, componentListener); + else if (listenerType == FocusListener.class) + return getListenersImpl(listenerType, focusListener); + else if (listenerType == KeyListener.class) + return getListenersImpl(listenerType, keyListener); + else if (listenerType == MouseListener.class) + return getListenersImpl(listenerType, mouseListener); + else if (listenerType == MouseMotionListener.class) + return getListenersImpl(listenerType, mouseMotionListener); + else if (listenerType == InputMethodListener.class) + return getListenersImpl(listenerType, inputMethodListener); + else if (listenerType == HierarchyListener.class) + return getListenersImpl(listenerType, hierarchyListener); + else if (listenerType == HierarchyBoundsListener.class) + return getListenersImpl(listenerType, hierarchyBoundsListener); + else + return getListenersImpl(listenerType, null); + } + + static EventListener[] getListenersImpl(Class listenerType, EventListener el) + { + if (! EventListener.class.isAssignableFrom(listenerType)) + throw new ClassCastException(); + + Vector v = new Vector(); + if (el != null) + getListenerList (el, v); + EventListener[] el_a = (EventListener[]) Array.newInstance(listenerType, + v.size()); + v.copyInto(el_a); + return el_a; + } + + static void getListenerList(EventListener el, Vector v) + { + if (el instanceof AWTEventMulticaster) + { + AWTEventMulticaster mc = (AWTEventMulticaster) el; + getListenerList(mc.a, v); + getListenerList(mc.b, v); + } + else + v.addElement(el); + } + + // The input method framework is currently unimplemented. + // /** @since 1.2 */ + // + //public InputMethodRequests getInputMethodRequests() + // + // /** @since 1.2 */ + // + // public InputContext getInputContext() + + protected final void enableEvents(long eventsToEnable) + { + eventMask |= eventsToEnable; + // TODO: Unlike Sun's implementation, I think we should try and + // enable/disable events at the peer (gtk/X) level. This will avoid + // clogging the event pipeline with useless mousemove events that + // we arn't interested in, etc. This will involve extending the peer + // interface, but thats okay because the peer interfaces have been + // deprecated for a long time, and no longer feature in the + // API specification at all. + } + + protected final void disableEvents(long eventsToDisable) + { + eventMask &= ~eventsToDisable; + // forward new event mask to peer? + } + + /** coalesceEvents is called by the EventQueue if two events with the same + * event id are queued. Returns a new combined event, or null if no + * combining is done. + */ + protected AWTEvent coalesceEvents(AWTEvent existingEvent, AWTEvent newEvent) + { + if (existingEvent instanceof MouseEvent + && (existingEvent.id == MouseEvent.MOUSE_DRAGGED + || existingEvent.id == MouseEvent.MOUSE_MOVED)) + { + // Just drop the old (intermediate) event and return the new one. + return newEvent; + } + /* + else if (existingEvent instanceof PaintEvent) + { + // The JDK 1.3 documentation says that in this case a complex + // RepaintArea is generated. We don't do that yet, and creating a + // union area as suggested by older documentation sounds ugly. + } + */ + + // FIXME + return null; + } + + /** Forward event to the appropriate processXXXEvent method based on the + * event type. + */ + protected void processEvent(AWTEvent e) + { + if (e instanceof ComponentEvent) + processComponentEvent((ComponentEvent) e); + else if (e instanceof FocusEvent) + processFocusEvent((FocusEvent) e); + else if (e instanceof KeyEvent) + processKeyEvent((KeyEvent) e); + else if (e instanceof MouseEvent) + { + if (e.id == MouseEvent.MOUSE_MOVED + || e.id == MouseEvent.MOUSE_DRAGGED) + processMouseMotionEvent((MouseEvent) e); + else + processMouseEvent((MouseEvent) e); + } + else if (e instanceof InputMethodEvent) + processInputMethodEvent((InputMethodEvent) e); + else if (e instanceof HierarchyEvent) + { + if (e.id == HierarchyEvent.HIERARCHY_CHANGED) + processHierarchyEvent((HierarchyEvent) e); + else + processHierarchyBoundsEvent((HierarchyEvent) e); + } + } + + protected void processComponentEvent(ComponentEvent e) + { + if (componentListener == null) + return; + switch (e.id) + { + case ComponentEvent.COMPONENT_HIDDEN: + componentListener.componentHidden(e); + break; + + case ComponentEvent.COMPONENT_MOVED: + componentListener.componentMoved(e); + break; + + case ComponentEvent.COMPONENT_RESIZED: + componentListener.componentResized(e); + break; + + case ComponentEvent.COMPONENT_SHOWN: + componentListener.componentShown(e); + break; + } + } + + protected void processFocusEvent(FocusEvent e) + { + if (focusListener == null) + return; + switch (e.id) + { + case FocusEvent.FOCUS_GAINED: + focusListener.focusGained(e); + break; + case FocusEvent.FOCUS_LOST: + focusListener.focusLost(e); + break; + } + } + + protected void processKeyEvent(KeyEvent e) + { + if (keyListener == null) + return; + switch (e.id) + { + case KeyEvent.KEY_PRESSED: + keyListener.keyPressed(e); + break; + case KeyEvent.KEY_RELEASED: + keyListener.keyReleased(e); + break; + case KeyEvent.KEY_TYPED: + keyListener.keyTyped(e); + break; + } + } + + protected void processMouseEvent(MouseEvent e) + { + if (mouseListener == null) + return; + switch (e.id) + { + case MouseEvent.MOUSE_CLICKED: + mouseListener.mousePressed(e); + break; + case MouseEvent.MOUSE_ENTERED: + mouseListener.mouseEntered(e); + break; + case MouseEvent.MOUSE_EXITED: + mouseListener.mouseExited(e); + break; + case MouseEvent.MOUSE_PRESSED: + mouseListener.mousePressed(e); + break; + case MouseEvent.MOUSE_RELEASED: + mouseListener.mouseReleased(e); + break; + } + } + + protected void processMouseMotionEvent(MouseEvent e) + { + if (mouseMotionListener == null) + return; + switch (e.id) + { + case MouseEvent.MOUSE_DRAGGED: + mouseMotionListener.mouseDragged(e); + break; + case MouseEvent.MOUSE_MOVED: + mouseMotionListener.mouseMoved(e); + break; + } + } + + /** @since 1.2 */ + protected void processInputMethodEvent(InputMethodEvent e) + { + if (inputMethodListener == null) + return; + switch (e.id) + { + case InputMethodEvent.CARET_POSITION_CHANGED: + inputMethodListener.caretPositionChanged(e); + break; + case InputMethodEvent.INPUT_METHOD_TEXT_CHANGED: + inputMethodListener.inputMethodTextChanged(e); + break; + } + } + + /** @since 1.3 */ + protected void processHierarchyEvent(HierarchyEvent e) + { + if (hierarchyListener == null) + return; + if (e.id == HierarchyEvent.HIERARCHY_CHANGED) + hierarchyListener.hierarchyChanged(e); + } + + /** @since 1.3 */ + protected void processHierarchyBoundsEvent(HierarchyEvent e) + { + if (hierarchyBoundsListener == null) + return; + switch (e.id) + { + case HierarchyEvent.ANCESTOR_MOVED: + hierarchyBoundsListener.ancestorMoved(e); + break; + case HierarchyEvent.ANCESTOR_RESIZED: + hierarchyBoundsListener.ancestorResized(e); + break; + } + } + + /** @deprecated */ + public boolean handleEvent(Event evt) + { + return false; + } + + /** @deprecated */ + public boolean mouseDown(Event evt, int x, int y) + { + return false; + } + + /** @deprecated */ + public boolean mouseDrag(Event evt, int x, int y) + { + return false; + } + + /** @deprecated */ + public boolean mouseUp(Event evt, int x, int y) + { + return false; + } + + /** @deprecated */ + public boolean mouseMove(Event evt, int x, int y) + { + return false; + } + + /** @deprecated */ + public boolean mouseEnter(Event evt, int x, int y) + { + return false; + } + + /** @deprecated */ + public boolean mouseExit(Event evt, int x, int y) + { + return false; + } + + /** @deprecated */ + public boolean keyDown(Event evt, int key) + { + return false; + } + + /** @deprecated */ + public boolean keyUp(Event evt, int key) + { + return false; + } + + /** @deprecated */ + public boolean action(Event evt, Object what) + { + return false; + } + + public void addNotify() + { + // FIXME + } + + public void removeNotify() + { + // FIXME + } + + /** @deprecated */ + public boolean gotFocus(Event evt, Object what) + { + return false; + } + + /** @deprecated */ + public boolean lostFocus(Event evt, Object what) + { + return false; + } + + public boolean isFocusTraversable() + { + // FIXME + return false; + } + + public void requestFocus() + { + // FIXME + } + + public void transferFocus() + { + // FIXME + } + + /** @deprecated */ + public void nextFocus() + { + transferFocus(); + } + + /** @since 1.2 */ + public boolean hasFocus() + { + // FIXME + return false; + } + + public synchronized void add(PopupMenu popup) + { + if (popups == null) + popups = new Vector(); + popups.addElement(popup); + } + + public synchronized void remove(MenuComponent popup) + { + popups.removeElement(popup); + } + + protected String paramString() + { + // FIXME + return "FIXME"; + } + + public String toString() + { + return paramString(); + } + + public void list() + { + } + + public void list(PrintStream out) + { + } + + public void list(PrintStream out, int indent) + { + } + + public void list(PrintWriter out) + { + } + + public void list(PrintWriter out, int indent) + { + } + + public void addPropertyChangeListener(PropertyChangeListener listener) + { + + } + + public void removePropertyChangeListener(PropertyChangeListener listener) + { + } + + public void addPropertyChangeListener(String propertyName, + PropertyChangeListener listener) + { + } + + public void removePropertyChangeListener(String propertyName, + PropertyChangeListener listener) + { + } + + protected void firePropertyChange(String propertyName, Object oldValue, + Object newValue) + { + } + + public void setComponentOrientation(ComponentOrientation o) + { + // FIXME + } + + public ComponentOrientation getComponentOrientation() + { + // FIXME + return null; + } + + /* + public AccessibleContext getAccessibleContext() + { + return accessibleContext; + } + */ } |