|
From: <caw...@us...> - 2007-09-07 12:27:57
|
Revision: 3099
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=3099&view=rev
Author: cawilliams
Date: 2007-09-07 05:27:52 -0700 (Fri, 07 Sep 2007)
Log Message:
-----------
fix InstallGemDialog to do a better, more responsive job of filtering the remote gem listings as users type in text in the name field.
Modified Paths:
--------------
trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/InstallGemDialog.java
Modified: trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/InstallGemDialog.java
===================================================================
--- trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/InstallGemDialog.java 2007-09-06 19:59:45 UTC (rev 3098)
+++ trunk/com.aptana.rdt.ui/src/com/aptana/rdt/ui/gems/InstallGemDialog.java 2007-09-07 12:27:52 UTC (rev 3099)
@@ -63,13 +63,15 @@
GridData nameTextData = new GridData();
nameTextData.widthHint = 150;
nameText.setLayoutData(nameTextData);
+ final MyViewerFilter filter = new MyViewerFilter();
nameText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
if (filterByText) {
- getShell().getDisplay().syncExec(new Runnable() {
+ getShell().getDisplay().asyncExec(new Runnable() {
public void run() {
+ filter.setText(nameText.getText());
gemViewer.refresh();
}
});
@@ -112,7 +114,7 @@
gemViewer.setContentProvider(contentProvider);
TableViewerSorter.bind(gemViewer);
gemViewer.setInput(AptanaRDTPlugin.getDefault().getGemManager().getRemoteGems());
- gemViewer.addFilter(new MyViewerFilter(nameText));
+ gemViewer.addFilter(filter);
gemViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@@ -158,17 +160,21 @@
private static class MyViewerFilter extends ViewerFilter {
- private Text text;
+ private String value;
- public MyViewerFilter(Text text) {
- this.text = text;
+ public void setText(String value) {
+ if (value == null) {
+ this.value = null;
+ } else {
+ this.value = value.toLowerCase();
+ }
}
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
+ if (value == null || value.trim().length() == 0) return true;
Gem gem = (Gem) element;
- // TODO If there's no text show nothing?
- return gem.getName().toLowerCase().startsWith(text.getText().toLowerCase());
+ return gem.getName().toLowerCase().startsWith(value);
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|