Author: koen.aers(a)jboss.com
Date: 2011-08-26 11:07:45 -0400 (Fri, 26 Aug 2011)
New Revision: 34343
Modified:
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/dialog/ForgeCommandListDialog.java
Log:
JBIDE-9543
Modified:
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/dialog/ForgeCommandListDialog.java
===================================================================
---
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/dialog/ForgeCommandListDialog.java 2011-08-26
15:06:00 UTC (rev 34342)
+++
trunk/forge/plugins/org.jboss.tools.forge.ui/src/org/jboss/tools/forge/ui/dialog/ForgeCommandListDialog.java 2011-08-26
15:07:45 UTC (rev 34343)
@@ -1,5 +1,6 @@
package org.jboss.tools.forge.ui.dialog;
+import java.util.Map.Entry;
import java.util.SortedMap;
import java.util.SortedSet;
import java.util.StringTokenizer;
@@ -10,6 +11,8 @@
import org.eclipse.jface.dialogs.PopupDialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
@@ -21,8 +24,6 @@
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
@@ -33,10 +34,15 @@
private ForgeRuntime runtime = null;
+ private SortedMap<String, SortedSet<String>> allCandidates = null;
+
private Tree tree;
private Text filterText;
- private TreeItem selectedItem;
+// private TreeItem selectedItem;
+
+ private String selectedPlugin = "";
+ private String selectedCommand = "";
public ForgeCommandListDialog(IWorkbenchWindow window, ForgeRuntime runtime) {
super(window.getShell(),
@@ -49,9 +55,10 @@
"Select the command you want Forge to execute",
"Start typing to filter the list");
this.runtime = runtime;
+ this.allCandidates = getAllCandidates();
}
- private SortedMap<String, SortedSet<String>> getCandidates() {
+ private SortedMap<String, SortedSet<String>> getAllCandidates() {
SortedMap<String, SortedSet<String>> result = new TreeMap<String,
SortedSet<String>>();
String pluginCandidates = runtime.sendCommand("plugin-candidates-query");
SortedSet<String> currentCommands = null;
@@ -72,12 +79,30 @@
}
return result;
}
-
- protected Control createDialogArea(Composite parent) {
- Composite result = (Composite)super.createDialogArea(parent);
- result.setLayout(new FillLayout());
- tree = new Tree(result, SWT.SINGLE | SWT.V_SCROLL);
- SortedMap<String, SortedSet<String>> candidates = getCandidates();
+
+ private void refreshTree() {
+ String filter = filterText.getText();
+ if ("".equals(filter)) {
+ createTree(allCandidates, false);
+ } else {
+ SortedMap<String, SortedSet<String>> candidates = new TreeMap<String,
SortedSet<String>>();
+ for (Entry<String, SortedSet<String>> entry : allCandidates.entrySet()) {
+ SortedSet<String> set = new TreeSet<String>();
+ for (String candidate : entry.getValue()) {
+ if (candidate.indexOf(filter) != -1) {
+ set.add(candidate);
+ }
+ }
+ if ((entry.getKey().indexOf(filter) != -1 || !set.isEmpty())) {
+ candidates.put(entry.getKey(), set);
+ }
+ }
+ createTree(candidates, true);
+ }
+ }
+
+ private void createTree(SortedMap<String, SortedSet<String>> candidates,
boolean expand) {
+ tree.removeAll();
for (String plugin : candidates.keySet()) {
TreeItem pluginItem = new TreeItem(tree, SWT.NONE);
pluginItem.setText(plugin);
@@ -86,19 +111,29 @@
TreeItem commandItem = new TreeItem(pluginItem, SWT.NONE);
commandItem.setText(command);
}
- pluginItem.addListener(SWT.MouseDoubleClick, new Listener() {
-
- @Override
- public void handleEvent(Event event) {
- System.out.println("plugin item doubleclicked :" + event.widget);
- }
- });
+ pluginItem.setExpanded(expand);
}
+ }
+
+ protected Control createDialogArea(Composite parent) {
+ Composite result = (Composite)super.createDialogArea(parent);
+ result.setLayout(new FillLayout());
+ tree = new Tree(result, SWT.SINGLE | SWT.V_SCROLL);
tree.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if (e.item instanceof TreeItem) {
- selectedItem = (TreeItem)e.item;
+ TreeItem selectedItem = (TreeItem)e.item;
+ if (selectedItem.getParentItem() != null) {
+ selectedPlugin = selectedItem.getParentItem().getText();
+ selectedCommand = selectedItem.getText();
+ if (selectedPlugin.equals(selectedCommand)) {
+ selectedCommand = "";
+ }
+ } else {
+ selectedPlugin = selectedItem.getText();
+ selectedCommand = "";
+ }
}
}
});
@@ -108,22 +143,13 @@
insertCommand();
}
});
+ refreshTree();
return result;
}
private void insertCommand() {
- String str = "";
- if (selectedItem != null && selectedItem.getText() != null) {
- str = selectedItem.getText();
- }
- TreeItem parentItem = selectedItem.getParentItem();
- if (parentItem != null) {
- String parentString = parentItem.getText();
- if (parentString != null && !parentString.equals(str)) {
- str = parentString + " " + str;
- }
- }
- runtime.sendInput(str);
+ String str = selectedPlugin + " " + selectedCommand;
+ runtime.sendInput(str.trim());
close();
}
@@ -150,49 +176,19 @@
protected Control createTitleControl(Composite parent) {
filterText = new Text(parent, SWT.NONE);
-
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false)
- .applyTo(filterText);
+ .applyTo(filterText);
+ filterText.addModifyListener(new ModifyListener() {
+
+ @Override
+ public void modifyText(ModifyEvent e) {
+ refreshTree();
+ }
+ });
+ return filterText;
+ }
-// filterText.addKeyListener(getKeyAdapter());
-// filterText.addKeyListener(new KeyListener() {
-// public void keyPressed(KeyEvent e) {
-// switch (e.keyCode) {
-// case SWT.CR:
-// case SWT.KEYPAD_CR:
-// handleSelection();
-// break;
-// case SWT.ARROW_DOWN:
-// int index = table.getSelectionIndex();
-// if (index != -1 && table.getItemCount() > index + 1) {
-// table.setSelection(index + 1);
-// }
-// table.setFocus();
-// break;
-// case SWT.ARROW_UP:
-// index = table.getSelectionIndex();
-// if (index != -1 && index >= 1) {
-// table.setSelection(index - 1);
-// table.setFocus();
-// }
-// break;
-// case SWT.ESC:
-// close();
-// break;
-// }
-// }
-//
-// public void keyReleased(KeyEvent e) {
-// // do nothing
-// }
-// });
-// filterText.addModifyListener(new ModifyListener() {
-// public void modifyText(ModifyEvent e) {
-// String text = ((Text) e.widget).getText().toLowerCase();
-// refresh(text);
-// }
-// });
-
+ protected Control getFocusControl() {
return filterText;
}
Show replies by date