List of usage examples for org.eclipse.jface.viewers TableViewer getTable
public Table getTable()
From source file:net.rim.ejde.internal.ui.editors.model.BlackBerryProjectPropertiesPage.java
License:Open Source License
/** * Removes the currently selected table item from the viewer and updates controls accordingly * * @param viewer// w w w. j a va2 s . c o m * @param actionButtons * @param updateUIOnly * <code>true</code> only update UI but not remove items from the table; <code>false</code> update UI and remove * items from the table; */ public void removeSelectedTableItem(TableViewer viewer, Map<Action, Button> actionButtons, boolean updateUIOnly) { StructuredSelection selection = (StructuredSelection) viewer.getSelection(); Table table = viewer.getTable(); int selectionIndex = table.getSelectionIndex(); Boolean entryRemoved = false; if (!updateUIOnly) { for (Iterator<?> iter = selection.iterator(); iter.hasNext();) { Object selectedElement = iter.next(); if (selectedElement != null) { viewer.remove(selectedElement); if (!entryRemoved) { entryRemoved = true; } } } } if (updateUIOnly || entryRemoved) { int itemCount = table.getItemCount(); if (itemCount != 0) { table.select(itemCount - 1 > selectionIndex ? selectionIndex : itemCount - 1); if (actionButtons.containsKey(Action.MOVE_DOWN)) { if (selectionIndex == itemCount - 1) { actionButtons.get(Action.MOVE_DOWN).setEnabled(false); } actionButtons.get(Action.MOVE_UP).setEnabled(itemCount > 1 ? true : false); } // Used to fire any selection events viewer.setSelection(viewer.getSelection()); } else { if (actionButtons.containsKey(Action.EDIT)) { actionButtons.get(Action.EDIT).setEnabled(false); } if (actionButtons.containsKey(Action.REMOVE)) { actionButtons.get(Action.REMOVE).setEnabled(false); } if (actionButtons.containsKey(Action.MOVE_UP)) { actionButtons.get(Action.MOVE_UP).setEnabled(false); } if (actionButtons.containsKey(Action.MOVE_DOWN)) { actionButtons.get(Action.MOVE_DOWN).setEnabled(false); } if (actionButtons.containsKey(Action.SELECT_ALL)) { actionButtons.get(Action.SELECT_ALL).setEnabled(false); } if (actionButtons.containsKey(Action.SELECT_NONE)) { actionButtons.get(Action.SELECT_NONE).setEnabled(false); } } // Enable any disabled add buttons - icon scenarios where only 2 icons can be added. if (actionButtons.containsKey(Action.ADD)) { actionButtons.get(Action.ADD).setEnabled(true); } if (actionButtons.containsKey(Action.ADD_FROM_PROJECT)) { actionButtons.get(Action.ADD_FROM_PROJECT).setEnabled(true); } if (actionButtons.containsKey(Action.ADD_FROM_EXTERNAL)) { actionButtons.get(Action.ADD_FROM_EXTERNAL).setEnabled(true); } if (table.getColumnCount() > 1) { table.getColumn(1).pack(); } } }
From source file:net.rim.ejde.internal.ui.editors.model.BlackBerryProjectPropertiesPage.java
License:Open Source License
/** * Searches the given viewer for the given object and returns its index or -1 if the object was not found * * @param viewer//from www . ja v a 2s . c o m * @param obj * @return */ public Integer getObjectIndexInViewer(TableViewer viewer, Object obj) { for (int i = 0; i < viewer.getTable().getItemCount(); i++) { Object element = viewer.getElementAt(i); if ((obj instanceof Icon) && (element instanceof Icon)) { IProject project = _blackBerryProject.getProject(); IPath iconPath = new Path(((Icon) element).getCanonicalFileName()); IResource iconRes = project.findMember(iconPath); IPath projectPath = project.getLocation(), iconRelPath, iconAbsPath; if (iconRes != null) { iconRelPath = projectPath.append(iconRes.getProjectRelativePath()); iconAbsPath = iconRes.getLocation(); } else { iconRelPath = null; iconAbsPath = projectPath.append(iconPath); } IPath newIconPath = projectPath.append(((Icon) obj).getCanonicalFileName()); if (newIconPath.equals(iconRelPath) || newIconPath.equals(iconAbsPath)) { return i; } } else if ((obj instanceof PreprocessorTag) && (element instanceof PreprocessorTag)) { PreprocessorTag o1 = (PreprocessorTag) obj; PreprocessorTag o2 = (PreprocessorTag) element; if (o1.getPreprocessorDefine().equals(o2.getPreprocessorDefine())) { return i; } } else { if (obj.equals(element)) { return i; } } } return -1; }
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);//from www . j av a2 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.rim.ejde.internal.ui.views.process.ProcessView.java
License:Open Source License
/** * Creates columns of the tree view.//w ww .j a va 2s. c o m * * @param index * index of column * */ private void createColumn(int index) { int width; switch (index) { case 0: case 2: width = 250; break; default: width = 100; } TableViewer tableviewer = getTableView(); if (tableviewer == null) { return; } TableColumn tableColumn = new TableColumn(tableviewer.getTable(), SWT.LEFT); tableColumn.setText(ProcessesContentsHelper.getColumnName(index)); tableColumn.setWidth(width); tableColumn.setResizable(true); tableColumn.addSelectionListener(new VarTableColumnSelectionListener()); }
From source file:net.rim.ejde.internal.ui.views.VarContentDebugView.java
License:Open Source License
/** * (no java doc)/*from w w w . jav a 2 s . c om*/ * * @see IBasicActions#clear() */ @Override public void clear() { TableViewer tableviewer = getTableView(); if (tableviewer != null) { tableviewer.getTable().removeAll(); } setHasData(false); updateToolbar(); }
From source file:net.roboconf.eclipse.modeler.dialogs.ImportedVariableDialog.java
License:Apache License
@Override protected Control createDialogArea(Composite parent) { // Global UI/*from www. ja v a2s. c o m*/ 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 www.j a v a 2 s . 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.NSISTemplatePreferencePage.java
License:Open Source License
@Override public void createControl(Composite parent) { super.createControl(parent); TableViewer viewer = getTableViewer(); TableColumn[] columns = viewer.getTable().getColumns(); if (columns != null && columns.length > 3) { for (int i = 3; i < columns.length; i++) { columns[i].dispose();/* w w w. j a va 2 s . co m*/ } } PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), INSISConstants.PLUGIN_CONTEXT_PREFIX + "nsis_templateprefs_context"); //$NON-NLS-1$ }
From source file:net.sf.eclipsensis.installoptions.properties.tabbed.section.FilterPropertySection.java
License:Open Source License
@Override protected Control createSection(final InstallOptionsElement element, Composite parent, TabbedPropertySheetPage page, final InstallOptionsCommandHelper commandHelper) { if (element instanceof InstallOptionsFileRequest) { final FileFilter[] current = { null }; final boolean[] nonUserChange = { false }; final IPropertyDescriptor descriptor = element .getPropertyDescriptor(InstallOptionsModel.PROPERTY_FILTER); final ICellEditorValidator validator = PropertyDescriptorHelper .getCellEditorValidator((PropertyDescriptor) descriptor); final TabbedPropertySheetWidgetFactory widgetFactory = getWidgetFactory(); Composite parent2 = createSectionComposite(parent); GridLayout layout = new GridLayout(2, false); layout.marginHeight = layout.marginWidth = 0; parent2.setLayout(layout);//from ww w .j a v a2s . com final Group summaryGroup = widgetFactory.createGroup(parent2, InstallOptionsPlugin.getResourceString("filter.summary.group.name")); //$NON-NLS-1$ summaryGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); summaryGroup.setLayout(new GridLayout(2, false)); Table summaryTable = widgetFactory.createTable(summaryGroup, SWT.FLAT | 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 = widgetFactory.createComposite(summaryGroup); 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 = widgetFactory.createButton(summaryButtons, "", SWT.PUSH); //$NON-NLS-1$ 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() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { if (!nonUserChange[0]) { 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); String error = validator.isValid(list); if (Common.isEmpty(error)) { summaryViewer.refresh(false); summaryViewer.setSelection(new StructuredSelection(f)); commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_FILTER, descriptor.getDisplayName(), element, list); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); list.remove(f); } } } } }); final Button summaryDel = widgetFactory.createButton(summaryButtons, "", SWT.PUSH); //$NON-NLS-1$ 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() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); if (list != null) { IStructuredSelection selection = (IStructuredSelection) summaryViewer.getSelection(); if (!selection.isEmpty()) { List<FileFilter> old = new ArrayList<FileFilter>(list); for (Iterator<?> iter = selection.toList().iterator(); iter.hasNext();) { list.remove(iter.next()); } String error = validator.isValid(list); if (Common.isEmpty(error)) { summaryViewer.refresh(false); commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_FILTER, descriptor.getDisplayName(), element, list); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); list.clear(); list.addAll(old); } } } } }); summaryDel.setEnabled(!summaryViewer.getSelection().isEmpty()); final TableViewerUpDownMover<List<FileFilter>, FileFilter> summaryMover = new TableViewerUpDownMover<List<FileFilter>, FileFilter>() { @Override @SuppressWarnings("unchecked") 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) { List<FileFilter> old = new ArrayList<FileFilter>(input); input.clear(); input.addAll(elements); String error = validator.isValid(input); if (Common.isEmpty(error)) { summaryViewer.refresh(false); commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_FILTER, descriptor.getDisplayName(), element, input); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); input.clear(); input.addAll(old); } } }; summaryMover.setViewer(summaryViewer); final Button summaryUp = widgetFactory.createButton(summaryButtons, "", SWT.PUSH); //$NON-NLS-1$ 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 = widgetFactory.createButton(summaryButtons, "", SWT.PUSH); //$NON-NLS-1$ 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 detailGroup = widgetFactory.createGroup(parent2, InstallOptionsPlugin.getResourceString("filter.detail.group.name")); //$NON-NLS-1$ detailGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); detailGroup.setLayout(new GridLayout(1, false)); boolean isNull = current[0] == null; Composite composite = widgetFactory.createComposite(detailGroup); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); layout = new GridLayout(2, false); layout.marginHeight = 0; layout.marginWidth = 0; composite.setLayout(layout); final CLabel descriptionLabel = widgetFactory.createCLabel(composite, InstallOptionsPlugin.getResourceString("filter.description")); //$NON-NLS-1$ descriptionLabel.setLayoutData(new GridData()); descriptionLabel.setEnabled(!isNull); final Text descriptionText = widgetFactory.createText(composite, "", SWT.FLAT | SWT.BORDER); //$NON-NLS-1$ descriptionText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); final TextChangeHelper helper = new TextChangeHelper() { @Override protected String getResetValue(Text text) { if (current[0] != null) { return current[0].getDescription(); } return ""; //$NON-NLS-1$ } @Override @SuppressWarnings("unchecked") protected void handleTextChange(Text text) { if (current[0] != null) { String oldDescription = current[0].getDescription(); current[0].setDescription(text.getText()); List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); String error = validator.isValid(list); if (Common.isEmpty(error)) { summaryViewer.update(current[0], null); commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_FILTER, descriptor.getDisplayName(), element, list); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); current[0].setDescription(oldDescription); } } } }; helper.connect(descriptionText); descriptionText.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { helper.disconnect(descriptionText); } }); descriptionText.setEnabled(!isNull); final CLabel patternsLabel = widgetFactory.createCLabel(detailGroup, InstallOptionsPlugin.getResourceString("filter.patterns")); //$NON-NLS-1$ patternsLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); patternsLabel.setEnabled(!isNull); composite = widgetFactory.createComposite(detailGroup); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); layout = new GridLayout(2, false); layout.marginHeight = 0; layout.marginWidth = 0; composite.setLayout(layout); final Table patternsTable = widgetFactory.createTable(composite, SWT.FLAT | 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(); } @SuppressWarnings("unchecked") public void modify(Object item, String property, Object value) { if (value == null) { Common.openError(patternsTable.getShell(), textEditor.getErrorMessage(), InstallOptionsPlugin.getShellImage()); } else { FilePattern pattern = (FilePattern) ((TableItem) item).getData(); String oldValue = pattern.getPattern(); pattern.setPattern((String) value); List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); String error = validator.isValid(list); if (Common.isEmpty(error)) { patternsViewer.update(pattern, null); summaryViewer.update(current[0], null); commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_FILTER, descriptor.getDisplayName(), element, list); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); pattern.setPattern(oldValue); } } } }); final Composite patternsButtons = widgetFactory.createComposite(composite); 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 = widgetFactory.createButton(patternsButtons, "", SWT.PUSH); //$NON-NLS-1$ 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() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { if (current[0] != null) { FilePattern[] oldPatterns = (FilePattern[]) patternsViewer.getInput(); FilePattern[] patterns = (FilePattern[]) Common.resizeArray(oldPatterns, oldPatterns.length + 1); String filter = InstallOptionsPlugin.getResourceString("default.filter.pattern"); //$NON-NLS-1$ FilePattern newPattern = new FilePattern(filter); patterns[patterns.length - 1] = newPattern; current[0].setPatterns(patterns); List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); String error = validator.isValid(list); if (Common.isEmpty(error)) { patternsViewer.setInput(patterns); patternsViewer.setSelection(new StructuredSelection(newPattern)); summaryViewer.update(current[0], null); patternsViewer.editElement(newPattern, 0); ((Text) textEditor.getControl()).setSelection(filter.length()); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); current[0].setPatterns(oldPatterns); } } } }); patternsAdd.setEnabled(!isNull); final Button patternsDel = widgetFactory.createButton(patternsButtons, "", SWT.PUSH); //$NON-NLS-1$ 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() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { if (current[0] != null) { FilePattern[] oldPatterns = (FilePattern[]) patternsViewer.getInput(); int[] indices = patternsTable.getSelectionIndices(); FilePattern[] newPatterns = (FilePattern[]) Common.resizeArray(oldPatterns, oldPatterns.length - indices.length); int j = 0; int k = 0; for (int i = 0; i < oldPatterns.length; i++) { if (j >= indices.length || i != indices[j]) { newPatterns[k++] = oldPatterns[i]; } else { j++; } } current[0].setPatterns(newPatterns); List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); String error = validator.isValid(list); if (Common.isEmpty(error)) { patternsViewer.setInput(newPatterns); summaryViewer.update(current[0], null); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); current[0].setPatterns(oldPatterns); } } } }); 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 (current[0] != null) { return Common.makeList((FilePattern[]) ((TableViewer) getViewer()).getInput()); } return Collections.emptyList(); } @Override @SuppressWarnings("unchecked") protected void updateStructuredViewerInput(FilePattern[] input, List<FilePattern> elements, List<FilePattern> move, boolean isDown) { if (current[0] != null) { FilePattern[] oldPatterns = input.clone(); for (int i = 0; i < input.length; i++) { input[i] = elements.get(i); } List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); String error = validator.isValid(list); if (Common.isEmpty(error)) { patternsViewer.refresh(); summaryViewer.update(current[0], null); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); System.arraycopy(oldPatterns, 0, input, 0, input.length); } } } }; patternsMover.setViewer(patternsViewer); final Button patternsUp = widgetFactory.createButton(patternsButtons, "", SWT.PUSH); //$NON-NLS-1$ 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 = widgetFactory.createButton(patternsButtons, "", SWT.PUSH); //$NON-NLS-1$ 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()); current[0] = null; if (!sel.isEmpty()) { if (sel.size() == 1) { current[0] = (FileFilter) sel.getFirstElement(); } } boolean isNull = current[0] == null; descriptionText.setText((isNull ? "" : current[0].getDescription())); //$NON-NLS-1$ descriptionText.setSelection(descriptionText.getText().length()); patternsViewer.setInput((isNull ? null : current[0].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()); } }); summaryViewer.setInput(InstallOptionsFileRequest.FILEFILTER_LIST_CONVERTER .makeCopy(((InstallOptionsFileRequest) element).getFilter())); final PropertyChangeListener listener = new PropertyChangeListener() { @SuppressWarnings("unchecked") public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals(InstallOptionsModel.PROPERTY_FILTER)) { List<FileFilter> newFilter = (List<FileFilter>) evt.getNewValue(); List<FileFilter> oldFilter = (List<FileFilter>) summaryViewer.getInput(); if (!Common.objectsAreEqual(newFilter, oldFilter)) { try { ISelection sel = summaryViewer.getSelection(); nonUserChange[0] = true; summaryViewer.setInput( InstallOptionsFileRequest.FILEFILTER_LIST_CONVERTER.makeCopy(newFilter)); if (!sel.isEmpty()) { summaryViewer.setSelection(sel); } } finally { nonUserChange[0] = false; } } } } }; element.addPropertyChangeListener(listener); parent2.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { element.removePropertyChangeListener(listener); } }); return parent2; } return null; }
From source file:net.sf.versiontree.ui.DetailTableProvider.java
License:Open Source License
/** * Adds the listener that sets the sorter. *//*from ww w . jav a 2s.c o m*/ private SelectionListener getColumnListener(final TableViewer tableViewer) { /** * This class handles selections of the column headers. * Selection of the column header will cause resorting * of the shown tasks using that column's sorter. * Repeated selection of the header will toggle * sorting order (ascending versus descending). */ return new SelectionAdapter() { /** * Handles the case of user selecting the * header area. * <p>If the column has not been selected previously, * it will set the sorter of that column to be * the current tasklist sorter. Repeated * presses on the same column header will * toggle sorting order (ascending/descending). */ @Override public void widgetSelected(SelectionEvent e) { // column selected - need to sort int column = tableViewer.getTable().indexOf((TableColumn) e.widget); ValueSorter oldSorter = (ValueSorter) tableViewer.getSorter(); if (oldSorter != null && column == oldSorter.getColumnNumber()) { oldSorter.setReversed(!oldSorter.isReversed()); tableViewer.refresh(); } else { tableViewer.setSorter(new ValueSorter(column)); } } }; }