From 2606444d7bfb7e59fa6676217a6e6b908a07c3e0 Mon Sep 17 00:00:00 2001 From: Simon Barner <barner@fortiss.org> Date: Mon, 9 Oct 2017 13:29:39 +0000 Subject: [PATCH] Add "Select All" action (CTRL+A) for diagram model editors. refs 3084 --- .../trunk/icons/select_all.png | Bin 0 -> 241 bytes .../ITutorialUIWhitelistProvider.java | 5 +- ...TutorialStepUIAtomicWithWhitelistBase.java | 8 ++- ...orialStepUICompositeWithWhitelistBase.java | 8 ++- .../kernel/ui/internal/ActionService.java | 24 +++++++-- .../ui/internal/ContextMenuService.java | 5 +- .../kernel/ui/internal/TutorialUIService.java | 18 ++++++- .../ui/internal/actions/SelectAllAction.java | 51 ++++++++++++++++++ .../kernel/ui/service/IActionService.java | 12 +++-- .../tooling/kernel/ui/util/ActionUtils.java | 4 +- 10 files changed, 121 insertions(+), 14 deletions(-) create mode 100644 org.fortiss.tooling.kernel.ui/trunk/icons/select_all.png create mode 100644 org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/actions/SelectAllAction.java diff --git a/org.fortiss.tooling.kernel.ui/trunk/icons/select_all.png b/org.fortiss.tooling.kernel.ui/trunk/icons/select_all.png new file mode 100644 index 0000000000000000000000000000000000000000..998a0e590d62bd148191b79fcaee46ddc3497892 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=DinK$vl=HlH+5kiEpy*OmPt7blOkrO(aPKY&7Yo-U3d7N^%v3gkNCz~TJ(!sD6N zmCI!eewzl|$X#9<Ch%v1$0wIGE8|@0xt2MLqg7;QW_mI*gnnHb7FwuYG)K%=$eyJ} z)#*}l-1}<^H~Acc=I9=|&ExSd_(007x5=eX&t1E8NHofG#VUoDxm?N5+2sNwQa{*p g8FPDnO#8<mV{yl2`aExUpi3A$UHx3vIVCg!0Hljk(f|Me literal 0 HcmV?d00001 diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/ITutorialUIWhitelistProvider.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/ITutorialUIWhitelistProvider.java index 5282acc87..e03b2af09 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/ITutorialUIWhitelistProvider.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/ITutorialUIWhitelistProvider.java @@ -26,7 +26,7 @@ import org.eclipse.jface.action.IContributionItem; * @author hoelzl * @author $Author: hoelzl $ * @version $Rev: 18709 $ - * @ConQAT.Rating YELLOW Hash: EF068A38A42C0E4AB6E94AA3D99A4FFE + * @ConQAT.Rating YELLOW Hash: CB12A92EE54964BB92F8DB7E446808BC */ public interface ITutorialUIWhitelistProvider { /** Returns whether the given element should be displayed in the navigator tree. */ @@ -44,6 +44,9 @@ public interface ITutorialUIWhitelistProvider { /** Returns whether the global rename action is visible in the context menu. */ boolean globalRenameActionVisible(); + /** Returns whether the global "select all" action is visible in the context menu. */ + boolean globalSelectAllActionVisible(); + /** Returns whether the given context menu contribution is visible. */ boolean contextMenuContributionVisible(EObject element, IContributionItem contribution); } diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/TutorialStepUIAtomicWithWhitelistBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/TutorialStepUIAtomicWithWhitelistBase.java index e99b09539..2dabdde99 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/TutorialStepUIAtomicWithWhitelistBase.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/TutorialStepUIAtomicWithWhitelistBase.java @@ -29,7 +29,7 @@ import org.fortiss.tooling.kernel.ui.extension.ITutorialUIWhitelistProvider; * @author hoelzl * @author $Author: hoelzl $ * @version $Rev: 18709 $ - * @ConQAT.Rating YELLOW Hash: E42D05ED143FC1B3FA87BD1828F67537 + * @ConQAT.Rating YELLOW Hash: 91424573B85CF01E1577D55B445C7710 */ public abstract class TutorialStepUIAtomicWithWhitelistBase extends TutorialStepUIAtomicBase implements ITutorialUIWhitelistProvider { @@ -73,6 +73,12 @@ public abstract class TutorialStepUIAtomicWithWhitelistBase extends TutorialStep return true; } + /** {@inheritDoc} */ + @Override + public boolean globalSelectAllActionVisible() { + return true; + } + /** {@inheritDoc} */ @Override public boolean contextMenuContributionVisible(EObject element, IContributionItem contribution) { diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/TutorialStepUICompositeWithWhitelistBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/TutorialStepUICompositeWithWhitelistBase.java index 187a33170..f8f9c71d7 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/TutorialStepUICompositeWithWhitelistBase.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/TutorialStepUICompositeWithWhitelistBase.java @@ -30,7 +30,7 @@ import org.fortiss.tooling.kernel.ui.extension.ITutorialUIWhitelistProvider; * @author hoelzl * @author $Author: hoelzl $ * @version $Rev: 18709 $ - * @ConQAT.Rating YELLOW Hash: 69DF31BEA71E0C448A989D1332F27206 + * @ConQAT.Rating YELLOW Hash: 8945A5050A267FF6017A75199FD94F05 */ public abstract class TutorialStepUICompositeWithWhitelistBase extends TutorialStepUICompositeBase implements ITutorialUIWhitelistProvider { @@ -76,6 +76,12 @@ public abstract class TutorialStepUICompositeWithWhitelistBase extends TutorialS return true; } + /** {@inheritDoc} */ + @Override + public boolean globalSelectAllActionVisible() { + return true; + } + /** {@inheritDoc} */ @Override public boolean contextMenuContributionVisible(EObject element, IContributionItem contribution) { diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ActionService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ActionService.java index 7a10751b8..b38689263 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ActionService.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ActionService.java @@ -44,6 +44,7 @@ import org.fortiss.tooling.kernel.ui.internal.actions.DeleteAction; import org.fortiss.tooling.kernel.ui.internal.actions.PasteAction; import org.fortiss.tooling.kernel.ui.internal.actions.RedoAction; import org.fortiss.tooling.kernel.ui.internal.actions.RenameAction; +import org.fortiss.tooling.kernel.ui.internal.actions.SelectAllAction; import org.fortiss.tooling.kernel.ui.internal.actions.UndoAction; import org.fortiss.tooling.kernel.ui.internal.views.NavigatorNewMenu; import org.fortiss.tooling.kernel.ui.service.IActionService; @@ -55,7 +56,7 @@ import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils; * @author hoelzlf * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 2EB398C7C37EB120360B479B0A3EF898 + * @ConQAT.Rating YELLOW Hash: 30F05BE76B211235B375C2DF267C4635 */ public class ActionService implements IActionService, IPersistencyServiceListener, CommandStackListener, IIntrospectiveKernelService { @@ -91,6 +92,9 @@ public class ActionService implements IActionService, IPersistencyServiceListene /** The global rename action. */ public RenameAction globalRenameAction; + /** The global "select all" action. */ + public SelectAllAction globalSelectAllAction; + /** Initializes the service. */ public void initializeService() { globalDeleteAction = new DeleteAction(); @@ -100,6 +104,7 @@ public class ActionService implements IActionService, IPersistencyServiceListene globalCutAction = new CutAction(); globalPasteAction = new PasteAction(); globalRenameAction = new RenameAction(); + globalSelectAllAction = new SelectAllAction(); } /** Starts the service. */ @@ -114,13 +119,13 @@ public class ActionService implements IActionService, IPersistencyServiceListene /** {@inheritDoc} */ @Override public void addGlobalDefaultActionSectionToMenu(IMenuManager menuManager) { - addGlobalEditingActionsToMenu(menuManager, true, true, true); + addGlobalEditingActionsToMenu(menuManager, true, true, true, true); } /** {@inheritDoc} */ @Override public void addGlobalEditingActionsToMenu(IMenuManager menuManager, boolean copyPaste, - boolean delete, boolean rename) { + boolean delete, boolean rename, boolean selectAll) { if(copyPaste) { menuManager.appendToGroup(GLOBAL_DEFAULT_MENU_SECTION_ID, globalCopyAction); menuManager.appendToGroup(GLOBAL_DEFAULT_MENU_SECTION_ID, globalCutAction); @@ -132,6 +137,10 @@ public class ActionService implements IActionService, IPersistencyServiceListene if(rename) { menuManager.appendToGroup(GLOBAL_DEFAULT_MENU_SECTION_ID, globalRenameAction); } + + if(selectAll) { + menuManager.appendToGroup(GLOBAL_DEFAULT_MENU_SECTION_ID, globalSelectAllAction); + } } /** {@inheritDoc} */ @@ -171,6 +180,8 @@ public class ActionService implements IActionService, IPersistencyServiceListene ActionFactory.DELETE.getCommandId(), actionBars); registerGlobalAction(globalRenameAction, ActionFactory.RENAME.getId(), ActionFactory.RENAME.getCommandId(), actionBars); + registerGlobalAction(globalSelectAllAction, ActionFactory.SELECT_ALL.getId(), + ActionFactory.SELECT_ALL.getCommandId(), actionBars); } /** Registers the given action globally. */ @@ -189,6 +200,7 @@ public class ActionService implements IActionService, IPersistencyServiceListene globalPasteAction.refresh(targets); globalDeleteAction.refresh(targets); globalRenameAction.refresh(targets); + globalSelectAllAction.refresh(targets); globalUndoAction.refresh(targets); globalRedoAction.refresh(targets); } @@ -259,6 +271,12 @@ public class ActionService implements IActionService, IPersistencyServiceListene globalRenameAction.run(); } + /** {@inheritDoc} */ + @Override + public void runGlobalSelectAllAction() { + globalSelectAllAction.run(); + } + /** {@inheritDoc} */ @Override public Prototype getNewMenuContributionPrototype(IContributionItem contributionItem) { diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ContextMenuService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ContextMenuService.java index c1455642e..9d43e2d8b 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ContextMenuService.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ContextMenuService.java @@ -55,7 +55,7 @@ import org.osgi.framework.Bundle; * @author hoelzl * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 3448206DA62CB18B6BC802486F94D387 + * @ConQAT.Rating YELLOW Hash: C750C764FE6FEC1CC10F7709200A2BC9 */ public class ContextMenuService implements IContextMenuService, IIntrospectiveKernelService { /** The singleton service instance. */ @@ -173,7 +173,8 @@ public class ContextMenuService implements IContextMenuService, IIntrospectiveKe IActionService.getInstance().addGlobalEditingActionsToMenu(menu, ITutorialUIService.getInstance().globalCopyPasteActionsVisible(), ITutorialUIService.getInstance().globalDeleteActionVisible(), - ITutorialUIService.getInstance().globalRenameActionVisible()); + ITutorialUIService.getInstance().globalRenameActionVisible(), + ITutorialUIService.getInstance().globalSelectAllActionVisible()); } } } diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/TutorialUIService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/TutorialUIService.java index 5de3dae90..180a68150 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/TutorialUIService.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/TutorialUIService.java @@ -59,7 +59,7 @@ import org.osgi.framework.BundleException; * @author hoelzl * @author $Author: hoelzl $ * @version $Rev: 18709 $ - * @ConQAT.Rating RED Hash: 86CD841209EB95BE385D3201B5137A06 + * @ConQAT.Rating YELLOW Hash: B64FCE1222C16D24B0D64C9641915E8D */ public final class TutorialUIService implements ITutorialUIService, ITutorialUIWhitelistProvider, IIntrospectiveKernelService { @@ -307,6 +307,22 @@ public final class TutorialUIService implements ITutorialUIService, ITutorialUIW return false; } + /** {@inheritDoc} */ + @Override + public boolean globalSelectAllActionVisible() { + TutorialStepBase step = ITutorialService.getInstance().getActiveTutorialStep(); + while(step != null) { + if(step instanceof ITutorialUIWhitelistProvider) { + ITutorialUIWhitelistProvider p = (ITutorialUIWhitelistProvider)step; + if(p.globalSelectAllActionVisible()) { + return true; + } + } + step = step.getParent(); + } + return false; + } + /** {@inheritDoc} */ @Override public boolean contextMenuContributionVisible(EObject element, IContributionItem contribution) { diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/actions/SelectAllAction.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/actions/SelectAllAction.java new file mode 100644 index 000000000..efcd66d69 --- /dev/null +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/actions/SelectAllAction.java @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------+ +$Id$ +| | +| Copyright 2016 fortiss GmbH | +| | +| Licensed under the Apache License, Version 2.0 (the "License"); | +| you may not use this file except in compliance with the License. | +| You may obtain a copy of the License at | +| | +| http://www.apache.org/licenses/LICENSE-2.0 | +| | +| Unless required by applicable law or agreed to in writing, software | +| distributed under the License is distributed on an "AS IS" BASIS, | +| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | +| See the License for the specific language governing permissions and | +| limitations under the License. | ++--------------------------------------------------------------------------*/ +package org.fortiss.tooling.kernel.ui.internal.actions; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.ui.actions.ActionFactory; +import org.fortiss.tooling.kernel.ui.ToolingKernelUIActivator; +import org.fortiss.tooling.kernel.ui.extension.base.EObjectActionBase; +import org.fortiss.tooling.kernel.ui.util.SelectionUtils; + +/** + * Action for selecting all elements in the currently active editor. the currently selected model + * element. + * + * @author barner + * @author $Author$ + * @version $Rev$ + * @ConQAT.Rating YELLOW Hash: 703812CFF16B4B0ACFEC857D9B17CA6D + */ +public class SelectAllAction extends EObjectActionBase<EObject> { + + /** Constructor. */ + public SelectAllAction() { + super("Select all", ToolingKernelUIActivator.getImageDescriptor("icons/select_all.png")); + setId(ActionFactory.SELECT_ALL.getId()); + } + + /** {@inheritDoc} */ + @Override + public void run() { + EObject target = getTarget(); + if(target != null) { + SelectionUtils.setSelection(target.eContents()); + } + } +} diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/service/IActionService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/service/IActionService.java index e9791230c..e8ac2c534 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/service/IActionService.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/service/IActionService.java @@ -30,7 +30,7 @@ import org.fortiss.tooling.kernel.ui.internal.ActionService; * @author hoelzl * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 6296378743496C14102753053F08D77F + * @ConQAT.Rating YELLOW Hash: 1BDD6C00C8379F1C4661C01E865184F0 */ public interface IActionService { /** Returns the service instance. */ @@ -59,6 +59,9 @@ public interface IActionService { /** Runs the global rename action. */ public void runGlobalRenameAction(); + /** Runs the global "select all" action. */ + public void runGlobalSelectAllAction(); + /** Registers all global actions with the given {@link IActionBars}. */ void registerGlobalActions(IActionBars actionBars); @@ -73,13 +76,14 @@ public interface IActionService { /** * Adds the global default actions to the given context menu. Currently the * default are the editing actions as provided by # - * {@link IActionService#addGlobalEditingActionsToMenu(IMenuManager,boolean,boolean,boolean)}. + * {@link IActionService#addGlobalEditingActionsToMenu(IMenuManager,boolean,boolean,boolean,boolean)} + * . */ void addGlobalDefaultActionSectionToMenu(IMenuManager menuManager); - /** Adds the global editing actions to the menu (Copy, Cut, Paste, Delete, Rename). */ + /** Adds the global editing actions to the menu (Copy, Cut, Paste, Delete, Rename, Select All). */ void addGlobalEditingActionsToMenu(IMenuManager menuManager, boolean copyPaste, boolean delete, - boolean rename); + boolean rename, boolean selectAll); /** Adds the global undo/redo actions to the menu. */ void addGlobalUndoRedoActionsToMenu(IMenuManager menuManager); diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ActionUtils.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ActionUtils.java index 987b5910a..2b13ac8a1 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ActionUtils.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ActionUtils.java @@ -28,7 +28,7 @@ import org.fortiss.tooling.kernel.ui.service.IActionService; * @author aravantinos * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 45636C73464A38AAF743A8E9C5E13CC6 + * @ConQAT.Rating YELLOW Hash: C77D5F99A252385BAED91752692B71CE */ public class ActionUtils { @@ -55,6 +55,8 @@ public class ActionUtils { IActionService.getInstance().runGlobalRedoAction(); } else if(e.keyCode == SWT.F2) { IActionService.getInstance().runGlobalRenameAction(); + } else if((e.stateMask & SWT.CTRL) != 0 && e.keyCode == 0x61) { + IActionService.getInstance().runGlobalSelectAllAction(); } } } -- GitLab