aboutsummaryrefslogtreecommitdiff
path: root/libjava/javax/swing/JDesktopPane.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/javax/swing/JDesktopPane.java')
-rw-r--r--libjava/javax/swing/JDesktopPane.java513
1 files changed, 276 insertions, 237 deletions
diff --git a/libjava/javax/swing/JDesktopPane.java b/libjava/javax/swing/JDesktopPane.java
index d830150..ce8085a 100644
--- a/libjava/javax/swing/JDesktopPane.java
+++ b/libjava/javax/swing/JDesktopPane.java
@@ -37,6 +37,8 @@ exception statement from your version. */
package javax.swing;
+import java.awt.Component;
+import java.beans.PropertyVetoException;
import java.io.IOException;
import java.io.ObjectOutputStream;
import javax.accessibility.Accessible;
@@ -44,244 +46,281 @@ import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
import javax.swing.plaf.DesktopPaneUI;
+
/**
- * JDesktopPane
- * @author Andrew Selkirk
- * @version 1.0
+ * JDesktopPane is a container (usually for JInternalFrames) that simulates a
+ * desktop. Typically, the user will create JInternalFrames and place thme in
+ * a JDesktopPane. The user can then interact with JInternalFrames like they
+ * usually would with JFrames. The actions (minimize, maximize, close, etc)
+ * are done by using a DesktopManager that is associated with the
+ * JDesktopPane.
*/
public class JDesktopPane extends JLayeredPane implements Accessible
{
-
- //-------------------------------------------------------------
- // Classes ----------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * AccessibleJDesktopPane
- */
- protected class AccessibleJDesktopPane extends AccessibleJComponent {
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * Constructor AccessibleJDesktopPane
- * @param component TODO
- */
- protected AccessibleJDesktopPane(JDesktopPane component) {
- super(component);
- // TODO
- } // AccessibleJDesktopPane()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * getAccessibleRole
- * @returns AccessibleRole
- */
- public AccessibleRole getAccessibleRole() {
- return AccessibleRole.DESKTOP_PANE;
- } // getAccessibleRole()
-
-
- } // AccessibleJDesktopPane
-
-
- //-------------------------------------------------------------
- // Constants --------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * LIVE_DRAG_MODE
- */
- public static int LIVE_DRAG_MODE = 0;
-
- /**
- * OUTLINE_DRAG_MODE
- */
- public static int OUTLINE_DRAG_MODE = 1;
-
- /**
- * uiClassID
- */
- private static final String uiClassID = "DesktopPaneUI";
-
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * selectedFrame
- */
- private transient JInternalFrame selectedFrame;
-
- /**
- * desktopManager
- */
- private transient DesktopManager desktopManager;
-
-
- /**
- * dragMode
- */
- private int dragMode;
-
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * Constructor JDesktopPane
- */
- public JDesktopPane() {
- // TODO
- } // JDesktopPane()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * writeObject
- * @param stream TODO
- * @exception IOException TODO
- */
- private void writeObject(ObjectOutputStream stream) throws IOException {
- // TODO
- } // writeObject()
-
- /**
- * getUI
- * @returns DesktopPaneUI
- */
- public DesktopPaneUI getUI() {
- return (DesktopPaneUI) ui;
- } // getUI()
-
- /**
- * setUI
- * @param ui TODO
- */
- public void setUI(DesktopPaneUI ui) {
- super.setUI(ui);
- } // setUI()
-
- /**
- * setDragMode
- * @param mode TODO
- */
- public void setDragMode(int mode) {
- this.dragMode = mode;
- // TODO
- } // setDragMode()
-
- /**
- * getDragMode
- * @returns int
- */
- public int getDragMode() {
- return dragMode;
- } // getDragMode()
-
- /**
- * getDesktopManager
- * @returns DesktopManager
- */
- public DesktopManager getDesktopManager() {
- return desktopManager;
- } // getDesktopManager()
-
- /**
- * setDesktopManager
- * @param manager TODO
- */
- public void setDesktopManager(DesktopManager manager) {
- this.desktopManager = manager;
- // TODO
- } // setDesktopManager()
-
- /**
- * updateUI
- */
- public void updateUI() {
- setUI((DesktopPaneUI) UIManager.get(this));
- invalidate();
- } // updateUI()
-
- /**
- * getUIClassID
- * @returns String
- */
- public String getUIClassID() {
- return uiClassID;
- } // getUIClassID()
-
- /**
- * getAllFrames
- * @returns JInternalFrame[]
- */
- public JInternalFrame[] getAllFrames() {
- return null; // TODO
- } // getAllFrames()
-
- /**
- * getSelectedFrame
- * @returns JInternalFrame
- */
- public JInternalFrame getSelectedFrame() {
- return null; // TODO
- } // getSelectedFrame()
-
- /**
- * setSelectedFrame
- * @param frame TODO
- */
- public void setSelectedFrame(JInternalFrame frame) {
- // TODO
- } // setSelectedFrame()
-
- /**
- * getAllFramesInLayer
- * @param layer TODO
- * @returns JInternalFrame[]
- */
- public JInternalFrame[] getAllFramesInLayer(int layer) {
- return null; // TODO
- } // getAllFramesInLayer()
-
- /**
- * isOpaque
- * @returns boolean
- */
- public boolean isOpaque() {
- return true;
- } // isOpaque()
-
- /**
- * paramString
- * @returns String
- */
- protected String paramString() {
- return null; // TODO
- } // paramString()
-
- /**
- * getAccessibleContext
- * @returns AccessibleContext
- */
- public AccessibleContext getAccessibleContext() {
- if (accessibleContext == null) {
- accessibleContext = new AccessibleJDesktopPane(this);
- } // if
- return accessibleContext;
- } // getAccessibleContext()
-
-
-} // JDesktopPane
+ /** DOCUMENT ME! */
+ private static final long serialVersionUID = 766333777224038726L;
+
+ /**
+ * This specifies that when dragged, a JInternalFrame should be completely
+ * visible.
+ */
+ public static int LIVE_DRAG_MODE = 0;
+
+ /**
+ * This specifies that when dragged, a JInternalFrame should only be visible
+ * as an outline.
+ */
+ public static int OUTLINE_DRAG_MODE = 1;
+
+ /** The selected frame in the JDesktopPane. */
+ private transient JInternalFrame selectedFrame;
+
+ /** The JDesktopManager to use for acting on JInternalFrames. */
+ transient DesktopManager desktopManager;
+
+ /** The drag mode used by the JDesktopPane. */
+ private transient int dragMode = LIVE_DRAG_MODE;
+
+ /**
+ * AccessibleJDesktopPane
+ */
+ protected class AccessibleJDesktopPane extends AccessibleJComponent
+ {
+ /** DOCUMENT ME! */
+ private static final long serialVersionUID = 6079388927946077570L;
+
+ /**
+ * Constructor AccessibleJDesktopPane
+ */
+ protected AccessibleJDesktopPane()
+ {
+ }
+
+ /**
+ * getAccessibleRole
+ *
+ * @return AccessibleRole
+ */
+ public AccessibleRole getAccessibleRole()
+ {
+ return AccessibleRole.DESKTOP_PANE;
+ }
+ }
+
+ /**
+ * Creates a new JDesktopPane object.
+ */
+ public JDesktopPane()
+ {
+ setLayout(null);
+ updateUI();
+ }
+
+ /**
+ * This method returns the UI used with the JDesktopPane.
+ *
+ * @return The UI used with the JDesktopPane.
+ */
+ public DesktopPaneUI getUI()
+ {
+ return (DesktopPaneUI) ui;
+ }
+
+ /**
+ * This method sets the UI used with the JDesktopPane.
+ *
+ * @param ui The UI to use with the JDesktopPane.
+ */
+ public void setUI(DesktopPaneUI ui)
+ {
+ super.setUI(ui);
+ }
+
+ /**
+ * This method sets the drag mode to use with the JDesktopPane.
+ *
+ * @param mode The drag mode to use.
+ *
+ * @throws IllegalArgumentException If the drag mode given is not
+ * LIVE_DRAG_MODE or OUTLINE_DRAG_MODE.
+ */
+ public void setDragMode(int mode)
+ {
+ if ((mode != LIVE_DRAG_MODE) && (mode != OUTLINE_DRAG_MODE))
+ throw new IllegalArgumentException("Drag mode not valid.");
+
+ // FIXME: Unsupported mode.
+ if (mode == OUTLINE_DRAG_MODE)
+ throw new IllegalArgumentException("Outline drag modes are unsupported.");
+
+ dragMode = mode;
+ }
+
+ /**
+ * This method returns the drag mode used with the JDesktopPane.
+ *
+ * @return The drag mode used with the JDesktopPane.
+ */
+ public int getDragMode()
+ {
+ return dragMode;
+ }
+
+ /**
+ * This method returns the DesktopManager used with the JDesktopPane.
+ *
+ * @return The DesktopManager to use with the JDesktopPane.
+ */
+ public DesktopManager getDesktopManager()
+ {
+ return desktopManager;
+ }
+
+ /**
+ * This method sets the DesktopManager to use with the JDesktopPane.
+ *
+ * @param manager The DesktopManager to use with the JDesktopPane.
+ */
+ public void setDesktopManager(DesktopManager manager)
+ {
+ desktopManager = manager;
+ }
+
+ /**
+ * This method restores the UI used with the JDesktopPane to the default.
+ */
+ public void updateUI()
+ {
+ setUI((DesktopPaneUI) UIManager.getUI(this));
+ invalidate();
+ }
+
+ /**
+ * This method returns a String identifier that allows the UIManager to know
+ * which class will act as JDesktopPane's UI.
+ *
+ * @return A String identifier for the UI class to use.
+ */
+ public String getUIClassID()
+ {
+ return "DesktopPaneUI";
+ }
+
+ /**
+ * This method returns all JInternalFrames that are in the JDesktopPane.
+ *
+ * @return All JInternalFrames that are in the JDesktopPane.
+ */
+ public JInternalFrame[] getAllFrames()
+ {
+ return getFramesFromComponents(getComponents());
+ }
+
+ /**
+ * This method returns the currently selected frame in the JDesktopPane.
+ *
+ * @return The currently selected frame in the JDesktopPane.
+ */
+ public JInternalFrame getSelectedFrame()
+ {
+ return selectedFrame;
+ }
+
+ /**
+ * This method sets the selected frame in the JDesktopPane.
+ *
+ * @param frame The selected frame in the JDesktopPane.
+ */
+ public void setSelectedFrame(JInternalFrame frame)
+ {
+ if (selectedFrame != null)
+ {
+ try
+ {
+ selectedFrame.setSelected(false);
+ }
+ catch (PropertyVetoException e)
+ {
+ }
+ }
+ selectedFrame = null;
+
+ try
+ {
+ if (frame != null)
+ frame.setSelected(true);
+
+ selectedFrame = frame;
+ }
+ catch (PropertyVetoException e)
+ {
+ }
+ }
+
+ /**
+ * This method returns all the JInternalFrames in the given layer.
+ *
+ * @param layer The layer to grab frames in.
+ *
+ * @return All JInternalFrames in the given layer.
+ */
+ public JInternalFrame[] getAllFramesInLayer(int layer)
+ {
+ return getFramesFromComponents(getComponentsInLayer(layer));
+ }
+
+ /**
+ * This method always returns true to indicate that it is not transparent.
+ *
+ * @return true.
+ */
+ public boolean isOpaque()
+ {
+ return true;
+ }
+
+ /**
+ * This method returns a String that describes the JDesktopPane.
+ *
+ * @return A String that describes the JDesktopPane.
+ */
+ protected String paramString()
+ {
+ return "JDesktopPane";
+ }
+
+ /**
+ * This method returns all the JInternalFrames in the given Component array.
+ *
+ * @param components An array to search for JInternalFrames in.
+ *
+ * @return An array of JInternalFrames found in the Component array.
+ */
+ private static JInternalFrame[] getFramesFromComponents(Component[] components)
+ {
+ int count = 0;
+
+ for (int i = 0; i < components.length; i++)
+ if (components[i] instanceof JInternalFrame)
+ count++;
+
+ JInternalFrame[] value = new JInternalFrame[count];
+ for (int i = 0, j = 0; i < components.length && j != count; i++)
+ if (components[i] instanceof JInternalFrame)
+ value[j++] = (JInternalFrame) components[i];
+ return value;
+ }
+
+ /**
+ * getAccessibleContext
+ *
+ * @return AccessibleContext
+ */
+ public AccessibleContext getAccessibleContext()
+ {
+ if (accessibleContext == null)
+ accessibleContext = new AccessibleJDesktopPane();
+
+ return accessibleContext;
+ }
+}