/**
  * 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);
 }