List of usage examples for org.eclipse.jface.viewers TableViewer setContentProvider
@Override public void setContentProvider(IContentProvider provider)
AbstractTableViewer
. From source file:com.mountainminds.eclemma.internal.ui.dialogs.CoveragePropertyPage.java
License:Open Source License
private Control createTable(Composite parent) { final Table table = new Table(parent, SWT.BORDER); initializeDialogUnits(table);/*w w w . ja v a 2 s . c o m*/ table.setHeaderVisible(true); table.setLinesVisible(true); TableViewer viewer = new TableViewer(table); createColumn(viewer, SWT.LEFT, 20, UIMessages.CoveragePropertyPageColumnCounter_label, new CellLabelProvider() { @Override public void update(ViewerCell cell) { final Line line = (Line) cell.getElement(); cell.setText(line.label); } }); createColumn(viewer, SWT.RIGHT, 20, UIMessages.CoveragePropertyPageColumnCoverage_label, new OwnerDrawLabelProvider() { @Override public void update(ViewerCell cell) { final Line line = (Line) cell.getElement(); cell.setText(COVERAGE_VALUE.format(line.counter.getCoveredRatio())); } @Override protected void paint(Event event, Object element) { final Line line = (Line) element; RedGreenBar.draw(event, table.getColumn(1).getWidth(), line.counter); } @Override protected void erase(Event event, Object element) { } @Override protected void measure(Event event, Object element) { } }); createColumn(viewer, SWT.RIGHT, 16, UIMessages.CoveragePropertyPageColumnCovered_label, new CellLabelProvider() { @Override public void update(ViewerCell cell) { final Line line = (Line) cell.getElement(); cell.setText(COUNTER_VALUE.format(line.counter.getCoveredCount())); } }); createColumn(viewer, SWT.RIGHT, 16, UIMessages.CoveragePropertyPageColumnMissed_label, new CellLabelProvider() { @Override public void update(ViewerCell cell) { final Line line = (Line) cell.getElement(); cell.setText(COUNTER_VALUE.format(line.counter.getMissedCount())); } }); createColumn(viewer, SWT.RIGHT, 16, UIMessages.CoveragePropertyPageColumnTotal_label, new CellLabelProvider() { @Override public void update(ViewerCell cell) { final Line line = (Line) cell.getElement(); cell.setText(COUNTER_VALUE.format(line.counter.getTotalCount())); } }); viewer.setContentProvider(new ArrayContentProvider()); viewer.addFilter(new ViewerFilter() { public boolean select(Viewer viewer, Object parentElement, Object element) { return ((Line) element).counter.getTotalCount() != 0; } }); viewer.setInput(getLines()); return table; }
From source file:com.mountainminds.eclemma.internal.ui.editors.SessionDataPage.java
License:Open Source License
@Override protected void createFormContent(IManagedForm managedForm) { final FormToolkit toolkit = managedForm.getToolkit(); final ScrolledForm form = managedForm.getForm(); form.setText(ExecutionDataEditorSessionsPage_title); toolkit.decorateFormHeading(form.getForm()); final Composite body = form.getBody(); GridLayoutFactory.swtDefaults().applyTo(body); final Table sessionTable = toolkit.createTable(body, SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.BORDER); GridDataFactory.fillDefaults().grab(true, true).applyTo(sessionTable); sessionTable.setHeaderVisible(true); sessionTable.setLinesVisible(true);//from ww w . j a va 2 s.co m final TableViewer sessionTableViewer = new TableViewer(sessionTable); final TableViewerColumn sessionIdColumnViewer = new TableViewerColumn(sessionTableViewer, SWT.NONE); sessionIdColumnViewer.setLabelProvider(new SessionIdColumnLabelProvider()); final TableColumn sessionIdColumn = sessionIdColumnViewer.getColumn(); sessionIdColumn.setText(ExecutionDataEditorSessionsPageColumnSessionId_label); sessionIdColumn.setWidth(300); final TableViewerColumn startTimeColumnViewer = new TableViewerColumn(sessionTableViewer, SWT.NONE); startTimeColumnViewer.setLabelProvider(new StartTimeColumnLabelProvider()); final TableColumn startTimeColumn = startTimeColumnViewer.getColumn(); startTimeColumn.setText(ExecutionDataEditorSessionsPageColumnStartTime_label); startTimeColumn.setWidth(200); final TableViewerColumn dumpTimeColumnViewer = new TableViewerColumn(sessionTableViewer, SWT.NONE); dumpTimeColumnViewer.setLabelProvider(new DumpTimeColumnLabelProvider()); final TableColumn dumpTimeColumn = dumpTimeColumnViewer.getColumn(); dumpTimeColumn.setText(ExecutionDataEditorSessionsPageColumnDumpTime_label); dumpTimeColumn.setWidth(200); sessionTable.setSortColumn(startTimeColumn); sessionTable.setSortDirection(SWT.UP); sessionTableViewer.setContentProvider(new AbstractExecutionDataContentProvider() { public Object[] getElements(ExecutionDataContent content) { return content.getSessionInfos(); } }); sessionTableViewer.setInput(content); }
From source file:com.mousefeed.eclipse.preferences.ActionInvocationModeControl.java
License:Open Source License
/** * Creates a table viewer to initialize {@link #tableViewer}. * @return the new table viewer. Not <code>null</code>. *//*from w w w . j a v a 2s . co m*/ private TableViewer createTableViewer() { final TableViewer viewer = new TableViewer(table); viewer.setContentProvider(new ActionInvocationModeTableContentProvider()); viewer.setLabelProvider(new ActionInvocationModeTableLabelProvider()); new TableEditor(table); viewer.setCellEditors(new CellEditor[] { null, createOnWrongInvocationModeCellEditor() }); viewer.setColumnProperties(new String[] { Column.LABEL.name(), Column.MODE.name() }); viewer.setCellModifier(new ActionInvocationModeTableCellModifier(viewer)); viewer.setInput(actionModes); return viewer; }
From source file:com.nextep.datadesigner.beng.gui.VersionViewDeliveriesEditor.java
License:Open Source License
@Override public Control createSWTControl(Composite parent) { sash = new SashForm(parent, SWT.HORIZONTAL); GridData gd = new GridData(); gd.widthHint = 100;//from w w w . j a v a 2s .c om gd.heightHint = 300; sash.setLayoutData(gd); final Composite leftComposite = new Composite(sash, SWT.NONE); final GridLayout grid = new GridLayout(1, false); grid.marginBottom = grid.marginHeight = grid.marginLeft = grid.marginRight = grid.marginTop = 0; leftComposite.setLayout(grid); final Table deliveriesTab = DeliveryListTable.create(leftComposite); GridData dlvTabData = new GridData(SWT.FILL, SWT.FILL, true, true); dlvTabData.widthHint = 250; dlvTabData.heightHint = 300; deliveriesTab.setLayoutData(dlvTabData); deliveriesTableViewer = new TableViewer(deliveriesTab); deliveriesTableViewer.setContentProvider(new VendorDeliveriesContentProvider()); deliveriesTableViewer.setLabelProvider(new DeliveryInfoTableLabelProvider()); deliveriesTableViewer.setComparator(new TableColumnSorter(deliveriesTab, deliveriesTableViewer)); setControl(sash); final Composite rightComposite = new Composite(sash, SWT.NONE); final GridLayout rightGrid = new GridLayout(1, false); rightGrid.marginBottom = rightGrid.marginHeight = rightGrid.marginLeft = rightGrid.marginRight = rightGrid.marginTop = 0; rightComposite.setLayout(rightGrid); final Table containerInfoTab = ContainerInfoTable.create(rightComposite); final TableViewer contentsTable = new TableViewer(containerInfoTab); contentsTable.setContentProvider(new DeliveryContainerInfoContentProvider()); contentsTable.setLabelProvider(new ContainerInfoLabelProvider()); GridData contData = new GridData(SWT.FILL, SWT.FILL, true, true); contData.widthHint = 150; contData.heightHint = 300; containerInfoTab.setLayoutData(contData); deliveriesTableViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); selectedDelivery = (IDeliveryInfo) selection.getFirstElement(); contentsTable.setInput(selectedDelivery); setPageComplete(true); } }); sash.pack(); return sash; }
From source file:com.nextep.designer.dbgm.ui.editors.DomainEditorComponent.java
License:Open Source License
@Override public Control create(Composite parent) { final Composite editor = new Composite(parent, SWT.NONE); GridLayout l = new GridLayout(2, false); l.marginBottom = l.marginHeight = l.marginLeft = l.marginRight = l.marginTop = l.marginWidth = 0; editor.setLayout(l);/*from w w w. j a v a 2s . c o m*/ Table t = DomainTable.create(editor); GridData gd = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 2); gd.heightHint = 250; t.setLayoutData(gd); domainViewer = new TableViewer(t); final DomainContentProvider provider = new DomainContentProvider(); domainViewer.setContentProvider(provider); domainViewer.setLabelProvider(new DomainLabelProvider()); CellEditor[] editors = new CellEditor[5]; editors[1] = new TextCellEditor(t); editors[2] = new TextCellEditor(t); editors[3] = new TextCellEditor(t); editors[4] = new TextCellEditor(t); domainViewer.setCellEditors(editors); domainViewer.setColumnProperties(new String[] { COL_SEL, COL_NAME, COL_DESC, COL_LENGTH, COL_PRECISION }); domainViewer.setSorter(new ViewerSorter()); domainViewer.setCellModifier(new ICellModifier() { @Override public boolean canModify(Object element, String property) { return !COL_SEL.equals(property); } @Override public Object getValue(Object element, String property) { final IDomain d = (IDomain) element; if (COL_NAME.equals(property)) { return notNull(d.getName()); } if (COL_DESC.equals(property)) { return notNull(d.getDescription()); } if (COL_LENGTH.equals(property)) { return notNull(d.getLengthExpr()); } if (COL_PRECISION.equals(property)) { return notNull(d.getPrecisionExpr()); } return null; } @Override public void modify(Object element, String property, Object value) { final IDomain d = (IDomain) ((TableItem) element).getData(); if (COL_NAME.equals(property)) { d.setName((String) value); } else if (COL_DESC.equals(property)) { d.setDescription((String) value); } else if (COL_LENGTH.equals(property)) { d.setLengthExpr((String) value); } else if (COL_PRECISION.equals(property)) { d.setPrecisionExpr((String) value); } } }); Button addButton = new Button(editor, SWT.PUSH); addButton.setText(UIMessages.getString("component.typedListBlock.add")); //$NON-NLS-1$ addButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); addButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { IDomain d = (IDomain) UIControllerFactory.getController(IElementType.getInstance(IDomain.TYPE_ID)) .newInstance(null); provider.add(d); domainViewer.editElement(d, 1); } }); Button removeButton = new Button(editor, SWT.PUSH); removeButton.setText(UIMessages.getString("component.typedListBlock.remove")); //$NON-NLS-1$ removeButton.setLayoutData(new GridData(SWT.FILL, SWT.UP, false, false)); removeButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { ISelection s = domainViewer.getSelection(); if (s instanceof IStructuredSelection) { for (Object o : ((IStructuredSelection) s).toList()) { final IDomain d = (IDomain) o; // Removing vendor types for (IDomainVendorType t : new ArrayList<IDomainVendorType>(d.getVendorTypes())) { d.removeVendorType(t); } CorePlugin.getIdentifiableDao().delete(d); // Removing domain domainViewer.remove(d); } } } }); final IDatatypeService datatypeService = CorePlugin.getService(IDatatypeService.class); datatypeService.reset(); final Collection<IDomain> domains = datatypeService.getDomains(); domainViewer.setInput(domains); // Domain vendor type section final Table typeTab = DomainTable.createDomainType(editor); final TableViewer typeViewer = new TableViewer(typeTab); GridData typeData = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 2); typeData.heightHint = 200; typeTab.setLayoutData(typeData); Button addTypeButton = new Button(editor, SWT.PUSH); addTypeButton.setText(UIMessages.getString("component.typedListBlock.add")); //$NON-NLS-1$ addTypeButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); addTypeButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { final IDomain domain = getSelectedDomain(); if (domain == null) { MessageDialog.openWarning(editor.getShell(), DBGMUIMessages.getString("domainPrefNoSelectionTitle"), //$NON-NLS-1$ DBGMUIMessages.getString("domainPrefNoSelection")); //$NON-NLS-1$ return; } final Object o = UIControllerFactory .getController(IElementType.getInstance(IDomainVendorType.TYPE_ID)) .emptyInstance(null, domain); typeViewer.editElement(o, 0); } }); Button removeTypeButton = new Button(editor, SWT.PUSH); removeTypeButton.setText(UIMessages.getString("component.typedListBlock.remove")); //$NON-NLS-1$ removeTypeButton.setLayoutData(new GridData(SWT.FILL, SWT.UP, false, false)); typeViewer.setContentProvider(new DomainTypeContentProvider()); typeViewer.setLabelProvider(new DomainTypeLabelProvider()); typeViewer.setColumnProperties(new String[] { COL_VENDOR, COL_TYPE, COL_LENGTH, COL_PRECISION }); CellEditor[] typeEditors = new CellEditor[4]; typeEditors[0] = new ComboBoxCellEditor(typeTab, sortedVendors.toArray(new String[sortedVendors.size()]), SWT.READ_ONLY); typeEditors[1] = new TextCellEditor(typeTab); typeEditors[2] = new TextCellEditor(typeTab); typeEditors[3] = new TextCellEditor(typeTab); typeViewer.setCellEditors(typeEditors); typeViewer.setCellModifier(new ICellModifier() { @Override public boolean canModify(Object element, String property) { return true; } @Override public Object getValue(Object element, String property) { IDomainVendorType t = (IDomainVendorType) element; if (COL_VENDOR.equals(property)) { if (t.getDBVendor() != null) { return sortedVendors.indexOf(t.getDBVendor().toString()); } else { return 0; } } else if (COL_TYPE.equals(property)) { if (t.getDatatype() != null) { return notNull(t.getDatatype().getName()); } else { return ""; //$NON-NLS-1$ } } else if (COL_LENGTH.equals(property)) { if (t.getDatatype() != null && t.getDatatype().getLength() != null) { return String.valueOf(t.getDatatype().getLength()); } else { return ""; //$NON-NLS-1$ } } else if (COL_PRECISION.equals(property)) { if (t.getDatatype() != null && t.getDatatype().getPrecision() != null) { return String.valueOf(t.getDatatype().getPrecision()); } else { return ""; //$NON-NLS-1$ } } return null; } @Override public void modify(Object element, String property, Object value) { IDomainVendorType t = (IDomainVendorType) ((TableItem) element).getData(); if (COL_VENDOR.equals(property)) { String val = sortedVendors.get((Integer) value); for (DBVendor v : DBVendor.values()) { if (v.toString().equals(val)) { t.setDBVendor(v); } } } else if (COL_TYPE.equals(property)) { if (t.getDatatype() == null) { t.setDatatype(Datatype.getDefaultDatatype()); } t.getDatatype().setName((String) value); t.notifyListeners(ChangeEvent.MODEL_CHANGED, null); } else if (COL_LENGTH.equals(property)) { try { if (value != null && !"".equals(((String) value).trim())) { //$NON-NLS-1$ t.getDatatype().setLength(Integer.valueOf((String) value)); } else { t.getDatatype().setLength(null); } } catch (NumberFormatException e) { t.getDatatype().setLength(null); } t.notifyListeners(ChangeEvent.MODEL_CHANGED, null); } else if (COL_PRECISION.equals(property)) { try { if (value != null && !"".equals(((String) value).trim())) { //$NON-NLS-1$ t.getDatatype().setPrecision(Integer.valueOf((String) value)); } else { t.getDatatype().setPrecision(null); } } catch (NumberFormatException e) { t.getDatatype().setPrecision(null); } t.notifyListeners(ChangeEvent.MODEL_CHANGED, null); } } }); domainViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { if (event.getSelection() instanceof IStructuredSelection) { final IStructuredSelection sel = (IStructuredSelection) event.getSelection(); if (!sel.isEmpty()) { typeViewer.setInput(sel.getFirstElement()); } else { typeViewer.setInput(null); } } } }); removeTypeButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { ISelection s = typeViewer.getSelection(); if (s instanceof IStructuredSelection) { final IStructuredSelection sel = (IStructuredSelection) s; if (!sel.isEmpty()) { for (Object o : sel.toList()) { if (o instanceof IDomainVendorType) { final IDomainVendorType vt = (IDomainVendorType) o; vt.getDomain().removeVendorType(vt); } } } } } }); return editor; }
From source file:com.nextep.designer.dbgm.ui.handlers.AddTableToDiagramHandler.java
License:Open Source License
/** * Prompts the user to select tables which will be added to the diagram * // w w w. j a v a 2s .c om * @param event handler event * @param diagram diagram to add the selection to */ private void promptForTableAdditions(ExecutionEvent event, final IDiagram diagram) { final Shell s = new Shell(HandlerUtil.getActiveShell(event), SWT.TITLE | SWT.RESIZE | SWT.CLOSE); s.setText(DBGMUIMessages.getString("addTablesToDiagramTitle")); s.setSize(500, 400); Rectangle pRect = s.getParent().getBounds(); Rectangle cRect = s.getBounds(); Point location = new Point(Math.max(0, pRect.x + pRect.width / 2 - cRect.width / 2), Math.max(0, pRect.y + pRect.height / 2 - cRect.height / 2)); s.setLocation(location); s.setLayout(new GridLayout(1, false)); final TableViewer viewer = new TableViewer(s, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION); final TablesNotInDiagramContentProvider contentProvider = new TablesNotInDiagramContentProvider(diagram); viewer.setContentProvider(contentProvider); viewer.setLabelProvider(new VersionableLabelProvider()); viewer.setInput(VersionHelper.getCurrentView()); if (contentProvider.isEmpty()) { MessageDialog.openInformation(HandlerUtil.getActiveShell(event), DBGMUIMessages.getString("allTablesAlreadyInDiagramTitle"), DBGMUIMessages.getString("allTablesAlreadyInDiagram")); return; } viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); Button okButton = new Button(s, SWT.PUSH); okButton.setText(" Ok "); okButton.setLayoutData(new GridData(SWT.END, SWT.FILL, false, false)); okButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { addSelectionToDiagram(diagram, viewer.getSelection()); s.dispose(); } }); // s.pack(); s.open(); while (!s.isDisposed()) { try { if (!s.getDisplay().readAndDispatch()) s.getDisplay().sleep(); } catch (ErrorException e) { // An error might happen s.dispose(); } } }
From source file:com.nextep.designer.dbgm.ui.services.impl.DatabaseModelUIService.java
License:Open Source License
@Override public Composite createColumnEditor(IWorkbenchPart part, Composite parentComposite, IColumnable parent) { final Table columnsTable = createColumnsTable(parentComposite); columnsTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); final TableViewer columnViewer = new TableViewer(columnsTable); columnViewer.setLabelProvider(new ColumnTableLabelProvider()); columnViewer.setContentProvider(new ColumnsContentProvider()); // Setting up editors for every column CellEditor[] editors = new CellEditor[6]; editors[0] = new TextCellEditor(columnsTable); editors[1] = new TextCellEditor(columnsTable); editors[2] = new TextCellEditor(columnsTable); editors[3] = new TextCellEditor(columnsTable); editors[4] = new CheckboxCellEditor(columnsTable); editors[5] = new TextCellEditor(columnsTable); columnViewer.setCellEditors(editors); columnViewer.setColumnProperties(new String[] { ColumnCellModifier.PROP_NAME, ColumnCellModifier.PROP_DATATYPE, ColumnCellModifier.PROP_LENGTH, ColumnCellModifier.PROP_PRECISION, ColumnCellModifier.PROP_NOTNULL, ColumnCellModifier.PROP_DEFAULT }); // Setting up the modifier which fetches information from model and set modifications back columnViewer.setCellModifier(new ColumnCellModifier()); columnViewer.setInput(parent);//w w w .j a v a 2s . c om registerContextMenu(columnViewer, part); columnViewer.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(DoubleClickEvent event) { if (event.getSelection() instanceof IStructuredSelection) { final ITypedObject o = (ITypedObject) ((IStructuredSelection) event.getSelection()) .getFirstElement(); final ITypedObjectUIController controller = UIControllerFactory.getController(o); controller.defaultOpen(o); } } }); return columnsTable; }
From source file:com.nextep.designer.sqlgen.ui.impl.SQLSearchViewPage.java
License:Open Source License
@Override protected void configureTableViewer(TableViewer viewer) { provider = new SQLSearchTreeNewContentProvider(viewer); viewer.setContentProvider(provider); viewer.setLabelProvider(new DecoratingStyledCellLabelProvider(new SQLSearchLabelProvider(this), PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator(), null)); }
From source file:com.nextep.designer.synch.ui.dialogs.TableSelectionDialog.java
License:Open Source License
private TableViewer createViewer(Composite parent, String title) { final Composite labeledEditor = new Composite(parent, SWT.NONE); GridData editorData = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 2); editorData.widthHint = 150;//from www.j ava 2s. co m editorData.heightHint = 250; labeledEditor.setLayoutData(editorData); final Table table = new Table(labeledEditor, SWT.BORDER | SWT.MULTI); final TableColumn col = new TableColumn(table, SWT.NONE); col.setWidth(150); col.setText(title); table.setHeaderVisible(true); // Using this specific layout to make sure columns are always 100% TableColumnLayout colLayout = new TableColumnLayout(); colLayout.setColumnData(col, new ColumnWeightData(100)); labeledEditor.setLayout(colLayout); // Initializing our viewer final TableViewer viewer = new TableViewer(table); viewer.setLabelProvider(new DecoratingStyledCellLabelProvider(new VersionableNewLabelProvider(), PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator(), null)); viewer.setContentProvider(new VersionableTableContentProvider()); return viewer; }
From source file:com.nextep.designer.vcs.ui.controllers.FindElementController.java
License:Open Source License
/** * @see com.nextep.datadesigner.model.IInvokable#invoke(java.lang.Object[]) *//*from w w w.j av a 2s . c o m*/ @Override public Object invoke(Object... arg) { IContentProvider provider = (IContentProvider) arg[0]; Object input = null; String title = "Open element..."; if (arg.length > 1) { input = arg[1]; } if (arg.length > 2) { title = (String) arg[2]; } Shell s = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); final Shell dialog = new Shell(s, SWT.TITLE | SWT.CLOSE | SWT.MAX | SWT.RESIZE | SWT.APPLICATION_MODAL); dialog.setText(title); dialog.setSize(600, 400); Rectangle r = s.getBounds(); dialog.setLocation(r.x + (r.width / 2 - 300), r.y + (r.height / 2 - 200)); dialog.setLayout(new GridLayout(2, false)); dialog.setImage(ImageFactory.ICON_DESIGNER_TINY); Composite group = new Composite(dialog, SWT.NONE); group.setLayout(new GridLayout()); group.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 2, 1)); Label filterLabel = new Label(group, SWT.NONE); filterLabel.setText("Enter element name filter:"); filterLabel.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false)); final Text filterText = new Text(group, SWT.BORDER); filterText.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false)); Label matchLabel = new Label(group, SWT.NONE); matchLabel.setText("Matching items:"); matchLabel.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false)); final TableViewer viewer = new TableViewer(group); viewer.getControl().setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); viewer.setContentProvider(provider); viewer.setLabelProvider(new VersionableLabelProvider()); viewer.addFilter(new NameFilter(filterText)); viewer.setSorter(new TypedViewerComparator()); if (input != null) { viewer.setInput(VersionHelper.getCurrentView()); } Button okButton = new Button(dialog, SWT.NONE); okButton.setText(" Ok "); okButton.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, true, false)); okButton.addSelectionListener(new SelectionListener() { @Override public void widgetDefaultSelected(SelectionEvent e) { widgetSelected(e); } @Override public void widgetSelected(SelectionEvent e) { if (viewer.getSelection() instanceof IStructuredSelection) { Object elt = ((IStructuredSelection) viewer.getSelection()).getFirstElement(); if (elt instanceof ITypedObject) { element = elt; // Closing dialog dialog.dispose(); } } } }); viewer.getControl().addListener(SWT.MouseDoubleClick, new Listener() { @Override public void handleEvent(Event event) { if (viewer.getSelection() instanceof IStructuredSelection) { Object elt = ((IStructuredSelection) viewer.getSelection()).getFirstElement(); if (elt instanceof ITypedObject) { element = elt; // Closing dialog dialog.dispose(); } } } }); dialog.setDefaultButton(okButton); Button cancelButton = new Button(dialog, SWT.NONE); cancelButton.setText(" Cancel "); cancelButton.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, false)); cancelButton.addSelectionListener(new SelectionListener() { @Override public void widgetDefaultSelected(SelectionEvent e) { element = null; widgetSelected(e); } @Override public void widgetSelected(SelectionEvent e) { dialog.dispose(); } }); filterText.addKeyListener(new KeyListener() { @Override public void keyPressed(KeyEvent e) { if (e.keyCode == SWT.ARROW_DOWN) { int index = viewer.getTable().getSelectionIndex(); if (index != -1 && viewer.getTable().getItemCount() > index + 1) { viewer.getTable().setSelection(index + 1); } e.doit = false; // viewer.getTable().setFocus(); } else if (e.keyCode == SWT.ARROW_UP) { int index = viewer.getTable().getSelectionIndex(); if (index != -1 && index >= 1) { viewer.getTable().setSelection(index - 1); // viewer.getTable().setFocus(); } e.doit = false; } //removeFilter(currentFilter); // viewer.addFilter(currentFilter = new NameFilter(filterText)); } @Override public void keyReleased(KeyEvent e) { viewer.setFilters(new NameFilter[] { new NameFilter(filterText) }); if (viewer.getSelection().isEmpty()) { if (viewer.getTable().getItemCount() > 0) { viewer.getTable().select(0); } } } }); if (viewer.getTable().getItemCount() > 0) { viewer.getTable().select(0); } dialog.open(); while (!dialog.isDisposed()) { try { if (!dialog.getDisplay().readAndDispatch()) dialog.getDisplay().sleep(); } catch (ErrorException e) { // An error might happen dialog.dispose(); } } return element; }