package net.sf.freecol.client.gui; import java.awt.Component; import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import javax.swing.JInternalFrame; import javax.swing.SwingUtilities; public class FrameMotionListener extends MouseAdapter implements MouseMotionListener { public static final String COPYRIGHT = "Copyright (C) 2003-2012 The FreeCol Team"; public static final String LICENSE = "http://www.gnu.org/licenses/gpl.html"; public static final String REVISION = "$Revision$"; private JInternalFrame f; private Point loc = null; FrameMotionListener(JInternalFrame f) { this.f = f; } @Override public void mouseDragged(MouseEvent e) { if (loc == null || f.getDesktopPane() == null || f.getDesktopPane().getDesktopManager() == null) { return; } Point p = SwingUtilities.convertPoint((Component) e.getSource(), e.getX(), e.getY(), null); int moveX = loc.x - p.x; int moveY = loc.y - p.y; f.getDesktopPane().getDesktopManager().dragFrame(f, f.getX() - moveX, f.getY() - moveY); loc = p; } @Override public void mouseMoved(MouseEvent arg0) { } @Override public void mousePressed(MouseEvent e) { if (f.getDesktopPane() == null || f.getDesktopPane().getDesktopManager() == null) { return; } loc = SwingUtilities.convertPoint((Component) e.getSource(), e.getX(), e.getY(), null); f.getDesktopPane().getDesktopManager().beginDraggingFrame(f); } @Override public void mouseReleased(MouseEvent e) { if (loc == null || f.getDesktopPane() == null || f.getDesktopPane().getDesktopManager() == null) { return; } f.getDesktopPane().getDesktopManager().endDraggingFrame(f); } }