/**
*
*/
public void mouseReleased(MouseEvent e)
{
mxGraph graph = graphComponent.getGraph();
if (!e.isConsumed() && first != null)
{
double dx = e.getX() - first.x;
double dy = e.getY() - first.y;
if (graphComponent.isSignificant(dx, dy))
{
if (error != null)
{
if (error.length() > 0)
{
JOptionPane.showMessageDialog(graphComponent, error);
}
}
else if (isLabel(index))
{
mxPoint abs = state.getAbsoluteOffset();
dx = abs.getX() - first.x;
dy = abs.getY() - first.y;
mxPoint pt = new mxPoint(e.getPoint());
if (gridEnabledEvent)
{
pt = graphComponent.snapScaledPoint(pt, dx, dy);
}
if (constrainedEvent)
{
if (Math.abs(e.getX() - first.x) > Math.abs(e.getY()
- first.y))
{
pt.setY(abs.getY());
}
else
{
pt.setX(abs.getX());
}
}
moveLabelTo(state, pt.getX() + dx, pt.getY() + dy);
}
else if (marker.hasValidState()
&& (isSource(index) || isTarget(index)))
{
connect(state.getCell(), marker.getValidState().getCell(),
isSource(index), graphComponent.isCloneEvent(e)
&& isCloneEnabled());
}
else if ((!isSource(index) && !isTarget(index))
|| graphComponent.getGraph().isAllowDanglingEdges())
{
movePoint(
state.getCell(),
index,
convertPoint(new mxPoint(e.getPoint()),
gridEnabledEvent));
}
e.consume();
}
}
if (!e.isConsumed() && isFlipEvent(e))
{
graph.flipEdge(state.getCell());
e.consume();
}
super.mouseReleased(e);
}