/* Author: Maple * Feb. 2 2026 * */ package org.openautonomousconnection.oacswing.component; import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.*; public class OACRootPane extends JRootPane implements OACComponent { public OACRootPane() { super(); } @Override protected OACLayeredPane createLayeredPane() { OACLayeredPane p = new OACLayeredPane(); p.setName(this.getName()+".layeredPane"); return p; } @Override protected Container createContentPane() { JComponent c = new OACPanel(); c.setName(this.getName()+".contentPane"); c.setLayout(new BorderLayout() { /* This BorderLayout subclass maps a null constraint to CENTER. * Although the reference BorderLayout also does this, some VMs * throw an IllegalArgumentException. */ public void addLayoutComponent(Component comp, Object constraints) { if (constraints == null) { constraints = BorderLayout.CENTER; } super.addLayoutComponent(comp, constraints); } }); return c; } // public void setOACMenuBar(OACMenuBar menu) { // super.setJMenuBar(menu); // } @Deprecated @Override public JMenuBar getJMenuBar() { if(this.menuBar instanceof OACMenuBar oacMenuBar) return oacMenuBar; else return this.menuBar; } public OACMenuBar getOACMenuBar() { return (OACMenuBar) this.menuBar; } @Deprecated @Override public void setLayeredPane(JLayeredPane layered) { if(layered instanceof OACLayeredPane) super.setLayeredPane(layered); } public void setLayeredPane(OACLayeredPane layeredPane) { super.setLayeredPane(layeredPane); } @Deprecated @Override public void setDefaultButton(JButton defaultButton) { if(defaultButton instanceof OACButton) super.setDefaultButton(defaultButton); } public void setDefaultButton(OACButton defaultButton) { super.setDefaultButton(defaultButton); } @Override public OACButton getDefaultButton() { return (OACButton) this.defaultButton; } @Override public OACLayeredPane getLayeredPane() { return (OACLayeredPane) this.layeredPane; } @Override protected Component createGlassPane() { OACPanel c = new OACPanel(); c.setName(this.getName()+".glassPane"); c.setVisible(false); c.setOpaque(false); return c; } @Override public Component add(Component comp) { this.initOther(comp); return super.add(comp); } @Override public Component add(Component comp, int index) { this.initOther(comp); return super.add(comp, index); } @Override public void add(@NotNull Component comp, Object constraints) { this.initOther(comp); super.add(comp, constraints); } @Override public Component add(String name, Component comp) { this.initOther(comp); return super.add(name, comp); } @Override public void add(Component comp, Object constraints, int index) { this.initOther(comp); super.add(comp, constraints, index); } }