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;
protected Component glassPane;
protected JLayeredPane layeredPane;
protected JMenuBar menuBar;
protected Container contentPane;
public void setJMenuBar(JMenuBar m)
{
menuBar = m;
getLayeredPane().add(menuBar, JLayeredPane.FRAME_CONTENT_LAYER);
}
public JMenuBar getJMenuBar()
{
return menuBar;
}
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 JComponent 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";
}
}