Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Keppler2018-07-30 13:20:13 +0000
committerThomas Wolf2018-08-13 08:11:07 +0000
commite0e135c4f19945495c8fd5393d17bca1cb7b5726 (patch)
tree4308494fd40683d796c308010355b98a0ec87fcf
parent92f786a926795740222dc20388726a9459584bb2 (diff)
downloadegit-e0e135c4f19945495c8fd5393d17bca1cb7b5726.tar.gz
egit-e0e135c4f19945495c8fd5393d17bca1cb7b5726.tar.xz
egit-e0e135c4f19945495c8fd5393d17bca1cb7b5726.zip
Fix filter in reflog view
The pattern filter uses the label provider of the viewer to match. However, tree viewers do not use a label provider at all (but column label providers). Therefore delegate the matching to the column label providers. Bug: 537492 Change-Id: I6865e4a29edec415a61499165003d6d753f22dfb Signed-off-by: Michael Keppler <Michael.Keppler@gmx.de>
-rw-r--r--org.eclipse.egit.gitflow.ui/src/org/eclipse/egit/gitflow/ui/internal/dialogs/FilteredBranchesWidget.java22
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/TreeColumnPatternFilter.java46
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogView.java5
3 files changed, 52 insertions, 21 deletions
diff --git a/org.eclipse.egit.gitflow.ui/src/org/eclipse/egit/gitflow/ui/internal/dialogs/FilteredBranchesWidget.java b/org.eclipse.egit.gitflow.ui/src/org/eclipse/egit/gitflow/ui/internal/dialogs/FilteredBranchesWidget.java
index 9be208942a..ad729fe4dc 100644
--- a/org.eclipse.egit.gitflow.ui/src/org/eclipse/egit/gitflow/ui/internal/dialogs/FilteredBranchesWidget.java
+++ b/org.eclipse.egit.gitflow.ui/src/org/eclipse/egit/gitflow/ui/internal/dialogs/FilteredBranchesWidget.java
@@ -15,6 +15,7 @@ import java.util.List;
import org.eclipse.egit.gitflow.GitFlowRepository;
import org.eclipse.egit.gitflow.ui.internal.UIText;
import org.eclipse.egit.ui.internal.PreferenceBasedDateFormatter;
+import org.eclipse.egit.ui.internal.TreeColumnPatternFilter;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.TreeColumnLayout;
import org.eclipse.jface.viewers.ColumnLabelProvider;
@@ -37,7 +38,6 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.dialogs.PatternFilter;
/**
* Widget for viewing a filtered list of Gitflow branches.
@@ -66,25 +66,9 @@ public class FilteredBranchesWidget {
GridDataFactory.fillDefaults().grab(true, true).span(2, 1).applyTo(area);
area.setLayout(new GridLayout(1, false));
- PatternFilter filter = new PatternFilter() {
- @Override
- protected boolean isLeafMatch(Viewer viewer, Object element) {
- TreeViewer treeViewer = (TreeViewer) viewer;
- int numberOfColumns = treeViewer.getTree().getColumnCount();
- boolean isMatch = false;
- for (int columnIndex = 0; columnIndex < numberOfColumns; columnIndex++) {
- ColumnLabelProvider labelProvider = (ColumnLabelProvider) treeViewer
- .getLabelProvider(columnIndex);
- String labelText = labelProvider.getText(element);
- isMatch |= wordMatches(labelText);
- }
- return isMatch;
- }
- };
- filter.setIncludeLeadingWildcard(true);
-
final FilteredTree tree = new FilteredTree(area, SWT.MULTI | SWT.H_SCROLL
- | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION, filter,
+ | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION,
+ new TreeColumnPatternFilter(),
true);
tree.setQuickSelectionMode(true);
branchesViewer = tree.getViewer();
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/TreeColumnPatternFilter.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/TreeColumnPatternFilter.java
new file mode 100644
index 0000000000..8794ecdc46
--- /dev/null
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/TreeColumnPatternFilter.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (C) 2018 Michael Keppler <michael.keppler@gmx.de>
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.egit.ui.internal;
+
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.ui.dialogs.PatternFilter;
+
+/**
+ * Pattern filter based on the column label providers of a {@link TreeViewer}.
+ */
+public class TreeColumnPatternFilter extends PatternFilter {
+
+ /**
+ * Creates a new tree column based pattern filter with a leading wildcard
+ * character included in the search string.
+ */
+ public TreeColumnPatternFilter() {
+ setIncludeLeadingWildcard(true);
+ }
+
+ @Override
+ protected boolean isLeafMatch(Viewer viewer, Object element) {
+ TreeViewer treeViewer = (TreeViewer) viewer;
+ int numberOfColumns = treeViewer.getTree().getColumnCount();
+ for (int columnIndex = 0; columnIndex < numberOfColumns; columnIndex++) {
+ ColumnLabelProvider labelProvider = (ColumnLabelProvider) treeViewer
+ .getLabelProvider(columnIndex);
+ String labelText = labelProvider.getText(element);
+ if (wordMatches(labelText)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogView.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogView.java
index 5b92489564..8ae1d118b5 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogView.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/reflog/ReflogView.java
@@ -26,6 +26,7 @@ import org.eclipse.egit.ui.UIPreferences;
import org.eclipse.egit.ui.UIUtils;
import org.eclipse.egit.ui.internal.CommonUtils;
import org.eclipse.egit.ui.internal.PreferenceBasedDateFormatter;
+import org.eclipse.egit.ui.internal.TreeColumnPatternFilter;
import org.eclipse.egit.ui.internal.UIIcons;
import org.eclipse.egit.ui.internal.UIText;
import org.eclipse.egit.ui.internal.actions.ResetMenu;
@@ -91,7 +92,6 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
import org.eclipse.ui.contexts.IContextService;
import org.eclipse.ui.dialogs.FilteredTree;
-import org.eclipse.ui.dialogs.PatternFilter;
import org.eclipse.ui.forms.IFormColors;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.events.HyperlinkEvent;
@@ -169,7 +169,8 @@ public class ReflogView extends ViewPart implements RefsChangedListener, IShowIn
final TreeColumnLayout layout = new TreeColumnLayout();
FilteredTree filteredTree = new FilteredTree(tableComposite, SWT.NONE
- | SWT.BORDER | SWT.FULL_SELECTION, new PatternFilter(), true) {
+ | SWT.BORDER | SWT.FULL_SELECTION,
+ new TreeColumnPatternFilter(), true) {
@Override
protected void createControl(Composite composite, int treeStyle) {
super.createControl(composite, treeStyle);

Back to the top