Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaxime Porhel2015-08-20 14:55:43 +0000
committerMaxime Porhel2015-08-21 06:50:42 +0000
commite39e29e9bd31406136f44aecc0587c4f926c2527 (patch)
tree04c0f233a7f938ef132b40413c33c140b4dc9f75
parentc4bfa13be645b1f3154f1e4e2439216b7b9dfb51 (diff)
downloadorg.eclipse.sirius-e39e29e9bd31406136f44aecc0587c4f926c2527.tar.gz
org.eclipse.sirius-e39e29e9bd31406136f44aecc0587c4f926c2527.tar.xz
org.eclipse.sirius-e39e29e9bd31406136f44aecc0587c4f926c2527.zip
[470859] Disable the make same size action for Region(Container)s
Also check can edit instance in calculate enable. Bug: 470859 Change-Id: Ia2fad139e1a38134ae534c8e369ca764c8c53ee4 Signed-off-by: Maxime Porhel <maxime.porhel@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/plugin.xml19
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/providers/SiriusContributionItemProvider.java4
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/SizeBothAction.java79
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithoutContributions.java3
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/DiagramElementSizeExtensionContributionFactory.java2
5 files changed, 95 insertions, 12 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/plugin.xml b/plugins/org.eclipse.sirius.diagram.ui/plugin.xml
index 66e69742ce..2f8d4b66a0 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/plugin.xml
+++ b/plugins/org.eclipse.sirius.diagram.ui/plugin.xml
@@ -113,16 +113,6 @@
<contributionItemProvider class="org.eclipse.gmf.runtime.diagram.ui.providers.DiagramContributionItemProvider" checkPluginLoaded="false">
<Priority name="Low">
</Priority>
- <partContribution id="org.eclipse.sirius.diagram.ui.part.SiriusDiagramEditorID">
- <partAction menubarPath="/diagramMenu/sizeGroup" toolbarPath="/toolbarFormatGroup" id="makeSameSizeBothAction">
- </partAction>
- </partContribution>
- <popupContribution class="org.eclipse.sirius.diagram.ui.tools.internal.menu.DiagramEditorContextMenuProvider">
- <popupAction
- id="makeSameSizeBothAction"
- path="/formatMenu/sizeGroup">
- </popupAction>
- </popupContribution>
</contributionItemProvider>
<?gmfgen generated="true"?>
<contributionItemProvider class="org.eclipse.sirius.diagram.ui.internal.providers.SiriusContributionItemProvider">
@@ -144,6 +134,11 @@
<partAction menubarPath="/diagramMenu/distributeMenu/distributeHorizontalGroup" id="distributeCentersHorizontally"/>
<partAction menubarPath="/diagramMenu/distributeMenu/distributeVerticalGroup" id="distributeGapsVertically"/>
<partAction menubarPath="/diagramMenu/distributeMenu/distributeVerticalGroup" id="distributeCentersVertically"/>
+ <partAction
+ id="makeSameSizeBothAction"
+ menubarPath="/diagramMenu/sizeGroup"
+ toolbarPath="/toolbarFormatGroup">
+ </partAction>
</partContribution>
<popupContribution class="org.eclipse.sirius.diagram.ui.tools.internal.menu.DiagramEditorContextMenuProvider">
@@ -165,6 +160,10 @@
<popupAction path="/formatMenu/distributeMenu/distributeHorizontalGroup" id="distributeCentersHorizontally"/>
<popupAction path="/formatMenu/distributeMenu/distributeVerticalGroup" id="distributeGapsVertically"/>
<popupAction path="/formatMenu/distributeMenu/distributeVerticalGroup" id="distributeCentersVertically"/>
+ <popupAction
+ id="makeSameSizeBothAction"
+ path="/formatMenu/sizeGroup">
+ </popupAction>
</popupContribution>
<popupContribution
class="org.eclipse.sirius.diagram.ui.tools.internal.menu.DiagramEditorContextMenuProvider">
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/providers/SiriusContributionItemProvider.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/providers/SiriusContributionItemProvider.java
index 0c54fe1d37..ab26cf5aea 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/providers/SiriusContributionItemProvider.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/internal/providers/SiriusContributionItemProvider.java
@@ -19,6 +19,7 @@ import org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds;
import org.eclipse.sirius.diagram.ui.tools.internal.actions.DeselectAllAction;
import org.eclipse.sirius.diagram.ui.tools.internal.actions.SaveAsImageFileAction;
import org.eclipse.sirius.diagram.ui.tools.internal.actions.SelectHiddenElementsAction;
+import org.eclipse.sirius.diagram.ui.tools.internal.actions.SizeBothAction;
import org.eclipse.sirius.diagram.ui.tools.internal.actions.TabbarRouterAction;
import org.eclipse.sirius.diagram.ui.tools.internal.actions.distribute.DistributeAction;
import org.eclipse.sirius.diagram.ui.tools.internal.actions.layout.ArrangeBorderNodesAction;
@@ -39,6 +40,7 @@ public class SiriusContributionItemProvider extends AbstractContributionItemProv
/**
* @was-generated NOT
*/
+ @Override
protected IAction createAction(final String actionId, final IWorkbenchPartDescriptor partDescriptor) {
IAction result;
final IWorkbenchPage workbenchPage = partDescriptor.getPartPage();
@@ -75,6 +77,8 @@ public class SiriusContributionItemProvider extends AbstractContributionItemProv
result = DistributeAction.createDistributeVerticallyWithUniformGapsAction(workbenchPage, false);
} else if (ActionIds.DISTRIBUTE_CENTERS_VERTICALLY.equals(actionId)) {
result = DistributeAction.createDistributeCentersVerticallyAction(workbenchPage, false);
+ } else if (org.eclipse.gmf.runtime.diagram.ui.actions.ActionIds.ACTION_MAKE_SAME_SIZE_BOTH.equals(actionId)) {
+ result = new SizeBothAction(workbenchPage);
} else {
result = super.createAction(actionId, partDescriptor);
}
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/SizeBothAction.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/SizeBothAction.java
new file mode 100644
index 0000000000..3d24493e57
--- /dev/null
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/SizeBothAction.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.diagram.ui.tools.internal.actions;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.sirius.diagram.DDiagram;
+import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramContainerEditPart;
+import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramElementContainerEditPart;
+import org.eclipse.sirius.diagram.ui.tools.api.editor.DDiagramEditor;
+import org.eclipse.sirius.ecore.extender.business.api.permission.IPermissionAuthority;
+import org.eclipse.sirius.ecore.extender.business.api.permission.PermissionAuthorityRegistry;
+import org.eclipse.ui.IWorkbenchPage;
+
+import com.google.common.collect.Iterables;
+
+/**
+ * Sirius specifc size both action:
+ * <UL>
+ * <LI>disable the action on Region and Region container.</LI>
+ * <LI>check authority permission in calculateEnabled()./LI>
+ * </UL>
+ *
+ * @author mporhel
+ *
+ */
+public class SizeBothAction extends org.eclipse.gmf.runtime.diagram.ui.actions.internal.SizeBothAction {
+
+ /**
+ * Creates the Make Same Size Both Action.
+ *
+ * @param workbenchPage
+ * the workbench page.
+ */
+ public SizeBothAction(IWorkbenchPage workbenchPage) {
+ super(workbenchPage);
+ }
+
+ @Override
+ protected boolean calculateEnabled() {
+ boolean enabled = super.calculateEnabled();
+ if (enabled) {
+ for (AbstractDiagramElementContainerEditPart container : Iterables.filter(getSelectedObjects(), AbstractDiagramElementContainerEditPart.class)) {
+ if (container.isRegion() || (container instanceof AbstractDiagramContainerEditPart && ((AbstractDiagramContainerEditPart) container).isRegionContainer())) {
+ enabled = false;
+ break;
+ }
+ }
+ }
+ return enabled && canEditInstance();
+ }
+
+ /**
+ * Check authority permission.
+ *
+ * @return true if the action can be launched on the diagram
+ */
+ protected boolean canEditInstance() {
+ boolean canEditInstance = true;
+ if (getWorkbenchPart() instanceof DDiagramEditor && ((DDiagramEditor) getWorkbenchPart()).getRepresentation() instanceof DDiagram) {
+ final DDiagramEditor editor = (DDiagramEditor) getWorkbenchPart();
+ final DDiagram editorDiagram = (DDiagram) editor.getRepresentation();
+ Resource sessionResource = editor.getSession().getSessionResource();
+ if (sessionResource != null) {
+ IPermissionAuthority permissionAuthority = PermissionAuthorityRegistry.getDefault().getPermissionAuthority(sessionResource.getResourceSet());
+ canEditInstance = permissionAuthority.canEditInstance(editorDiagram);
+ }
+ }
+
+ return canEditInstance;
+ }
+}
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithoutContributions.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithoutContributions.java
index e08497658f..7dfd7fbc5c 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithoutContributions.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/TabbarFillerWithoutContributions.java
@@ -13,7 +13,6 @@ package org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar;
import org.eclipse.gef.ui.actions.ZoomComboContributionItem;
import org.eclipse.gmf.runtime.diagram.ui.actions.internal.AutoSizeAction;
import org.eclipse.gmf.runtime.diagram.ui.actions.internal.CopyAppearancePropertiesAction;
-import org.eclipse.gmf.runtime.diagram.ui.actions.internal.SizeBothAction;
import org.eclipse.gmf.runtime.diagram.ui.l10n.DiagramUIMessages;
import org.eclipse.jface.action.ContributionItem;
import org.eclipse.jface.action.Separator;
@@ -25,6 +24,7 @@ import org.eclipse.sirius.diagram.ui.tools.api.action.ConcernComboContributionIt
import org.eclipse.sirius.diagram.ui.tools.api.editor.DDiagramEditor;
import org.eclipse.sirius.diagram.ui.tools.internal.actions.SelectHiddenElementsAction;
import org.eclipse.sirius.diagram.ui.tools.internal.actions.SelectPinnedElementsAction;
+import org.eclipse.sirius.diagram.ui.tools.internal.actions.SizeBothAction;
import org.eclipse.sirius.diagram.ui.tools.internal.actions.style.ResetStylePropertiesToDefaultValuesAction;
import org.eclipse.sirius.diagram.ui.tools.internal.actions.visibility.HideDDiagramElementAction;
import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.actions.HideDDiagramElementLabelActionContributionItem;
@@ -64,6 +64,7 @@ public class TabbarFillerWithoutContributions extends AbstractTabbarFiller {
*
* @see org.eclipse.sirius.diagram.tools.internal.editor.tabbar.AbstractTabbarFiller#doFill()
*/
+ @Override
protected void doFill() {
createSelectArrangeAlignActions();
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/DiagramElementSizeExtensionContributionFactory.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/DiagramElementSizeExtensionContributionFactory.java
index 0f88c8654a..cb66d6121b 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/DiagramElementSizeExtensionContributionFactory.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/contributions/DiagramElementSizeExtensionContributionFactory.java
@@ -11,8 +11,8 @@
package org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions;
import org.eclipse.gmf.runtime.diagram.ui.actions.internal.AutoSizeAction;
-import org.eclipse.gmf.runtime.diagram.ui.actions.internal.SizeBothAction;
import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.sirius.diagram.ui.tools.internal.actions.SizeBothAction;
import org.eclipse.sirius.diagram.ui.tools.internal.editor.tabbar.contributions.expressions.DDiagramElementTabbarExpression;
import org.eclipse.ui.menus.IContributionRoot;
import org.eclipse.ui.services.IServiceLocator;

Back to the top