From f23e1d8cfd9384e6137e0584f4c8255112a709c0 Mon Sep 17 00:00:00 2001 From: Bernd Hufmann Date: Thu, 29 Jan 2015 06:58:32 -0500 Subject: [PATCH] tmf: fix handler activations in FiltersView (Bug 458579) Change-Id: I516738cb42617cf7abe41484259f6e3892bb76f4 Signed-off-by: Bernd Hufmann Reviewed-on: https://git.eclipse.org/r/40613 Reviewed-by: Hudson CI Reviewed-by: Patrick Tasse Tested-by: Patrick Tasse --- .../tmf/ui/views/filter/CopyHandler.java | 3 ++- .../tmf/ui/views/filter/DeleteHandler.java | 3 ++- .../tracecompass/tmf/ui/views/filter/FilterView.java | 7 +++++++ .../tmf/ui/views/filter/FilterViewer.java | 12 ++++++++++++ .../tmf/ui/views/filter/PasteHandler.java | 3 ++- 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/CopyHandler.java b/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/CopyHandler.java index eecdb080a9..34aa28876a 100644 --- a/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/CopyHandler.java +++ b/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/CopyHandler.java @@ -70,7 +70,8 @@ public class CopyHandler extends AbstractHandler { if (part instanceof FilterView) { FilterView tcv = (FilterView) part; ISelection selection = tcv.getSite().getSelectionProvider().getSelection(); - if (!selection.isEmpty()) { + // only enable if tree is in focus + if (!selection.isEmpty() && tcv.isTreeInFocus()) { return true; } } diff --git a/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/DeleteHandler.java b/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/DeleteHandler.java index d4722ba187..150b197190 100644 --- a/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/DeleteHandler.java +++ b/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/DeleteHandler.java @@ -66,7 +66,8 @@ public class DeleteHandler extends AbstractHandler { if (part instanceof FilterView) { FilterView tcv = (FilterView) part; ISelection selection = tcv.getSite().getSelectionProvider().getSelection(); - if (!selection.isEmpty()) { + // only enable if tree is in focus + if (!selection.isEmpty() && tcv.isTreeInFocus()) { return true; } } diff --git a/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/FilterView.java b/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/FilterView.java index 62d1a7f894..2431849281 100644 --- a/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/FilterView.java +++ b/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/FilterView.java @@ -192,6 +192,13 @@ public class FilterView extends TmfView { fViewer.setFocus(); } + /** + * @return whether the tree is in focus or not + */ + public boolean isTreeInFocus() { + return fViewer.isTreeInFocus(); + } + @Override public String toString() { return "[FilterView]"; //$NON-NLS-1$ diff --git a/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/FilterViewer.java b/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/FilterViewer.java index 18aa33fb2a..fab45d592a 100644 --- a/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/FilterViewer.java +++ b/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/FilterViewer.java @@ -356,6 +356,18 @@ class FilterViewer extends Composite { fViewer.removeSelectionChangedListener(listener); } + @Override + public boolean setFocus() { + return fViewer.getControl().setFocus(); + } + + /** + * @return whether the tree is in focus or not + */ + public boolean isTreeInFocus() { + return fViewer.getControl().isFocusControl(); + } + /** * Gets the TreeViewer displaying filters * diff --git a/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/PasteHandler.java b/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/PasteHandler.java index c6e08e8c00..3f1141b0ef 100644 --- a/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/PasteHandler.java +++ b/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/views/filter/PasteHandler.java @@ -78,7 +78,8 @@ public class PasteHandler extends AbstractHandler { sel = v.getFilterRoot(); } ITmfFilterTreeNode objectToPaste = FilterEditUtils.getTransferredTreeNode(); - if (objectToPaste != null && + if (v.isTreeInFocus() && + objectToPaste != null && (sel.getValidChildren().contains(objectToPaste.getNodeName()) || TmfFilterNode.NODE_NAME.equals(objectToPaste.getNodeName()))) { return true; -- 2.34.1