package rmi.rmiimage;

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

public abstract class MovableComponent
    extends Component
    implements MouseMotionListener,
    MouseListener {
  private int w = 10;
  private int h = 5;
  private boolean initialized = init();
  private int x1,y1,x2,y2;

  private boolean init() {
    addMouseMotionListener(this);
    addMouseListener(this);
    setCursor(
        Cursor.getPredefinedCursor(
            Cursor.HAND_CURSOR));
    return true;
  }

  public Dimension getPreferredSize() {
    return new Dimension(w, h);
  }

  public void mouseReleased(MouseEvent e) {
  }

  public void mouseEntered(MouseEvent e) {
  }

  public void mouseExited(MouseEvent e) {
  }

  public void mouseClicked(MouseEvent e) {
  }

  public void mouseDragged(MouseEvent e) {
    e.consume();
    x1 = x2;
    y1 = y2;
    x2 = e.getX();
    y2 = e.getY();
    setLocation(x2, y2);
    repaint();
  }

  public void mouseMoved(MouseEvent e) {
  }

  public void mousePressed(MouseEvent e) {
    e.consume();
    x1 = e.getX();
    y1 = e.getY();
    x2 = -1;
  }
}