Skip to content

Commit 84a8870

Browse files
committed
Drop Down menu in Quick Search implemented
1 parent 4440958 commit 84a8870

File tree

2 files changed

+43
-9
lines changed

2 files changed

+43
-9
lines changed

bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/DialogSettings.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.util.ArrayList;
3232
import java.util.Collection;
3333
import java.util.LinkedHashMap;
34+
import java.util.LinkedList;
3435
import java.util.List;
3536
import java.util.Map;
3637
import java.util.Map.Entry;
@@ -87,6 +88,8 @@ public class DialogSettings implements IDialogSettings {
8788

8889
// A Map with all the keys mapped to array of strings.
8990
private Map<String, String[]> arrayItems;
91+
private LinkedList<String[]> lastFiveSearches;
92+
private static final int SEARCHES_DISPLAYED = 5;
9093

9194
private static final String TAG_SECTION = "section";//$NON-NLS-1$
9295

@@ -113,6 +116,7 @@ public DialogSettings(String sectionName) {
113116
items = new LinkedHashMap<>();
114117
arrayItems = new LinkedHashMap<>();
115118
sections = new LinkedHashMap<>();
119+
lastFiveSearches = new LinkedList<>();
116120
}
117121

118122
@Override
@@ -364,6 +368,21 @@ public void put(String key, String value) {
364368
}
365369
}
366370

371+
public void inputNewSearch(String text, String SearchIn) {
372+
lastFiveSearches.addFirst(new String[] { text, SearchIn });
373+
374+
if (lastFiveSearches.size() > SEARCHES_DISPLAYED) {
375+
lastFiveSearches.removeLast();
376+
}
377+
}
378+
379+
public LinkedList<String[]> getLastSearches() {
380+
if (lastFiveSearches.isEmpty()) {
381+
return null;
382+
}
383+
return lastFiveSearches;
384+
}
385+
367386
@Override
368387
public void put(String key, boolean value) {
369388
put(key, String.valueOf(value));

bundles/org.eclipse.text.quicksearch/src/org/eclipse/text/quicksearch/internal/ui/QuickSearchDialog.java

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import static org.eclipse.jface.resource.JFaceResources.TEXT_FONT;
2424

25+
import java.awt.event.ItemEvent;
2526
import java.util.ArrayList;
2627
import java.util.Arrays;
2728
import java.util.Collections;
@@ -41,6 +42,7 @@
4142
import org.eclipse.jface.action.IMenuManager;
4243
import org.eclipse.jface.action.LegacyActionTools;
4344
import org.eclipse.jface.action.MenuManager;
45+
import org.eclipse.jface.dialogs.DialogSettings;
4446
import org.eclipse.jface.dialogs.IDialogConstants;
4547
import org.eclipse.jface.dialogs.IDialogSettings;
4648
import org.eclipse.jface.layout.GridDataFactory;
@@ -83,6 +85,7 @@
8385
import org.eclipse.swt.layout.GridData;
8486
import org.eclipse.swt.layout.GridLayout;
8587
import org.eclipse.swt.widgets.Button;
88+
import org.eclipse.swt.widgets.Combo;
8689
import org.eclipse.swt.widgets.Composite;
8790
import org.eclipse.swt.widgets.Control;
8891
import org.eclipse.swt.widgets.Display;
@@ -369,7 +372,7 @@ public void update(ViewerCell cell) {
369372
private Label headerLabel;
370373

371374
private IWorkbenchWindow window;
372-
private Text searchIn;
375+
private Combo searchIn;
373376
private Label listLabel;
374377

375378
/**
@@ -409,16 +412,20 @@ public void create() {
409412
*/
410413
protected void restoreDialog(IDialogSettings settings) {
411414
try {
412-
if (initialPatternText==null) {
413-
String lastSearch = settings.get(DIALOG_LAST_QUERY);
415+
DialogSettings dialogSettings = (DialogSettings) settings;
416+
417+
if (initialPatternText==null && dialogSettings.getLastSearches() != null) {
418+
String lastSearch = dialogSettings.getLastSearches().getFirst()[0];
419+
414420
if (lastSearch==null) {
415421
lastSearch = EMPTY_STRING;
416422
}
417423
pattern.setText(lastSearch);
418424
pattern.selectAll();
419425
}
420-
if (settings.get(DIALOG_PATH_FILTER)!=null) {
421-
String filter = settings.get(DIALOG_PATH_FILTER);
426+
if (dialogSettings.getLastSearches() != null && dialogSettings.getLastSearches().getFirst()[1]!=null ) {
427+
String filter = dialogSettings.getLastSearches().getFirst()[1];
428+
searchIn.setItems(searchInStrings(dialogSettings.getLastSearches()));
422429
searchIn.setText(filter);
423430
}
424431

@@ -452,6 +459,14 @@ protected void restoreDialog(IDialogSettings settings) {
452459
}
453460
}
454461

462+
private String[] searchInStrings (List<String[]> list) {
463+
String[] strings = new String[list.size()];
464+
for(int i = 0; i < list.size(); i++) {
465+
strings[i] = list.get(i)[1];
466+
}
467+
return strings;
468+
}
469+
455470
private class ToggleKeepOpenAction extends Action {
456471
public ToggleKeepOpenAction(IDialogSettings settings) {
457472
super(
@@ -531,9 +546,9 @@ public boolean close() {
531546
* settings used to store dialog
532547
*/
533548
protected void storeDialog(IDialogSettings settings) {
534-
String currentSearch = pattern.getText();
535-
settings.put(DIALOG_LAST_QUERY, currentSearch);
536-
settings.put(DIALOG_PATH_FILTER, searchIn.getText());
549+
DialogSettings dialogSettings = (DialogSettings) settings;
550+
dialogSettings.inputNewSearch(pattern.getText(), searchIn.getText());
551+
537552
if (toggleCaseSensitiveAction!=null) {
538553
settings.put(CASE_SENSITIVE, toggleCaseSensitiveAction.isChecked());
539554
}
@@ -755,7 +770,7 @@ public void getName(AccessibleEvent e) {
755770
Label searchInLabel = new Label(searchInComposite, SWT.NONE);
756771
searchInLabel.setText(Messages.QuickSearchDialog_In);
757772
GridDataFactory.swtDefaults().indent(5, 0).applyTo(searchInLabel);
758-
searchIn = new Text(searchInComposite, SWT.SINGLE | SWT.BORDER | SWT.ICON_CANCEL);
773+
searchIn = new Combo(searchInComposite, SWT.SINGLE | SWT.BORDER | SWT.ICON_CANCEL);
759774
searchIn.setToolTipText(Messages.QuickSearchDialog_InTooltip);
760775
GridDataFactory.fillDefaults().grab(true, false).indent(5, 0).applyTo(searchIn);
761776

0 commit comments

Comments
 (0)