List of usage examples for org.eclipse.jface.viewers TableViewer setContentProvider
@Override public void setContentProvider(IContentProvider provider)
AbstractTableViewer
. From source file:net.enilink.komma.edit.ui.wizards.RefactorRenameWizard.java
License:Open Source License
protected void createPages() { configureRenamesPage = new WizardPage("Configure the new URIs to use.") { @Override//from ww w . j a va 2s. c o m public void createControl(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); composite.setLayout(new GridLayout()); // nested composite for "one namespace to rule them all" Composite nsComposite = new Composite(composite, SWT.NONE); GridLayout ncLayout = new GridLayout(2, false); ncLayout.marginHeight = 0; ncLayout.marginWidth = 0; nsComposite.setLayout(ncLayout); // toggle button for generic or individual renaming final Button useSameButton = new Button(nsComposite, SWT.CHECK); useSameButton.setSelection(false); useSameButton.setText("Move all elements into this namespace:"); // FIXME: add validation (URI) for text input field final Text namespace = new Text(nsComposite, SWT.BORDER); namespace.setLayoutData(new GridData(300, SWT.DEFAULT)); namespace.setEnabled(useSameButton.getSelection()); // the table viewer for the rename-mappings final TableViewer tableViewer = new TableViewer(composite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION); tableViewer.getTable().setEnabled(!useSameButton.getSelection()); tableViewer.getTable().setHeaderVisible(true); tableViewer.getTable().setLinesVisible(true); tableViewer.setContentProvider(ArrayContentProvider.getInstance()); TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.LEFT); column.getColumn().setText("Current URI"); column.getColumn().setWidth(300); column.setLabelProvider(new TableLabelProvider(TableLabelProvider.ColumnType.BEFORE)); column = new TableViewerColumn(tableViewer, SWT.LEFT); column.getColumn().setText("New URI"); column.getColumn().setWidth(300); column.setLabelProvider(new TableLabelProvider(TableLabelProvider.ColumnType.AFTER)); // FIXME: add validation (URI) for text input field final CellEditor cellEditor = new TextCellEditor((Composite) tableViewer.getControl()); column.setEditingSupport(new EditingSupport(tableViewer) { @Override protected CellEditor getCellEditor(Object element) { return cellEditor; } @Override protected boolean canEdit(Object element) { return (element instanceof Map.Entry); } @SuppressWarnings("rawtypes") @Override protected Object getValue(Object element) { if (element instanceof Map.Entry) { IReference value = (IReference) ((Map.Entry) element).getValue(); return value != null ? value.toString() : ""; } return ""; } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override protected void setValue(Object element, Object value) { if (element instanceof Map.Entry) { if (!(value instanceof IReference)) { if (value.toString().isEmpty()) { value = null; } else { value = URIs.createURI(value.toString()); } } ((Map.Entry) element).setValue(value); tableViewer.refresh(element); } setPageComplete(!renameMap.values().contains(null)); getContainer().updateButtons(); } }); // button selection toggles text input and table viewer states useSameButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { namespace.setEnabled(useSameButton.getSelection()); tableViewer.getTable().setEnabled(!useSameButton.getSelection()); } }); // leaving the text input sets the namespace on all elements namespace.addFocusListener(new FocusAdapter() { @Override public void focusLost(FocusEvent e) { URI namespaceURI = URIs.createURI(namespace.getText()); for (Map.Entry<IObject, IReference> entry : renameMap.entrySet()) { entry.setValue(namespaceURI.appendFragment(entry.getKey().getURI().fragment())); } tableViewer.refresh(); setPageComplete(true); getContainer().updateButtons(); } }); tableViewer.setInput(renameMap.entrySet()); setDescription("Set the new URIs for your selected elements."); setControl(composite); setPageComplete(false); } }; showPreviewPage = new RefactorPreviewPage("Preview") { @Override public Collection<Change> collectChanges() { changes = new RefactoringProcessor(domain).createRenameChanges(renameMap); return changes; } }; }
From source file:net.karlmartens.ui.viewer.TableViewerTest.java
License:Apache License
public static void main(String[] args) throws Exception { final Image[] images = new Image[] { // Images.FILTER.createImage(), // Images.COPY.createImage(), // Images.CUT.createImage(), // Images.PASTE.createImage(), // };//from w w w.j a v a 2 s . co m final int fixedColumns = 5; final Object[][] input = new Object[100][]; for (int i = 0; i < input.length; i++) { input[i] = new Object[20]; input[i][0] = images[i % 4]; input[i][1] = "Item " + Integer.toString(i); input[i][2] = Boolean.valueOf(i % 3 == 0); input[i][3] = TestComboEditingSupport.ITEMS[0 + (i % TestComboEditingSupport.ITEMS.length)]; input[i][4] = new LocalDate((int) (Math.random() * 50) + 2000, (int) (Math.random() * 11) + 1, (int) (Math.random() * 27) + 1); for (int j = fixedColumns; j < input[i].length; j++) { input[i][j] = Integer.toString(Double.valueOf(Math.random() * 10000).intValue()); } } final Shell shell = new Shell(); shell.setLayout(GridLayoutFactory.swtDefaults().create()); final Display display = shell.getDisplay(); final Button b = new Button(shell, SWT.PUSH); b.setLayoutData(GridDataFactory.swtDefaults().create()); b.setText("Columns"); final TableViewer viewer = new TableViewer(shell); viewer.setContentProvider(new ArrayContentProvider()); viewer.setComparator(new ViewerComparator(new NumberStringComparator())); final TableViewerColumn c0 = new TableViewerColumn(viewer, SWT.NONE); c0.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { return ""; } @Override public Image getImage(Object element) { Object[] arr = (Object[]) element; return (Image) arr[0]; } }); c0.getColumn().setWidth(20); final TableViewerColumn c1 = new TableViewerColumn(viewer, SWT.NONE); c1.setLabelProvider(new TestColumnLabelProvider(1)); c1.setEditingSupport(new TestTextEditingSupport(viewer, 1, SWT.LEFT)); c1.getColumn().setText("Name"); c1.getColumn().setWidth(75); final TableViewerColumn c2 = new TableViewerColumn(viewer, SWT.CHECK); c2.setLabelProvider(new TestColumnLabelProvider(2)); c2.setEditingSupport(new TestBooleanEditingSupport(viewer, 2)); c2.getColumn().setText("Active"); c2.getColumn().setWidth(60); final TableViewerColumn c3 = new TableViewerColumn(viewer, SWT.LEFT); c3.setLabelProvider(new TestColumnLabelProvider(3)); c3.setEditingSupport(new TestComboEditingSupport(viewer, 3)); c3.getColumn().setText("Color"); c3.getColumn().setWidth(60); final TableViewerColumn c4 = new TableViewerColumn(viewer, SWT.LEFT); c4.setLabelProvider(new TestColumnLabelProvider(4)); c4.setEditingSupport(new TestCalendarComboEditingSupport(viewer, 4)); c4.getColumn().setText("Date"); c4.getColumn().setWidth(90); for (int i = fixedColumns; i < input[0].length; i++) { final TableViewerColumn c = new TableViewerColumn(viewer, SWT.RIGHT); c.setLabelProvider(new TestColumnLabelProvider(i)); c.setEditingSupport(new TestTextEditingSupport(viewer, i, SWT.RIGHT)); c.getColumn().setText("Test " + Integer.toString(i + 1)); c.getColumn().setWidth(40); c.getColumn().setHideable(false); c.getColumn().setFilterable(false); } final Table table = viewer.getControl(); table.setLayoutData(GridDataFactory// .fillDefaults()// .grab(true, true)// .create()); table.setHeaderVisible(true); table.setBackground(display.getSystemColor(SWT.COLOR_WHITE)); table.setFont(new Font(display, "Arial", 8, SWT.NORMAL)); table.addColumnSortSupport(); table.setFixedColumnCount(fixedColumns); table.setFixedHeaderColumnCount(1); table.setFixedRowCount(3); final TableViewerClipboardManager clipboardManager = new TableViewerClipboardManager(viewer, OPERATION_COPY | OPERATION_CUT | OPERATION_DELETE | OPERATION_PASTE | OPERATION_SELECT_ALL); clipboardManager.createContextMenu(); viewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { System.out.println("Selection"); } }); b.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { final ConfigureColumnsDialog dialog = new ConfigureColumnsDialog(shell, table, "Title", "header", "message"); dialog.open(); } }); viewer.setInput(input); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } }
From source file:net.lopezbobeda.rap.examples.mail.views.MainView.java
License:Open Source License
public MainView(final Composite shell) { registerImages();//from w w w . j a v a 2 s. c om final Composite parent = new SashForm(shell, SWT.HORIZONTAL | SWT.FILL); GridData theCompositeGridData = new GridData(); theCompositeGridData.grabExcessHorizontalSpace = true; theCompositeGridData.grabExcessVerticalSpace = true; theCompositeGridData.horizontalAlignment = SWT.FILL; theCompositeGridData.verticalAlignment = SWT.FILL; parent.setLayoutData(theCompositeGridData); // GridLayout layout = new GridLayout(2, false); // parent.setLayout(layout); final TreeView label = new TreeView(parent); GridData labelGridData = new GridData(); // labelGridData.verticalSpan = 2; labelGridData.grabExcessVerticalSpace = true; labelGridData.verticalAlignment = SWT.FILL; label.getViewer().getTree().setLayoutData(labelGridData); final Composite rightView = new Composite(parent, SWT.NONE); GridLayout rightViewLayout = new GridLayout(1, false); rightView.setLayout(rightViewLayout); TableViewer viewer = new TableViewer(rightView, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.RESIZE); createColumns(viewer); final Table table = viewer.getTable(); table.setHeaderVisible(true); table.setLinesVisible(true); GridData gridData = new GridData(); gridData.grabExcessHorizontalSpace = true; gridData.horizontalAlignment = SWT.FILL; Email[] emails = new Email[] { new Email("edmundo@lopezbobeda.net", "jean.val.jean@miserable.fr", "Urgent!!", "Message 1"), new Email("diego.de.la.vega@lopezbobeda.net", "jean.val.jean@miserable.fr", "Plus Urgent!!", "Message 2") }; final Label placeHolder = new Label(rightView, SWT.NONE); placeHolder.setText("No message selected"); table.setLayoutData(gridData); viewer.setContentProvider(ArrayContentProvider.getInstance()); viewer.addSelectionChangedListener(new ISelectionChangedListener() { Composite mailView = null; @Override public void selectionChanged(SelectionChangedEvent event) { if (!placeHolder.isDisposed()) { placeHolder.dispose(); } if (mailView != null) { mailView.dispose(); } IStructuredSelection selection = (IStructuredSelection) event.getSelection(); MessageView mv = new MessageView(rightView, (Email) selection.getFirstElement()); mailView = mv.getView(); rightView.layout(); } }); viewer.setInput(emails); }
From source file:net.rim.ejde.internal.ui.editors.locale.ResourceEditorPage.java
License:Open Source License
private TableViewer createTableViewer(Control topAttachControl, ResourceLocale locale) { Table table = createTable(topAttachControl); TableViewer viewer = new TableViewer(table); viewer.setColumnProperties(_columnProperties); viewer.setContentProvider(_contentProvider); viewer.setLabelProvider(_labelProvider); viewer.setSorter(new ResourceSorter(viewer, _comparators)); viewer.setInput(locale);/*from w w w .j av a 2 s .c o m*/ return viewer; }
From source file:net.rim.ejde.internal.ui.editors.model.factories.ControlFactory.java
License:Open Source License
/** * Builds a table control onto the given composite body * * @param label/*w w w. j ava2s. c om*/ * @param style * @param columns * @param columnProperties * @param body * @param toolkit * @param cProvider * @param lProvider * @param input * @return */ public static final Viewer buildTableControl(Composite body, FormToolkit toolkit, String label, String toolTipText, Integer style, Integer columns, String columnProperties[], IStructuredContentProvider contentProvider, ITableLabelProvider labelProvider, Object input) { // Create label control if (label != null) { buildLabelControl(body, toolkit, ControlFactory.ControlType.LABEL, label, 3); } Integer tableStyle = SWT.VIRTUAL | SWT.FULL_SELECTION | SWT.BORDER; if (style != null) { tableStyle = tableStyle | style; } if ((tableStyle & SWT.MULTI) == 0) { tableStyle = tableStyle + SWT.SINGLE; } // Create table control Table table = toolkit.createTable(body, tableStyle); table.setToolTipText(toolTipText); CellEditor[] editors = new CellEditor[1]; TextCellEditor textEditor = new TextCellEditor(table); textEditor.setStyle(SWT.READ_ONLY); editors[0] = textEditor; // Create table viewer control TableViewer tableViewer; if ((tableStyle & SWT.CHECK) != 0) { tableViewer = new CheckboxTableViewer(table); } else { tableViewer = new TableViewer(table); } tableViewer.setContentProvider(contentProvider == null ? new DefaultContentProvider() : contentProvider); tableViewer.setLabelProvider(labelProvider == null ? new DefaultLabelProvider() : labelProvider); tableViewer.setUseHashlookup(true); tableViewer.setColumnProperties(columnProperties); tableViewer.setCellEditors(editors); tableViewer.setInput(input); initializeControlLayout(body, table, ControlType.TABLE, columns); return tableViewer; }
From source file:net.rim.ejde.internal.ui.views.process.ProcessView.java
License:Open Source License
public void createTableViewPart(Composite parent) { TableViewer tableViewer = new TableViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.VIRTUAL | SWT.SINGLE | SWT.FULL_SELECTION); tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); tableViewer.getTable().setHeaderVisible(true); tableViewer.getTable().setLinesVisible(true); tableViewer.setContentProvider(new VarContentProvider(tableViewer)); VarLabelProvider labelProvider = new VarLabelProvider(tableViewer); setLabelProvider(labelProvider);/* ww w. j a va 2 s.c o m*/ tableViewer.setLabelProvider(labelProvider); tableViewer.getTable().addMouseListener(new VarMouseAdapter()); tableViewer.getTable().addSelectionListener(new VarTableRowSelectionListener()); setTableView(tableViewer); // create table columns createColumns(); // create context menu(pop-up menu) createContextMenu(); // start live update startLiveupdate(); }
From source file:net.roboconf.eclipse.modeler.dialogs.ImportedVariableDialog.java
License:Apache License
@Override protected Control createDialogArea(Composite parent) { // Global UI//www.j av a2 s.c om Composite bigContainer = (Composite) super.createDialogArea(parent); GridLayoutFactory.swtDefaults().margins(5, 0).applyTo(bigContainer); bigContainer.setLayoutData(new GridData(GridData.FILL_BOTH)); getShell().setText("Imported Variables"); setTitle("Imported Variables"); setMessage("Edit the variables to import."); // Find all the variables for (RoboconfFacet type : findAllFacetsAndComponents()) { Collection<String> varNames = findAllExportedVariables(type); if (!type.getExports().isEmpty()) varNames.add(type.getName() + ".*"); for (String varName : varNames) { RoboconfImportedVariable var = RoboconfEmfFactory.eINSTANCE.createRoboconfImportedVariable(); var.setName(varName); if (var.getName().startsWith(this.component.getName() + ".")) var.setOptional(true); this.nameToImportedVariables.put(varName, var); } } // Update the map that will act as our model. // We do this in two steps because... // 1. nameToImportedVariables is a tree map. Variables are sorted alphabetically. // 2. importedVariablesToTaken is our model for the UI. Since it is a linked hash map, // it preserves insertion order. So, we preserve the order from the tree map. // // And we cannot directly use a tree map with imported variables. // The class was generated by EMF and there is no natural ordering. for (RoboconfImportedVariable var : this.nameToImportedVariables.values()) { this.importedVariablesToTaken.put(var, Boolean.FALSE); } // Should they be marked as used? updateImportedVariablesStates(); // Display them in a table viewer final TableViewer viewer = new TableViewer(bigContainer, SWT.BORDER | SWT.SINGLE); viewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); viewer.getTable().setHeaderVisible(true); viewer.getTable().setLinesVisible(true); TableLayout tlayout = new TableLayout(); tlayout.addColumnData(new ColumnWeightData(12, 90, true)); tlayout.addColumnData(new ColumnWeightData(40, 200, true)); tlayout.addColumnData(new ColumnWeightData(12, 90, true)); viewer.getTable().setLayout(tlayout); String[] columnTitles = { "Import", "Variable Name", "Optional" }; for (int i = 0; i < columnTitles.length; i++) { int style = i == 1 ? SWT.LEFT : SWT.CENTER; TableColumn column = new TableColumn(viewer.getTable(), style); column.setText(columnTitles[i]); } viewer.setLabelProvider(new ImportedVariableLabelProvider(this.checked, this.unchecked)); viewer.setContentProvider(new ArrayContentProvider()); viewer.setInput(this.importedVariablesToTaken.entrySet()); viewer.getTable().addListener(SWT.MouseDoubleClick, new Listener() { @Override @SuppressWarnings({ "unchecked", "rawtypes" }) public void handleEvent(Event event) { Point p = new Point(event.x, event.y); ViewerCell cell = viewer.getCell(p); Map.Entry<RoboconfImportedVariable, Boolean> entry = (Map.Entry) cell.getElement(); RoboconfImportedVariable var = entry.getKey(); if (cell.getColumnIndex() == 0) { entry.setValue(!entry.getValue()); } else if (cell.getColumnIndex() == 2) { var.setOptional(!var.isOptional()); } viewer.refresh(entry); } }); return bigContainer; }
From source file:net.sf.eclipsensis.config.NSISConfigSelectionPage.java
License:Open Source License
public void createControl(Composite parent) { Composite parent2 = new Composite(parent, SWT.NONE); parent2.setLayout(new GridLayout(1, false)); Font wizardFont = parent2.getFont(); Label l = new Label(parent2, SWT.NONE); l.setFont(wizardFont);//from w w w . jav a 2s . c o m l.setText(EclipseNSISPlugin.getResourceString("config.wizard.welcome.message")); //$NON-NLS-1$ Group g = new Group(parent2, SWT.NONE); g.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); g.setLayout(new GridLayout(1, false)); l = new Label(g, SWT.NONE); l.setText(EclipseNSISPlugin.getResourceString("available.config.wizards.label")); //$NON-NLS-1$ l.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); l.setFont(wizardFont); Table table = new Table(g, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); table.setFont(wizardFont); table.setLinesVisible(false); table.setHeaderVisible(false); table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); TableViewer viewer = new TableViewer(table); viewer.setContentProvider(new CollectionContentProvider()); viewer.setLabelProvider(new LabelProvider() { ImageManager mImageManager = EclipseNSISPlugin.getImageManager(); @Override public Image getImage(Object element) { if (element instanceof NSISConfigWizardNode) { NSISConfigWizardDescriptor descriptor = ((NSISConfigWizardNode) element).getDescriptor(); ImageDescriptor icon = descriptor.getIcon(); if (icon != null) { if (!mImageManager.containsImage(descriptor.getId())) { mImageManager.putImageDescriptor(descriptor.getId(), icon); } return mImageManager.getImage(descriptor.getId()); } return null; } return super.getImage(element); } @Override public String getText(Object element) { if (element instanceof NSISConfigWizardNode) { return ((NSISConfigWizardNode) element).getDescriptor().getName(); } return super.getText(element); } }); viewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection sel = (IStructuredSelection) event.getSelection(); if (sel.isEmpty()) { setSelectedNode(null); } else { NSISConfigWizardNode node = (NSISConfigWizardNode) sel.getFirstElement(); setDescription(node.getDescriptor().getDescription()); setSelectedNode(node); } } }); viewer.getTable().addSelectionListener(new SelectionAdapter() { @Override public void widgetDefaultSelected(SelectionEvent e) { if (canFlipToNextPage()) { IWizardPage nextPage = getNextPage(); if (nextPage != null) { getContainer().showPage(nextPage); } } } }); NSISConfigWizardDescriptor[] wizardDescriptors = NSISConfigWizardRegistry.INSTANCE.getWizardDescriptors(); Collection<NSISConfigWizardNode> input = new ArrayList<NSISConfigWizardNode>(); for (int i = 0; i < wizardDescriptors.length; i++) { input.add(new NSISConfigWizardNode(this, wizardDescriptors[i])); } viewer.setInput(input); if (input.size() > 0) { viewer.setSelection(new StructuredSelection(input.iterator().next())); } setControl(parent2); }
From source file:net.sf.eclipsensis.dialogs.FileSelectionDialog.java
License:Open Source License
@Override protected Control createDialogArea(Composite parent) { Composite parent2 = (Composite) super.createDialogArea(parent); Composite composite = new Composite(parent2, SWT.NONE); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); GridLayout layout = new GridLayout(1, true); composite.setLayout(layout);//from ww w . j a va 2 s . c o m SashForm form = new SashForm(composite, SWT.HORIZONTAL); form.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); layout = new GridLayout(1, true); form.setLayout(layout); composite = new Composite(form, SWT.NONE); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); layout = new GridLayout(1, true); layout.marginHeight = 0; layout.marginWidth = 0; composite.setLayout(layout); Label l = new Label(composite, SWT.NONE); l.setText(EclipseNSISPlugin.getResourceString("fileselection.parent.folder.label")); //$NON-NLS-1$ l.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); Tree tree = new Tree(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); gridData.widthHint = VIEWER_WIDTH; gridData.heightHint = VIEWER_HEIGHT; tree.setLayoutData(gridData); final TreeViewer tv = new TreeViewer(tree); tv.setContentProvider(new ContainerContentProvider()); tv.setLabelProvider(WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider()); tv.setSorter(new ViewerSorter()); composite = new Composite(form, SWT.None); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); layout = new GridLayout(1, true); layout.marginHeight = 0; layout.marginWidth = 0; composite.setLayout(layout); l = new Label(composite, SWT.NONE); l.setText(EclipseNSISPlugin.getResourceString("fileselection.file.label")); //$NON-NLS-1$ l.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); Table table = new Table(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION); gridData = new GridData(SWT.FILL, SWT.FILL, true, true); gridData.widthHint = VIEWER_WIDTH; gridData.heightHint = VIEWER_HEIGHT; table.setLayoutData(gridData); table.setLinesVisible(false); final TableViewer tv2 = new TableViewer(table); tv2.setContentProvider(new FilesContentProvider()); tv2.setLabelProvider(new FilesLabelProvider()); tv2.setSorter(new ViewerSorter()); if (mFilter != null) { tv2.addFilter(new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { return mFilter.select(element); } }); } tv.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); tv2.setInput(selection.getFirstElement()); // allow null } }); tv.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { ISelection selection = event.getSelection(); if (selection instanceof IStructuredSelection) { Object item = ((IStructuredSelection) selection).getFirstElement(); if (tv.getExpandedState(item)) { tv.collapseToLevel(item, 1); } else { tv.expandToLevel(item, 1); } } } }); tv2.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); if (selection != null && !selection.isEmpty()) { mFile = (IFile) selection.getFirstElement(); } else { mFile = null; } Button button = getButton(IDialogConstants.OK_ID); if (button != null) { button.setEnabled(selection != null && !selection.isEmpty()); } } }); tv2.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { if (mFile != null) { setReturnCode(Window.OK); close(); } } }); tv.setInput(ResourcesPlugin.getWorkspace()); if (mContainer != null) { tv.setSelection(new StructuredSelection(mContainer)); if (mFile != null) { tv2.setSelection(new StructuredSelection(mFile)); } else { tv2.setSelection(new StructuredSelection()); } } return parent2; }
From source file:net.sf.eclipsensis.installoptions.properties.dialogs.FileFilterDialog.java
License:Open Source License
@Override @SuppressWarnings("unchecked") protected Control createDialogArea(Composite parent) { GridLayout layout;/*from w w w .j a v a 2 s . co m*/ Composite composite = (Composite) super.createDialogArea(parent); final Group summaryGroup = new Group(composite, SWT.SHADOW_ETCHED_IN); summaryGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true)); summaryGroup.setLayout(new GridLayout(2, false)); summaryGroup.setText(InstallOptionsPlugin.getResourceString("filter.summary.group.name")); //$NON-NLS-1$ Table summaryTable = new Table(summaryGroup, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION); summaryTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); summaryTable.setLinesVisible(true); summaryTable.setHeaderVisible(true); TableColumn[] columns = new TableColumn[2]; columns[0] = new TableColumn(summaryTable, SWT.LEFT); columns[0].setText(InstallOptionsPlugin.getResourceString("filter.description")); //$NON-NLS-1$ columns[1] = new TableColumn(summaryTable, SWT.LEFT); columns[1].setText(InstallOptionsPlugin.getResourceString("filter.patterns")); //$NON-NLS-1$ summaryTable.addControlListener(new TableResizer()); final TableViewer summaryViewer = new TableViewer(summaryTable); summaryViewer.setContentProvider(new CollectionContentProvider()); summaryViewer.setLabelProvider(new FileFilterLabelProvider()); final Composite summaryButtons = new Composite(summaryGroup, SWT.NONE); summaryButtons.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false)); layout = new GridLayout(); layout.marginHeight = 0; layout.marginWidth = 0; summaryButtons.setLayout(layout); final Button summaryAdd = new Button(summaryButtons, SWT.PUSH); summaryAdd.setImage(CommonImages.ADD_ICON); summaryAdd.setToolTipText(EclipseNSISPlugin.getResourceString("new.tooltip")); //$NON-NLS-1$ summaryAdd.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); summaryAdd.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); if (list != null) { String desc = InstallOptionsPlugin .getFormattedString("default.filter.description", new Object[] { "" }).trim(); //$NON-NLS-1$ //$NON-NLS-2$ int counter = 1; for (ListIterator<FileFilter> iter = list.listIterator(); iter.hasNext();) { if ((iter.next()).getDescription().equals(desc)) { while (iter.hasPrevious()) { iter.previous(); } desc = InstallOptionsPlugin.getFormattedString("default.filter.description", //$NON-NLS-1$ new Object[] { new Integer(counter++) }); continue; } } FileFilter f = new FileFilter(desc, new FilePattern[] { new FilePattern(InstallOptionsPlugin.getResourceString("default.filter.pattern")) }); //$NON-NLS-1$ list.add(f); summaryViewer.refresh(false); summaryViewer.setSelection(new StructuredSelection(f)); } } }); final Button summaryDel = new Button(summaryButtons, SWT.PUSH); summaryDel.setImage(CommonImages.DELETE_ICON); summaryDel.setToolTipText(EclipseNSISPlugin.getResourceString("remove.tooltip")); //$NON-NLS-1$ summaryDel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); summaryDel.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); if (list != null) { IStructuredSelection selection = (IStructuredSelection) summaryViewer.getSelection(); if (!selection.isEmpty()) { for (Iterator<?> iter = selection.toList().iterator(); iter.hasNext();) { list.remove(iter.next()); } summaryViewer.refresh(false); } } } }); summaryDel.setEnabled(!summaryViewer.getSelection().isEmpty()); final TableViewerUpDownMover<List<FileFilter>, FileFilter> summaryMover = new TableViewerUpDownMover<List<FileFilter>, FileFilter>() { @Override protected List<FileFilter> getAllElements() { return (List<FileFilter>) ((TableViewer) getViewer()).getInput(); } @Override protected void updateStructuredViewerInput(List<FileFilter> input, List<FileFilter> elements, List<FileFilter> move, boolean isDown) { (input).clear(); (input).addAll(elements); } }; summaryMover.setViewer(summaryViewer); final Button summaryUp = new Button(summaryButtons, SWT.PUSH); summaryUp.setImage(CommonImages.UP_ICON); summaryUp.setToolTipText(EclipseNSISPlugin.getResourceString("up.tooltip")); //$NON-NLS-1$ summaryUp.setEnabled(summaryMover.canMoveUp()); summaryUp.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); summaryUp.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { summaryMover.moveUp(); } }); final Button summaryDown = new Button(summaryButtons, SWT.PUSH); summaryDown.setImage(CommonImages.DOWN_ICON); summaryDown.setToolTipText(EclipseNSISPlugin.getResourceString("down.tooltip")); //$NON-NLS-1$ summaryDown.setEnabled(summaryMover.canMoveDown()); summaryDown.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); summaryDown.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { summaryMover.moveDown(); } }); final Group detailsGroup = new Group(composite, SWT.SHADOW_ETCHED_IN); detailsGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true)); detailsGroup.setLayout(new GridLayout(1, false)); detailsGroup.setText(InstallOptionsPlugin.getResourceString("filter.detail.group.name")); //$NON-NLS-1$ boolean isNull = (mCurrent == null); Composite detailsComposite = new Composite(detailsGroup, SWT.NONE); detailsComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); layout = new GridLayout(2, false); layout.marginHeight = 0; layout.marginWidth = 0; detailsComposite.setLayout(layout); final Label descriptionLabel = new Label(detailsComposite, SWT.NONE); descriptionLabel.setText(InstallOptionsPlugin.getResourceString("filter.description")); //$NON-NLS-1$ descriptionLabel.setLayoutData(new GridData()); descriptionLabel.setEnabled(!isNull); final Text descriptionText = new Text(detailsComposite, SWT.BORDER); descriptionText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); descriptionText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { if (mCurrent != null) { mCurrent.setDescription(descriptionText.getText()); summaryViewer.update(mCurrent, null); } } }); descriptionText.setEnabled(!isNull); final Label patternsLabel = new Label(detailsGroup, SWT.NONE); patternsLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); patternsLabel.setText(InstallOptionsPlugin.getResourceString("filter.patterns")); //$NON-NLS-1$ patternsLabel.setEnabled(!isNull); detailsComposite = new Composite(detailsGroup, SWT.NONE); detailsComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); layout = new GridLayout(2, false); layout.marginHeight = 0; layout.marginWidth = 0; detailsComposite.setLayout(layout); final Table patternsTable = new Table(detailsComposite, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION); patternsTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); patternsTable.setLinesVisible(true); patternsTable.setEnabled(!isNull); new TableColumn(patternsTable, SWT.LEFT); final TextCellEditor textEditor = new TextCellEditor(patternsTable); ((Text) textEditor.getControl()).addVerifyListener(new VerifyListener() { public void verifyText(VerifyEvent e) { e.doit = e.text.indexOf(IInstallOptionsConstants.LIST_SEPARATOR) < 0 && e.text.indexOf(InstallOptionsFileRequest.FILTER_SEPARATOR) < 0; if (!e.doit) { e.display.beep(); } } }); patternsTable.addControlListener(new TableResizer()); textEditor.setValidator(new ICellEditorValidator() { public String isValid(Object value) { if (!Common.isEmpty((String) value)) { return null; } else { return InstallOptionsPlugin.getResourceString("empty.filter.pattern.error"); //$NON-NLS-1$ } } }); final TableViewer patternsViewer = new TableViewer(patternsTable); patternsViewer.setColumnProperties(new String[] { "pattern" }); //$NON-NLS-1$ patternsViewer.setContentProvider(new ArrayContentProvider()); patternsViewer.setLabelProvider(new LabelProvider()); patternsViewer.setCellEditors(new CellEditor[] { textEditor }); patternsViewer.setCellModifier(new ICellModifier() { public boolean canModify(Object element, String property) { return true; } public Object getValue(Object element, String property) { return ((FilePattern) element).getPattern(); } public void modify(Object element, String property, Object value) { if (value == null) { Common.openError(getShell(), textEditor.getErrorMessage(), InstallOptionsPlugin.getShellImage()); } else { FilePattern pattern = (FilePattern) ((TableItem) element).getData(); pattern.setPattern((String) value); patternsViewer.update(pattern, null); summaryViewer.update(mCurrent, null); } } }); final Composite patternsButtons = new Composite(detailsComposite, SWT.NONE); patternsButtons.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false)); layout = new GridLayout(); layout.marginHeight = 0; layout.marginWidth = 0; patternsButtons.setLayout(layout); final Button patternsAdd = new Button(patternsButtons, SWT.PUSH); patternsAdd.setImage(CommonImages.ADD_ICON); patternsAdd.setToolTipText(EclipseNSISPlugin.getResourceString("new.tooltip")); //$NON-NLS-1$ patternsAdd.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); patternsAdd.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { if (mCurrent != null) { FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput(); patterns = (FilePattern[]) Common.resizeArray(patterns, patterns.length + 1); String filter = InstallOptionsPlugin.getResourceString("default.filter.pattern"); //$NON-NLS-1$ patterns[patterns.length - 1] = new FilePattern(filter); mCurrent.setPatterns(patterns); patternsViewer.setInput(patterns); patternsViewer.setSelection(new StructuredSelection(patterns[patterns.length - 1])); summaryViewer.update(mCurrent, null); patternsViewer.editElement(patterns[patterns.length - 1], 0); ((Text) textEditor.getControl()).setSelection(filter.length()); } } }); patternsAdd.setEnabled(!isNull); final Button patternsDel = new Button(patternsButtons, SWT.PUSH); patternsDel.setImage(CommonImages.DELETE_ICON); patternsDel.setToolTipText(EclipseNSISPlugin.getResourceString("remove.tooltip")); //$NON-NLS-1$ patternsDel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); patternsDel.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { if (mCurrent != null) { FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput(); int[] indices = patternsTable.getSelectionIndices(); FilePattern[] patterns2 = (FilePattern[]) Common.resizeArray(patterns, patterns.length - indices.length); int j = 0; int k = 0; for (int i = 0; i < patterns.length; i++) { if (j >= indices.length || i != indices[j]) { patterns2[k++] = patterns[i]; } else { j++; } } mCurrent.setPatterns(patterns2); patternsViewer.setInput(patterns2); summaryViewer.update(mCurrent, null); } } }); IStructuredSelection sel = (IStructuredSelection) patternsViewer.getSelection(); FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput(); int len = (Common.isEmptyArray(patterns) ? 0 : patterns.length); patternsDel.setEnabled(!isNull && !sel.isEmpty() && sel.size() != len && len > 1); final TableViewerUpDownMover<FilePattern[], FilePattern> patternsMover = new TableViewerUpDownMover<FilePattern[], FilePattern>() { @Override protected List<FilePattern> getAllElements() { if (mCurrent != null) { return Common.makeList((FilePattern[]) ((TableViewer) getViewer()).getInput()); } return Collections.<FilePattern>emptyList(); } @Override protected void updateStructuredViewerInput(FilePattern[] input, List elements, List move, boolean isDown) { if (mCurrent != null) { for (int i = 0; i < input.length; i++) { input[i] = (FilePattern) elements.get(i); } patternsViewer.refresh(); summaryViewer.update(mCurrent, null); } } }; patternsMover.setViewer(patternsViewer); final Button patternsUp = new Button(patternsButtons, SWT.PUSH); patternsUp.setImage(CommonImages.UP_ICON); patternsUp.setToolTipText(EclipseNSISPlugin.getResourceString("up.tooltip")); //$NON-NLS-1$ patternsUp.setEnabled(!isNull && patternsMover.canMoveUp()); patternsUp.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); patternsUp.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { patternsMover.moveUp(); } }); final Button patternsDown = new Button(patternsButtons, SWT.PUSH); patternsDown.setImage(CommonImages.DOWN_ICON); patternsDown.setToolTipText(EclipseNSISPlugin.getResourceString("down.tooltip")); //$NON-NLS-1$ patternsDown.setEnabled(!isNull && patternsMover.canMoveDown()); patternsDown.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); patternsDown.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { patternsMover.moveDown(); } }); patternsViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection sel = (IStructuredSelection) event.getSelection(); FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput(); int len = (patterns == null ? 0 : patterns.length); patternsDel.setEnabled(!sel.isEmpty() && sel.size() != len && len > 1); patternsUp.setEnabled(patternsMover.canMoveUp()); patternsDown.setEnabled(patternsMover.canMoveDown()); } }); summaryViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection sel = (IStructuredSelection) event.getSelection(); summaryDel.setEnabled(!sel.isEmpty()); summaryUp.setEnabled(summaryMover.canMoveUp()); summaryDown.setEnabled(summaryMover.canMoveDown()); mCurrent = null; if (!sel.isEmpty()) { if (sel.size() == 1) { mCurrent = (FileFilter) sel.getFirstElement(); } } boolean isNull = (mCurrent == null); descriptionText.setText((isNull ? "" : mCurrent.getDescription())); //$NON-NLS-1$ descriptionText.setSelection(descriptionText.getText().length()); patternsViewer.setInput((isNull ? null : mCurrent.getPatterns())); descriptionLabel.setEnabled(!isNull); descriptionText.setEnabled(!isNull); patternsLabel.setEnabled(!isNull); patternsTable.setEnabled(!isNull); patternsAdd.setEnabled(!isNull); FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput(); int len = (Common.isEmptyArray(patterns) ? 0 : patterns.length); patternsDel.setEnabled(!isNull && !sel.isEmpty() && sel.size() != len && len > 1); patternsUp.setEnabled(!isNull && patternsMover.canMoveUp()); patternsDown.setEnabled(!isNull && patternsMover.canMoveDown()); } }); applyDialogFont(composite); ((GridData) composite.getLayoutData()).widthHint = convertWidthInCharsToPixels(80); summaryViewer.setInput(mFilter); return composite; }