@Override public void addView(JInternalFrameEx f, Object constraints) { MultiSplitLayoutConstraints mc = (MultiSplitLayoutConstraints) constraints; f.setTabIndex(mc.tabIndex); f.setVisible(true); getSwingDesktopPane().add(f, mc); // ticket 90942, detail pane initially only has 20px height DesktopManager dm = getSwingDesktopPane().getDesktopManager(); if (dm instanceof MultiSplitDesktopManager) { ((MultiSplitDesktopManager) dm).fitFrames(new JInternalFrame[] {f}); } // end ticket getSwingDesktopPane().revalidate(); getSwingDesktopPane().repaint(); }
@Override public void removeView(JInternalFrameEx f) { f.setVisible(false); f.dispose(); DesktopManager dm = getSwingDesktopPane().getDesktopManager(); dm.closeFrame(f); getSwingDesktopPane().remove(f); if (dm instanceof MultiSplitDesktopManager) { ((MultiSplitDesktopManager) dm).fitFrames(getSwingDesktopPane().getAllFrames()); } if (SwingUtility.IS_JAVA_7_OR_LESS) { // Workaround JRE Bug #4759312; See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4759312 // for details getSwingDesktopPane().selectFrame(true); } }