com.mxgraph.swing.handler.mxPanningHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jgraphx Show documentation
Show all versions of jgraphx Show documentation
JGraphX Swing Component - Java Graph Visualization Library
This is a binary & source redistribution of the original, unmodified JGraphX library originating from:
"https://github.com/jgraph/jgraphx/archive/v3.4.1.3.zip".
The purpose of this redistribution is to make the library available to other Maven projects.
/**
* $Id: mxPanningHandler.java,v 1.8 2010/12/08 12:31:50 gaudenz Exp $
* Copyright (c) 2008, Gaudenz Alder
*/
package com.mxgraph.swing.handler;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.swing.util.mxMouseAdapter;
/**
*
*/
public class mxPanningHandler extends mxMouseAdapter
{
/**
*
*/
private static final long serialVersionUID = 7969814728058376339L;
/**
*
*/
protected mxGraphComponent graphComponent;
/**
*
*/
protected boolean enabled = true;
/**
*
*/
protected transient Point start;
/**
*
* @param graphComponent
*/
public mxPanningHandler(mxGraphComponent graphComponent)
{
this.graphComponent = graphComponent;
graphComponent.getGraphControl().addMouseListener(this);
graphComponent.getGraphControl().addMouseMotionListener(this);
}
/**
*
*/
public boolean isEnabled()
{
return enabled;
}
/**
*
*/
public void setEnabled(boolean value)
{
enabled = value;
}
/**
*
*/
public void mousePressed(MouseEvent e)
{
if (isEnabled() && !e.isConsumed() && graphComponent.isPanningEvent(e)
&& !e.isPopupTrigger())
{
start = e.getPoint();
}
}
/**
*
*/
public void mouseDragged(MouseEvent e)
{
if (!e.isConsumed() && start != null)
{
int dx = e.getX() - start.x;
int dy = e.getY() - start.y;
Rectangle r = graphComponent.getViewport().getViewRect();
int right = r.x + ((dx > 0) ? 0 : r.width) - dx;
int bottom = r.y + ((dy > 0) ? 0 : r.height) - dy;
graphComponent.getGraphControl().scrollRectToVisible(
new Rectangle(right, bottom, 0, 0));
e.consume();
}
}
/**
*
*/
public void mouseReleased(MouseEvent e)
{
if (!e.isConsumed() && start != null)
{
int dx = Math.abs(start.x - e.getX());
int dy = Math.abs(start.y - e.getY());
if (graphComponent.isSignificant(dx, dy))
{
e.consume();
}
}
start = null;
}
/**
* Whether or not panning is currently active
* @return Whether or not panning is currently active
*/
public boolean isActive()
{
return (start != null);
}
}