diff options
author | Bryce McKinlay <bryce@waitaki.otago.ac.nz> | 2002-08-09 04:26:17 +0000 |
---|---|---|
committer | Bryce McKinlay <bryce@gcc.gnu.org> | 2002-08-09 05:26:17 +0100 |
commit | 7bde45b2eb84502b62e77e46d947e46dcbd333d6 (patch) | |
tree | cdf9958b411887bead2263ea8ef0bdfc8eae6319 /libjava/javax/swing/JComponent.java | |
parent | 097684ce62b505168739fc98e952f92a8719a1fa (diff) | |
download | gcc-7bde45b2eb84502b62e77e46d947e46dcbd333d6.zip gcc-7bde45b2eb84502b62e77e46d947e46dcbd333d6.tar.gz gcc-7bde45b2eb84502b62e77e46d947e46dcbd333d6.tar.bz2 |
AWT/Swing merge from GNU Classpath.
From-SVN: r56147
Diffstat (limited to 'libjava/javax/swing/JComponent.java')
-rw-r--r-- | libjava/javax/swing/JComponent.java | 1063 |
1 files changed, 1063 insertions, 0 deletions
diff --git a/libjava/javax/swing/JComponent.java b/libjava/javax/swing/JComponent.java new file mode 100644 index 0000000..fad7b6c --- /dev/null +++ b/libjava/javax/swing/JComponent.java @@ -0,0 +1,1063 @@ +/* JComponent.java -- Every component in swing inherits from this class. + Copyright (C) 2002 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +package javax.swing; + +import java.awt.*; +import java.awt.peer.*; +import java.awt.event.*; +import java.io.*; + +import javax.swing.event.*; +import javax.swing.border.*; +import javax.swing.plaf.*; + +import java.util.*; +import java.beans.*; + +import javax.accessibility.*; + +/** + * Every component in swing inherits from this class (JLabel, JButton, etc). + * It contains generic methods to manage events, properties and sizes. + * Actual drawing of the component is channeled to a look-and-feel class + * that is implemented elsewhere. + * + * @author Ronald Veldema (rveldema@cs.vu.nl) + */ +public abstract class JComponent extends Container implements Serializable +{ + /** + * accessibleContext + */ + protected AccessibleContext accessibleContext; + + Dimension pref,min,max; + Border border; + JToolTip tooltip; + String tool_tip_text; + boolean use_double_buffer, opaque; + protected ComponentUI ui; + + Vector ancestor_list; + Vector veto_list; + Vector change_list; + Hashtable prop_hash; + + /** + * AccessibleJComponent + */ + public abstract class AccessibleJComponent + extends AccessibleAWTContainer { + + //------------------------------------------------------------- + // Classes ---------------------------------------------------- + //------------------------------------------------------------- + + /** + * AccessibleFocusHandler + */ + protected class AccessibleFocusHandler implements FocusListener { + + //------------------------------------------------------------- + // Variables -------------------------------------------------- + //------------------------------------------------------------- + + + //------------------------------------------------------------- + // Initialization --------------------------------------------- + //------------------------------------------------------------- + + /** + * Constructor AccessibleFocusHandler + * @param component TODO + */ + protected AccessibleFocusHandler(AccessibleJComponent component) { + // TODO + } // AccessibleFocusHandler() + + + //------------------------------------------------------------- + // Methods ---------------------------------------------------- + //------------------------------------------------------------- + + /** + * focusGained + * @param event TODO + */ + public void focusGained(FocusEvent event) { + // TODO + } // focusGained() + + /** + * focusLost + * @param event TODO + */ + public void focusLost(FocusEvent valevent) { + // TODO + } // focusLost() + + + } // AccessibleFocusHandler + + /** + * AccessibleContainerHandler + */ + protected class AccessibleContainerHandler implements ContainerListener { + + //------------------------------------------------------------- + // Variables -------------------------------------------------- + //------------------------------------------------------------- + + + //------------------------------------------------------------- + // Initialization --------------------------------------------- + //------------------------------------------------------------- + + /** + * Constructor AccessibleContainerHandler + * @param component TODO + */ + protected AccessibleContainerHandler(AccessibleJComponent component) { + // TODO + } // AccessibleContainerHandler() + + + //------------------------------------------------------------- + // Methods ---------------------------------------------------- + //------------------------------------------------------------- + + /** + * componentAdded + * @param event TODO + */ + public void componentAdded(ContainerEvent event) { + // TODO + } // componentAdded() + + /** + * componentRemoved + * @param event TODO + */ + public void componentRemoved(ContainerEvent valevent) { + // TODO + } // componentRemoved() + + + } // AccessibleContainerHandler + + + //------------------------------------------------------------- + // Variables -------------------------------------------------- + //------------------------------------------------------------- + + /** + * accessibleContainerHandler + */ + protected ContainerListener accessibleContainerHandler; + + /** + * accessibleFocusHandler + */ + protected FocusListener accessibleFocusHandler; + + + //------------------------------------------------------------- + // Initialization --------------------------------------------- + //------------------------------------------------------------- + + /** + * Constructor AccessibleJComponent + * @param component TODO + */ + protected AccessibleJComponent(JComponent component) { +// super((Container)component); + // TODO + } // AccessibleJComponent() + + + //------------------------------------------------------------- + // Methods ---------------------------------------------------- + //------------------------------------------------------------- + + /** + * addPropertyChangeListener + * @param listener TODO + */ + public void addPropertyChangeListener(PropertyChangeListener listener) { + // TODO + } // addPropertyChangeListener() + + /** + * removePropertyChangeListener + * @param listener TODO + */ + public void removePropertyChangeListener(PropertyChangeListener listener) { + // TODO + } // removePropertyChangeListener() + + /** + * getAccessibleChildrenCount + * @returns int + */ + public int getAccessibleChildrenCount() { + return 0; // TODO + } // getAccessibleChildrenCount() + + /** + * getAccessibleChild + * @param value0 TODO + * @returns Accessible + */ + public Accessible getAccessibleChild(int value0) { + return null; // TODO + } // getAccessibleChild() + + /** + * getAccessibleStateSet + * @returns AccessibleStateSet + */ + public AccessibleStateSet getAccessibleStateSet() { + return null; // TODO + } // getAccessibleStateSet() + + /** + * getAccessibleName + * @returns String + */ + public String getAccessibleName() { + return null; // TODO + } // getAccessibleName() + + /** + * getAccessibleDescription + * @returns String + */ + public String getAccessibleDescription() { + return null; // TODO + } // getAccessibleDescription() + + /** + * getAccessibleRole + * @returns AccessibleRole + */ + public AccessibleRole getAccessibleRole() { + return null; // TODO + } // getAccessibleRole() + + /** + * getBorderTitle + * @param value0 TODO + * @returns String + */ + protected String getBorderTitle(Border value0) { + return null; // TODO + } // getBorderTitle() + + + } // AccessibleJComponent + + + public JComponent() + { + super(); + super.setLayout(new FlowLayout()); + + //eventMask |= AWTEvent.COMP_KEY_EVENT_MASK; + enableEvents( AWTEvent.KEY_EVENT_MASK ); + + //updateUI(); // get a proper ui + } + + + // protected EventListenerList listenerList + public boolean contains(int x, int y) + { + //return dims.contains(x,y); + return super.contains(x,y); + } + + + public void addNotify() + { + //Notification to this component that it now has a parent component. + super.addNotify(); + } + + + Hashtable get_prop_hash() + { + if (prop_hash == null) + prop_hash = new Hashtable(); + return prop_hash; + } + public Vector get_veto_list() + { + if (veto_list == null) + veto_list = new Vector(); + return veto_list; + } + public Vector get_change_list() + { + if (change_list == null) + change_list = new Vector(); + return change_list; + } + public Vector get_ancestor_list() + { + if (ancestor_list == null) + ancestor_list = new Vector(); + return ancestor_list; + } + + public Object getClientProperty(Object key) + { return get_prop_hash().get(key); } + + public void putClientProperty(Object key, Object value) + { get_prop_hash().put(key, value); } + + + public void removeAncestorListener(AncestorListener listener) + { get_ancestor_list().removeElement(listener); } + + public void removePropertyChangeListener(PropertyChangeListener listener) + { get_change_list().removeElement(listener); } + + public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) + { /* FIXME */ get_change_list().removeElement(listener); } + + public void removeVetoableChangeListener(VetoableChangeListener listener) + { get_veto_list().removeElement(listener); } + + public void addAncestorListener(AncestorListener listener) + { get_ancestor_list().addElement(listener); } + + public void addPropertyChangeListener(PropertyChangeListener listener) + { get_change_list().addElement(listener); } + + public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) + { /* FIXME */ get_change_list().addElement(listener); } + + public void addVetoableChangeListener(VetoableChangeListener listener) + { get_veto_list().addElement(listener); } + + public void computeVisibleRect(Rectangle rect) + { + //Returns the Component's "visible rect rectangle" - the intersection of the visible rectangles for this component and all of its ancestors. + //super.computeVisibleRect(rect); + } + + + public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) + { + //Reports a bound property change. + } + public void firePropertyChange(String propertyName, byte oldValue, byte newValue) + { + // Reports a bound property change. + } + public void firePropertyChange(String propertyName, char oldValue, char newValue) + { + //Reports a bound property change. + } + + public void firePropertyChange(String propertyName, double oldValue, double newValue) + { + //Reports a bound property change. + } + + public void firePropertyChange(String propertyName, float oldValue, float newValue) + { + // Reports a bound property change. + } + public void firePropertyChange(String propertyName, int oldValue, int newValue) + { + // Reports a bound property change. + } + public void firePropertyChange(String propertyName, long oldValue, long newValue) + { + //Reports a bound property change. protected + } + + protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) + { + // Support for reporting bound property changes. + } + public void firePropertyChange(String propertyName, short oldValue, short newValue) + { + // Reports a bound property change. + } + + + protected void fireVetoableChange(String propertyName, Object oldValue, Object newValue) + { + // Support for reporting constrained property changes. + } + + public AccessibleContext getAccessibleContext() + { + // Get the AccessibleContext associated with this JComponent + return null; + } + + public ActionListener getActionForKeyStroke(KeyStroke aKeyStroke) + { + //Return the object that will perform the action registered for a given keystroke. + return null; + } + public float getAlignmentX() + { + // Overrides Container.getAlignmentX to return the vertical alignment. + return 0; + } + + public float getAlignmentY() + { + // Overrides Container.getAlignmentY to return the horizontal alignment. + return 0; + } + public boolean getAutoscrolls() + { + //Returns true if this component automatically scrolls its contents when dragged, (when contained in a component that supports scrolling, like JViewport + return false; + } + + public void setBorder(Border border) + { + //System.out.println("set border called !, new border = " + border); + this.border = border; + revalidate(); + repaint(); + } + + public Border getBorder() + { return border; } + + + public Rectangle getBounds(Rectangle rv) + { + if (rv == null) + return new Rectangle(getX(),getY(),getWidth(),getHeight()); + else + { + rv.setBounds(getX(),getY(),getWidth(),getHeight()); + return rv; + } + } + + protected Graphics getComponentGraphics(Graphics g) + { return g; } + + public int getConditionForKeyStroke(KeyStroke aKeyStroke) + { + //Return the condition that determines whether a registered action occurs in response to the specified keystroke. + return 0; + } + public int getDebugGraphicsOptions() + { + return 0; + } + + public Graphics getGraphics() + { return super.getGraphics(); } + + + // static MantaNative void DebugMe(Border b); + + public Insets getInsets() + { + // System.out.println("watch this border"); + // DebugMe(border); + // System.out.println("border = " + border); + + if (border == null) + { + //System.out.println("compares to null !"); + return super.getInsets(); + } + // System.out.println("compare failed !"); + return getBorder().getBorderInsets(this); + } + + public Insets getInsets(Insets insets) + { + Insets t = getInsets(); + + if (insets == null) + return t; + + + return new Insets(t.top, t.left, t.bottom, t.right); + } + public Point getLocation(Point rv) + { + //Store the x,y origin of this component into "return value" rv and return rv. + + if (rv == null) + return new Point(getX(), + getY()); + + rv.setLocation(getX(), + getY()); + return rv; + } + + public Dimension getMaximumSize() + { + if (max != null) + { + //System.out.println("HAVE_MAX_SIZE = " + max); + return max; + } + if (ui != null) + { + Dimension s = ui.getMaximumSize(this); + if (s != null) + { + //System.out.println(" UI-MAX = " + s + ", UI = " + ui + ", IM="+this); + return s; + } + } + Dimension p = super.getMaximumSize(); + //System.out.println(" MAX = " + p + ", COMP="+this); + return p; + } + + public Dimension getMinimumSize() + { + if (min != null) + { + //System.out.println("HAVE_MIN_SIZE = " + min); + return min; + } + if (ui != null) + { + Dimension s = ui.getMinimumSize(this); + if (s != null) + { + // System.out.println(" UI-MIN = " + s + ", UI = " + ui + ", IM="+this); + return s; + } + } + Dimension p = super.getMinimumSize(); + // System.out.println(" MIN = " + p + ", COMP="+this); + return p; + } + + public Dimension getPreferredSize() + { + if (pref != null) + { + //System.out.println("HAVE_PREF_SIZE = " + pref); + return pref; + } + + if (ui != null) + { + Dimension s = ui.getPreferredSize(this); + if (s != null) + { + //System.out.println(" UI-PREF = " + s + ", UI = " + ui + ", IM="+this); + return s; + } + } + Dimension p = super.getPreferredSize(); + // System.out.println(" PREF = " + p + ", COMP="+this); + return p; + } + + public Component getNextFocusableComponent() + { + // Return the next focusable component or null if the focus manager should choose the next focusable component automatically + return null; + } + + + public KeyStroke[] getRegisteredKeyStrokes() + { + // Return the KeyStrokes that will initiate registered actions. + return null; + } + + public JRootPane getRootPane() + { + JRootPane p = SwingUtilities.getRootPane(this); + System.out.println("root = " + p); + return p; + } + + public Dimension getSize(Dimension rv) + { + // System.out.println("JComponent, getsize()"); + if (rv == null) + return new Dimension(getWidth(), + getHeight()); + else + { + rv.setSize(getWidth(), + getHeight()); + return rv; + } + } + + + + /********************************************************************* + * + * + * tooltips: + * + * + **************************************/ + + public JToolTip createToolTip() + { + if (tooltip == null) + tooltip = new JToolTip(tool_tip_text); + return tooltip; + } + + public Point getToolTipLocation(MouseEvent event) + { return null; } + + public void setToolTipText(String text) + { tool_tip_text = text; } + + public String getToolTipText() + { return tool_tip_text; } + + public String getToolTipText(MouseEvent event) + { return tool_tip_text; } + + /********************************************************************* + * + * + * things to do with visibility: + * + * + **************************************/ + + + public Container getTopLevelAncestor() + { + // Returns the top-level ancestor of this component (either the containing Window or Applet), or null if this component has not been added to any container. + System.out.println("JComponent, getTopLevelAncestor()"); + return null; + } + + public Rectangle getVisibleRect() + { + /// Returns the Component's "visible rectangle" - the intersection of this components visible rectangle: + System.out.println("JComponent, getVisibleRect()"); + return null; + } + + public void grabFocus() + { + // Set the focus on the receiving component. + } + + public boolean hasFocus() + { + // Returns true if this Component has the keyboard focus. + return false; + } + + public boolean isDoubleBuffered() + { return use_double_buffer; } + + public boolean isFocusCycleRoot() + { + // Override this method and return true if your component is the root of of a component tree with its own focus cycle. + return false; + } + + public boolean isFocusTraversable() + { + // Identifies whether or not this component can receive the focus. + return false; + } + + public static boolean isLightweightComponent(Component c) + { + return c.getPeer() instanceof LightweightPeer; + } + + public boolean isManagingFocus() + { + // Override this method and return true if your JComponent manages focus. + return false; + } + + public boolean isOpaque() + { return opaque; } + + public boolean isOptimizedDrawingEnabled() + { + // Returns true if this component tiles its children, + return true; + } + + public boolean isPaintingTile() + { + // Returns true if the receiving component is currently painting a tile. + return false; + } + + public boolean isRequestFocusEnabled() + { + // Return whether the receiving component can obtain the focus by calling requestFocus + return false; + } + + public boolean isValidateRoot() + { + // If this method returns true, revalidate() calls by descendants of this component will cause the entire tree beginning with this root to be validated. + return false; + } + + public void paint(Graphics g) + { + // System.out.println("SWING_PAINT:" + this); + + paintBorder(g); + paintComponent(g); + paintChildren(g); + } + + protected void paintBorder(Graphics g) + { + // System.out.println("PAINT_BORDER x XXXXXXX x x x x x x x x x x x x:" + getBorder() + ", THIS="+this); + + // Paint the component's border. + if (getBorder() != null) + { + //System.out.println("PAINT_BORDER x XXXXXXX x x x x x x x x x x x x:" + getBorder() + ", THIS="+this); + + getBorder().paintBorder(this, + g, + 0, + 0, + getWidth(), + getHeight()); + } + } + + protected void paintChildren(Graphics g) + { + // Paint this component's children. + //super.paintChildren(g); + } + + protected void paintComponent(Graphics g) + { + // If the UI delegate is non-null, call its paint method. + if (ui != null) + { + ui.paint(g, this); + } + } + + /** + * Paint the specified region in this component and all of + * its descendants that overlap the region, immediately. + */ + public void paintImmediately(int x, int y, int w, int h) + { + + //Ronald: this shoudld probably redirect to the PLAF .... + } + + public void paintImmediately(Rectangle r) + { + /// Paint the specified region now. + paintImmediately((int)r.getX(), + (int)r.getY(), + (int)r.getWidth(), + (int)r.getHeight()); + } + protected String paramString() + { + // Returns a string representation of this JComponent. + return "JComponent"; + } + protected void processComponentKeyEvent(KeyEvent e) + { + // Process any key events that the component itself recognizes. + //System.out.println("COMP_KEY-EVENT: " + e); + } + protected void processFocusEvent(FocusEvent e) + { + // Processes focus events occurring on this component by dispatching them to any registered FocusListener objects. + //System.out.println("FOCUS_EVENT: " + e); + } + + protected void processKeyEvent(KeyEvent e) + { + // Override processKeyEvent to process events protected + //System.out.println("KEY-EVENT: " + e); + } + + public void processMouseMotionEvent(MouseEvent e) + { + // Processes mouse motion events occurring on this component by dispatching them to any registered MouseMotionListener objects. + //System.out.println("COMP_MOUSE-EVENT: " + e + ", MEMORY = " + Runtime.getRuntime().freeMemory()); + } + + public void registerKeyboardAction(ActionListener anAction, + KeyStroke aKeyStroke, + int aCondition) + { + registerKeyboardAction(anAction, + null, + aKeyStroke, + aCondition); + } + + public void registerKeyboardAction(ActionListener anAction, + String aCommand, + KeyStroke aKeyStroke, + int aCondition) + { + // Register a new keyboard action. + } + + + public void removeNotify() + { + // Notification to this component that it no longer has a parent component. + } + + public void repaint(long tm, int x, int y, int width, int height) + { + // Adds the specified region to the dirty region list if the component is showing. + //System.out.println("JC: repaint"); + super.repaint(tm, x,y,width,height); + } + + public void repaint(Rectangle r) + { + // Adds the specified region to the dirty region list if the component is showing. + repaint((long)0, + (int)r.getX(), + (int)r.getY(), + (int)r.getWidth(), + (int)r.getHeight()); + } + + public boolean requestDefaultFocus() + { + // Request the focus for the component that should have the focus by default. + return false; + } + + public void requestFocus() + { + // Set focus on the receiving component if isRequestFocusEnabled returns true + super.requestFocus(); + } + + public void resetKeyboardActions() + { + // Unregister all keyboard actions + } + + public void reshape(int x, int y, int w, int h) + { + /// Moves and resizes this component. + super.reshape(x,y,w,h); + } + + public void revalidate() + { + // Support for deferred automatic layout. + if (getParent() == null) + invalidate(); + } + + public void scrollRectToVisible(Rectangle aRect) + { + // Forwards the scrollRectToVisible() message to the JComponent's parent. + } + + public void setAlignmentX(float alignmentX) + { + // Set the the vertical alignment. + } + + public void setAlignmentY(float alignmentY) + { + // Set the the horizontal alignment. + } + + public void setAutoscrolls(boolean autoscrolls) + { + // If true this component will automatically scroll its contents when dragged, if contained in a component that supports scrolling, such as JViewport + } + + + public void setDebugGraphicsOptions(int debugOptions) + { + // Enables or disables diagnostic information about every graphics operation performed within the component or one of its children. + } + + public void setDoubleBuffered(boolean aFlag) + { + use_double_buffer = aFlag; + } + + public void setEnabled(boolean enabled) + { + // Sets whether or not this component is enabled. + super.setEnabled(enabled); + repaint(); + } + + public void setFont(Font font) + { + super.setFont(font); + revalidate(); + repaint(); + } + public void setBackground(Color bg) + { + super.setBackground(bg); + revalidate(); + repaint(); + } + public void setForeground(Color fg) + { + super.setForeground(fg); + revalidate(); + repaint(); + } + + public void setMaximumSize(Dimension maximumSize) + { max = maximumSize; } + + public void setMinimumSize(Dimension minimumSize) + { min = minimumSize; } + + public void setPreferredSize(Dimension preferredSize) + { pref = preferredSize; } + + public void setNextFocusableComponent(Component aComponent) + { + // Specifies the next component to get the focus after this one, for example, when the tab key is pressed. + } + + public void setOpaque(boolean isOpaque) + { + opaque = isOpaque; + revalidate(); + repaint(); + } + + + public void setRequestFocusEnabled(boolean aFlag) + { + } + + + public void setVisible(boolean aFlag) + { + // Makes the component visible or invisible. + + super.setVisible(aFlag); + if (getParent() != null) + { + Rectangle dims = getBounds(); + getParent().repaint((int)dims.getX(), + (int)dims.getY(), + (int)dims.getWidth(), + (int)dims.getHeight()); + } + } + + public void unregisterKeyboardAction(KeyStroke aKeyStroke) + { + // Unregister a keyboard action. + } + + + public void update(Graphics g) + { + paint(g); + } + + + + /****************************************** + * + * + * UI management + * + * + *********/ + + public String getUIClassID() + { + /// Return the UIDefaults key used to look up the name of the swing. + return "JComponent"; + } + + protected void setUI(ComponentUI newUI) + { + if (ui != null) + { + ui.uninstallUI(this); + } + + // Set the look and feel delegate for this component. + ui = newUI; + + if (ui != null) + { + ui.installUI(this); + } + + revalidate(); + repaint(); + } + + public void updateUI() + { + // Resets the UI property to a value from the current look and feel. + System.out.println("update UI not overwritten in class: " + this); + } + +} |