Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src')
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/AbstractShortCutDiagramEditPart.java4
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/ClassifierEditPart.java3
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/CompositeEditPart.java4
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/DeploymentNodeEditPart.java4
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/DefaultEditPolicies.java16
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFAbstractShapeEditPart.java41
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderEditPart.java40
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderItemEditPart.java41
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderNamedElementEditPart.java40
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderedBorderItemEditPart.java40
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderedShapeEditPart.java40
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFCommentEditPart.java41
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFConnectionEditPart.java113
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFConstraintEditPart.java41
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFNamedElementEditPart.java41
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFShapeCompartmentEditPart.java276
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFShapeNodeEditPart.java42
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFUMLConnectionNodeEditPart.java113
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFUMLNodeEditPart.java42
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFXYLayoutShapeCompartmentEditPart.java263
20 files changed, 1238 insertions, 7 deletions
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/AbstractShortCutDiagramEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/AbstractShortCutDiagramEditPart.java
index 47344d1dac7..3793f57eae0 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/AbstractShortCutDiagramEditPart.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/AbstractShortCutDiagramEditPart.java
@@ -22,7 +22,6 @@ import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.gef.GraphicalEditPart;
-import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.gmf.runtime.notation.NotationPackage;
import org.eclipse.gmf.runtime.notation.View;
@@ -30,13 +29,14 @@ import org.eclipse.papyrus.infra.core.editorsfactory.IPageIconsRegistry;
import org.eclipse.papyrus.infra.core.editorsfactory.PageIconsRegistry;
import org.eclipse.papyrus.infra.core.services.ServiceException;
import org.eclipse.papyrus.infra.gmfdiag.common.utils.ServiceUtilsForEditPart;
+import org.eclipse.papyrus.uml.diagram.common.editparts.linkslf.LinksLFBorderedShapeEditPart;
import org.eclipse.papyrus.uml.diagram.common.figure.node.DiagramNodeFigure;
/**
* this class is used to constraint the behavior of a node to obtain the
* behavior a short cut
*/
-public abstract class AbstractShortCutDiagramEditPart extends AbstractBorderedShapeEditPart implements Adapter {
+public abstract class AbstractShortCutDiagramEditPart extends LinksLFBorderedShapeEditPart implements Adapter {
protected static final String DELETE_ICON = "icons/delete.gif";
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/ClassifierEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/ClassifierEditPart.java
index 09a4a9b3eea..44ca57d6452 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/ClassifierEditPart.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/ClassifierEditPart.java
@@ -15,6 +15,7 @@ package org.eclipse.papyrus.uml.diagram.common.editparts;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.gmf.runtime.notation.FontStyle;
import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.uml.diagram.common.editparts.linkslf.LinksLFNamedElementEditPart;
import org.eclipse.papyrus.uml.diagram.common.figure.node.ClassifierFigure;
import org.eclipse.papyrus.uml.diagram.common.helper.BasicClassifierCompartmentLayoutHelper;
import org.eclipse.swt.SWT;
@@ -27,7 +28,7 @@ import org.eclipse.uml2.uml.UMLPackage;
*
* @author tlandre
*/
-public abstract class ClassifierEditPart extends NamedElementEditPart {
+public abstract class ClassifierEditPart extends LinksLFNamedElementEditPart/*Merge comment*/ {
/**
* isAbstract Classifier property
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/CompositeEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/CompositeEditPart.java
index 95bea0691c6..af1ebfc8544 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/CompositeEditPart.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/CompositeEditPart.java
@@ -14,7 +14,6 @@
package org.eclipse.papyrus.uml.diagram.common.editparts;
import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
import org.eclipse.gmf.runtime.notation.FillStyle;
import org.eclipse.gmf.runtime.notation.NotationPackage;
@@ -22,12 +21,13 @@ import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.gmf.runtime.notation.datatype.GradientData;
import org.eclipse.papyrus.infra.emf.appearance.helper.AppearanceHelper;
import org.eclipse.papyrus.infra.gmfdiag.common.figure.node.IPapyrusNodeFigure;
+import org.eclipse.papyrus.uml.diagram.common.editparts.linkslf.LinksLFBorderedShapeEditPart;
import org.eclipse.swt.graphics.Color;
/**
* this uml edit part can refresh shadow and gradient.
*/
-public abstract class CompositeEditPart extends AbstractBorderedShapeEditPart {
+public abstract class CompositeEditPart extends LinksLFBorderedShapeEditPart {
public CompositeEditPart(View view) {
super(view);
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/DeploymentNodeEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/DeploymentNodeEditPart.java
index 45ad2a0826d..d484b9b16e2 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/DeploymentNodeEditPart.java
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/DeploymentNodeEditPart.java
@@ -14,7 +14,6 @@
package org.eclipse.papyrus.uml.diagram.common.editparts;
import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
import org.eclipse.gmf.runtime.notation.FillStyle;
import org.eclipse.gmf.runtime.notation.NotationPackage;
@@ -22,9 +21,10 @@ import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.gmf.runtime.notation.datatype.GradientData;
import org.eclipse.papyrus.infra.gmfdiag.common.editpart.IPapyrusEditPart;
import org.eclipse.papyrus.infra.gmfdiag.common.figure.node.IPapyrusNodeFigure;
+import org.eclipse.papyrus.uml.diagram.common.editparts.linkslf.LinksLFBorderedShapeEditPart;
import org.eclipse.swt.graphics.Color;
-public abstract class DeploymentNodeEditPart extends AbstractBorderedShapeEditPart implements IPapyrusEditPart {
+public abstract class DeploymentNodeEditPart extends LinksLFBorderedShapeEditPart implements IPapyrusEditPart {
public DeploymentNodeEditPart(View view) {
super(view);
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/DefaultEditPolicies.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/DefaultEditPolicies.java
new file mode 100644
index 00000000000..f8bd578a99e
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/DefaultEditPolicies.java
@@ -0,0 +1,16 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.INodeEditPart;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.editpolicies.AdjustImplicitlyMovedLinksEditPolicy;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.editpolicies.LinksLFGraphicalNodeEditPolicy;
+
+
+class DefaultEditPolicies {
+
+ static void installNodeEditPolicies(INodeEditPart nodeEP) {
+ nodeEP.installEditPolicy(EditPolicy.GRAPHICAL_NODE_ROLE, new LinksLFGraphicalNodeEditPolicy());
+ nodeEP.installEditPolicy(AdjustImplicitlyMovedLinksEditPolicy.ROLE, new AdjustImplicitlyMovedLinksEditPolicy());
+ }
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFAbstractShapeEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFAbstractShapeEditPart.java
new file mode 100644
index 00000000000..c4ea15ce1e4
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFAbstractShapeEditPart.java
@@ -0,0 +1,41 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.gef.Request;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.ShapeNodeAnchorDelegate;
+import org.eclipse.papyrus.uml.diagram.common.editparts.AbstractShapeEditPart;
+
+
+public abstract class LinksLFAbstractShapeEditPart extends AbstractShapeEditPart {
+
+ private ShapeNodeAnchorDelegate myShapeNodeAnchorDelegate;
+
+ public LinksLFAbstractShapeEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ protected void createDefaultEditPolicies() {
+ super.createDefaultEditPolicies();
+ DefaultEditPolicies.installNodeEditPolicies(this);
+ }
+
+ @Override
+ public final ConnectionAnchor getSourceConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getSourceConnectionAnchor(request);
+ }
+
+ @Override
+ public final ConnectionAnchor getTargetConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getTargetConnectionAnchor(request);
+ }
+
+ private ShapeNodeAnchorDelegate getShapeNodeAnchorDelegate() {
+ if(myShapeNodeAnchorDelegate == null) {
+ myShapeNodeAnchorDelegate = new ShapeNodeAnchorDelegate(getNodeFigure());
+ }
+ return myShapeNodeAnchorDelegate;
+ }
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderEditPart.java
new file mode 100644
index 00000000000..80ae1b9eeb2
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderEditPart.java
@@ -0,0 +1,40 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.gef.Request;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.ShapeNodeAnchorDelegate;
+import org.eclipse.papyrus.uml.diagram.common.editparts.AbstractBorderEditPart;
+
+
+public abstract class LinksLFBorderEditPart extends AbstractBorderEditPart {
+
+ private ShapeNodeAnchorDelegate myShapeNodeAnchorDelegate;
+
+ public LinksLFBorderEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ protected void createDefaultEditPolicies() {
+ super.createDefaultEditPolicies();
+ DefaultEditPolicies.installNodeEditPolicies(this);
+ }
+
+ @Override
+ public final ConnectionAnchor getSourceConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getSourceConnectionAnchor(request);
+ }
+
+ @Override
+ public final ConnectionAnchor getTargetConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getTargetConnectionAnchor(request);
+ }
+
+ private ShapeNodeAnchorDelegate getShapeNodeAnchorDelegate() {
+ if(myShapeNodeAnchorDelegate == null) {
+ myShapeNodeAnchorDelegate = new ShapeNodeAnchorDelegate(getNodeFigure());
+ }
+ return myShapeNodeAnchorDelegate;
+ }
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderItemEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderItemEditPart.java
new file mode 100644
index 00000000000..41a616eb93b
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderItemEditPart.java
@@ -0,0 +1,41 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.gef.Request;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderItemEditPart;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.ShapeNodeAnchorDelegate;
+
+
+public abstract class LinksLFBorderItemEditPart extends AbstractBorderItemEditPart {
+
+ private ShapeNodeAnchorDelegate myShapeNodeAnchorDelegate;
+
+ public LinksLFBorderItemEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ protected void createDefaultEditPolicies() {
+ super.createDefaultEditPolicies();
+ DefaultEditPolicies.installNodeEditPolicies(this);
+ }
+
+ @Override
+ public final ConnectionAnchor getSourceConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getSourceConnectionAnchor(request);
+ }
+
+ @Override
+ public final ConnectionAnchor getTargetConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getTargetConnectionAnchor(request);
+ }
+
+ private ShapeNodeAnchorDelegate getShapeNodeAnchorDelegate() {
+ if(myShapeNodeAnchorDelegate == null) {
+ myShapeNodeAnchorDelegate = new ShapeNodeAnchorDelegate(getNodeFigure());
+ }
+ return myShapeNodeAnchorDelegate;
+ }
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderNamedElementEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderNamedElementEditPart.java
new file mode 100644
index 00000000000..b0ce97f7d96
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderNamedElementEditPart.java
@@ -0,0 +1,40 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.gef.Request;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.ShapeNodeAnchorDelegate;
+import org.eclipse.papyrus.uml.diagram.common.editparts.BorderNamedElementEditPart;
+
+
+public abstract class LinksLFBorderNamedElementEditPart extends BorderNamedElementEditPart {
+
+ private ShapeNodeAnchorDelegate myShapeNodeAnchorDelegate;
+
+ public LinksLFBorderNamedElementEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ protected void createDefaultEditPolicies() {
+ super.createDefaultEditPolicies();
+ DefaultEditPolicies.installNodeEditPolicies(this);
+ }
+
+ @Override
+ public final ConnectionAnchor getSourceConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getSourceConnectionAnchor(request);
+ }
+
+ @Override
+ public final ConnectionAnchor getTargetConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getTargetConnectionAnchor(request);
+ }
+
+ private ShapeNodeAnchorDelegate getShapeNodeAnchorDelegate() {
+ if(myShapeNodeAnchorDelegate == null) {
+ myShapeNodeAnchorDelegate = new ShapeNodeAnchorDelegate(getNodeFigure());
+ }
+ return myShapeNodeAnchorDelegate;
+ }
+} \ No newline at end of file
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderedBorderItemEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderedBorderItemEditPart.java
new file mode 100644
index 00000000000..07625585e10
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderedBorderItemEditPart.java
@@ -0,0 +1,40 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.gef.Request;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.BorderedBorderItemEditPart;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.ShapeNodeAnchorDelegate;
+
+
+public abstract class LinksLFBorderedBorderItemEditPart extends BorderedBorderItemEditPart {
+
+ private ShapeNodeAnchorDelegate myShapeNodeAnchorDelegate;
+
+ public LinksLFBorderedBorderItemEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ protected void createDefaultEditPolicies() {
+ super.createDefaultEditPolicies();
+ DefaultEditPolicies.installNodeEditPolicies(this);
+ }
+
+ @Override
+ public final ConnectionAnchor getSourceConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getSourceConnectionAnchor(request);
+ }
+
+ @Override
+ public final ConnectionAnchor getTargetConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getTargetConnectionAnchor(request);
+ }
+
+ private ShapeNodeAnchorDelegate getShapeNodeAnchorDelegate() {
+ if(myShapeNodeAnchorDelegate == null) {
+ myShapeNodeAnchorDelegate = new ShapeNodeAnchorDelegate(getNodeFigure());
+ }
+ return myShapeNodeAnchorDelegate;
+ }
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderedShapeEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderedShapeEditPart.java
new file mode 100644
index 00000000000..4ecbdb5a7f5
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFBorderedShapeEditPart.java
@@ -0,0 +1,40 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.gef.Request;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.AbstractBorderedShapeEditPart;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.ShapeNodeAnchorDelegate;
+
+
+public abstract class LinksLFBorderedShapeEditPart extends AbstractBorderedShapeEditPart {
+
+ private ShapeNodeAnchorDelegate myShapeNodeAnchorDelegate;
+
+ public LinksLFBorderedShapeEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ protected void createDefaultEditPolicies() {
+ super.createDefaultEditPolicies();
+ DefaultEditPolicies.installNodeEditPolicies(this);
+ }
+
+ @Override
+ public final ConnectionAnchor getSourceConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getSourceConnectionAnchor(request);
+ }
+
+ @Override
+ public final ConnectionAnchor getTargetConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getTargetConnectionAnchor(request);
+ }
+
+ private ShapeNodeAnchorDelegate getShapeNodeAnchorDelegate() {
+ if(myShapeNodeAnchorDelegate == null) {
+ myShapeNodeAnchorDelegate = new ShapeNodeAnchorDelegate(getNodeFigure());
+ }
+ return myShapeNodeAnchorDelegate;
+ }
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFCommentEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFCommentEditPart.java
new file mode 100644
index 00000000000..cdcae044922
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFCommentEditPart.java
@@ -0,0 +1,41 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.gef.Request;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.ShapeNodeAnchorDelegate;
+import org.eclipse.papyrus.uml.diagram.common.editparts.AbstractCommentEditPart;
+
+
+public class LinksLFCommentEditPart extends AbstractCommentEditPart {
+
+ private ShapeNodeAnchorDelegate myShapeNodeAnchorDelegate;
+
+ public LinksLFCommentEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ protected void createDefaultEditPolicies() {
+ super.createDefaultEditPolicies();
+ DefaultEditPolicies.installNodeEditPolicies(this);
+ }
+
+ @Override
+ public final ConnectionAnchor getSourceConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getSourceConnectionAnchor(request);
+ }
+
+ @Override
+ public final ConnectionAnchor getTargetConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getTargetConnectionAnchor(request);
+ }
+
+ private ShapeNodeAnchorDelegate getShapeNodeAnchorDelegate() {
+ if(myShapeNodeAnchorDelegate == null) {
+ myShapeNodeAnchorDelegate = new ShapeNodeAnchorDelegate(getNodeFigure());
+ }
+ return myShapeNodeAnchorDelegate;
+ }
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFConnectionEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFConnectionEditPart.java
new file mode 100644
index 00000000000..3ef32e945f6
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFConnectionEditPart.java
@@ -0,0 +1,113 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.draw2d.Bendpoint;
+import org.eclipse.draw2d.Connection;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gmf.runtime.diagram.ui.util.EditPartUtil;
+import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx;
+import org.eclipse.gmf.runtime.draw2d.ui.internal.routers.ForestRouter;
+import org.eclipse.gmf.runtime.draw2d.ui.internal.routers.OrthogonalRouter;
+import org.eclipse.gmf.runtime.gef.ui.internal.editpolicies.LineMode;
+import org.eclipse.gmf.runtime.gef.ui.internal.l10n.Cursors;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.RelativeBendpoints;
+import org.eclipse.gmf.runtime.notation.RoutingStyle;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.editpart.ConnectionEditPart;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.AbsoluteBendpointsConvention;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.editpolicies.DebugShowConnectionEndPointsAndAnchorsEditPolicy;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.editpolicies.LinksLFConnectionBendpointEditPolicy;
+
+
+public abstract class LinksLFConnectionEditPart extends ConnectionEditPart {
+
+ public LinksLFConnectionEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ protected void createDefaultEditPolicies() {
+ super.createDefaultEditPolicies();
+
+ installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new DebugShowConnectionEndPointsAndAnchorsEditPolicy());
+ installBendpointEditPolicy();
+ }
+
+ @Override
+ protected void refreshBendpoints() {
+ RelativeBendpoints bendpoints = (RelativeBendpoints)getEdge().getBendpoints();
+ List<?> modelConstraint = bendpoints.getPoints();
+ List<Bendpoint> figureConstraint = new ArrayList<Bendpoint>();
+ for(int i = 0; i < modelConstraint.size(); i++) {
+ org.eclipse.gmf.runtime.notation.datatype.RelativeBendpoint wbp = (org.eclipse.gmf.runtime.notation.datatype.RelativeBendpoint)modelConstraint.get(i);
+ float weight;
+ if(modelConstraint.size() == 1) {
+ weight = 0.5f;
+ } else {
+ weight = i / ((float)modelConstraint.size() - 1);
+ }
+ Bendpoint bp = AbsoluteBendpointsConvention.d2dBendpoint(wbp, getConnectionFigure(), weight);
+ figureConstraint.add(bp);
+ }
+ getConnectionFigure().setRoutingConstraint(figureConstraint);
+ }
+
+ /**
+ * [GMFRT] make protected
+ */
+ protected final void installBendpointEditPolicy() {
+ if(getConnectionFigure().getConnectionRouter() instanceof ForestRouter) {
+ installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, new LinksLFConnectionBendpointEditPolicy(LineMode.ORTHOGONAL_CONSTRAINED));
+ } else if(getConnectionFigure().getConnectionRouter() instanceof OrthogonalRouter) {
+ installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, new LinksLFConnectionBendpointEditPolicy(LineMode.ORTHOGONAL_FREE));
+ } else {
+ installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, new LinksLFConnectionBendpointEditPolicy(LineMode.OBLIQUE));
+ }
+
+ EditPartUtil.synchronizeRunnableToMainThread(this, new Runnable() {
+
+ public void run() {
+ if(getConnectionFigure().getConnectionRouter() instanceof ForestRouter) {
+ getConnectionFigure().setCursor(Cursors.CURSOR_SEG_MOVE);
+ } else if(getConnectionFigure().getConnectionRouter() instanceof OrthogonalRouter) {
+ getConnectionFigure().setCursor(Cursors.CURSOR_SEG_MOVE);
+ } else {
+ getConnectionFigure().setCursor(Cursors.CURSOR_SEG_ADD);
+ }
+ };
+ });
+ }
+
+ protected void refreshRouterChange() {
+ refreshBendpoints();
+ installBendpointEditPolicy();
+ }
+
+ @Override
+ protected void refreshRoutingStyles() {
+ Connection connection = getConnectionFigure();
+ if(!(connection instanceof PolylineConnectionEx))
+ return;
+
+ PolylineConnectionEx poly = (PolylineConnectionEx)connection;
+
+ RoutingStyle style = (RoutingStyle)((View)getModel()).getStyle(NotationPackage.Literals.ROUTING_STYLE);
+ if(style != null) {
+
+ boolean closestDistance = style.isClosestDistance();
+ boolean avoidObstruction = style.isAvoidObstructions();
+
+ poly.setRoutingStyles(closestDistance, avoidObstruction);
+
+ if(avoidObstruction)
+ installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, null);
+ else
+ installBendpointEditPolicy();
+ }
+ }
+
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFConstraintEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFConstraintEditPart.java
new file mode 100644
index 00000000000..3843632e38f
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFConstraintEditPart.java
@@ -0,0 +1,41 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.gef.Request;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.ShapeNodeAnchorDelegate;
+import org.eclipse.papyrus.uml.diagram.common.editparts.AbstractConstraintEditPart;
+
+
+public class LinksLFConstraintEditPart extends AbstractConstraintEditPart {
+
+ private ShapeNodeAnchorDelegate myShapeNodeAnchorDelegate;
+
+ public LinksLFConstraintEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ protected void createDefaultEditPolicies() {
+ super.createDefaultEditPolicies();
+ DefaultEditPolicies.installNodeEditPolicies(this);
+ }
+
+ @Override
+ public final ConnectionAnchor getSourceConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getSourceConnectionAnchor(request);
+ }
+
+ @Override
+ public final ConnectionAnchor getTargetConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getTargetConnectionAnchor(request);
+ }
+
+ private ShapeNodeAnchorDelegate getShapeNodeAnchorDelegate() {
+ if(myShapeNodeAnchorDelegate == null) {
+ myShapeNodeAnchorDelegate = new ShapeNodeAnchorDelegate(getNodeFigure());
+ }
+ return myShapeNodeAnchorDelegate;
+ }
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFNamedElementEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFNamedElementEditPart.java
new file mode 100644
index 00000000000..c4620795b7c
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFNamedElementEditPart.java
@@ -0,0 +1,41 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.gef.Request;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.ShapeNodeAnchorDelegate;
+import org.eclipse.papyrus.uml.diagram.common.editparts.NamedElementEditPart;
+
+
+public abstract class LinksLFNamedElementEditPart extends NamedElementEditPart {
+
+ private ShapeNodeAnchorDelegate myShapeNodeAnchorDelegate;
+
+ public LinksLFNamedElementEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ protected void createDefaultEditPolicies() {
+ super.createDefaultEditPolicies();
+ DefaultEditPolicies.installNodeEditPolicies(this);
+ }
+
+ @Override
+ public final ConnectionAnchor getSourceConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getSourceConnectionAnchor(request);
+ }
+
+ @Override
+ public final ConnectionAnchor getTargetConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getTargetConnectionAnchor(request);
+ }
+
+ private ShapeNodeAnchorDelegate getShapeNodeAnchorDelegate() {
+ if(myShapeNodeAnchorDelegate == null) {
+ myShapeNodeAnchorDelegate = new ShapeNodeAnchorDelegate(getNodeFigure());
+ }
+ return myShapeNodeAnchorDelegate;
+ }
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFShapeCompartmentEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFShapeCompartmentEditPart.java
new file mode 100644
index 00000000000..9bd6780745d
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFShapeCompartmentEditPart.java
@@ -0,0 +1,276 @@
+/*****************************************************************************
+ * Copyright (c) 2014 CEA LIST, Montages AG 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:
+ * Anatoly Tishenko (ticher777@gmail.com) - Initial API and implementation
+ */
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import org.eclipse.draw2d.FreeformViewport;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.LayoutAnimator;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.draw2d.RangeModel;
+import org.eclipse.draw2d.ScrollBar;
+import org.eclipse.draw2d.ScrollPane;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.draw2d.geometry.Translatable;
+import org.eclipse.gef.EditPartViewer;
+import org.eclipse.gef.SnapToGrid;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeCompartmentEditPart;
+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemsAwareFreeFormLayer;
+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;
+import org.eclipse.gmf.runtime.diagram.ui.figures.ShapeCompartmentFigure;
+import org.eclipse.gmf.runtime.diagram.ui.layout.FreeFormLayoutEx;
+import org.eclipse.gmf.runtime.draw2d.ui.internal.figures.AnimatableScrollPane;
+import org.eclipse.gmf.runtime.draw2d.ui.internal.figures.OverlayScrollPaneLayout;
+import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode;
+import org.eclipse.gmf.runtime.notation.View;
+
+
+public class LinksLFShapeCompartmentEditPart extends ShapeCompartmentEditPart {
+
+ private final PropertyChangeListener myGridListener = new PropertyChangeListener() {
+
+ public void propertyChange(PropertyChangeEvent evt) {
+ String propertyName = evt.getPropertyName();
+ if(SnapToGrid.PROPERTY_GRID_ORIGIN.equals(propertyName) || //
+ SnapToGrid.PROPERTY_GRID_ENABLED.equals(propertyName) || //
+ SnapToGrid.PROPERTY_GRID_SPACING.equals(propertyName)) {
+
+ updateGridBehavior();
+ }
+ }
+ };
+
+ public LinksLFShapeCompartmentEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ public IFigure createFigure() {
+ ShapeCompartmentFigure result = new ShapeCompartmentFigureEx(getCompartmentName(), getMapMode());
+ result.getContentPane().setLayoutManager(getLayoutManager());
+ result.getContentPane().addLayoutListener(LayoutAnimator.getDefault());
+ return result;
+ }
+
+ @Override
+ public void addNotify() {
+ super.addNotify();
+ getViewer().addPropertyChangeListener(myGridListener);
+ updateGridBehavior();
+ }
+
+ @Override
+ public void removeNotify() {
+ getViewer().removePropertyChangeListener(myGridListener);
+ super.removeNotify();
+ }
+
+ protected void updateGridBehavior() {
+ Rectangle gridSpec = getGridSpec(getViewer());
+ if(gridSpec != null) {
+ setScrollGridBehaviour((ResizableCompartmentFigure)getFigure());
+ }
+ }
+
+ protected void setScrollGridBehaviour(ResizableCompartmentFigure compartmentFigure) {
+ ScrollPane sp = compartmentFigure.getScrollPane();
+ decorateHorizontalRange(sp);
+ decorateVerticalRange(sp);
+ updateStepIncrements(sp);
+ }
+
+ private void updateStepIncrements(ScrollPane pane) {
+ Rectangle gridSpec = getGridSpec(getViewer());
+ if(gridSpec == null) {
+ return;
+ }
+ ScrollBar hScroll = pane.getHorizontalScrollBar();
+ hScroll.setStepIncrement(gridSpec.height);
+ ScrollBar wScroll = pane.getVerticalScrollBar();
+ wScroll.setStepIncrement(gridSpec.width);
+ }
+
+ private void decorateVerticalRange(ScrollPane pane) {
+ ScrollBar scroll = pane.getVerticalScrollBar();
+ RangeModel model = scroll.getRangeModel();
+ if(false == model instanceof SnapToGridRangeModel) {
+ SnapToGridRangeModel range = new SnapToGridRangeModel(model);
+ scroll.setRangeModel(range);
+ pane.getViewport().setVerticalRangeModel(range);
+ }
+ }
+
+ private void decorateHorizontalRange(ScrollPane pane) {
+ ScrollBar scroll = pane.getHorizontalScrollBar();
+ RangeModel model = scroll.getRangeModel();
+ if(false == model instanceof SnapToGridRangeModel) {
+ SnapToGridRangeModel range = new SnapToGridRangeModel(model);
+ scroll.setRangeModel(range);
+ pane.getViewport().setHorizontalRangeModel(range);
+ }
+ }
+
+ protected static Rectangle getGridSpec(EditPartViewer viewer) {
+ Boolean enabled = (Boolean)viewer.getProperty(SnapToGrid.PROPERTY_GRID_ENABLED);
+ if(enabled == null || !enabled) {
+ return null;
+ }
+ int gridX = 0;
+ int gridY = 0;
+ Point origin;
+ Dimension spacing = (Dimension)viewer.getProperty(SnapToGrid.PROPERTY_GRID_SPACING);
+ if(spacing != null) {
+ gridX = spacing.width;
+ gridY = spacing.height;
+ }
+ if(gridX == 0) {
+ gridX = SnapToGrid.DEFAULT_GRID_SIZE;
+ }
+ if(gridY == 0) {
+ gridY = SnapToGrid.DEFAULT_GRID_SIZE;
+ }
+ Point loc = (Point)viewer.getProperty(SnapToGrid.PROPERTY_GRID_ORIGIN);
+ if(loc != null) {
+ origin = loc;
+ } else {
+ origin = new Point();
+ }
+
+ return new Rectangle(origin.x, origin.y, gridX, gridY);
+
+ }
+
+ private class SnapToGridRangeModel implements RangeModel {
+
+ private final RangeModel myBaseRangeModel;
+
+ public SnapToGridRangeModel(RangeModel rangeModel) {
+ myBaseRangeModel = rangeModel;
+ }
+
+ public void setValue(int value) {
+ Rectangle gridSpec = getGridSpec(getViewer());
+ if(gridSpec != null) {
+ value = Math.max(value, 0);
+ value = gridSpec.height * (value / gridSpec.height);
+ }
+ if(value + getMinimum() <= getMaximum()) {
+ myBaseRangeModel.setValue(value);
+ }
+ }
+
+ public void setMinimum(int min) {
+ myBaseRangeModel.setMinimum(min);
+ }
+
+ public void setMaximum(int max) {
+ myBaseRangeModel.setMaximum(max);
+ }
+
+ public void setExtent(int extent) {
+ myBaseRangeModel.setExtent(extent);
+ }
+
+ public void setAll(int min, int extent, int max) {
+ myBaseRangeModel.setAll(min, extent, max);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ myBaseRangeModel.removePropertyChangeListener(listener);
+ }
+
+ public boolean isEnabled() {
+ return true;
+ }
+
+ public int getValue() {
+ return myBaseRangeModel.getValue();
+ }
+
+ public int getMinimum() {
+ return myBaseRangeModel.getMinimum();
+ }
+
+ public int getMaximum() {
+ return myBaseRangeModel.getMaximum();
+ }
+
+ public int getExtent() {
+ return myBaseRangeModel.getExtent();
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ myBaseRangeModel.addPropertyChangeListener(listener);
+ }
+ }
+
+ public static class ShapeCompartmentFigureEx extends ShapeCompartmentFigure {
+
+ public ShapeCompartmentFigureEx(String title, IMapMode mm) {
+ super(title, mm);
+ }
+
+ @Override
+ protected void configureFigure(IMapMode mm) {
+ ScrollPane scrollpane = getScrollPane();
+ if(scrollpane == null) {
+ scrollpane = scrollPane = new AnimatableScrollPaneWithMM(mm);
+ }
+ scrollpane.setViewport(new FreeformViewport());
+ scrollPane.setScrollBarVisibility(ScrollPane.AUTOMATIC);
+ scrollpane.setLayoutManager(new OverlayScrollPaneLayout());
+
+ IFigure contents = new BorderItemsAwareFreeFormLayer();
+ contents.setLayoutManager(new FreeFormLayoutEx());
+ scrollpane.setContents(contents);
+
+ int MB = mm.DPtoLP(5);
+ scrollpane.setBorder(new MarginBorder(MB, MB, MB, MB));
+ int SZ = mm.DPtoLP(10);
+ scrollpane.setMinimumSize(new Dimension(SZ, SZ));
+
+ this.setFont(FONT_TITLE);
+ }
+
+ }
+
+ private static class AnimatableScrollPaneWithMM extends AnimatableScrollPane implements IMapMode {
+
+ private IMapMode myMapMode;
+
+ public AnimatableScrollPaneWithMM(IMapMode mm) {
+ myMapMode = mm;
+ }
+
+ public int LPtoDP(int logicalUnit) {
+ return myMapMode.LPtoDP(logicalUnit);
+ }
+
+ public int DPtoLP(int deviceUnit) {
+ return myMapMode.DPtoLP(deviceUnit);
+ }
+
+ public Translatable LPtoDP(Translatable t) {
+ return myMapMode.LPtoDP(t);
+ }
+
+ public Translatable DPtoLP(Translatable t) {
+ return myMapMode.DPtoLP(t);
+ }
+ }
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFShapeNodeEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFShapeNodeEditPart.java
new file mode 100644
index 00000000000..766d95beb8c
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFShapeNodeEditPart.java
@@ -0,0 +1,42 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.gef.Request;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.ShapeNodeEditPart;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.ShapeNodeAnchorDelegate;
+
+
+public abstract class LinksLFShapeNodeEditPart extends ShapeNodeEditPart {
+
+ private ShapeNodeAnchorDelegate myShapeNodeAnchorDelegate;
+
+ public LinksLFShapeNodeEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ protected void createDefaultEditPolicies() {
+ super.createDefaultEditPolicies();
+ DefaultEditPolicies.installNodeEditPolicies(this);
+ }
+
+ @Override
+ public final ConnectionAnchor getSourceConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getSourceConnectionAnchor(request);
+ }
+
+ @Override
+ public final ConnectionAnchor getTargetConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getTargetConnectionAnchor(request);
+ }
+
+ private ShapeNodeAnchorDelegate getShapeNodeAnchorDelegate() {
+ if(myShapeNodeAnchorDelegate == null) {
+ myShapeNodeAnchorDelegate = new ShapeNodeAnchorDelegate(getNodeFigure());
+ }
+ return myShapeNodeAnchorDelegate;
+ }
+
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFUMLConnectionNodeEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFUMLConnectionNodeEditPart.java
new file mode 100644
index 00000000000..1d2a5773f01
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFUMLConnectionNodeEditPart.java
@@ -0,0 +1,113 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.draw2d.Bendpoint;
+import org.eclipse.draw2d.Connection;
+import org.eclipse.gef.EditPolicy;
+import org.eclipse.gmf.runtime.diagram.ui.util.EditPartUtil;
+import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx;
+import org.eclipse.gmf.runtime.draw2d.ui.internal.routers.ForestRouter;
+import org.eclipse.gmf.runtime.draw2d.ui.internal.routers.OrthogonalRouter;
+import org.eclipse.gmf.runtime.gef.ui.internal.editpolicies.LineMode;
+import org.eclipse.gmf.runtime.gef.ui.internal.l10n.Cursors;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.RelativeBendpoints;
+import org.eclipse.gmf.runtime.notation.RoutingStyle;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.AbsoluteBendpointsConvention;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.editpolicies.DebugShowConnectionEndPointsAndAnchorsEditPolicy;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.editpolicies.LinksLFConnectionBendpointEditPolicy;
+import org.eclipse.papyrus.uml.diagram.common.editparts.UMLConnectionNodeEditPart;
+
+
+public abstract class LinksLFUMLConnectionNodeEditPart extends UMLConnectionNodeEditPart {
+
+ public LinksLFUMLConnectionNodeEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ protected void createDefaultEditPolicies() {
+ super.createDefaultEditPolicies();
+
+ installEditPolicy(EditPolicy.CONNECTION_ENDPOINTS_ROLE, new DebugShowConnectionEndPointsAndAnchorsEditPolicy());
+ installBendpointEditPolicy();
+ }
+
+ @Override
+ protected void refreshBendpoints() {
+ RelativeBendpoints bendpoints = (RelativeBendpoints)getEdge().getBendpoints();
+ List<?> modelConstraint = bendpoints.getPoints();
+ List<Bendpoint> figureConstraint = new ArrayList<Bendpoint>();
+ for(int i = 0; i < modelConstraint.size(); i++) {
+ org.eclipse.gmf.runtime.notation.datatype.RelativeBendpoint wbp = (org.eclipse.gmf.runtime.notation.datatype.RelativeBendpoint)modelConstraint.get(i);
+ float weight;
+ if(modelConstraint.size() == 1) {
+ weight = 0.5f;
+ } else {
+ weight = i / ((float)modelConstraint.size() - 1);
+ }
+ Bendpoint bp = AbsoluteBendpointsConvention.d2dBendpoint(wbp, getConnectionFigure(), weight);
+ figureConstraint.add(bp);
+ }
+ getConnectionFigure().setRoutingConstraint(figureConstraint);
+ }
+
+ /**
+ * [GMFRT] make protected
+ */
+ protected final void installBendpointEditPolicy() {
+ if(getConnectionFigure().getConnectionRouter() instanceof ForestRouter) {
+ installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, new LinksLFConnectionBendpointEditPolicy(LineMode.ORTHOGONAL_CONSTRAINED));
+ } else if(getConnectionFigure().getConnectionRouter() instanceof OrthogonalRouter) {
+ installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, new LinksLFConnectionBendpointEditPolicy(LineMode.ORTHOGONAL_FREE));
+ } else {
+ installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, new LinksLFConnectionBendpointEditPolicy(LineMode.OBLIQUE));
+ }
+
+ EditPartUtil.synchronizeRunnableToMainThread(this, new Runnable() {
+
+ public void run() {
+ if(getConnectionFigure().getConnectionRouter() instanceof ForestRouter) {
+ getConnectionFigure().setCursor(Cursors.CURSOR_SEG_MOVE);
+ } else if(getConnectionFigure().getConnectionRouter() instanceof OrthogonalRouter) {
+ getConnectionFigure().setCursor(Cursors.CURSOR_SEG_MOVE);
+ } else {
+ getConnectionFigure().setCursor(Cursors.CURSOR_SEG_ADD);
+ }
+ };
+ });
+ }
+
+ protected void refreshRouterChange() {
+ refreshBendpoints();
+ installBendpointEditPolicy();
+ }
+
+ @Override
+ protected void refreshRoutingStyles() {
+ Connection connection = getConnectionFigure();
+ if(!(connection instanceof PolylineConnectionEx))
+ return;
+
+ PolylineConnectionEx poly = (PolylineConnectionEx)connection;
+
+ RoutingStyle style = (RoutingStyle)((View)getModel()).getStyle(NotationPackage.Literals.ROUTING_STYLE);
+ if(style != null) {
+
+ boolean closestDistance = style.isClosestDistance();
+ boolean avoidObstruction = style.isAvoidObstructions();
+
+ poly.setRoutingStyles(closestDistance, avoidObstruction);
+
+ if(avoidObstruction)
+ installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, null);
+ else
+ installBendpointEditPolicy();
+ }
+ }
+
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFUMLNodeEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFUMLNodeEditPart.java
new file mode 100644
index 00000000000..5781d91869a
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFUMLNodeEditPart.java
@@ -0,0 +1,42 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import org.eclipse.draw2d.ConnectionAnchor;
+import org.eclipse.gef.Request;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.linklf.ShapeNodeAnchorDelegate;
+import org.eclipse.papyrus.uml.diagram.common.editparts.UMLNodeEditPart;
+
+
+public abstract class LinksLFUMLNodeEditPart extends UMLNodeEditPart {
+
+ private ShapeNodeAnchorDelegate myShapeNodeAnchorDelegate;
+
+ public LinksLFUMLNodeEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ protected void createDefaultEditPolicies() {
+ super.createDefaultEditPolicies();
+ DefaultEditPolicies.installNodeEditPolicies(this);
+ }
+
+
+ @Override
+ public final ConnectionAnchor getSourceConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getSourceConnectionAnchor(request);
+ }
+
+ @Override
+ public final ConnectionAnchor getTargetConnectionAnchor(Request request) {
+ return getShapeNodeAnchorDelegate().getTargetConnectionAnchor(request);
+ }
+
+ private ShapeNodeAnchorDelegate getShapeNodeAnchorDelegate() {
+ if(myShapeNodeAnchorDelegate == null) {
+ myShapeNodeAnchorDelegate = new ShapeNodeAnchorDelegate(getNodeFigure());
+ }
+ return myShapeNodeAnchorDelegate;
+ }
+
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFXYLayoutShapeCompartmentEditPart.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFXYLayoutShapeCompartmentEditPart.java
new file mode 100644
index 00000000000..6aa09c57757
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.common/src/org/eclipse/papyrus/uml/diagram/common/editparts/linkslf/LinksLFXYLayoutShapeCompartmentEditPart.java
@@ -0,0 +1,263 @@
+package org.eclipse.papyrus.uml.diagram.common.editparts.linkslf;
+
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import org.eclipse.draw2d.FreeformViewport;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.LayoutAnimator;
+import org.eclipse.draw2d.MarginBorder;
+import org.eclipse.draw2d.RangeModel;
+import org.eclipse.draw2d.ScrollBar;
+import org.eclipse.draw2d.ScrollPane;
+import org.eclipse.draw2d.geometry.Dimension;
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.draw2d.geometry.Translatable;
+import org.eclipse.gef.EditPartViewer;
+import org.eclipse.gef.SnapToGrid;
+import org.eclipse.gmf.runtime.diagram.ui.figures.BorderItemsAwareFreeFormLayer;
+import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure;
+import org.eclipse.gmf.runtime.diagram.ui.figures.ShapeCompartmentFigure;
+import org.eclipse.gmf.runtime.diagram.ui.layout.FreeFormLayoutEx;
+import org.eclipse.gmf.runtime.draw2d.ui.internal.figures.AnimatableScrollPane;
+import org.eclipse.gmf.runtime.draw2d.ui.internal.figures.OverlayScrollPaneLayout;
+import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.editpart.XYLayoutShapeCompartmentEditPart;
+
+public class LinksLFXYLayoutShapeCompartmentEditPart extends XYLayoutShapeCompartmentEditPart {
+
+ private final PropertyChangeListener myGridListener = new PropertyChangeListener() {
+
+ public void propertyChange(PropertyChangeEvent evt) {
+ String propertyName = evt.getPropertyName();
+ if(SnapToGrid.PROPERTY_GRID_ORIGIN.equals(propertyName) || //
+ SnapToGrid.PROPERTY_GRID_ENABLED.equals(propertyName) || //
+ SnapToGrid.PROPERTY_GRID_SPACING.equals(propertyName)) {
+
+ updateGridBehavior();
+ }
+ }
+ };
+
+ public LinksLFXYLayoutShapeCompartmentEditPart(View view) {
+ super(view);
+ }
+
+ @Override
+ public IFigure createFigure() {
+ ShapeCompartmentFigure result = new ShapeCompartmentFigureEx(getCompartmentName(), getMapMode());
+ result.getContentPane().setLayoutManager(getLayoutManager());
+ result.getContentPane().addLayoutListener(LayoutAnimator.getDefault());
+ return result;
+ }
+
+ @Override
+ public void addNotify() {
+ super.addNotify();
+ getViewer().addPropertyChangeListener(myGridListener);
+ updateGridBehavior();
+ }
+
+ @Override
+ public void removeNotify() {
+ getViewer().removePropertyChangeListener(myGridListener);
+ super.removeNotify();
+ }
+
+ protected void updateGridBehavior() {
+ Rectangle gridSpec = getGridSpec(getViewer());
+ if(gridSpec != null) {
+ setScrollGridBehaviour((ResizableCompartmentFigure)getFigure());
+ }
+ }
+
+ protected void setScrollGridBehaviour(ResizableCompartmentFigure compartmentFigure) {
+ ScrollPane sp = compartmentFigure.getScrollPane();
+ decorateHorizontalRange(sp);
+ decorateVerticalRange(sp);
+ updateStepIncrements(sp);
+ }
+
+ private void updateStepIncrements(ScrollPane pane) {
+ Rectangle gridSpec = getGridSpec(getViewer());
+ if(gridSpec == null) {
+ return;
+ }
+ ScrollBar hScroll = pane.getHorizontalScrollBar();
+ hScroll.setStepIncrement(gridSpec.height);
+ ScrollBar wScroll = pane.getVerticalScrollBar();
+ wScroll.setStepIncrement(gridSpec.width);
+ }
+
+ private void decorateVerticalRange(ScrollPane pane) {
+ ScrollBar scroll = pane.getVerticalScrollBar();
+ RangeModel model = scroll.getRangeModel();
+ if(false == model instanceof SnapToGridRangeModel) {
+ SnapToGridRangeModel range = new SnapToGridRangeModel(model);
+ scroll.setRangeModel(range);
+ pane.getViewport().setVerticalRangeModel(range);
+ }
+ }
+
+ private void decorateHorizontalRange(ScrollPane pane) {
+ ScrollBar scroll = pane.getHorizontalScrollBar();
+ RangeModel model = scroll.getRangeModel();
+ if(false == model instanceof SnapToGridRangeModel) {
+ SnapToGridRangeModel range = new SnapToGridRangeModel(model);
+ scroll.setRangeModel(range);
+ pane.getViewport().setHorizontalRangeModel(range);
+ }
+ }
+
+ protected static Rectangle getGridSpec(EditPartViewer viewer) {
+ Boolean enabled = (Boolean)viewer.getProperty(SnapToGrid.PROPERTY_GRID_ENABLED);
+ if(enabled == null || !enabled) {
+ return null;
+ }
+ int gridX = 0;
+ int gridY = 0;
+ Point origin;
+ Dimension spacing = (Dimension)viewer.getProperty(SnapToGrid.PROPERTY_GRID_SPACING);
+ if(spacing != null) {
+ gridX = spacing.width;
+ gridY = spacing.height;
+ }
+ if(gridX == 0) {
+ gridX = SnapToGrid.DEFAULT_GRID_SIZE;
+ }
+ if(gridY == 0) {
+ gridY = SnapToGrid.DEFAULT_GRID_SIZE;
+ }
+ Point loc = (Point)viewer.getProperty(SnapToGrid.PROPERTY_GRID_ORIGIN);
+ if(loc != null) {
+ origin = loc;
+ } else {
+ origin = new Point();
+ }
+
+ return new Rectangle(origin.x, origin.y, gridX, gridY);
+
+ }
+
+ private class SnapToGridRangeModel implements RangeModel {
+
+ private final RangeModel myBaseRangeModel;
+
+ public SnapToGridRangeModel(RangeModel rangeModel) {
+ myBaseRangeModel = rangeModel;
+ }
+
+ public void setValue(int value) {
+ Rectangle gridSpec = getGridSpec(getViewer());
+ if(gridSpec != null) {
+ value = Math.max(value, 0);
+ value = gridSpec.height * (value / gridSpec.height);
+ }
+ if(value + getMinimum() <= getMaximum()) {
+ myBaseRangeModel.setValue(value);
+ }
+ }
+
+ public void setMinimum(int min) {
+ myBaseRangeModel.setMinimum(min);
+ }
+
+ public void setMaximum(int max) {
+ myBaseRangeModel.setMaximum(max);
+ }
+
+ public void setExtent(int extent) {
+ myBaseRangeModel.setExtent(extent);
+ }
+
+ public void setAll(int min, int extent, int max) {
+ myBaseRangeModel.setAll(min, extent, max);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener listener) {
+ myBaseRangeModel.removePropertyChangeListener(listener);
+ }
+
+ public boolean isEnabled() {
+ return true;
+ }
+
+ public int getValue() {
+ return myBaseRangeModel.getValue();
+ }
+
+ public int getMinimum() {
+ return myBaseRangeModel.getMinimum();
+ }
+
+ public int getMaximum() {
+ return myBaseRangeModel.getMaximum();
+ }
+
+ public int getExtent() {
+ return myBaseRangeModel.getExtent();
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener listener) {
+ myBaseRangeModel.addPropertyChangeListener(listener);
+ }
+ }
+
+ public static class ShapeCompartmentFigureEx extends ShapeCompartmentFigure {
+
+ public ShapeCompartmentFigureEx(String title, IMapMode mm) {
+ super(title, mm);
+ }
+
+ @Override
+ protected void configureFigure(IMapMode mm) {
+ ScrollPane scrollpane = getScrollPane();
+ if(scrollpane == null) {
+ scrollpane = scrollPane = new AnimatableScrollPaneWithMM(mm);
+ }
+ scrollpane.setViewport(new FreeformViewport());
+ scrollPane.setScrollBarVisibility(ScrollPane.AUTOMATIC);
+ scrollpane.setLayoutManager(new OverlayScrollPaneLayout());
+
+ IFigure contents = new BorderItemsAwareFreeFormLayer();
+ contents.setLayoutManager(new FreeFormLayoutEx());
+ scrollpane.setContents(contents);
+
+ int MB = mm.DPtoLP(5);
+ scrollpane.setBorder(new MarginBorder(MB, MB, MB, MB));
+ int SZ = mm.DPtoLP(10);
+ scrollpane.setMinimumSize(new Dimension(SZ, SZ));
+
+ this.setFont(FONT_TITLE);
+ }
+
+ }
+
+ private static class AnimatableScrollPaneWithMM extends AnimatableScrollPane implements IMapMode {
+
+ private IMapMode myMapMode;
+
+ public AnimatableScrollPaneWithMM(IMapMode mm) {
+ myMapMode = mm;
+ }
+
+ public int LPtoDP(int logicalUnit) {
+ return myMapMode.LPtoDP(logicalUnit);
+ }
+
+ public int DPtoLP(int deviceUnit) {
+ return myMapMode.DPtoLP(deviceUnit);
+ }
+
+ public Translatable LPtoDP(Translatable t) {
+ return myMapMode.LPtoDP(t);
+ }
+
+ public Translatable DPtoLP(Translatable t) {
+ return myMapMode.DPtoLP(t);
+ }
+ }
+
+}

Back to the top