Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.tooling.runtime/src/org/eclipse/papyrus/infra/gmfdiag/tooling/runtime/linklf/policies/ConnectionBendpointEditPolicy3.java')
-rwxr-xr-xplugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.tooling.runtime/src/org/eclipse/papyrus/infra/gmfdiag/tooling/runtime/linklf/policies/ConnectionBendpointEditPolicy3.java173
1 files changed, 173 insertions, 0 deletions
diff --git a/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.tooling.runtime/src/org/eclipse/papyrus/infra/gmfdiag/tooling/runtime/linklf/policies/ConnectionBendpointEditPolicy3.java b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.tooling.runtime/src/org/eclipse/papyrus/infra/gmfdiag/tooling/runtime/linklf/policies/ConnectionBendpointEditPolicy3.java
new file mode 100755
index 00000000000..c7265c10630
--- /dev/null
+++ b/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.tooling.runtime/src/org/eclipse/papyrus/infra/gmfdiag/tooling/runtime/linklf/policies/ConnectionBendpointEditPolicy3.java
@@ -0,0 +1,173 @@
+/*****************************************************************************
+ * Copyright (c) 2002, 2006 IBM Corporation, 2014 CEA LIST and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.gmfdiag.tooling.runtime.linklf.policies;
+
+import org.eclipse.draw2d.Connection;
+import org.eclipse.draw2d.FigureCanvas;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.PointList;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gef.Request;
+import org.eclipse.gef.commands.Command;
+import org.eclipse.gef.requests.BendpointRequest;
+import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
+import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.editpolicies.ConnectionBendpointEditPolicy;
+import org.eclipse.gmf.runtime.diagram.ui.internal.commands.SetConnectionBendpointsCommand;
+import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants;
+import org.eclipse.gmf.runtime.diagram.ui.requests.SetAllBendpointRequest;
+import org.eclipse.gmf.runtime.diagram.ui.util.SelectInDiagramHelper;
+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
+import org.eclipse.gmf.runtime.gef.ui.internal.editpolicies.LineMode;
+import org.eclipse.gmf.runtime.notation.Edge;
+
+/**
+ * [GMFRT] make protected
+ * <p/>
+ * This class is an exact copy of the {@link ConnectionBendpointEditPolicy},
+ * without any modifications. What we actually want is to make some methods
+ * protected in its super class
+ * {@link org.eclipse.gmf.runtime.gef.ui.internal.editpolicies.ConnectionBendpointEditPolicy}.
+ * <p/>
+ * This class as a whole should be removed when the GMFT runtime will make the
+ * corresponding methods protected.
+ * <p/>
+ * This class is intentionally package local and should be removed after patch
+ * for bug 331779 is merged.
+ *
+ * @since 3.3
+ * @see ConnectionBendpointEditPolicy2
+ * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=331779
+ */
+@Deprecated
+class ConnectionBendpointEditPolicy3 extends ConnectionBendpointEditPolicy2 {
+
+ /**
+ * @param lineSegMode
+ */
+ protected ConnectionBendpointEditPolicy3(LineMode lineSegMode) {
+ super(lineSegMode);
+ }
+
+ /**
+ *
+ */
+ public ConnectionBendpointEditPolicy3() {
+ super(LineMode.OBLIQUE);
+ }
+
+ /**
+ * Returns the appropriate Command for the request type given. Handles
+ * creating, moving and deleting bendpoints. The actual creation of the
+ * command is taken care of by subclasses implementing the appropriate
+ * methods.
+ *
+ * @see #getCreateBendpointCommand(BendpointRequest)
+ * @see #getMoveBendpointCommand(BendpointRequest)
+ * @see #getDeleteBendpointCommand(BendpointRequest)
+ */
+ public Command getCommand(Request request) {
+ if (RequestConstants.REQ_SET_ALL_BENDPOINT.equals(request.getType()))
+ return getSetBendpointCommand((SetAllBendpointRequest) request);
+
+ return super.getCommand(request);
+ }
+
+ /**
+ * Method getBendpointsChangedCommand. This method will return a
+ * SetBendpointsCommand with the points retrieved from the user feedback in
+ * the figure.
+ *
+ * @param request
+ * BendpointRequest from the user gesture for moving / creating a
+ * bendpoint
+ * @return Command SetBendpointsCommand that contains the point changes for
+ * the connection.
+ */
+ protected Command getBendpointsChangedCommand(BendpointRequest request) {
+ if ((getHost().getViewer() instanceof ScrollingGraphicalViewer)
+ && (getHost().getViewer().getControl() instanceof FigureCanvas)) {
+ SelectInDiagramHelper.exposeLocation((FigureCanvas) getHost()
+ .getViewer().getControl(), request.getLocation().getCopy());
+ }
+ Connection connection = getConnection();
+ Edge connectionView = (Edge) request.getSource().getModel();
+
+ return getBendpointsChangedCommand(connection, connectionView);
+ }
+
+ /**
+ * Method getBendpointsChangedCommand Different signature method that allows
+ * a command to constructed for changing the bendpoints without requiring
+ * the original Request.
+ *
+ * @param connection
+ * Connection to generate the bendpoints changed command from
+ * @param edge
+ * notation element that the command will operate on.
+ * @return Command SetBendpointsCommand that contains the point changes for
+ * the connection.
+ */
+ protected Command getBendpointsChangedCommand(Connection connection,
+ Edge edge) {
+ Point ptRef1 = connection.getSourceAnchor().getReferencePoint();
+ getConnection().translateToRelative(ptRef1);
+
+ Point ptRef2 = connection.getTargetAnchor().getReferencePoint();
+ getConnection().translateToRelative(ptRef2);
+
+ TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost())
+ .getEditingDomain();
+
+ SetConnectionBendpointsCommand sbbCommand = new SetConnectionBendpointsCommand(
+ editingDomain);
+ sbbCommand.setEdgeAdapter(new EObjectAdapter(edge));
+ sbbCommand.setNewPointList(connection.getPoints(), ptRef1, ptRef2);
+
+ return new ICommandProxy(sbbCommand);
+ }
+
+ /**
+ * Method getSetBendpointCommand. This method returns a command that
+ * executes the REQ_SET_ALL_BENDPOINT request
+ *
+ * @param request
+ * SetAllBendpointRequest that stores the points to be set by the
+ * command.
+ * @return Command to be executed.
+ */
+ protected Command getSetBendpointCommand(SetAllBendpointRequest request) {
+ Connection connection = getConnection();
+ PointList newPoints = request.getPoints();
+
+ TransactionalEditingDomain editingDomain = ((IGraphicalEditPart) getHost())
+ .getEditingDomain();
+ SetConnectionBendpointsCommand sbbCommand = new SetConnectionBendpointsCommand(
+ editingDomain);
+ sbbCommand.setEdgeAdapter(new EObjectAdapter((Edge) getHost()
+ .getModel()));
+
+ if (request.getSourceReference() != null
+ && request.getTargetReference() != null) {
+ sbbCommand.setNewPointList(newPoints, request.getSourceReference(),
+ request.getTargetReference());
+ } else {
+ sbbCommand.setNewPointList(newPoints, connection.getSourceAnchor(),
+ connection.getTargetAnchor());
+ }
+
+ return new ICommandProxy(sbbCommand);
+ }
+}

Back to the top