com.mxgraph.swing.handler.mxElbowEdgeHandler 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: mxElbowEdgeHandler.java,v 1.11 2010/08/03 09:24:46 david 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 java.util.List;
import com.mxgraph.model.mxGeometry;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.util.mxConstants;
import com.mxgraph.util.mxPoint;
import com.mxgraph.util.mxResources;
import com.mxgraph.view.mxCellState;
import com.mxgraph.view.mxGraphView;
/**
* @author Administrator
*
*/
public class mxElbowEdgeHandler extends mxEdgeHandler
{
/**
*
* @param graphComponent
* @param state
*/
public mxElbowEdgeHandler(mxGraphComponent graphComponent, mxCellState state)
{
super(graphComponent, state);
}
/**
* Hook for subclassers to return tooltip texts for certain points on the
* handle.
*/
public String getToolTipText(MouseEvent e)
{
int index = getIndexAt(e.getX(), e.getY());
if (index == 1)
{
return mxResources.get("doubleClickOrientation");
}
return null;
}
/**
*
*/
protected boolean isFlipEvent(MouseEvent e)
{
return e.getClickCount() == 2 && index == 1;
}
/**
* Returns true if the given index is the index of the last handle.
*/
public boolean isLabel(int index)
{
return index == 3;
}
/**
*
*/
protected Rectangle[] createHandles()
{
p = createPoints(state);
Rectangle[] h = new Rectangle[4];
mxPoint p0 = state.getAbsolutePoint(0);
mxPoint pe = state.getAbsolutePoint(state.getAbsolutePointCount() - 1);
h[0] = createHandle(p0.getPoint());
h[2] = createHandle(pe.getPoint());
// Creates the middle green edge handle
mxGeometry geometry = graphComponent.getGraph().getModel().getGeometry(
state.getCell());
List points = geometry.getPoints();
Point pt = null;
if (points == null || points.isEmpty())
{
pt = new Point((int) (Math.round(p0.getX()) + Math
.round((pe.getX() - p0.getX()) / 2)), (int) (Math.round(p0
.getY()) + Math.round((pe.getY() - p0.getY()) / 2)));
}
else
{
mxGraphView view = graphComponent.getGraph().getView();
pt = view.transformControlPoint(state, points.get(0))
.getPoint();
}
// Create the green middle handle
h[1] = createHandle(pt);
// Creates the yellow label handle
h[3] = createHandle(state.getAbsoluteOffset().getPoint(),
mxConstants.LABEL_HANDLE_SIZE);
// Makes handle slightly bigger if the yellow label handle
// exists and intersects this green handle
if (isHandleVisible(3) && h[1].intersects(h[3]))
{
h[1] = createHandle(pt, mxConstants.HANDLE_SIZE + 3);
}
return h;
}
}