Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBelqassim Djafer2015-04-21 08:27:59 +0000
committerLaurent Redor2015-04-23 08:48:08 +0000
commitac089da8118633c422d4b5b6670ba5e3389a440a (patch)
tree373aa68444a1899f29fb5461bd8aef4da5c4253f
parentd1b61765248efd96ce23b279c02afe9438602ecc (diff)
downloadorg.eclipse.sirius-ac089da8118633c422d4b5b6670ba5e3389a440a.tar.gz
org.eclipse.sirius-ac089da8118633c422d4b5b6670ba5e3389a440a.tar.xz
org.eclipse.sirius-ac089da8118633c422d4b5b6670ba5e3389a440a.zip
[465088] Disable distribute actions on compartments and list items
Tests for these new cases are planned in another commit for bugzilla 436359. Bug: 465088 Change-Id: I7ace6fae2400d6a961fcde1299dbaf9a171165d7 Signed-off-by: Belqassim Djafer <belqassim.djafer@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/distribute/DistributeAction.java10
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/util/EditPartQuery.java26
2 files changed, 36 insertions, 0 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/distribute/DistributeAction.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/distribute/DistributeAction.java
index 7eb28b072a..b8d5bbb79c 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/distribute/DistributeAction.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/distribute/DistributeAction.java
@@ -28,6 +28,7 @@ import org.eclipse.sirius.diagram.ui.provider.DiagramUIPlugin;
import org.eclipse.sirius.diagram.ui.tools.api.image.DiagramImagesPath;
import org.eclipse.sirius.diagram.ui.tools.api.requests.DistributeRequest;
import org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds;
+import org.eclipse.sirius.diagram.ui.tools.internal.util.EditPartQuery;
import org.eclipse.ui.IWorkbenchPage;
import com.google.common.base.Predicates;
@@ -327,6 +328,14 @@ public class DistributeAction extends DiagramAction {
// axis.
selection = Collections.EMPTY_LIST;
break;
+ } else if (part instanceof IGraphicalEditPart) {
+ EditPartQuery containerLayoutQuery = new EditPartQuery((IGraphicalEditPart) part);
+ if (!containerLayoutQuery.isFreeFormContainerChildrenPresentation()) {
+ // List item and elements inside compartment can not
+ // be distribute
+ selection = Collections.EMPTY_LIST;
+ break;
+ }
}
}
}
@@ -388,4 +397,5 @@ public class DistributeAction extends DiagramAction {
return parent;
}
+
}
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/util/EditPartQuery.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/util/EditPartQuery.java
index e7229ae612..99ebdb24d0 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/util/EditPartQuery.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/util/EditPartQuery.java
@@ -18,6 +18,7 @@ import java.util.Map;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.PositionConstants;
import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.emf.ecore.EObject;
import org.eclipse.gef.EditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderItemEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IBorderedShapeEditPart;
@@ -25,6 +26,9 @@ import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
import org.eclipse.gmf.runtime.notation.Bounds;
import org.eclipse.gmf.runtime.notation.Node;
+import org.eclipse.sirius.diagram.ContainerLayout;
+import org.eclipse.sirius.diagram.DNodeContainer;
+import org.eclipse.sirius.diagram.DNodeList;
import org.eclipse.sirius.diagram.ui.tools.api.graphical.edit.styles.IBorderItemOffsets;
import com.google.common.base.Preconditions;
@@ -196,6 +200,28 @@ public class EditPartQuery {
}
/**
+ * Check that the container of the <code>part</code> is layouted with
+ * "FreeForm" style.
+ *
+ * @return true if the the container of the <code>part</code> is layouted
+ * with "FreeForm" style, false otherwise.
+ */
+ public boolean isFreeFormContainerChildrenPresentation() {
+ boolean isFreeForm = true;
+ EObject eContainer = part.resolveSemanticElement().eContainer();
+ if (eContainer instanceof DNodeList) {
+ isFreeForm = false;
+ } else if (eContainer instanceof DNodeContainer) {
+ DNodeContainer container = (DNodeContainer) eContainer;
+ ContainerLayout childrenPresentation = container.getChildrenPresentation();
+ if (!childrenPresentation.equals(ContainerLayout.FREE_FORM)) {
+ isFreeForm = false;
+ }
+ }
+ return isFreeForm;
+ }
+
+ /**
* @param nodes
* Nodes potentially concerned by this resize.
* @param parentBounds

Back to the top