diff options
Diffstat (limited to 'libjava/classpath/javax/swing/JRootPane.java')
-rw-r--r-- | libjava/classpath/javax/swing/JRootPane.java | 700 |
1 files changed, 0 insertions, 700 deletions
diff --git a/libjava/classpath/javax/swing/JRootPane.java b/libjava/classpath/javax/swing/JRootPane.java deleted file mode 100644 index c74f4f52060..00000000000 --- a/libjava/classpath/javax/swing/JRootPane.java +++ /dev/null @@ -1,700 +0,0 @@ -/* JRootPane.java -- - Copyright (C) 2002, 2004 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., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 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.BorderLayout; -import java.awt.Component; -import java.awt.Container; -import java.awt.Dimension; -import java.awt.IllegalComponentStateException; -import java.awt.Insets; -import java.awt.LayoutManager; -import java.awt.LayoutManager2; -import java.awt.Rectangle; -import java.io.Serializable; - -import javax.accessibility.Accessible; -import javax.accessibility.AccessibleContext; -import javax.accessibility.AccessibleRole; -import javax.swing.plaf.RootPaneUI; - -/** - * This class is where JComponents are added to. Unlike awt where you could - * just say frame.add(), with swing you need to say frame.getRootPane() - * (which delivers an instance of this class) and add your components to - * that. It is implemented by several 'layers' (pane() should be read as - * plane()) each on top of the others where you can add components to. - * (getContentPane(), getGlassPane(), getLayeredPane()) - * - * @author Ronald Veldema (rveldema@cs.vu.nl) - */ -public class JRootPane extends JComponent implements Accessible -{ - // The class used to obtain the accessible role for this object. - protected class AccessibleJRootPane extends AccessibleJComponent - { - /** - * For compatability with Sun's JDK - */ - private static final long serialVersionUID = 1082432482784468088L; - - /** - * Creates a new <code>AccessibleJRootPane</code> object. - */ - protected AccessibleJRootPane() - { - // Nothing to do here. - } - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public AccessibleRole getAccessibleRole() - { - return AccessibleRole.ROOT_PANE; - } - } - - // Custom Layout Manager for JRootPane. It positions contentPane and - // menuBar withing its layeredPane. - protected class RootLayout implements LayoutManager2, Serializable - { - /** DOCUMENT ME! */ - private static final long serialVersionUID = -4100116998559815027L; - - /** - * The cached layout info for the glass pane. - */ - private Rectangle glassPaneBounds; - - /** - * The cached layout info for the layered pane. - */ - private Rectangle layeredPaneBounds; - - /** - * The cached layout info for the content pane. - */ - private Rectangle contentPaneBounds; - - /** - * The cached layout info for the menu bar. - */ - private Rectangle menuBarBounds; - - /** - * Creates a new <code>RootLayout</code> object. - */ - protected RootLayout() - { - // Nothing to do here. - } - - /** - * DOCUMENT ME! - * - * @param comp DOCUMENT ME! - * @param constraints DOCUMENT ME! - */ - public void addLayoutComponent(Component comp, Object constraints) - { - // Nothing to do here. - } - - /** - * DOCUMENT ME! - * - * @param name DOCUMENT ME! - * @param comp DOCUMENT ME! - */ - public void addLayoutComponent(String name, Component comp) - { - // Nothing to do here. - } - - /** - * DOCUMENT ME! - * - * @param target DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public float getLayoutAlignmentX(Container target) - { - return 0.0F; - } - - /** - * DOCUMENT ME! - * - * @param target DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public float getLayoutAlignmentY(Container target) - { - return 0.0F; - } - - /** - * DOCUMENT ME! - * - * @param target DOCUMENT ME! - */ - public void invalidateLayout(Container target) - { - synchronized (this) - { - glassPaneBounds = null; - layeredPaneBounds = null; - contentPaneBounds = null; - menuBarBounds = null; - } - } - - /** - * DOCUMENT ME! - * - * @param c DOCUMENT ME! - */ - public void layoutContainer(Container c) - { - if (glassPaneBounds == null || layeredPaneBounds == null - || contentPaneBounds == null || menuBarBounds == null) - { - Insets i = getInsets(); - int containerWidth = c.getBounds().width - i.left - i.right; - int containerHeight = c.getBounds().height - i.top - i.bottom; - - // 1. the glassPane fills entire viewable region (bounds - insets). - // 2. the layeredPane filles entire viewable region. - // 3. the menuBar is positioned at the upper edge of layeredPane. - // 4. the contentPane fills viewable region minus menuBar, if present. - - - // +-------------------------------+ - // | JLayeredPane | - // | +--------------------------+ | - // | | menuBar | | - // | +--------------------------+ | - // | +--------------------------+ | - // | |contentPane | | - // | | | | - // | | | | - // | | | | - // | +--------------------------+ | - // +-------------------------------+ - - if (menuBar != null) - { - Dimension menuBarSize = menuBar.getPreferredSize(); - if (menuBarSize.height > containerHeight) - menuBarSize.height = containerHeight; - menuBarBounds = new Rectangle(0, 0, containerWidth, - menuBarSize.height); - contentPaneBounds = new Rectangle(0, menuBarSize.height, - containerWidth, - containerHeight - menuBarSize.height); - } - else - contentPaneBounds = new Rectangle(0, 0, containerWidth, - containerHeight); - - glassPaneBounds = new Rectangle(i.left, i.top, containerWidth, containerHeight); - layeredPaneBounds = new Rectangle(i.left, i.top, containerWidth, containerHeight); - } - - glassPane.setBounds(glassPaneBounds); - layeredPane.setBounds(layeredPaneBounds); - if (menuBar != null) - menuBar.setBounds(menuBarBounds); - getContentPane().setBounds(contentPaneBounds); - } - - /** - * DOCUMENT ME! - * - * @param target DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public Dimension maximumLayoutSize(Container target) - { - return preferredLayoutSize(target); - } - - /** - * DOCUMENT ME! - * - * @param target DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public Dimension minimumLayoutSize(Container target) - { - return preferredLayoutSize(target); - } - - /** - * DOCUMENT ME! - * - * @param c DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public Dimension preferredLayoutSize(Container c) - { - Dimension prefSize = new Dimension(); - Insets i = getInsets(); - prefSize = new Dimension(i.left + i.right, i.top + i.bottom); - Dimension contentPrefSize = getContentPane().getPreferredSize(); - prefSize.width += contentPrefSize.width; - prefSize.height += contentPrefSize.height; - if (menuBar != null) - { - Dimension menuBarSize = menuBar.getPreferredSize(); - if (menuBarSize.width > contentPrefSize.width) - prefSize.width += menuBarSize.width - contentPrefSize.width; - prefSize.height += menuBarSize.height; - } - return prefSize; - } - - /** - * DOCUMENT ME! - * - * @param comp DOCUMENT ME! - */ - public void removeLayoutComponent(Component comp) - { - // Nothing to do here. - } - } - - /** DOCUMENT ME! */ - private static final long serialVersionUID = 8690748000348575668L; - - public static final int NONE = 0; - public static final int FRAME = 1; - public static final int PLAIN_DIALOG = 2; - public static final int INFORMATION_DIALOG = 3; - public static final int ERROR_DIALOG = 4; - public static final int COLOR_CHOOSER_DIALOG = 5; - public static final int FILE_CHOOSER_DIALOG = 6; - public static final int QUESTION_DIALOG = 7; - public static final int WARNING_DIALOG = 8; - - /** DOCUMENT ME! */ - protected Component glassPane; - - /** DOCUMENT ME! */ - protected JLayeredPane layeredPane; - - /** DOCUMENT ME! */ - protected JMenuBar menuBar; - - /** DOCUMENT ME! */ - protected Container contentPane; - - protected JButton defaultButton; - - /** - * This field is unused since JDK1.3. To override the default action you - * should modify the JRootPane's ActionMap. - * - * @deprecated since JDK1.3 - * - * @specnote the specs indicate that the type of this field is - * a package private inner class - * javax.swing.JRootPane.DefaultAction. I assume that the closest - * public superclass is javax.swing.Action. - */ - protected Action defaultPressAction; - - /** - * This field is unused since JDK1.3. To override the default action you - * should modify the JRootPane's ActionMap. - * - * @deprecated since JDK1.3 - * - * @specnote the specs indicate that the type of this field is - * a package private inner class - * javax.swing.JRootPane.DefaultAction. I assume that the closest - * public superclass is javax.swing.Action. - */ - protected Action defaultReleaseAction; - - /** - * @since 1.4 - */ - private int windowDecorationStyle = NONE; - - /** - * DOCUMENT ME! - * - * @param m DOCUMENT ME! - */ - public void setJMenuBar(JMenuBar m) - { - JLayeredPane jlPane = getLayeredPane(); - if (menuBar != null) - jlPane.remove(menuBar); - menuBar = m; - if (menuBar != null) - jlPane.add(menuBar, JLayeredPane.FRAME_CONTENT_LAYER); - } - - /** - * @deprecated Replaced by <code>setJMenuBar()</code> - */ - public void setMenuBar(JMenuBar m) - { - setJMenuBar(m); - } - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public JMenuBar getJMenuBar() - { - return menuBar; - } - - /** - * @deprecated Replaced by <code>getJMenuBar()</code> - */ - public JMenuBar getMenuBar() - { - return getJMenuBar(); - } - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public boolean isValidateRoot() - { - return true; - } - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public Container getContentPane() - { - if (contentPane == null) - setContentPane(createContentPane()); - return contentPane; - } - - /** - * Sets the JRootPane's content pane. The content pane should typically be - * opaque for painting to work properly. This method also - * removes the old content pane from the layered pane. - * - * @param p the Container that will be the content pane - * @throws IllegalComponentStateException if p is null - */ - public void setContentPane(Container p) - { - if (p == null) - throw new IllegalComponentStateException ("cannot " + - "have a null content pane"); - else - { - if (contentPane != null && contentPane.getParent() == layeredPane) - layeredPane.remove(contentPane); - contentPane = p; - getLayeredPane().add(contentPane, JLayeredPane.FRAME_CONTENT_LAYER); - } - } - - /** - * DOCUMENT ME! - * - * @param comp DOCUMENT ME! - * @param constraints DOCUMENT ME! - * @param index DOCUMENT ME! - */ - protected void addImpl(Component comp, Object constraints, int index) - { - super.addImpl(comp, constraints, index); - } - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public Component getGlassPane() - { - if (glassPane == null) - setGlassPane(createGlassPane()); - return glassPane; - } - - /** - * DOCUMENT ME! - * - * @param f DOCUMENT ME! - */ - public void setGlassPane(Component f) - { - if (glassPane != null) - remove(glassPane); - - glassPane = f; - - glassPane.setVisible(false); - add(glassPane, 0); - } - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public JLayeredPane getLayeredPane() - { - if (layeredPane == null) - setLayeredPane(createLayeredPane()); - return layeredPane; - } - - /** - * Set the layered pane for the root pane. - * - * @param f The JLayeredPane to be used. - * - * @throws IllegalComponentStateException if JLayeredPane - * parameter is null. - */ - public void setLayeredPane(JLayeredPane f) - { - if (f == null) - throw new IllegalComponentStateException(); - - if (layeredPane != null) - remove(layeredPane); - - layeredPane = f; - add(f, -1); - } - - /** - * Creates a new <code>JRootPane</code> object. - */ - public JRootPane() - { - setLayout(createRootLayout()); - getGlassPane(); - getLayeredPane(); - getContentPane(); - setOpaque(true); - updateUI(); - } - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - protected LayoutManager createRootLayout() - { - return new RootLayout(); - } - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - protected Container createContentPane() - { - JPanel p = new JPanel(); - p.setName(this.getName() + ".contentPane"); - p.setLayout(new BorderLayout()); - return p; - } - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - protected Component createGlassPane() - { - JPanel p = new JPanel(); - p.setName(this.getName() + ".glassPane"); - p.setVisible(false); - p.setOpaque(false); - return p; - } - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - protected JLayeredPane createLayeredPane() - { - JLayeredPane l = new JLayeredPane(); - l.setLayout(null); - return l; - } - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public RootPaneUI getUI() - { - return (RootPaneUI) ui; - } - - /** - * DOCUMENT ME! - * - * @param ui DOCUMENT ME! - */ - public void setUI(RootPaneUI ui) - { - super.setUI(ui); - } - - /** - * DOCUMENT ME! - */ - public void updateUI() - { - setUI((RootPaneUI) UIManager.getUI(this)); - } - - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ - public String getUIClassID() - { - return "RootPaneUI"; - } - - public JButton getDefaultButton() - { - return defaultButton; - } - - public void setDefaultButton(JButton newButton) - { - // We only change the default button if the new button is defaultCapable - // or null and the old and new button are different objects. - if (defaultButton != newButton - && (newButton == null || newButton.isDefaultCapable())) - { - JButton oldButton = defaultButton; - defaultButton = newButton; - firePropertyChange("defaultButton", oldButton, newButton); - } - } - - /** - * @since 1.4 - */ - public int getWindowDecorationStyle() - { - return windowDecorationStyle; - } - - /** - * @since 1.4 - */ - public void setWindowDecorationStyle(int style) - { - if (style != NONE - && style != FRAME - && style != INFORMATION_DIALOG - && style != ERROR_DIALOG - && style != COLOR_CHOOSER_DIALOG - && style != FILE_CHOOSER_DIALOG - && style != QUESTION_DIALOG - && style != WARNING_DIALOG - && style != PLAIN_DIALOG) - throw new IllegalArgumentException("invalid style"); - - int oldStyle = windowDecorationStyle; - windowDecorationStyle = style; - firePropertyChange("windowDecorationStyle", oldStyle, style); - } - - /** - * This returns <code>true</code> if the <code>glassPane</code> is not - * visible because then the root pane can guarantee to tile its children - * (the only other direct child is a JLayeredPane which must figure its - * <code>optimizeDrawingEnabled</code> state on its own). - * - * @return <code>true</code> if the <code>glassPane</code> is not - * visible - */ - public boolean isOptimizedDrawingEnable() - { - return ! glassPane.isVisible(); - } - - /** - * Returns the accessible context for this JRootPane. This will be - * an instance of {@link AccessibleJRootPane}. - * - * @return the accessible context for this JRootPane - */ - public AccessibleContext getAccessibleContext() - { - if (accessibleContext == null) - accessibleContext = new AccessibleJRootPane(); - return accessibleContext; - } -} |