Skip to content

Commit f9986c8

Browse files
author
Marcin Maka
committed
gst-topo: add search element filter to new element dialog box
Signed-off-by: Marcin Maka <marcin.maka@linux.intel.com>
1 parent f44a3da commit f9986c8

File tree

1 file changed

+49
-6
lines changed

1 file changed

+49
-6
lines changed

org.sofproject.gst.topo/src/org/sofproject/gst/topo/ui/handlers/GstNewElementDialog.java

Lines changed: 49 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,49 @@
3636
import org.eclipse.jface.viewers.IDoubleClickListener;
3737
import org.eclipse.jface.viewers.TableViewer;
3838
import org.eclipse.jface.viewers.TableViewerColumn;
39+
import org.eclipse.jface.viewers.Viewer;
40+
import org.eclipse.jface.viewers.ViewerFilter;
3941
import org.eclipse.swt.SWT;
42+
import org.eclipse.swt.events.KeyAdapter;
43+
import org.eclipse.swt.events.KeyEvent;
4044
import org.eclipse.swt.layout.GridData;
4145
import org.eclipse.swt.layout.GridLayout;
4246
import org.eclipse.swt.widgets.Composite;
4347
import org.eclipse.swt.widgets.Control;
48+
import org.eclipse.swt.widgets.Label;
4449
import org.eclipse.swt.widgets.Shell;
50+
import org.eclipse.swt.widgets.Text;
4551
import org.sofproject.gst.topo.plugins.GstElement;
4652
import org.sofproject.gst.topo.plugins.GstPluginDb;
4753

4854
public class GstNewElementDialog extends TrayDialog {
4955

5056
private GstPluginDb plgDb;
5157
private TableViewer viewer;
58+
private Text grepText;
59+
private GstElementFilter filter;
5260
private GstElement selectedElement;
5361

62+
private class GstElementFilter extends ViewerFilter {
63+
private String filter;
64+
65+
public void setFilterText(String filter) {
66+
this.filter = ".*" + filter + ".*";
67+
}
68+
69+
@Override
70+
public boolean select(Viewer viewer, Object parentElement, Object element) {
71+
if (filter == null || filter.isEmpty()) {
72+
return true;
73+
}
74+
GstElement entry = (GstElement) element;
75+
if (entry.getName().matches(filter)) {
76+
return true;
77+
}
78+
return false;
79+
}
80+
}
81+
5482
public GstNewElementDialog(Shell parentShell, GstPluginDb plgDb) {
5583
super(parentShell);
5684
this.plgDb = plgDb;
@@ -70,14 +98,18 @@ protected void configureShell(Shell shell) {
7098
protected Control createDialogArea(Composite parent) {
7199
Composite container = (Composite) super.createDialogArea(parent);
72100
Composite mainGroup = new Composite(container, SWT.NONE);
73-
GridLayout layout = new GridLayout();
74-
layout.numColumns = 1;
101+
GridLayout layout = new GridLayout(2, false);
75102
mainGroup.setLayout(layout);
76-
mainGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
103+
Label grepLabel = new Label(mainGroup, SWT.NONE);
104+
grepLabel.setText("Search Element: ");
105+
grepText = new Text(mainGroup, SWT.BORDER | SWT.SEARCH);
106+
GridData gridData = new GridData(SWT.FILL, SWT.CENTER, true, false);
107+
grepText.setLayoutData(gridData);
77108

78109
viewer = new TableViewer(mainGroup, SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
79110

80-
GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
111+
gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
112+
gridData.horizontalSpan = 2;
81113
gridData.heightHint = 15 * viewer.getTable().getItemHeight();
82114
viewer.getTable().setLayoutData(gridData);
83115

@@ -109,12 +141,23 @@ public String getText(Object element) {
109141

110142
@Override
111143
public void doubleClick(DoubleClickEvent event) {
112-
buttonPressed(OK);
144+
buttonPressed(OK);
145+
}
146+
});
147+
148+
grepText.addKeyListener(new KeyAdapter() {
149+
@Override
150+
public void keyReleased(KeyEvent ke) {
151+
filter.setFilterText(grepText.getText().trim());
152+
viewer.refresh();
113153
}
114154
});
155+
filter = new GstElementFilter();
156+
viewer.addFilter(filter);
115157

116158
viewer.setInput(plgDb.getAllElements());
117-
viewer.getControl().setFocus();
159+
160+
grepText.setFocus();
118161

119162
return container;
120163
}

0 commit comments

Comments
 (0)