Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Redor2016-08-11 13:22:20 +0000
committerLaurent Redor2016-08-12 08:40:00 +0000
commit1dcd33112221bba76fdc3f9a3657deb1dd00d5a6 (patch)
tree6e709e41acfb345903fe602db44f3e03f9513c6b
parent673b4de0eeb06cc87c15295bd741a0f465dc4a61 (diff)
downloadorg.eclipse.sirius-1dcd33112221bba76fdc3f9a3657deb1dd00d5a6.tar.gz
org.eclipse.sirius-1dcd33112221bba76fdc3f9a3657deb1dd00d5a6.tar.xz
org.eclipse.sirius-1dcd33112221bba76fdc3f9a3657deb1dd00d5a6.zip
[496466] Fix pb concerning "Paste Format" action button status
The status of the button in tabbar was not correctly refreshed after a "Copy Format" action. The button stayed gray until a selection change. Bug: 496466 Change-Id: Id16880c1d679d765dd7c9363d7b130a12963caac Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/plugin.properties1
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/layout/CopyFormatAction.java42
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/actions/TabbarPasteFormatMenuManager.java20
-rw-r--r--plugins/org.eclipse.sirius.diagram.ui/src/org/eclipse/sirius/diagram/ui/provider/Messages.java3
4 files changed, 56 insertions, 10 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.ui/plugin.properties b/plugins/org.eclipse.sirius.diagram.ui/plugin.properties
index 19acb7de86..522ad9e01d 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/plugin.properties
+++ b/plugins/org.eclipse.sirius.diagram.ui/plugin.properties
@@ -801,6 +801,7 @@ ConcernComboContributionItem_tooltip = Current concern
ConnectionsFactory_edgeNotCreatedMsg = GMF Edge not created between source element : {0}, and target element : {1}
CopyFormatAction_clearPreviousFormatDateCommandLabel = Clear previous format data
CopyFormatAction_commandLabel = Copy format
+CopyFormatAction_notifyEditors = Notify editors of cache change
CopyFormatAction_storeFormatCommandLabel = Store formats
CopyFormatAction_text = Copy format
CopyFormatAction_toolTipText = Copy the format of the selected diagram elements
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/layout/CopyFormatAction.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/layout/CopyFormatAction.java
index 3e4c345e99..b5f3720cdb 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/layout/CopyFormatAction.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/actions/layout/CopyFormatAction.java
@@ -27,6 +27,7 @@ import org.eclipse.gmf.runtime.diagram.ui.commands.ICommandProxy;
import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
+import org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil;
import org.eclipse.sirius.diagram.DDiagram;
import org.eclipse.sirius.diagram.ui.edit.api.part.IDDiagramEditPart;
import org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramNameEditPart;
@@ -35,9 +36,12 @@ import org.eclipse.sirius.diagram.ui.provider.Messages;
import org.eclipse.sirius.diagram.ui.tools.api.image.DiagramImagesPath;
import org.eclipse.sirius.diagram.ui.tools.api.layout.SiriusLayoutDataManager;
import org.eclipse.sirius.diagram.ui.tools.api.ui.actions.ActionIds;
+import org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorImpl;
import org.eclipse.sirius.diagram.ui.tools.internal.layout.data.extension.LayoutDataManagerRegistry;
import org.eclipse.sirius.ext.base.Option;
import org.eclipse.swt.SWT;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
@@ -116,16 +120,6 @@ public class CopyFormatAction extends AbstractCopyPasteFormatAction {
/**
* {@inheritDoc}
*
- * @see org.eclipse.gef.commands.Command#canExecute()
- */
- @Override
- public boolean canExecute() {
- return super.canExecute();
- }
-
- /**
- * {@inheritDoc}
- *
* @see org.eclipse.gef.commands.Command#execute()
*/
@Override
@@ -148,6 +142,34 @@ public class CopyFormatAction extends AbstractCopyPasteFormatAction {
}
}
}
+ doStoreFormatsCmd.add(new Command(Messages.CopyFormatAction_notifyEditors) {
+ @Override
+ public boolean canUndo() {
+ return false;
+ }
+
+ @Override
+ public void execute() {
+ // Reinit tabbar of each open editor (to refresh PasteAction
+ // that depends on the layoutDataManager empty state)
+ IEditorReference[] editorReferences = null;
+
+ IWorkbenchPage page = EclipseUIUtil.getActivePage();
+ if (page != null) {
+ editorReferences = page.getEditorReferences();
+ }
+
+ if (editorReferences != null) {
+ for (IEditorReference ref : editorReferences) {
+ IEditorPart editor = ref.getEditor(false);
+ if (editor instanceof DDiagramEditorImpl) {
+ DDiagramEditorImpl diagramEditor = (DDiagramEditorImpl) editor;
+ diagramEditor.getTabbar().reinitToolBar(diagramEditor.getDiagramGraphicalViewer().getSelection());
+ }
+ }
+ }
+ }
+ });
return doStoreFormatsCmd.unwrap();
}
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/actions/TabbarPasteFormatMenuManager.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/actions/TabbarPasteFormatMenuManager.java
index 24ea5f060e..593a056703 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/actions/TabbarPasteFormatMenuManager.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/tools/internal/editor/tabbar/actions/TabbarPasteFormatMenuManager.java
@@ -14,6 +14,7 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.eclipse.gmf.runtime.common.ui.action.IDisposableAction;
+import org.eclipse.gmf.runtime.diagram.ui.actions.DiagramAction;
import org.eclipse.jface.action.ActionContributionItem;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IContributionItem;
@@ -114,4 +115,23 @@ public class TabbarPasteFormatMenuManager extends PasteFormatMenuManager {
}
}
}
+
+ /**
+ * Refresh the enablement of the encapsulated action and then update this
+ * contribution.
+ *
+ * When the diagram part is selected, the update of the tabbar is done
+ * before the enablement refresh of the action for selection listener.
+ *
+ * {@inheritDoc}
+ */
+ @Override
+ public void update() {
+ DiagramAction diagramAction = (DiagramAction) getDefaultAction();
+ if (diagramAction != null) {
+ diagramAction.refresh();
+ }
+ action.setEnabled(diagramAction.isEnabled());
+ super.update();
+ }
}
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src/org/eclipse/sirius/diagram/ui/provider/Messages.java b/plugins/org.eclipse.sirius.diagram.ui/src/org/eclipse/sirius/diagram/ui/provider/Messages.java
index 3a7ea0bf73..78facaf8b4 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src/org/eclipse/sirius/diagram/ui/provider/Messages.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src/org/eclipse/sirius/diagram/ui/provider/Messages.java
@@ -189,6 +189,9 @@ public final class Messages {
public static String CopyFormatAction_commandLabel;
@TranslatableMessage
+ public static String CopyFormatAction_notifyEditors;
+
+ @TranslatableMessage
public static String CopyFormatAction_storeFormatCommandLabel;
@TranslatableMessage

Back to the top