/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.util.swing;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author Yana Stamcheva
*/
public class ComponentMover
{
/**
* Registers the given component for component dragging/moving functionality.
*
* @param c the component, which should be moved on drag
*/
public static void registerComponent(Component c)
{
MoverMouseListener l = new MoverMouseListener();
c.addMouseListener(l);
c.addMouseMotionListener(l);
}
/**
* The Mouse listener for local video. It is responsible for dragging local
* video.
*/
private static class MoverMouseListener
implements MouseListener,
MouseMotionListener
{
/**
* Indicates if we're currently during a drag operation.
*/
private boolean inDrag = false;
/**
* The previous x coordinate of the drag.
*/
private int previousX = 0;
/**
* The previous y coordinate of the drag.
*/
private int previousY = 0;
/**
* Indicates that the mouse has been dragged.
*
* @param event the MouseEvent that notified us
*/
public void mouseDragged(MouseEvent event)
{
Point p = event.getPoint();
if (inDrag)
{
Component c = (Component) event.getSource();
int newX = c.getX() + p.x - previousX;
int newY = c.getY() + p.y - previousY;
c.setLocation(newX, newY);
}
}
public void mouseMoved(MouseEvent event) {}
public void mouseClicked(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
/**
* Indicates that the mouse has been pressed.
*
* @param event the MouseEvent that notified us
*/
public void mousePressed(MouseEvent event)
{
Point p = event.getPoint();
previousX = p.x;
previousY = p.y;
inDrag = true;
}
/**
* Indicates that the mouse has been released.
*
* @param event the MouseEvent that notified us
*/
public void mouseReleased(MouseEvent event)
{
inDrag = false;
previousX = 0;
previousY = 0;
}
}
}