Java Code Examples for org.eclipse.draw2d.geometry.Rectangle#contains()
The following examples show how to use
org.eclipse.draw2d.geometry.Rectangle#contains() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: RailroadView.java From xtext-eclipse with Eclipse Public License 2.0 | 6 votes |
public void reveal(IFigure figure) { Viewport viewport = canvas.getViewport(); Rectangle viewportBounds = viewport.getBounds().getCopy(); viewportBounds.translate(viewport.getViewLocation()); Rectangle figureBounds = figure.getBounds().getCopy(); figure.translateToAbsolute(figureBounds); figureBounds.translate(viewport.getViewLocation()); if (!viewportBounds.contains(figureBounds)) { int newX = viewportBounds.x; int newY = viewportBounds.y; if(viewportBounds.x > figureBounds.x) { newX = figureBounds.x; } else if(viewportBounds.x + viewportBounds.getRight().x < figureBounds.getRight().x) { newX = figureBounds.getRight().x - viewportBounds.width; } if(viewportBounds.y > figureBounds.y) { newY = figureBounds.y; } else if(viewportBounds.getBottom().y < figureBounds.getBottom().y) { newY = figureBounds.getBottom().y - viewportBounds.height; } canvas.scrollSmoothTo(newX, newY); } }
Example 2
Source File: NodeElementGraphicalNodeEditPolicy.java From ermasterr with Apache License 2.0 | 5 votes |
/** * {@inheritDoc} */ @Override protected Command getReconnectSourceCommand(final ReconnectRequest reconnectrequest) { final ConnectionElement connection = (ConnectionElement) reconnectrequest.getConnectionEditPart().getModel(); if (connection.getSource() == connection.getTarget()) { return null; } final NodeElement newSource = (NodeElement) reconnectrequest.getTarget().getModel(); if (connection.getSource() != newSource) { return null; } final NodeElementEditPart sourceEditPart = (NodeElementEditPart) reconnectrequest.getConnectionEditPart().getSource(); final Point location = new Point(reconnectrequest.getLocation()); final IFigure sourceFigure = sourceEditPart.getFigure(); sourceFigure.translateToRelative(location); int xp = -1; int yp = -1; final Rectangle bounds = sourceFigure.getBounds(); final Rectangle centerRectangle = new Rectangle(bounds.x + (bounds.width / 4), bounds.y + (bounds.height / 4), bounds.width / 2, bounds.height / 2); if (!centerRectangle.contains(location)) { final Point point = NodeElementEditPart.getIntersectionPoint(location, sourceFigure); xp = 100 * (point.x - bounds.x) / bounds.width; yp = 100 * (point.y - bounds.y) / bounds.height; } final ReconnectSourceCommand command = new ReconnectSourceCommand(connection, xp, yp); return command; }
Example 3
Source File: NodeElementGraphicalNodeEditPolicy.java From ermasterr with Apache License 2.0 | 5 votes |
/** * {@inheritDoc} */ @Override protected Command getReconnectTargetCommand(final ReconnectRequest reconnectrequest) { final ConnectionElement connection = (ConnectionElement) reconnectrequest.getConnectionEditPart().getModel(); if (connection.getSource() == connection.getTarget()) { return null; } final NodeElement newTarget = (NodeElement) reconnectrequest.getTarget().getModel(); if (connection.getTarget() != newTarget) { return null; } final NodeElementEditPart targetEditPart = (NodeElementEditPart) reconnectrequest.getConnectionEditPart().getTarget(); final Point location = new Point(reconnectrequest.getLocation()); final IFigure targetFigure = targetEditPart.getFigure(); targetFigure.translateToRelative(location); int xp = -1; int yp = -1; final Rectangle bounds = targetFigure.getBounds(); final Rectangle centerRectangle = new Rectangle(bounds.x + (bounds.width / 4), bounds.y + (bounds.height / 4), bounds.width / 2, bounds.height / 2); if (!centerRectangle.contains(location)) { final Point point = NodeElementEditPart.getIntersectionPoint(location, targetFigure); xp = 100 * (point.x - bounds.x) / bounds.width; yp = 100 * (point.y - bounds.y) / bounds.height; } final ReconnectTargetCommand command = new ReconnectTargetCommand(connection, xp, yp); return command; }
Example 4
Source File: DiagramWalkerGraphicalNodeEditPolicy.java From erflute with Apache License 2.0 | 5 votes |
@Override protected Command getReconnectSourceCommand(ReconnectRequest reconnectrequest) { final WalkerConnection connection = (WalkerConnection) reconnectrequest.getConnectionEditPart().getModel(); if (!(connection instanceof Relationship)) { return null; } final Relationship relation = (Relationship) connection; if (relation.getSourceWalker() == relation.getTargetWalker()) { return null; } final DiagramWalker newSource = ((DiagramWalker) reconnectrequest.getTarget().getModel()).toMaterialize(); if (!relation.getSourceWalker().equals(newSource)) { return null; } final DiagramWalkerEditPart sourceEditPart = (DiagramWalkerEditPart) reconnectrequest.getConnectionEditPart().getSource(); final Point location = new Point(reconnectrequest.getLocation()); final IFigure sourceFigure = sourceEditPart.getFigure(); sourceFigure.translateToRelative(location); int xp = -1; int yp = -1; final Rectangle bounds = sourceFigure.getBounds(); final Rectangle centerRectangle = new Rectangle(bounds.x + (bounds.width / 4), bounds.y + (bounds.height / 4), bounds.width / 2, bounds.height / 2); if (!centerRectangle.contains(location)) { final Point point = ERTableEditPart.getIntersectionPoint(location, sourceFigure); xp = 100 * (point.x - bounds.x) / bounds.width; yp = 100 * (point.y - bounds.y) / bounds.height; } final ReconnectSourceCommand command = new ReconnectSourceCommand(relation, xp, yp); return command; }
Example 5
Source File: DiagramWalkerGraphicalNodeEditPolicy.java From erflute with Apache License 2.0 | 5 votes |
@Override protected Command getReconnectTargetCommand(ReconnectRequest reconnectrequest) { final WalkerConnection connection = (WalkerConnection) reconnectrequest.getConnectionEditPart().getModel(); if (!(connection instanceof Relationship)) { return null; } final Relationship relation = (Relationship) connection; if (relation.getSourceWalker() == relation.getTargetWalker()) { return null; } final DiagramWalker newTarget = ((DiagramWalker) reconnectrequest.getTarget().getModel()).toMaterialize(); if (!relation.getTargetWalker().equals(newTarget)) { return null; } final DiagramWalkerEditPart targetEditPart = (DiagramWalkerEditPart) reconnectrequest.getConnectionEditPart().getTarget(); final Point location = new Point(reconnectrequest.getLocation()); final IFigure targetFigure = targetEditPart.getFigure(); targetFigure.translateToRelative(location); int xp = -1; int yp = -1; final Rectangle bounds = targetFigure.getBounds(); final Rectangle centerRectangle = new Rectangle(bounds.x + (bounds.width / 4), bounds.y + (bounds.height / 4), bounds.width / 2, bounds.height / 2); if (!centerRectangle.contains(location)) { final Point point = ERTableEditPart.getIntersectionPoint(location, targetFigure); xp = 100 * (point.x - bounds.x) / bounds.width; yp = 100 * (point.y - bounds.y) / bounds.height; } final ReconnectTargetCommand command = new ReconnectTargetCommand(relation, xp, yp); return command; }
Example 6
Source File: CrosstabFirstCellEditPart.java From birt with Eclipse Public License 1.0 | 5 votes |
public boolean contains( Point pt ) { Point p = getImagePoint( ); Rectangle rect = new Rectangle(p.x, p.y, image.getBounds( ).width, image.getBounds( ).height); translateToAbsolute( rect ); return rect.contains( pt ); }
Example 7
Source File: ReportRootEditPart.java From birt with Eclipse Public License 1.0 | 5 votes |
/** * Returns <code>true</code> if the given point is inside the * viewport, but near its edge. * * @see org.eclipse.gef.AutoexposeHelper#detect(org.eclipse.draw2d.geometry.Point) */ public boolean detect( Point where ) { lastStepTime = 0; Viewport port = findViewport( owner ); Rectangle rect = Rectangle.SINGLETON; port.getClientArea( rect ); port.translateToParent( rect ); port.translateToAbsolute( rect ); return rect.contains( where ) && !rect.crop( threshold ).contains( where ); }
Example 8
Source File: CustomRectilinearRouter.java From bonita-studio with GNU General Public License v2.0 | 5 votes |
/** * Rectilinear polyline is invalid if: * 1. First bend point is within the source * 2. Last bend point is within the target * 3. First bend point and source anchor are on different sides of the source shape * 4. Last bend point and target anchor are on different sides of the target shape * * @param conn connection * @param line rectilinear polyline * @return <code>true</code> if the line is valid */ private boolean isValidRectilinearLine(Connection conn, PointList line) { if (!(conn.getSourceAnchor().getOwner() instanceof Connection)) { Rectangle source = new PrecisionRectangle( getAnchorableFigureBounds(conn.getSourceAnchor().getOwner())); conn.getSourceAnchor().getOwner().translateToAbsolute(source); conn.translateToRelative(source); if (source.contains(line.getPoint(1))) { return false; } int firstSegmentOrientation = line.getFirstPoint().x == line.getPoint(1).x ? PositionConstants.VERTICAL : PositionConstants.HORIZONTAL; if (getOutisePointOffRectanglePosition(line.getPoint(1), source) != getAnchorLocationBasedOnSegmentOrientation( line.getFirstPoint(), source, firstSegmentOrientation)) { return false; } } if (!(conn.getTargetAnchor().getOwner() instanceof Connection)) { Rectangle target = new PrecisionRectangle( getAnchorableFigureBounds(conn.getTargetAnchor().getOwner())); conn.getTargetAnchor().getOwner().translateToAbsolute(target); conn.translateToRelative(target); if (target.contains(line.getPoint(line.size() - 2))) { return false; } int lastSegmentOrientation = line.getLastPoint().x == line.getPoint(line.size() - 2).x ? PositionConstants.VERTICAL : PositionConstants.HORIZONTAL; if (getOutisePointOffRectanglePosition(line.getPoint(line.size() - 2), target) != getAnchorLocationBasedOnSegmentOrientation(line.getLastPoint(), target, lastSegmentOrientation)) { return false; } } return true; }
Example 9
Source File: NodeElementGraphicalNodeEditPolicy.java From ermaster-b with Apache License 2.0 | 4 votes |
/** * {@inheritDoc} */ @Override protected Command getReconnectTargetCommand( ReconnectRequest reconnectrequest) { ConnectionElement connection = (ConnectionElement) reconnectrequest .getConnectionEditPart().getModel(); if (!(connection instanceof Relation)) { return null; } Relation relation = (Relation) connection; if (relation.getSource() == relation.getTarget()) { return null; } NodeElement newTarget = (NodeElement) reconnectrequest.getTarget() .getModel(); if (!relation.getTarget().equals(newTarget)) { return null; } NodeElementEditPart targetEditPart = (NodeElementEditPart) reconnectrequest .getConnectionEditPart().getTarget(); Point location = new Point(reconnectrequest.getLocation()); IFigure targetFigure = targetEditPart.getFigure(); targetFigure.translateToRelative(location); int xp = -1; int yp = -1; Rectangle bounds = targetFigure.getBounds(); Rectangle centerRectangle = new Rectangle( bounds.x + (bounds.width / 4), bounds.y + (bounds.height / 4), bounds.width / 2, bounds.height / 2); if (!centerRectangle.contains(location)) { Point point = ERTableEditPart.getIntersectionPoint(location, targetFigure); xp = 100 * (point.x - bounds.x) / bounds.width; yp = 100 * (point.y - bounds.y) / bounds.height; } ReconnectTargetCommand command = new ReconnectTargetCommand(relation, xp, yp); return command; }
Example 10
Source File: NodeElementGraphicalNodeEditPolicy.java From ermaster-b with Apache License 2.0 | 4 votes |
/** * {@inheritDoc} */ @Override protected Command getReconnectSourceCommand( ReconnectRequest reconnectrequest) { ConnectionElement connection = (ConnectionElement) reconnectrequest .getConnectionEditPart().getModel(); if (!(connection instanceof Relation)) { return null; } Relation relation = (Relation) connection; if (relation.getSource() == relation.getTarget()) { return null; } NodeElement newSource = (NodeElement) reconnectrequest.getTarget().getModel(); if (!relation.getSource().equals(newSource)) { return null; } NodeElementEditPart sourceEditPart = (NodeElementEditPart) reconnectrequest .getConnectionEditPart().getSource(); Point location = new Point(reconnectrequest.getLocation()); IFigure sourceFigure = sourceEditPart.getFigure(); sourceFigure.translateToRelative(location); int xp = -1; int yp = -1; Rectangle bounds = sourceFigure.getBounds(); Rectangle centerRectangle = new Rectangle( bounds.x + (bounds.width / 4), bounds.y + (bounds.height / 4), bounds.width / 2, bounds.height / 2); if (!centerRectangle.contains(location)) { Point point = ERTableEditPart.getIntersectionPoint(location, sourceFigure); xp = 100 * (point.x - bounds.x) / bounds.width; yp = 100 * (point.y - bounds.y) / bounds.height; } ReconnectSourceCommand command = new ReconnectSourceCommand(relation, xp, yp); return command; }
Example 11
Source File: TableViewEditPart.java From ermaster-b with Apache License 2.0 | 4 votes |
/** * {@inheritDoc} */ @Override public ConnectionAnchor getTargetConnectionAnchor(Request request) { if (request instanceof ReconnectRequest) { ReconnectRequest reconnectRequest = (ReconnectRequest) request; ConnectionEditPart connectionEditPart = reconnectRequest .getConnectionEditPart(); if (!(connectionEditPart instanceof RelationEditPart)) { return super.getTargetConnectionAnchor(request); } Relation relation = (Relation) connectionEditPart.getModel(); if (relation.getSource() == relation.getTarget()) { return new XYChopboxAnchor(this.getFigure()); } EditPart editPart = reconnectRequest.getTarget(); if (editPart == null || !editPart.getModel().equals(relation.getTarget())) { return new XYChopboxAnchor(this.getFigure()); } Point location = new Point(reconnectRequest.getLocation()); this.getFigure().translateToRelative(location); IFigure targetFigure = ((TableViewEditPart) connectionEditPart .getTarget()).getFigure(); XYChopboxAnchor anchor = new XYChopboxAnchor(this.getFigure()); Rectangle bounds = targetFigure.getBounds(); Rectangle centerRectangle = new Rectangle(bounds.x + (bounds.width / 4), bounds.y + (bounds.height / 4), bounds.width / 2, bounds.height / 2); if (!centerRectangle.contains(location)) { Point point = getIntersectionPoint(location, targetFigure); anchor.setLocation(point); } return anchor; } else if (request instanceof CreateConnectionRequest) { CreateConnectionRequest connectionRequest = (CreateConnectionRequest) request; Command command = connectionRequest.getStartCommand(); if (command instanceof CreateCommentConnectionCommand) { return super.getTargetConnectionAnchor(request); } } return new XYChopboxAnchor(this.getFigure()); }
Example 12
Source File: TableViewEditPart.java From ermaster-b with Apache License 2.0 | 4 votes |
/** * {@inheritDoc} */ @Override public ConnectionAnchor getSourceConnectionAnchor(Request request) { if (request instanceof ReconnectRequest) { ReconnectRequest reconnectRequest = (ReconnectRequest) request; ConnectionEditPart connectionEditPart = reconnectRequest .getConnectionEditPart(); if (!(connectionEditPart instanceof RelationEditPart)) { return super.getSourceConnectionAnchor(request); } Relation relation = (Relation) connectionEditPart.getModel(); if (relation.getSource() == relation.getTarget()) { return new XYChopboxAnchor(this.getFigure()); } EditPart editPart = reconnectRequest.getTarget(); if (editPart == null || !editPart.getModel().equals(relation.getSource())) { return new XYChopboxAnchor(this.getFigure()); } Point location = new Point(reconnectRequest.getLocation()); this.getFigure().translateToRelative(location); IFigure sourceFigure = ((TableViewEditPart) connectionEditPart .getSource()).getFigure(); XYChopboxAnchor anchor = new XYChopboxAnchor(this.getFigure()); Rectangle bounds = sourceFigure.getBounds(); Rectangle centerRectangle = new Rectangle(bounds.x + (bounds.width / 4), bounds.y + (bounds.height / 4), bounds.width / 2, bounds.height / 2); if (!centerRectangle.contains(location)) { Point point = getIntersectionPoint(location, sourceFigure); anchor.setLocation(point); } return anchor; } else if (request instanceof CreateConnectionRequest) { CreateConnectionRequest connectionRequest = (CreateConnectionRequest) request; Command command = connectionRequest.getStartCommand(); if (command instanceof CreateCommentConnectionCommand) { return super.getTargetConnectionAnchor(request); } } return new XYChopboxAnchor(this.getFigure()); }
Example 13
Source File: ReportRootEditPart.java From birt with Eclipse Public License 1.0 | 4 votes |
/** * Returns <code>true</code> if the given point is outside the * viewport or near its edge. Scrolls the viewport by a calculated (time * based) amount in the current direction. * * todo: investigate if we should allow auto expose when the pointer is * outside the viewport * * @see org.eclipse.gef.AutoexposeHelper#step(org.eclipse.draw2d.geometry.Point) */ public boolean step( Point where ) { Viewport port = findViewport( owner ); Rectangle rect = Rectangle.SINGLETON; port.getClientArea( rect ); port.translateToParent( rect ); port.translateToAbsolute( rect ); if ( !rect.contains( where ) || rect.crop( threshold ).contains( where ) ) return false; // set scroll offset (speed factor) int scrollOffset = 0; // calculate time based scroll offset if ( lastStepTime == 0 ) lastStepTime = System.currentTimeMillis( ); DeferredGraphicalViewer.OriginStepData stepData = ( (DeferredGraphicalViewer) owner.getViewer( ) ).getOriginStepData( ); long difference = System.currentTimeMillis( ) - lastStepTime; if ( difference > 0 ) { scrollOffset = ( (int) difference / 3 ); lastStepTime = System.currentTimeMillis( ); } if ( scrollOffset == 0 ) return true; rect.crop( threshold ); int region = rect.getPosition( where ); Point loc = port.getViewLocation( ); if ( ( region & PositionConstants.SOUTH ) != 0 ) loc.y += scrollOffset; else if ( ( region & PositionConstants.NORTH ) != 0 ) loc.y -= scrollOffset; if ( ( region & PositionConstants.EAST ) != 0 ) loc.x += scrollOffset; else if ( ( region & PositionConstants.WEST ) != 0 ) loc.x -= scrollOffset; if ( stepData.minX > loc.x ) loc.x = port.getHorizontalRangeModel( ).getValue( ); if ( stepData.maxX - stepData.extendX < loc.x ) loc.x = port.getHorizontalRangeModel( ).getValue( ); if ( stepData.minY > loc.y ) loc.y = port.getVerticalRangeModel( ).getValue( ); if ( stepData.maxY - stepData.extendY < loc.y ) loc.y = port.getVerticalRangeModel( ).getValue( ); port.setViewLocation( loc ); return true; }
Example 14
Source File: TableViewEditPart.java From erflute with Apache License 2.0 | 4 votes |
@Override public ConnectionAnchor getTargetConnectionAnchor(Request request) { if (request instanceof ReconnectRequest) { final ReconnectRequest reconnectRequest = (ReconnectRequest) request; final ConnectionEditPart connectionEditPart = reconnectRequest.getConnectionEditPart(); if (!(connectionEditPart instanceof RelationEditPart)) { return super.getTargetConnectionAnchor(request); } final Relationship relation = (Relationship) connectionEditPart.getModel(); if (relation.getSourceWalker() == relation.getTargetWalker()) { return new XYChopboxAnchor(getFigure()); } final EditPart editPart = reconnectRequest.getTarget(); if (editPart == null || !editPart.getModel().equals(relation.getTargetWalker())) { return new XYChopboxAnchor(getFigure()); } final Point location = new Point(reconnectRequest.getLocation()); getFigure().translateToRelative(location); final IFigure targetFigure = ((TableViewEditPart) connectionEditPart.getTarget()).getFigure(); final Rectangle bounds = targetFigure.getBounds(); final Rectangle centerRectangle = new Rectangle(bounds.x + (bounds.width / 4), bounds.y + (bounds.height / 4), bounds.width / 2, bounds.height / 2); final XYChopboxAnchor anchor = new XYChopboxAnchor(getFigure()); if (!centerRectangle.contains(location)) { final Point point = getIntersectionPoint(location, targetFigure); anchor.setLocation(point); } return anchor; } else if (request instanceof CreateConnectionRequest) { final CreateConnectionRequest connectionRequest = (CreateConnectionRequest) request; final Command command = connectionRequest.getStartCommand(); if (command instanceof CreateCommentConnectionCommand) { return super.getTargetConnectionAnchor(request); } } return new XYChopboxAnchor(getFigure()); }
Example 15
Source File: TableViewEditPart.java From erflute with Apache License 2.0 | 4 votes |
@Override public ConnectionAnchor getSourceConnectionAnchor(Request request) { if (request instanceof ReconnectRequest) { final ReconnectRequest reconnectRequest = (ReconnectRequest) request; final ConnectionEditPart connectionEditPart = reconnectRequest.getConnectionEditPart(); if (!(connectionEditPart instanceof RelationEditPart)) { return super.getSourceConnectionAnchor(request); } final Relationship relation = (Relationship) connectionEditPart.getModel(); if (relation.getSourceWalker() == relation.getTargetWalker()) { return new XYChopboxAnchor(getFigure()); } final EditPart editPart = reconnectRequest.getTarget(); if (editPart == null || !editPart.getModel().equals(relation.getSourceWalker())) { return new XYChopboxAnchor(getFigure()); } final Point location = new Point(reconnectRequest.getLocation()); getFigure().translateToRelative(location); final IFigure sourceFigure = ((TableViewEditPart) connectionEditPart.getSource()).getFigure(); final Rectangle bounds = sourceFigure.getBounds(); final Rectangle centerRectangle = new Rectangle(bounds.x + (bounds.width / 4), bounds.y + (bounds.height / 4), bounds.width / 2, bounds.height / 2); final XYChopboxAnchor anchor = new XYChopboxAnchor(getFigure()); if (!centerRectangle.contains(location)) { final Point point = getIntersectionPoint(location, sourceFigure); anchor.setLocation(point); } return anchor; } else if (request instanceof CreateConnectionRequest) { final CreateConnectionRequest connectionRequest = (CreateConnectionRequest) request; final Command command = connectionRequest.getStartCommand(); if (command instanceof CreateCommentConnectionCommand) { return super.getTargetConnectionAnchor(request); } } return new XYChopboxAnchor(getFigure()); }
Example 16
Source File: NodeElementEditPart.java From ermasterr with Apache License 2.0 | 4 votes |
/** * {@inheritDoc} */ @Override public ConnectionAnchor getTargetConnectionAnchor(final Request request) { if (request instanceof ReconnectRequest) { final ReconnectRequest reconnectRequest = (ReconnectRequest) request; final ConnectionEditPart connectionEditPart = reconnectRequest.getConnectionEditPart(); // if (!(connectionEditPart instanceof RelationEditPart)) { // return super.getTargetConnectionAnchor(request); // } final ConnectionElement connection = (ConnectionElement) connectionEditPart.getModel(); if (connection.getSource() == connection.getTarget()) { return new XYChopboxAnchor(getFigure()); } final EditPart editPart = reconnectRequest.getTarget(); if (editPart == null || !editPart.getModel().equals(connection.getTarget())) { return new XYChopboxAnchor(getFigure()); } final Point location = new Point(reconnectRequest.getLocation()); getFigure().translateToRelative(location); final IFigure targetFigure = ((AbstractModelEditPart) connectionEditPart.getTarget()).getFigure(); final XYChopboxAnchor anchor = new XYChopboxAnchor(getFigure()); final Rectangle bounds = targetFigure.getBounds(); final Rectangle centerRectangle = new Rectangle(bounds.x + (bounds.width / 4), bounds.y + (bounds.height / 4), bounds.width / 2, bounds.height / 2); if (!centerRectangle.contains(location)) { final Point point = getIntersectionPoint(location, targetFigure); anchor.setLocation(point); } return anchor; } else if (request instanceof CreateConnectionRequest) { final CreateConnectionRequest connectionRequest = (CreateConnectionRequest) request; final Command command = connectionRequest.getStartCommand(); if (command instanceof CreateCommentConnectionCommand) { return new ChopboxAnchor(getFigure()); } } return new XYChopboxAnchor(getFigure()); }
Example 17
Source File: NodeElementEditPart.java From ermasterr with Apache License 2.0 | 4 votes |
/** * {@inheritDoc} */ @Override public ConnectionAnchor getSourceConnectionAnchor(final Request request) { if (request instanceof ReconnectRequest) { final ReconnectRequest reconnectRequest = (ReconnectRequest) request; final ConnectionEditPart connectionEditPart = reconnectRequest.getConnectionEditPart(); // if (!(connectionEditPart instanceof RelationEditPart)) { // return super.getSourceConnectionAnchor(request); // } final ConnectionElement connection = (ConnectionElement) connectionEditPart.getModel(); if (connection.getSource() == connection.getTarget()) { return new XYChopboxAnchor(getFigure()); } final EditPart editPart = reconnectRequest.getTarget(); if (editPart == null || !editPart.getModel().equals(connection.getSource())) { return new XYChopboxAnchor(getFigure()); } final Point location = new Point(reconnectRequest.getLocation()); getFigure().translateToRelative(location); final IFigure sourceFigure = ((TableViewEditPart) connectionEditPart.getSource()).getFigure(); final XYChopboxAnchor anchor = new XYChopboxAnchor(getFigure()); final Rectangle bounds = sourceFigure.getBounds(); final Rectangle centerRectangle = new Rectangle(bounds.x + (bounds.width / 4), bounds.y + (bounds.height / 4), bounds.width / 2, bounds.height / 2); if (!centerRectangle.contains(location)) { final Point point = getIntersectionPoint(location, sourceFigure); anchor.setLocation(point); } return anchor; } else if (request instanceof CreateConnectionRequest) { final CreateConnectionRequest connectionRequest = (CreateConnectionRequest) request; final Command command = connectionRequest.getStartCommand(); if (command instanceof CreateCommentConnectionCommand) { return new ChopboxAnchor(getFigure()); } } return new XYChopboxAnchor(getFigure()); }