Package com.mxgraph.swing.handler

Source Code of com.mxgraph.swing.handler.mxElbowEdgeHandler

/**
* 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<mxPoint> 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;
  }

}
TOP

Related Classes of com.mxgraph.swing.handler.mxElbowEdgeHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.