Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWayne Beaton2014-09-30 02:19:33 +0000
committerIgor Fedorenko2014-09-30 14:15:57 +0000
commitba02bfc991792d73c0e2adcf7aa35366a043cf7b (patch)
tree381275d3d300e1e0bb332d332aa7b862aa83f777
parent5657bdf7bd0c7e636b1b4341784140afe33f9f70 (diff)
downloadm2e-core-ba02bfc991792d73c0e2adcf7aa35366a043cf7b.tar.gz
m2e-core-ba02bfc991792d73c0e2adcf7aa35366a043cf7b.tar.xz
m2e-core-ba02bfc991792d73c0e2adcf7aa35366a043cf7b.zip
438767: Filter on pom viewer's Dependencies tab not applied as you type
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=438767 Signed-off-by: Wayne Beaton <wayne@eclipse.org>
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java53
1 files changed, 30 insertions, 23 deletions
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java
index 75503d9b..48716e2c 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java
@@ -49,6 +49,7 @@ import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.operation.IRunnableWithProgress;
@@ -63,6 +64,8 @@ import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
@@ -75,6 +78,7 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.progress.WorkbenchJob;
import org.apache.maven.model.DependencyManagement;
import org.apache.maven.project.MavenProject;
@@ -601,31 +605,34 @@ public class DependenciesComposite extends Composite {
this.searchFilter = new DependencyFilter(searchMatcher);
this.searchControl = searchControl;
- //mkleint: not sure why this is here. searching in the control is both showing less entries and selecting them.
- //it feels like one of these has to go.
-// this.searchControl.getSearchText().addModifyListener(new ModifyListener() {
-// public void modifyText(ModifyEvent e) {
-// selectDepenendencies(dependenciesEditor, model, POM_PACKAGE.getModel_Dependencies());
-// EObject parent = model.getDependencyManagement() != null ? model.getDependencyManagement() : null;
-// selectDepenendencies(dependencyManagementEditor, parent,
-// POM_PACKAGE.getDependencyManagement_Dependencies());
-// }
-//
-// @SuppressWarnings({"unchecked", "rawtypes"})
-// private void selectDepenendencies(PropertiesListComposite<?> editor, EObject parent,
-// EStructuralFeature feature) {
-// if(parent != null) {
-// editor.setSelection((List) parent.eGet(feature));
-// editor.refresh();
-// }
-// }
-// });
//we add filter here as the default behaviour is to filter..
- TableViewer viewer = dependenciesEditor.getViewer();
- viewer.addFilter(searchFilter);
- viewer = dependencyManagementEditor.getViewer();
- viewer.addFilter(searchFilter);
+ final TableViewer dependenciesViewer = dependenciesEditor.getViewer();
+ dependenciesViewer.addFilter(searchFilter);
+ final TableViewer dependencyManagementViewer = dependencyManagementEditor.getViewer();
+ dependencyManagementViewer.addFilter(searchFilter);
+
+ // Create a job to update the contents of the viewers when the
+ // filter text is modified. Using a job is in this way lets us
+ // defer updating the field while the user is typing.
+ final Job updateJob = new WorkbenchJob("Update Maven Dependency Viewers") {
+ public IStatus runInUIThread(IProgressMonitor monitor) {
+ dependenciesViewer.refresh();
+ dependencyManagementViewer.refresh();
+
+ return Status.OK_STATUS;
+ }
+ };
+
+ // Run the update job when the user modifies the filter text.
+ this.searchControl.getSearchText().addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ // The net effect here is that the field will update 200 ms after
+ // the user stops typing.
+ updateJob.cancel();
+ updateJob.schedule(200);
+ }
+ });
}
public static class DependencyFilter extends ViewerFilter {

Back to the top