package javax.swing;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.LayoutManager;
import java.awt.LayoutManager2;
import java.io.Serializable;
import javax.accessibility.AccessibleRole;
import javax.swing.plaf.RootPaneUI;
public class JRootPane extends JComponent
{
protected static class AccessibleJRootPane
{
private static final long serialVersionUID = 1082432482784468088L;
protected AccessibleJRootPane()
{
}
public AccessibleRole getAccessibleRole()
{
return AccessibleRole.ROOT_PANE;
}
}
protected class RootLayout implements LayoutManager2, Serializable
{
private static final long serialVersionUID = -4100116998559815027L;
protected RootLayout()
{
}
public void addLayoutComponent(Component comp, Object constraints)
{
}
public void addLayoutComponent(String name, Component comp)
{
}
public float getLayoutAlignmentX(Container target)
{
return target.getAlignmentX();
}
public float getLayoutAlignmentY(Container target)
{
return target.getAlignmentY();
}
public void invalidateLayout(Container target)
{
}
public void layoutContainer(Container c)
{
Dimension menuBarSize;
Dimension containerSize = c.getSize(null);
Dimension contentPaneSize = contentPane.getPreferredSize();
if (containerSize.width == 0 && containerSize.height == 0)
{
if (menuBar != null)
{
int maxWidth;
menuBarSize = menuBar.getPreferredSize();
maxWidth = Math.max(menuBarSize.width, contentPaneSize.width);
menuBar.setBounds(0, 0, maxWidth, menuBarSize.height);
glassPane.setBounds(0, menuBarSize.height, maxWidth,
contentPaneSize.height);
contentPane.setBounds(0, menuBarSize.height, maxWidth,
contentPaneSize.height);
layeredPane.setSize(maxWidth,
menuBarSize.height + contentPaneSize.height);
}
else
{
glassPane.setBounds(0, 0, contentPaneSize.width,
contentPaneSize.height);
contentPane.setBounds(0, 0, contentPaneSize.width,
contentPaneSize.height);
layeredPane.setSize(contentPaneSize.width, contentPaneSize.height);
}
}
else
{
if (menuBar != null)
{
menuBarSize = menuBar.getPreferredSize();
if (menuBarSize.height > containerSize.height)
menuBarSize.height = containerSize.height;
menuBar.setBounds(0, 0, containerSize.width, menuBarSize.height);
int remainingHeight = containerSize.height - menuBarSize.height;
glassPane.setBounds(0, menuBarSize.height, containerSize.width,
containerSize.height - menuBarSize.height);
contentPane.setBounds(0, menuBarSize.height,
containerSize.width,
(containerSize.height - menuBarSize.height));
}
else
{
glassPane.setBounds(0, 0, containerSize.width,
containerSize.height);
contentPane.setBounds(0, 0, containerSize.width,
containerSize.height);
}
layeredPane.setSize(containerSize.width, containerSize.height);
}
}
public Dimension maximumLayoutSize(Container target)
{
return preferredLayoutSize(target);
}
public Dimension minimumLayoutSize(Container target)
{
return preferredLayoutSize(target);
}
public Dimension preferredLayoutSize(Container c)
{
Dimension menuBarSize;
Dimension prefSize;
Dimension containerSize = c.getSize();
Dimension contentPaneSize = contentPane.getPreferredSize();
if (containerSize.width == 0 && containerSize.height == 0)
{
if (menuBar != null)
{
int maxWidth;
menuBarSize = menuBar.getPreferredSize();
maxWidth = Math.max(menuBarSize.width, contentPaneSize.width);
prefSize = new Dimension(maxWidth,
contentPaneSize.height
+ menuBarSize.height);
}
else
prefSize = contentPaneSize;
}
else
prefSize = c.getSize();
return prefSize;
}
public void removeLayoutComponent(Component comp)
{
}
}
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;
protected Component glassPane;
protected JLayeredPane layeredPane;
protected JMenuBar menuBar;
protected Container contentPane;
protected JButton defaultButton;
private int windowDecorationStyle = NONE;
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);
}
public void setMenuBar(JMenuBar m)
{
setJMenuBar(m);
}
public JMenuBar getJMenuBar()
{
return menuBar;
}
public JMenuBar getMenuBar()
{
return getJMenuBar();
}
public boolean isValidateRoot()
{
return true;
}
public Container getContentPane()
{
if (contentPane == null)
setContentPane(createContentPane());
return contentPane;
}
public void setContentPane(Container p)
{
contentPane = p;
getLayeredPane().add(contentPane, JLayeredPane.FRAME_CONTENT_LAYER);
}
protected void addImpl(Component comp, Object constraints, int index)
{
super.addImpl(comp, constraints, index);
}
public Component getGlassPane()
{
if (glassPane == null)
setGlassPane(createGlassPane());
return glassPane;
}
public void setGlassPane(Component f)
{
if (glassPane != null)
remove(glassPane);
glassPane = f;
glassPane.setVisible(false);
add(glassPane, 0);
}
public JLayeredPane getLayeredPane()
{
if (layeredPane == null)
setLayeredPane(createLayeredPane());
return layeredPane;
}
public void setLayeredPane(JLayeredPane f)
{
if (layeredPane != null)
remove(layeredPane);
layeredPane = f;
add(f, -1);
}
public JRootPane()
{
setLayout(createRootLayout());
getGlassPane();
getLayeredPane();
getContentPane();
setDoubleBuffered(true);
updateUI();
}
protected LayoutManager createRootLayout()
{
return new RootLayout();
}
protected Container createContentPane()
{
JPanel p = new JPanel();
p.setName(this.getName() + ".contentPane");
p.setLayout(new BorderLayout());
return p;
}
protected Component createGlassPane()
{
JPanel p = new JPanel();
p.setName(this.getName() + ".glassPane");
p.setLayout(new BorderLayout());
p.setVisible(false);
p.setOpaque(false);
return p;
}
protected JLayeredPane createLayeredPane()
{
JLayeredPane l = new JLayeredPane();
l.setLayout(null);
return l;
}
public RootPaneUI getUI()
{
return (RootPaneUI) ui;
}
public void setUI(RootPaneUI ui)
{
super.setUI(ui);
}
public void updateUI()
{
setUI((RootPaneUI) UIManager.getUI(this));
}
public String getUIClassID()
{
return "RootPaneUI";
}
public JButton getDefaultButton()
{
return defaultButton;
}
public void setDefaultButton(JButton newButton)
{
if (defaultButton == newButton)
return;
JButton oldButton = defaultButton;
defaultButton = newButton;
firePropertyChange("defaultButton", oldButton, newButton);
}
public int getWindowDecorationStyle()
{
return windowDecorationStyle;
}
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)
throw new IllegalArgumentException("invalid style");
int oldStyle = windowDecorationStyle;
windowDecorationStyle = style;
firePropertyChange("windowDecorationStyle", oldStyle, style);
}
}