diff options
| author | Laurent Redor | 2016-08-11 13:22:20 +0000 |
|---|---|---|
| committer | Laurent Redor | 2016-08-12 08:40:00 +0000 |
| commit | 1dcd33112221bba76fdc3f9a3657deb1dd00d5a6 (patch) | |
| tree | 6e709e41acfb345903fe602db44f3e03f9513c6b | |
| parent | 673b4de0eeb06cc87c15295bd741a0f465dc4a61 (diff) | |
| download | org.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>
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 |
