protected void processMouseEvent(MouseEvent e) {
   MouseEvent transformedEvent = transformMouseEvent(e);
   switch (e.getID()) {
     case MouseEvent.MOUSE_ENTERED:
       if (mouseDraggedComponent == null || mouseCurrentComponent == mouseDraggedComponent) {
         dispatchMouseEvent(transformedEvent);
       }
       break;
     case MouseEvent.MOUSE_EXITED:
       if (mouseEnteredComponent != null) {
         dispatchMouseEvent(
             createEnterExitEvent(mouseEnteredComponent, MouseEvent.MOUSE_EXITED, e));
         mouseEnteredComponent = null;
       }
       break;
     case MouseEvent.MOUSE_RELEASED:
       if (mouseDraggedComponent != null && e.getButton() == MouseEvent.BUTTON1) {
         transformedEvent.setSource(mouseDraggedComponent);
         mouseDraggedComponent = null;
       }
       dispatchMouseEvent(transformedEvent);
       break;
     default:
       dispatchMouseEvent(transformedEvent);
   }
   super.processMouseEvent(e);
 }
 protected void processMouseEvent(MouseEvent e) {
   super.processMouseEvent(e);
   if (!isShowing()) {
     return;
   }
   switch (e.getID()) {
     case MouseEvent.MOUSE_ENTERED:
       setCursor(getResizeCursor());
       break;
     case MouseEvent.MOUSE_EXITED:
       if (!myDragging) {
         setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
       }
       break;
     case MouseEvent.MOUSE_PRESSED:
       if (isInside(e.getPoint())) {
         myWasPressedOnMe = true;
         myGlassPane.setCursor(getResizeCursor(), myListener);
         e.consume();
       } else {
         myWasPressedOnMe = false;
       }
       break;
     case MouseEvent.MOUSE_RELEASED:
       if (myWasPressedOnMe) {
         e.consume();
       }
       if (isInside(e.getPoint())) {
         myGlassPane.setCursor(getResizeCursor(), myListener);
       }
       myWasPressedOnMe = false;
       myDragging = false;
       myPoint = null;
       break;
     case MouseEvent.MOUSE_CLICKED:
       if (e.getClickCount() == 2) {
         center();
       }
       break;
   }
 }