package cutils.gui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
abstract class MouseController implements MouseListener, MouseMotionListener {
private int x = 0;
private int y = 0;
public void mouseMoved(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {
released(e.getX(), e.getY());
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {
if (e.isControlDown()) {
clickControl(new Point(e.getX(), e.getY()));
}
else {
clicked(new Point(e.getX(), e.getY()));
}
}
public void mousePressed(MouseEvent e) {
x = e.getX();
y = e.getY();
pressed(new Point(x,y));
}
public void mouseDragged(MouseEvent e) {
if (e.isShiftDown()) {
dragShift(new Point(x,y),new Point(e.getX(),e.getY()));
}
else {
dragged(new Point(x,y),new Point(e.getX(),e.getY()));
}
}
public abstract void released(int x, int y);
public abstract void dragged(Point p1, Point p2);
public abstract void dragShift(Point p1, Point p2);
public abstract void pressed(Point p);
public abstract void clicked(Point p);
public abstract void clickControl(Point p);
}
class MouseComponentMover extends MouseController {
Component c;
MouseComponentMover(Component _c) {
c = _c;
c.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
c.addMouseMotionListener(this);
c.addMouseListener(this);
}
public void dragShift(Point p1, Point p2) {
SwingUtilities.convertPointToScreen(p2,c);
c.setSize(p2.x - c.getBounds().x, p2.y - c.getBounds().y);
c.setCursor(Cursor.getPredefinedCursor(Cursor.SE_RESIZE_CURSOR));
}
public void dragged(Point p1,Point p2) {
c.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
Point p3 = c.getLocation();
c.setLocation(p2.x + p3.x - p1.x,p2.y + p3.y - p1.y);
}
public void clicked(Point p) {}
public void clickControl(Point p) {
editProperties e = new editProperties(c);
}
public void shiftClicked(Point p) {}
public void pressed(Point p) {}
public void doubleClicked(Point p) {}
public void released(int x, int y) {
c.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}
}