/** * This will activate <b>f</b> moving it to the front. It will set the current active frame's (if * any) <code>IS_SELECTED_PROPERTY</code> to <code>false</code>. There can be only one active * frame across all Layers. * * @param f the <code>JInternalFrame</code> to be activated */ public void activateFrame(JInternalFrame f) { Container p = f.getParent(); Component[] c; JDesktopPane d = f.getDesktopPane(); JInternalFrame currentlyActiveFrame = (d == null) ? null : d.getSelectedFrame(); // fix for bug: 4162443 if (p == null) { // If the frame is not in parent, its icon maybe, check it p = f.getDesktopIcon().getParent(); if (p == null) return; } // we only need to keep track of the currentActive InternalFrame, if any if (currentlyActiveFrame == null) { if (d != null) { d.setSelectedFrame(f); } } else if (currentlyActiveFrame != f) { // if not the same frame as the current active // we deactivate the current if (currentlyActiveFrame.isSelected()) { try { currentlyActiveFrame.setSelected(false); } catch (PropertyVetoException e2) { } } if (d != null) { d.setSelectedFrame(f); } } f.moveToFront(); }
// implements javax.swing.DesktopManager public void deactivateFrame(JInternalFrame f) { JDesktopPane d = f.getDesktopPane(); JInternalFrame currentlyActiveFrame = (d == null) ? null : d.getSelectedFrame(); if (currentlyActiveFrame == f) d.setSelectedFrame(null); }