diff options
| author | Belqassim Djafer | 2015-04-21 08:27:59 +0000 |
|---|---|---|
| committer | Laurent Redor | 2015-04-23 08:48:08 +0000 |
| commit | ac089da8118633c422d4b5b6670ba5e3389a440a (patch) | |
| tree | 373aa68444a1899f29fb5461bd8aef4da5c4253f | |
| parent | d1b61765248efd96ce23b279c02afe9438602ecc (diff) | |
| download | org.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>
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 |
