private void setupDragMode(JComponent f) {
   JDesktopPane p = getDesktopPane(f);
   Container parent = f.getParent();
   dragMode = DEFAULT_DRAG_MODE;
   if (p != null) {
     String mode = (String) p.getClientProperty("JDesktopPane.dragMode");
     Window window = SwingUtilities.getWindowAncestor(f);
     if (window != null && !AWTUtilities.isWindowOpaque(window)) {
       dragMode = DEFAULT_DRAG_MODE;
     } else if (mode != null && mode.equals("outline")) {
       dragMode = OUTLINE_DRAG_MODE;
     } else if (mode != null
         && mode.equals("faster")
         && f instanceof JInternalFrame
         && ((JInternalFrame) f).isOpaque()
         && (parent == null || parent.isOpaque())) {
       dragMode = FASTER_DRAG_MODE;
     } else {
       if (p.getDragMode() == JDesktopPane.OUTLINE_DRAG_MODE) {
         dragMode = OUTLINE_DRAG_MODE;
       } else if (p.getDragMode() == JDesktopPane.LIVE_DRAG_MODE
           && f instanceof JInternalFrame
           && ((JInternalFrame) f).isOpaque()) {
         dragMode = FASTER_DRAG_MODE;
       } else {
         dragMode = DEFAULT_DRAG_MODE;
       }
     }
   }
 }