diff options
author | mkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-06-27 12:41:52 +0000 |
---|---|---|
committer | mkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-06-27 12:41:52 +0000 |
commit | ec403df959893ee586941b2a3e7dcdf74eb465a7 (patch) | |
tree | 9c9150539c2b41f8cf847c48aa7c5d93cf1466a9 /libjava/javax | |
parent | ac8d19f023c5c7f23843d7d92ea718ff96ac29e4 (diff) | |
download | gcc-ec403df959893ee586941b2a3e7dcdf74eb465a7.tar.gz |
2003-06-27 Michael Koch <konqueror@gmx.de>
* javax/swing/JWindow.java,
javax/swing/event/AncestorEvent.java,
javax/swing/event/HyperlinkEvent.java,
javax/swing/event/InternalFrameEvent.java,
javax/swing/event/ListDataEvent.java,
javax/swing/event/TableModelEvent.java,
javax/swing/plaf/PopupMenuUI.java,
javax/swing/plaf/SplitPaneUI.java,
javax/swing/plaf/TabbedPaneUI.java,
javax/swing/plaf/TextUI.java,
javax/swing/plaf/TreeUI.java,
javax/swing/plaf/basic/BasicTextUI.java,
javax/swing/plaf/basic/BasicTreeUI.java:
New versions from classpath.
* javax/swing/Popup.java,
javax/swing/PopupFactory.jav:
New source files from classpath.
* javax/swing/plaf/doc-files/TreeUI-1.png:
New binary files from classpath.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@68568 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/javax')
-rw-r--r-- | libjava/javax/swing/JWindow.java | 7 | ||||
-rw-r--r-- | libjava/javax/swing/Popup.java | 189 | ||||
-rw-r--r-- | libjava/javax/swing/PopupFactory.java | 139 | ||||
-rw-r--r-- | libjava/javax/swing/event/AncestorEvent.java | 8 | ||||
-rw-r--r-- | libjava/javax/swing/event/HyperlinkEvent.java | 2 | ||||
-rw-r--r-- | libjava/javax/swing/event/InternalFrameEvent.java | 20 | ||||
-rw-r--r-- | libjava/javax/swing/event/ListDataEvent.java | 8 | ||||
-rw-r--r-- | libjava/javax/swing/event/TableModelEvent.java | 12 | ||||
-rw-r--r-- | libjava/javax/swing/plaf/PopupMenuUI.java | 110 | ||||
-rw-r--r-- | libjava/javax/swing/plaf/SplitPaneUI.java | 162 | ||||
-rw-r--r-- | libjava/javax/swing/plaf/TabbedPaneUI.java | 86 | ||||
-rw-r--r-- | libjava/javax/swing/plaf/TextUI.java | 262 | ||||
-rw-r--r-- | libjava/javax/swing/plaf/TreeUI.java | 171 | ||||
-rw-r--r-- | libjava/javax/swing/plaf/basic/BasicTextUI.java | 15 | ||||
-rw-r--r-- | libjava/javax/swing/plaf/basic/BasicTreeUI.java | 197 | ||||
-rw-r--r-- | libjava/javax/swing/plaf/doc-files/TreeUI-1.png | bin | 0 -> 8660 bytes |
16 files changed, 1211 insertions, 177 deletions
diff --git a/libjava/javax/swing/JWindow.java b/libjava/javax/swing/JWindow.java index 50d0c316895..5edf5b25412 100644 --- a/libjava/javax/swing/JWindow.java +++ b/libjava/javax/swing/JWindow.java @@ -1,5 +1,5 @@ /* JWindow.java -- - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -78,6 +78,11 @@ public class JWindow extends Window implements Accessible * *************/ + public JWindow() + { + this(null); + } + // huuu ? public JWindow(Frame f) { diff --git a/libjava/javax/swing/Popup.java b/libjava/javax/swing/Popup.java new file mode 100644 index 00000000000..b1cb4460a49 --- /dev/null +++ b/libjava/javax/swing/Popup.java @@ -0,0 +1,189 @@ +/* Popup.java -- + Copyright (C) 2003 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.Component; + + +/** + * Manages a popup window that displays a Component on top of + * everything else. + * + * <p>To obtain an instance of <code>Popup</code>, use the + * {@link javax.swing.PopupFactory}. + * + * @since 1.4 + * + * @author Sascha Brawer (brawer@dandelis.ch) + */ +public class Popup +{ + /** + * Constructs a new <code>Popup</code> given its owner, + * contents and the screen position where the popup + * will appear. + * + * @param owner the Component to which <code>x</code> and + * <code>y</code> are relative, or <code>null</code> for + * placing the popup relative to the origin of the screen. + * + * @param contents the contents that will be displayed inside + * the <code>Popup</code>. + * + * @param x the horizontal position where the Popup will appear. + * + * @param y the vertical position where the Popup will appear. + * + * @throws IllegalArgumentException if <code>contents</code> + * is <code>null</code>. + */ + protected Popup(Component owner, Component contents, + int x, int y) + { + if (contents == null) + throw new IllegalArgumentException(); + + // The real stuff happens in the implementation of subclasses, + // for instance JWindowPopup. + } + + + /** + * Constructs a new <code>Popup</code>. + */ + protected Popup() + { + } + + + /** + * Displays the <code>Popup</code> on the screen. Nothing happens + * if it is currently shown. + */ + public void show() + { + // Implemented by subclasses, for instance JWindowPopup. + } + + + /** + * Removes the <code>Popup</code> from the screen. Nothing happens + * if it is currently hidden. + */ + public void hide() + { + // Implemented by subclasses, for instance JWindowPopup. + } + + + /** + * A <code>Popup</code> that uses a <code>JWindow</code> for + * displaying its contents. + * + * @see PopupFactory#getPopup + * + * @author Sascha Brawer (brawer@dandelis.ch) + */ + static class JWindowPopup + extends Popup + { + /** + * The <code>JWindow</code> used for displaying the contents + * of the popup. + */ + JWindow window; + + + /** + * Constructs a new <code>JWindowPopup</code> given its owner, + * contents and the screen position where the popup + * will appear. + * + * @param owner the Component to which <code>x</code> and + * <code>y</code> are relative, or <code>null</code> for + * placing the popup relative to the origin of the screen. + * + * @param contents the contents that will be displayed inside + * the <code>Popup</code>. + * + * @param x the horizontal position where the Popup will appear. + * + * @param y the vertical position where the Popup will appear. + * + * @throws IllegalArgumentException if <code>contents</code> + * is <code>null</code>. + */ + public JWindowPopup(Component owner, Component contents, + int x, int y) + { + /* Checks whether contents is null. */ + super(owner, contents, x, y); + + window = new JWindow(); + window.getRootPane().add(contents); + window.setLocation(x, y); + window.pack(); + } + + + /** + * Displays the popup’s <code>JWindow</code> on the screen. + * Nothing happens if it is already visible. + */ + public void show() + { + window.show(); + } + + + /** + * Removes the popup’s <code>JWindow</code> from the + * screen. Nothing happens if it is currently not visible. + */ + public void hide() + { + /* Calling dispose() instead of hide() will conserve native + * system resources, for example memory in an X11 server. + * They will automatically be re-allocated by a call to + * show(). + */ + window.dispose(); + } + } +} diff --git a/libjava/javax/swing/PopupFactory.java b/libjava/javax/swing/PopupFactory.java new file mode 100644 index 00000000000..571de22d0ed --- /dev/null +++ b/libjava/javax/swing/PopupFactory.java @@ -0,0 +1,139 @@ +/* PopupFactory.java -- + Copyright (C) 2003 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.Component; + + +/** + * A factory for <code>Popup</code> objects. These are used to + * managed little windows that float over everything else, + * typically containing a popup menu. + * + * @since 1.4 + * + * @author Sascha Brawer (brawer@dandelis.ch) + */ +public class PopupFactory +{ + /** + * The shared factory object. + * + * @see #getSharedFactory + * @see #setSharedFactory + */ + private static PopupFactory sharedFactory; + + + /** + * Constructs a new <code>PopupFactory</code>. Usually, a single + * <code>PopupFactory</code> is shared among multiple consumers + * of <code>Popup</code>. Use {@link #getSharedInstance} to retrieve + * the current factory. + */ + public PopupFactory() + { + } + + + /** + * Sets the shared factory. + * + * @param factory the PopupFactory that future invocations of + * {@link #getSharedInstance} will return. + * + * @throws IllegalArgumentException if <code>factory</code> + * is <code>null</code>. + */ + public static void setSharedInstance(PopupFactory factory) + { + if (factory == null) + throw new IllegalArgumentException(); + + /* Swing is not designed to be thread-safe, so there is no + * need to synchronize the access to the global variable. + */ + sharedFactory = factory; + } + + + /** + * Retrieves the shared factory, creating a new factory if + * necessary. + * + * @return a <code>PopupFactory</code> that can be used + * to create <code>Popup</code> objects. + */ + public static PopupFactory getSharedInstance() + { + /* Swing is not designed to be thread-safe, so there is no + * need to synchronize the access to the global variable. + */ + if (sharedFactory == null) + sharedFactory = new PopupFactory(); + + return sharedFactory; + } + + + /** + * Creates a new <code>Popup</code> given its owner, + * contents and the screen position where the popup + * will appear. + * + * @param owner the Component to which <code>x</code> and + * <code>y</code> are relative, or <code>null</code> for + * placing the popup relative to the origin of the screen. + * + * @param contents the contents that will be displayed inside + * the <code>Popup</code>. + * + * @param x the horizontal position where the Popup will appear. + * + * @param y the vertical position where the Popup will appear. + * + * @throws IllegalArgumentException if <code>contents</code> + * is <code>null</code>. + */ + public Popup getPopup(Component owner, Component contents, + int x, int y) + { + return new Popup.JWindowPopup(owner, contents, x, y); + } +} diff --git a/libjava/javax/swing/event/AncestorEvent.java b/libjava/javax/swing/event/AncestorEvent.java index 0259bad07a8..c6173932bb9 100644 --- a/libjava/javax/swing/event/AncestorEvent.java +++ b/libjava/javax/swing/event/AncestorEvent.java @@ -48,11 +48,11 @@ import javax.swing.JComponent; */ public class AncestorEvent extends AWTEvent { - private static final long serialVersionUID = 4799843792513591457L; + private static final long serialVersionUID = -8079801679695605002L; - public static int ANCESTOR_ADDED = 0; - public static int ANCESTOR_MOVED = 1; - public static int ANCESTOR_REMOVED = 2; + public static final int ANCESTOR_ADDED = 0; + public static final int ANCESTOR_MOVED = 1; + public static final int ANCESTOR_REMOVED = 2; private JComponent sourceComponent; private Container ancestor; diff --git a/libjava/javax/swing/event/HyperlinkEvent.java b/libjava/javax/swing/event/HyperlinkEvent.java index a1dfeb8d006..c979fbf62da 100644 --- a/libjava/javax/swing/event/HyperlinkEvent.java +++ b/libjava/javax/swing/event/HyperlinkEvent.java @@ -75,7 +75,7 @@ public class HyperlinkEvent extends EventObject } } - private static final long serialVersionUID = -8168964465779154277L; + private static final long serialVersionUID = -2054640811732867012L; private EventType type; private URL url; diff --git a/libjava/javax/swing/event/InternalFrameEvent.java b/libjava/javax/swing/event/InternalFrameEvent.java index 1fe65258f6a..15d12f2efcf 100644 --- a/libjava/javax/swing/event/InternalFrameEvent.java +++ b/libjava/javax/swing/event/InternalFrameEvent.java @@ -46,52 +46,52 @@ import javax.swing.JInternalFrame; */ public class InternalFrameEvent extends AWTEvent { - private static final long serialVersionUID = 9195444901064686684L; + private static final long serialVersionUID = -5204823611874873183L; /** * Internal frame activated event */ - public static int INTERNAL_FRAME_ACTIVATED = 25554; + public static final int INTERNAL_FRAME_ACTIVATED = 25554; /** * Internal frame closed event */ - public static int INTERNAL_FRAME_CLOSED = 25551; + public static final int INTERNAL_FRAME_CLOSED = 25551; /** * Internal frame closing event */ - public static int INTERNAL_FRAME_CLOSING = 25550; + public static final int INTERNAL_FRAME_CLOSING = 25550; /** * Internal frame deactivated event */ - public static int INTERNAL_FRAME_DEACTIVATED = 25555; + public static final int INTERNAL_FRAME_DEACTIVATED = 25555; /** * Internal frame deiconifed event */ - public static int INTERNAL_FRAME_DEICONIFIED = 25553; + public static final int INTERNAL_FRAME_DEICONIFIED = 25553; /** * Internal frame frame first event */ - public static int INTERNAL_FRAME_FIRST = 25549; + public static final int INTERNAL_FRAME_FIRST = 25549; /** * Internal frame iconified event */ - public static int INTERNAL_FRAME_ICONIFIED = 2552; + public static final int INTERNAL_FRAME_ICONIFIED = 2552; /** * Internal frame last event */ - public static int INTERNAL_FRAME_LAST = 25555; + public static final int INTERNAL_FRAME_LAST = 25555; /** * Internal frame opened event */ - public static int INTERNAL_FRAME_OPENED = 25550; + public static final int INTERNAL_FRAME_OPENED = 25550; /** * Creates a <code>JInternalFrameEvent</code> object. diff --git a/libjava/javax/swing/event/ListDataEvent.java b/libjava/javax/swing/event/ListDataEvent.java index 3b22ad63bc0..c86e86abe92 100644 --- a/libjava/javax/swing/event/ListDataEvent.java +++ b/libjava/javax/swing/event/ListDataEvent.java @@ -46,11 +46,11 @@ import java.util.EventObject; */ public class ListDataEvent extends EventObject { - private static final long serialVersionUID = -7131487416250401903L; + private static final long serialVersionUID = 2510353260071004774L; - public static int CONTENTS_CHANGED = 0; - public static int INTERVAL_ADDED = 1; - public static int INTERVAL_REMOVED = 2; + public static final int CONTENTS_CHANGED = 0; + public static final int INTERVAL_ADDED = 1; + public static final int INTERVAL_REMOVED = 2; private int type = 0; private int index0 = 0; diff --git a/libjava/javax/swing/event/TableModelEvent.java b/libjava/javax/swing/event/TableModelEvent.java index 2dee423eac4..6bd96971950 100644 --- a/libjava/javax/swing/event/TableModelEvent.java +++ b/libjava/javax/swing/event/TableModelEvent.java @@ -46,13 +46,13 @@ import javax.swing.table.TableModel; */ public class TableModelEvent extends EventObject { - private static final long serialVersionUID = -7037680193569691706L; + private static final long serialVersionUID = -7849342674552212824L; - public static int ALL_COLUMNS = -1; - public static int DELETE = -1; - public static int HEADER_ROW = -1; - public static int INSERT = 1; - public static int UPDATE = 0; + public static final int ALL_COLUMNS = -1; + public static final int DELETE = -1; + public static final int HEADER_ROW = -1; + public static final int INSERT = 1; + public static final int UPDATE = 0; protected int column = 0; protected int firstRow = 0; diff --git a/libjava/javax/swing/plaf/PopupMenuUI.java b/libjava/javax/swing/plaf/PopupMenuUI.java index d1faa78d146..1871b9b7985 100644 --- a/libjava/javax/swing/plaf/PopupMenuUI.java +++ b/libjava/javax/swing/plaf/PopupMenuUI.java @@ -1,5 +1,5 @@ /* PopupMenuUI.java -- - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -37,40 +37,80 @@ exception statement from your version. */ package javax.swing.plaf; -// Imports -import java.awt.event.*; +import java.awt.event.MouseEvent; +import javax.swing.JPopupMenu; +import javax.swing.Popup; +import javax.swing.PopupFactory; + /** - * PopupMenuUI - * @author Andrew Selkirk - * @version 1.0 + * An abstract base class for delegates that implement the pluggable + * look and feel for a <code>JPopupMenu</code>. + * + * @see javax.swing.JPopupMenu + * + * @author Andrew Selkirk (aselkirk@sympatico.ca) + * @author Sascha Brawer (brawer@dandelis.ch) */ -public abstract class PopupMenuUI extends ComponentUI { - - //------------------------------------------------------------- - // Initialization --------------------------------------------- - //------------------------------------------------------------- - - /** - * Constructor PopupMenuUI - */ - public PopupMenuUI() { - // TODO - } // PopupMenuUI() - - - //------------------------------------------------------------- - // Methods ---------------------------------------------------- - //------------------------------------------------------------- - - /** - * isPopupTrigger - * @param event TODO - * @returns boolean - */ - public boolean isPopupTrigger(MouseEvent event) { - return false; // TODO - } // isPopupTrigger() - - -} // PopupMenuUI +public abstract class PopupMenuUI + extends ComponentUI +{ + /** + * Constructs a new <code>PopupMenuUI</code>. + */ + public PopupMenuUI() + { + } + + + /** + * Tests whether or not a mouse event triggers a popup menu. + * + * <p>The default implementation calls + * <code>event.isPopupTrigger()</code>, which checks for the gesture + * that is common for the platform on which the application runs. If + * a look and feel wants to employ non-standard conventions for + * triggering a popup menu, it can override this method. + * + * @param event the event to check. + * + * @return <code>true</code> if the event triggers a popup menu; + * <code>false</code> otherwise. + * + * @since 1.3 + */ + public boolean isPopupTrigger(MouseEvent event) + { + return event.isPopupTrigger(); + } + + + /** + * Creates a <code>Popup</code> for displaying the popup menu. The + * default implementation uses the {@link javax.swing.PopupFactory} + * for retrieving a suitable <code>Popup</code>, but subclasses + * might want to override this method if a LookAndFeel needs special + * Popups. + * + * @param popup the <code>JPopupMenu</code> for whose display + * a <code>Popup</code> is needed. + * + * @param x the horizontal position where the popup will be + * displayed. + * + * @param y the vertical position where the popup will be + * displayed. + * + * @return a <code>Popup</code> for showing and hiding + * the menu. + * + * @since 1.4 + */ + public Popup getPopup(JPopupMenu popup, int x, int y) + { + return PopupFactory.getSharedInstance().getPopup( + /* origin/owner of the popup */ popup.getInvoker(), + /* contents */ popup, + x, y); + } +} diff --git a/libjava/javax/swing/plaf/SplitPaneUI.java b/libjava/javax/swing/plaf/SplitPaneUI.java index 6448ba86653..020a54a626f 100644 --- a/libjava/javax/swing/plaf/SplitPaneUI.java +++ b/libjava/javax/swing/plaf/SplitPaneUI.java @@ -1,5 +1,5 @@ /* SplitPaneUI.java -- - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -37,75 +37,97 @@ exception statement from your version. */ package javax.swing.plaf; -// Imports -import java.awt.*; -import javax.swing.*; + +import java.awt.Graphics; +import javax.swing.JSplitPane; + /** - * SplitPaneUI - * @author Andrew Selkirk - * @version 1.0 + * An abstract base class for delegates that implement the pluggable + * look and feel for a <code>JSplitPane</code>. + * + * @see javax.swing.JSplitPane + * + * @author Andrew Selkirk (aselkirk@sympatico.ca) + * @author Sascha Brawer (brawer@dandelis.ch) */ -public abstract class SplitPaneUI extends ComponentUI { - - //------------------------------------------------------------- - // Initialization --------------------------------------------- - //------------------------------------------------------------- - - /** - * Constructor SplitPaneUI - */ - public SplitPaneUI() { - // TODO - } // SplitPaneUI() - - - //------------------------------------------------------------- - // Methods ---------------------------------------------------- - //------------------------------------------------------------- - - /** - * resetToPreferredSizes - * @param splitpane TODO - */ - public abstract void resetToPreferredSizes(JSplitPane splitpane); - - /** - * setDividerLocation - * @param splitpane TODO - * @param location TODO - */ - public abstract void setDividerLocation(JSplitPane splitpane, - int location); - - /** - * getDividerLocation - * @param splitpane TODO - * @returns int - */ - public abstract int getDividerLocation(JSplitPane splitpane); - - /** - * getMinimumDividerLocation - * @param splitpane TODO - * @returns int - */ - public abstract int getMinimumDividerLocation(JSplitPane splitpane); - - /** - * getMaximumDividerLocation - * @param splitpane TODO - * @returns int - */ - public abstract int getMaximumDividerLocation(JSplitPane splitpane); - - /** - * finishedPaintingChildren - * @param splitpane TODO - * @param graphics TODO - */ - public abstract void finishedPaintingChildren(JSplitPane splitpane, - Graphics graphics); - - -} // SplitPaneUI +public abstract class SplitPaneUI + extends ComponentUI +{ + /** + * Constructs a new <code>SplitPaneUI</code>. + */ + public SplitPaneUI() + { + } + + + /** + * Moves the divider to the location which best respects + * the preferred sizes of the children. + * + * @param pane the <code>JSplitPane</code> for thich this + * delegate provides the look and feel. + */ + public abstract void resetToPreferredSizes(JSplitPane pane); + + + /** + * Moves the divider to the specified location. + * + * @param pane the <code>JSplitPane</code> for thich this + * delegate provides the look and feel. + * + * @param location the new location of the divider. + */ + public abstract void setDividerLocation(JSplitPane pane, + int location); + + + /** + * Determines the current location of the divider. + * + * @param pane the <code>JSplitPane</code> for thich this + * delegate provides the look and feel. + * + * @return the current location of the divider. + */ + public abstract int getDividerLocation(JSplitPane pane); + + + /** + * Determines the minimum location of the divider. + * + * @param pane the <code>JSplitPane</code> for thich this + * delegate provides the look and feel. + * + * @return the leftmost (or topmost) possible location + * of the divider. + */ + public abstract int getMinimumDividerLocation(JSplitPane pane); + + + /** + * Determines the maximum location of the divider. + * + * @param pane the <code>JSplitPane</code> for thich this + * delegate provides the look and feel. + * + * @return the bottommost (or rightmost) possible location + * of the divider. + */ + public abstract int getMaximumDividerLocation(JSplitPane pane); + + + /** + * Called by the <code>JSplitPane</code> after it has finished + * painting its children. + * + * @param pane the <code>JSplitPane</code> for thich this + * delegate provides the look and feel. + * + * @param g the Graphics used for painting. + */ + public abstract void finishedPaintingChildren(JSplitPane pane, + Graphics g); +} diff --git a/libjava/javax/swing/plaf/TabbedPaneUI.java b/libjava/javax/swing/plaf/TabbedPaneUI.java index a9211c96705..20c36c30c21 100644 --- a/libjava/javax/swing/plaf/TabbedPaneUI.java +++ b/libjava/javax/swing/plaf/TabbedPaneUI.java @@ -1,5 +1,5 @@ /* TabbedPaneUI.java - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -38,24 +38,74 @@ exception statement from your version. */ package javax.swing.plaf; -import java.awt.*; -import javax.swing.*; +import java.awt.Rectangle; +import javax.swing.JTabbedPane; -public class TabbedPaneUI extends ComponentUI + +/** + * An abstract base class for delegates that implement the pluggable + * look and feel for a <code>JTabbedPane</code>. + * + * @see javax.swing.JTabbedPane + * + * @author Andrew Selkirk (aselkirk@sympatico.ca) + * @author Sascha Brawer (brawer@dandelis.ch) + */ +public abstract class TabbedPaneUI + extends ComponentUI { - public Rectangle getTabBounds(JTabbedPane pane, int index) - { - return null; - } - - public int getTabRunCount(JTabbedPane pane) - { - return 0; - } - - public int tabForCoordinate(JTabbedPane pane, int x, int y) - { - return 0; - } + /** + * Constructs a new <code>TabbedPaneUI</code>. + */ + public TabbedPaneUI() + { + } + + + /** + * Determines which tab lies at a given position. + * + * @param pane the <code>JTabbedPane</code> for which this + * delegate object provides the user interface. + * + * @param x the horizontal position, where zero is the left + * edge of <code>pane</code>. + * + * @param y the vertical position, where zero is the top + * edge of <code>pane</code>. + * + * @return the zero-based index of the tab, or -1 if no + * tab is at the specified position. + */ + public abstract int tabForCoordinate(JTabbedPane pane, + int x, int y); + + + /** + * Calculates the bounding box of a tab. + * + * @param pane the <code>JTabbedPane</code> for which this + * delegate object provides the user interface. + * + * @param index the index of the tab, which must be an integer + * in the range <code>[0 .. pane.getTabCount() - 1]</code>. + * + * @return the bounding box of the <code>index</code>-th tab, + * in the coordinate system of <code>pane</code>. + */ + public abstract Rectangle getTabBounds(JTabbedPane pane, int index); + + + /** + * Determines how many runs are used to display tabs. + * + * @param pane the <code>JTabbedPane</code> for which this + * delegate object provides the user interface. + * + * @return the number of tab runs. + * + * @see javax.swing.JTabbedPane#getTabRunCount() + */ + public abstract int getTabRunCount(JTabbedPane pane); } diff --git a/libjava/javax/swing/plaf/TextUI.java b/libjava/javax/swing/plaf/TextUI.java index abf5316d215..14f89d6006e 100644 --- a/libjava/javax/swing/plaf/TextUI.java +++ b/libjava/javax/swing/plaf/TextUI.java @@ -1,5 +1,5 @@ /* TextUI.java - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -38,27 +38,247 @@ exception statement from your version. */ package javax.swing.plaf; -import javax.swing.text.*; -import java.awt.*; +import java.awt.Point; +import java.awt.Rectangle; +import javax.swing.text.BadLocationException; +import javax.swing.text.EditorKit; +import javax.swing.text.JTextComponent; +import javax.swing.text.Position; +import javax.swing.text.View; -public abstract class TextUI extends ComponentUI + +/** + * An abstract base class for delegates that provide the user + * interface for text editors. + * + * @see javax.swing.text.JTextComponent + * + * @author Ronald Veldema (rveldema@cs.vu.nl) + * @author Sascha Brawer (brawer@dandelis.ch) + */ +public abstract class TextUI + extends ComponentUI { - public TextUI() - { - } - - public abstract void damageRange(JTextComponent t, int p0, int p1); - public abstract void damageRange(JTextComponent t, int p0, int p1, Position.Bias firstBias, Position.Bias secondBias); - public abstract EditorKit getEditorKit(JTextComponent t); - public abstract int getNextVisualPositionFrom(JTextComponent t, - int pos, - Position.Bias b, - int direction, - Position.Bias[] biasRet); - public abstract View getRootView(JTextComponent t); - public abstract Rectangle modelToView(JTextComponent t, int pos); - public abstract Rectangle modelToView(JTextComponent t, int pos, Position.Bias bias); - public abstract int viewToModel(JTextComponent t, Point pt); - public abstract int viewToModel(JTextComponent t, Point pt, Position.Bias[] biasReturn); + /** + * Constructs a new <code>TextUI</code>. + */ + public TextUI() + { + } + + + /** + * Calculates the geometric extent of the character at the + * given offset. + * + * @param tc the <code>JTextComponent</code> for which this + * delegate object provides the user interface. + * + * @param pos the zero-based index of the character into the + * document model. + * + * @return the bounding box of the character at index + * <code>pos</code>, in view coordinates. + * + * @throws BadLocationException if <code>pos</code> does not + * designate a valid position in the document model. + * + * @see javax.swing.text.View#modelToView(int, + * javax.swing.text.Position.Bias, int, + * javax.swing.text.position.Bias, java.awt.Shape) + */ + public abstract Rectangle modelToView(JTextComponent tc, int pos) + throws BadLocationException; + + + /** + * Calculates the geometric extent of the character at the + * given offset. + * + * @param tc the <code>JTextComponent</code> for which this + * delegate object provides the user interface. + * + * @param pos the zero-based index of the character into the + * document model. + * + * @param bias whether to take the character before or after the + * caret position indicated by <code>pos</code>. The value + * must be either {@link + * javax.swing.text.Position.Bias#Backward} or {@link + * javax.swing.text.Position.Bias#Forward}. + * + * @return the bounding box of the character at index + * <code>pos</code>, in view coordinates. + * + * @throws BadLocationException if <code>pos</code> does not + * designate a valid position in the document model. + * + * @see javax.swing.text.View#modelToView(int, + * javax.swing.text.Position.Bias, int, + * javax.swing.text.position.Bias, java.awt.Shape) + */ + public abstract Rectangle modelToView(JTextComponent tc, int pos, + Position.Bias bias) + throws BadLocationException; + + + /** + * Finds the caret position which is closest to the specified visual + * location. + * + * @param tc the <code>JTextComponent</code> for which this + * delegate object provides the user interface. + * + * @param loc the position in view coordinates. + * + * @return the caret position which is closest to <code>loc</code>. + * + * @see #viewToModel(JTextComponent, Point, Position.Bias[]) + */ + public abstract int viewToModel(JTextComponent t, Point pt); + + + /** + * Finds the caret position which is closest to the specified visual + * location. + * + * @param tc the <code>JTextComponent</code> for which this + * delegate object provides the user interface. + * + * @param loc the position in view coordinates. + * + * @param outBias an array whose size must be at least one. + * After the call, <code>outBias[0]</code> will indicate + * whether <code>loc</code> is in the glyph before + * (<code>Position.Bias.Backward</code>) or after + * (<code>Position.Bias.Forward</code>) the returned + * caret position. + * + * @return the caret position which is closest to <code>loc</code>. + */ + public abstract int viewToModel(JTextComponent tc, Point loc, + Position.Bias[] outBias); + + + /** + * Calculates the caret position that is visually next to the given + * position. This is useful to determine where to move the caret + * after the user has pressed an arrow key. + * + * @param tc the <code>JTextComponent</code> for which this + * delegate object provides the user interface. + * + * @param pos the current caret position, a zero-based index + * into the document model. + * + * @param bias whether to take the character before or after the + * caret position indicated by <code>pos</code>. The value + * must be either {@link + * javax.swing.text.Position.Bias#Backward} or {@link + * javax.swing.text.Position.Bias#Forward}. + * + * @param direction the visual direction. Pass + * {@link javax.swing.SwingConstants#WEST} for the left + * arrow key, {@link javax.swing.SwingConstants#EAST} + * for the right arrow key, {@link + * javax.swing.SwingConstants#NORTH} for the up arrow + * key, or {@link javax.swing.SwingConstants#SOUTH} + * for the down arrow key. + * + * @throws BadLocationException if <code>pos</code> does not + * designate a valid position in the document model. + * + * @throws IllegalArgumentException if <code>direction</code> + * is not one of <code>Position.Bias.Forward</code> + * or <code>Position.Biad.Backward</code>. + */ + public abstract int getNextVisualPositionFrom(JTextComponent tc, + int pos, + Position.Bias bias, + int direction, + Position.Bias[] outBias) + throws BadLocationException; + + + /** + * Repaints a range of characters. + * + * @param tc the <code>JTextComponent</code> for which this + * delegate object provides the user interface. + * + * @param start the first character in the range that needs + * painting, indicated as an index into the document model. + * + * @param end the last character in the range that needs + * painting, indicated as an index into the document model. + * <code>end</code> must be greater than or equal to + * <code>start</code>. + */ + public abstract void damageRange(JTextComponent tc, int start, int end); + + + /** + * Repaints a range of characters, also specifying the bias for the + * start and end of the range. + * + * @param tc the <code>JTextComponent</code> for which this + * delegate object provides the user interface. + * + * @param start the first character in the range that needs + * painting, indicated as an index into the document model. + * + * @param end the last character in the range that needs + * painting, indicated as an index into the document model. + * <code>end</code> must be greater than or equal to + * <code>start</code>. + */ + public abstract void damageRange(JTextComponent tc, + int start, int end, + Position.Bias startBias, + Position.Bias endBias); + + + /** + * Retrieves the <code>EditorKit</code> managing policies and + * persistent state. + * + * @param tc the <code>JTextComponent</code> for which this + * delegate object provides the user interface. + * + * @return the <code>EditorKit</code> used by <code>tc</code>. + */ + public abstract EditorKit getEditorKit(JTextComponent tc); + + + /** + * Retrieves the root of the view tree that visually presents + * the text. + * + * @param tc the <code>JTextComponent</code> for which this + * delegate object provides the user interface. + * + * @return the root <code>View</code> used by <code>tc</code>. + */ + public abstract View getRootView(JTextComponent tc); + + + /** + * Returns a String for presenting a tool tip at the specified + * location. + * + * @param tc the <code>JTextComponent</code> for which this + * delegate object provides the user interface. + * + * @param loc the location for which the tool tip is requested. + * + * @return the text for the tool tip, or <code>null</code> to + * display no tool tip. + * + * @since 1.4 + */ + public String getToolTipText(JTextComponent tc, Point loc) + { + return null; + } } diff --git a/libjava/javax/swing/plaf/TreeUI.java b/libjava/javax/swing/plaf/TreeUI.java index f5f884fca2a..59dca9d877f 100644 --- a/libjava/javax/swing/plaf/TreeUI.java +++ b/libjava/javax/swing/plaf/TreeUI.java @@ -1,5 +1,5 @@ /* TreeUI.java - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -38,7 +38,174 @@ exception statement from your version. */ package javax.swing.plaf; +import java.awt.Rectangle; +import javax.swing.JTree; +import javax.swing.tree.TreePath; -public class TreeUI extends ComponentUI + +/** + * An abstract base class for delegates that provide the user + * interface for <code>JTree</code>. + * + * @see javax.swing.JTree + * + * @author Sascha Brawer (brawer@dandelis.ch) + */ +public abstract class TreeUI + extends ComponentUI { + /** + * Constructs a new <code>TreeUI</code>. + */ + public TreeUI() + { + } + + + /** + * Determines the geometric extent of the label that is + * drawn for a path. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @param path the path whose label extent is requested. + * + * @return a rectangle enclosing the label, or <code>null</code> + * if <code>path</code> contains invalid nodes. + */ + public abstract Rectangle getPathBounds(JTree tree, TreePath path); + + + /** + * Creates a <code>TreePath</code> for the specified row. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @param row the index of the row, which should be a number + * in the range <code>[0, getRowCount(tree) - 1]</code>. + * + * @return a <code>TreePath</code> for the specified row, or + * <code>null</code> if <code>row</code> is outside + * the valid range. + */ + public abstract TreePath getPathForRow(JTree tree, int row); + + + /** + * Determines in which row a <code>TreePath</code> is currently + * being displayed. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @param path the path for which the caller wants to know + * in which row it is being displayed. + * + * @return a number in the range <code>[0, getRowCount(tree) + * - 1]</code> if the path is currently on display; + * <code>-1</code> if the path is not shown to the + * user. + */ + public abstract int getRowForPath(JTree tree, TreePath path); + + + /** + * Counts how many rows are currently displayed. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @return the number of visible rows. + */ + public abstract int getRowCount(JTree tree); + + + /** + * Finds the path that is closest to the specified position. + * + * <p><img src="TreeUI-1.png" width="300" height="250" + * alt="[A screen shot of a JTree] /> + * + * <p>As shown by the above illustration, the bounds of the + * closest path do not necessarily need to contain the passed + * location. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @param x the horizontal location, relative to the origin + * of <code>tree</code>. + * + * @param y the vertical location, relative to the origin + * of <code>tree</code>. + * + * @return the closest path, or <code>null</code> if the + * tree is currenlty not displaying any paths at all. + */ + public abstract TreePath getClosestPathForLocation(JTree tree, + int x, int y); + + + /** + * Determines whether the user is currently editing a tree cell. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @see #getEditingPath + */ + public abstract boolean isEditing(JTree tree); + + + /** + * Stops editing a tree cell, committing the entered value into the + * tree’s model. If no editing session is active, or if the + * active editor does not agree to stopping, nothing happens. In + * some look and feels, this action happens when the user has + * pressed the enter key. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @return <code>false</code> if the editing still goes on because + * the cell editor has objected to stopping the session; + * <code>true</code> if editing has been stopped. + */ + public abstract boolean stopEditing(JTree tree); + + + /** + * Cancels editing a tree cell, discarding any entered value. + * If no editing session is active, nothing happens. The cell + * editor is not given an opportunity to veto the canceling. + * In some look and feels, this action happens when the user has + * pressed the escape key. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + */ + public abstract void cancelEditing(JTree tree); + + + /** + * Starts a session to edit a tree cell. If the cell editor + * rejects editing the cell, it will just be selected. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @param path the cell to edit. + */ + public abstract void startEditingAtPath(JTree tree, TreePath path); + + + /** + * Retrieves the tree cell that is currently being edited. + * + * @return the currently edited path, or <code>null</code> + * if no editing session is currently active. + */ + public abstract TreePath getEditingPath(JTree tree); } diff --git a/libjava/javax/swing/plaf/basic/BasicTextUI.java b/libjava/javax/swing/plaf/basic/BasicTextUI.java index 66af1b65d50..0930610a3a9 100644 --- a/libjava/javax/swing/plaf/basic/BasicTextUI.java +++ b/libjava/javax/swing/plaf/basic/BasicTextUI.java @@ -1,5 +1,5 @@ /* BasicTextUI.java - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -46,10 +46,16 @@ import javax.swing.*; public class BasicTextUI extends TextUI { int gap = 3; - View view = new RootView(); + View view = null; // was: new RootView(); Color textColor, disabledTextColor, normalBackgroundColor; EditorKit kit = new DefaultEditorKit(); + /* ***************************************************************** + * This View is way too incomplete to be of any use. To avoid errors + * when compiling with the Sun JDK, it has been commented out. + * -- Sascha Brawer (brawer@dandelis.ch) + * + * (begin of commented out section) class RootView extends View { RootView() @@ -68,6 +74,8 @@ public class BasicTextUI extends TextUI } } } + * (end of commented out section) + *************************************************************** */ public BasicTextUI() { @@ -128,6 +136,7 @@ public class BasicTextUI extends TextUI Position.Bias b, int direction, Position.Bias[] biasRet) + throws BadLocationException { return 0; } @@ -138,11 +147,13 @@ public class BasicTextUI extends TextUI } public Rectangle modelToView(JTextComponent t, int pos) + throws BadLocationException { return modelToView(t, pos, null); } public Rectangle modelToView(JTextComponent t, int pos, Position.Bias bias) + throws BadLocationException { return null; } diff --git a/libjava/javax/swing/plaf/basic/BasicTreeUI.java b/libjava/javax/swing/plaf/basic/BasicTreeUI.java index 17ba4b56e61..d9af1010ba7 100644 --- a/libjava/javax/swing/plaf/basic/BasicTreeUI.java +++ b/libjava/javax/swing/plaf/basic/BasicTreeUI.java @@ -1,5 +1,5 @@ /* BasicTreeUI.java - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -38,8 +38,199 @@ exception statement from your version. */ package javax.swing.plaf.basic; -import javax.swing.plaf.*; +import java.awt.Rectangle; +import javax.swing.JTree; +import javax.swing.plaf.TreeUI; +import javax.swing.tree.TreePath; -public class BasicTreeUI extends TreeUI + +/** + * A delegate providing the user interface for <code>JTree</code> + * according to the Basic look and feel. The current implementation + * of GNU Classpath does really work; it is just a stub that allows + * compiling the code. + * + * @see javax.swing.JTree + * + * @author Sascha Brawer (brawer@dandelis.ch) + */ +public class BasicTreeUI + extends TreeUI { + /** + * Determines the geometric extent of the label that is + * drawn for a path. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @param path the path whose label extent is requested. + * + * @return a rectangle enclosing the label, or <code>null</code> + * if <code>path</code> contains invalid nodes. + */ + public Rectangle getPathBounds(JTree tree, TreePath path) + { + return null; // FIXME: not implemented + } + + + /** + * Creates a <code>TreePath</code> for the specified row. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @param row the index of the row, which should be a number + * in the range <code>[0, getRowCount(tree) - 1]</code>. + * + * @return a <code>TreePath</code> for the specified row, or + * <code>null</code> if <code>row</code> is outside + * the valid range. + */ + public TreePath getPathForRow(JTree tree, int row) + { + return null; // FIXME: not implemented + } + + + /** + * Determines in which row a <code>TreePath</code> is currently + * being displayed. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @param path the path for which the caller wants to know + * in which row it is being displayed. + * + * @return a number in the range <code>[0, getRowCount(tree) + * - 1]</code> if the path is currently on display; + * <code>-1</code> if the path is not shown to the + * user. + */ + public int getRowForPath(JTree tree, TreePath path) + { + return -1; // FIXME: not implemented + } + + + /** + * Counts how many rows are currently displayed. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @return the number of visible rows. + */ + public int getRowCount(JTree tree) + { + return 0; // FIXME: not implemented + } + + + /** + * Finds the path that is closest to the specified position. + * + * <p><img src="../TreeUI-1.png" width="300" height="250" + * alt="[A screen shot of a JTree] /> + * + * <p>As shown by the above illustration, the bounds of the + * closest path do not necessarily need to contain the passed + * location. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @param x the horizontal location, relative to the origin + * of <code>tree</code>. + * + * @param y the vertical location, relative to the origin + * of <code>tree</code>. + * + * @return the closest path, or <code>null</code> if the + * tree is currenlty not displaying any paths at all. + */ + public TreePath getClosestPathForLocation(JTree tree, + int x, int y) + { + return null; // FIXME: not implemented + } + + + /** + * Determines whether the user is currently editing a tree cell. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @see #getEditingPath + */ + public boolean isEditing(JTree tree) + { + return false; // FIXME: not implemented + } + + + /** + * Stops editing a tree cell, committing the entered value into the + * tree’s model. If no editing session is active, or if the + * active editor does not agree to stopping, nothing happens. In + * some look and feels, this action happens when the user has + * pressed the enter key. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @return <code>false</code> if the editing still goes on because + * the cell editor has objected to stopping the session; + * <code>true</code> if editing has been stopped. + */ + public boolean stopEditing(JTree tree) + { + return true; // FIXME: not implemented + } + + + /** + * Cancels editing a tree cell, discarding any entered value. + * If no editing session is active, nothing happens. The cell + * editor is not given an opportunity to veto the canceling. + * In some look and feels, this action happens when the user has + * pressed the escape key. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + */ + public void cancelEditing(JTree tree) + { + // FIXME: not implemented + } + + + /** + * Starts a session to edit a tree cell. If the cell editor + * rejects editing the cell, it will just be selected. + * + * @param tree the <code>JTree</code> for which this delegate + * object provides the user interface. + * + * @param path the cell to edit. + */ + public void startEditingAtPath(JTree tree, TreePath path) + { + // FIXME: not implemented + } + + + /** + * Retrieves the tree cell that is currently being edited. + * + * @return the currently edited path, or <code>null</code> + * if no editing session is currently active. + */ + public TreePath getEditingPath(JTree tree) + { + return null; // FIXME: not implemented + } } diff --git a/libjava/javax/swing/plaf/doc-files/TreeUI-1.png b/libjava/javax/swing/plaf/doc-files/TreeUI-1.png Binary files differnew file mode 100644 index 00000000000..0f01ab03c23 --- /dev/null +++ b/libjava/javax/swing/plaf/doc-files/TreeUI-1.png |