package me.ui;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Point;
import javax.swing.SwingUtilities;
import javax.swing.event.MouseInputListener;
/**
* Component drag and move.
*
* @author Johnnie Walker
*
*/
public class DragAndMove implements MouseInputListener {
/**
* move component
*/
private Component component;
/**
* last mouse location
*/
private Point lastPoint;
public DragAndMove(Component component) {
this.component = component;
component.addMouseListener(this);
component.addMouseMotionListener(this);
}
@Override
public void mouseClicked(java.awt.event.MouseEvent e) {
}
@Override
public void mousePressed(java.awt.event.MouseEvent e) {
this.lastPoint = e.getPoint();
}
@Override
public void mouseReleased(java.awt.event.MouseEvent e) {
lastPoint = null;
}
@Override
public void mouseEntered(java.awt.event.MouseEvent e) {
component.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
}
@Override
public void mouseExited(java.awt.event.MouseEvent e) {
component.setCursor(Cursor.getDefaultCursor());
}
@Override
public void mouseDragged(java.awt.event.MouseEvent e) {
Component win = SwingUtilities.windowForComponent(this.component);
if(win != null) {
int offsetX = e.getX() - lastPoint.x;
int offsetY = e.getY() - lastPoint.y;
Point currentPoint = win.getLocation();
win.setLocation(currentPoint.x + offsetX, currentPoint.y + offsetY);
}
}
@Override
public void mouseMoved(java.awt.event.MouseEvent e) {
}
/**
* install drag and move function
*
* @param component
*/
public static void install(Component component) {
new DragAndMove(component);
}
}