List of usage examples for org.eclipse.jface.viewers TableViewer setContentProvider
@Override public void setContentProvider(IContentProvider provider)
AbstractTableViewer
. From source file:net.sf.eclipsensis.installoptions.properties.dialogs.ListItemsDialog.java
License:Open Source License
@Override protected Control createDialogArea(Composite parent) { final Composite composite = (Composite) super.createDialogArea(parent); GridLayout layout = (GridLayout) composite.getLayout(); layout.numColumns = 2;/* w w w.j a v a 2 s . c o m*/ layout.makeColumnsEqualWidth = false; Table table = new Table(composite, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION | SWT.V_SCROLL); initializeDialogUnits(table); GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); data.widthHint = convertWidthInCharsToPixels(40); data.heightHint = convertHeightInCharsToPixels(10); table.setLayoutData(data); table.setLinesVisible(true); new TableColumn(table, SWT.LEFT); final TableViewer viewer = new TableViewer(table); viewer.setContentProvider(new CollectionContentProvider()); viewer.setLabelProvider(new LabelProvider()); final TextCellEditor textEditor = new TextCellEditor(table); ((Text) textEditor.getControl()).addVerifyListener(new VerifyListener() { public void verifyText(VerifyEvent e) { e.doit = e.text.indexOf(IInstallOptionsConstants.LIST_SEPARATOR) < 0; if (!e.doit) { e.display.beep(); } } }); viewer.setColumnProperties(new String[] { "item" }); //$NON-NLS-1$ viewer.setCellEditors(new CellEditor[] { textEditor }); viewer.setCellModifier(new ICellModifier() { public boolean canModify(Object element, String property) { return true; } public Object getValue(Object element, String property) { return element; } @SuppressWarnings("unchecked") public void modify(Object element, String property, Object value) { if (value == null) { Common.openError(getShell(), textEditor.getErrorMessage(), InstallOptionsPlugin.getShellImage()); } else { TableItem ti = (TableItem) element; Table t = ti.getParent(); int n = t.getSelectionIndex(); List<String> list = (List<String>) viewer.getInput(); if (n < list.size()) { list.set(n, (String) value); } else { list.add((String) value); } viewer.refresh(true); viewer.setSelection(new StructuredSelection(value)); } } }); final Composite buttons = new Composite(composite, SWT.NONE); buttons.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false)); layout = new GridLayout(1, false); layout.marginWidth = 0; layout.marginHeight = 0; buttons.setLayout(layout); final Button add = new Button(buttons, SWT.PUSH); add.setImage(CommonImages.ADD_ICON); add.setToolTipText(EclipseNSISPlugin.getResourceString("new.tooltip")); //$NON-NLS-1$ add.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); add.addListener(SWT.Selection, new Listener() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { List<String> list = (List<String>) viewer.getInput(); if (list != null) { int counter = 1; String item = InstallOptionsPlugin.getFormattedString("default.listitem.label", //$NON-NLS-1$ new Object[] { new Integer(counter++) }); while (Common.collectionContainsIgnoreCase(list, item)) { item = InstallOptionsPlugin.getFormattedString("default.listitem.label", //$NON-NLS-1$ new Object[] { new Integer(counter++) }); } list.add(item); viewer.refresh(false); viewer.setSelection(new StructuredSelection(item)); viewer.editElement(item, 0); Text t = (Text) textEditor.getControl(); t.setSelection(item.length()); } } }); final Button del = new Button(buttons, SWT.PUSH); del.setImage(CommonImages.DELETE_ICON); del.setToolTipText(EclipseNSISPlugin.getResourceString("remove.tooltip")); //$NON-NLS-1$ del.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); del.addListener(SWT.Selection, new Listener() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { List<String> list = (List<String>) viewer.getInput(); if (list != null) { IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); if (!selection.isEmpty()) { for (Iterator<?> iter = selection.toList().iterator(); iter.hasNext();) { list.remove(iter.next()); } viewer.refresh(false); } } } }); del.setEnabled(!viewer.getSelection().isEmpty()); final TableViewerUpDownMover<List<String>, String> mover = new TableViewerUpDownMover<List<String>, String>() { @Override @SuppressWarnings("unchecked") protected List<String> getAllElements() { return (List<String>) ((TableViewer) getViewer()).getInput(); } @Override protected void updateStructuredViewerInput(List<String> input, List<String> elements, List<String> move, boolean isDown) { (input).clear(); (input).addAll(elements); } }; mover.setViewer(viewer); final Button up = new Button(buttons, SWT.PUSH); up.setImage(CommonImages.UP_ICON); up.setToolTipText(EclipseNSISPlugin.getResourceString("up.tooltip")); //$NON-NLS-1$ up.setEnabled(mover.canMoveUp()); up.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); up.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { mover.moveUp(); } }); final Button down = new Button(buttons, SWT.PUSH); down.setImage(CommonImages.DOWN_ICON); down.setToolTipText(EclipseNSISPlugin.getResourceString("down.tooltip")); //$NON-NLS-1$ down.setEnabled(mover.canMoveDown()); down.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); down.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { mover.moveDown(); } }); viewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection sel = (IStructuredSelection) event.getSelection(); del.setEnabled(!sel.isEmpty()); up.setEnabled(mover.canMoveUp()); down.setEnabled(mover.canMoveDown()); } }); table.addControlListener(new TableResizer()); viewer.setInput(mValues); return composite; }
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 w w w. j a v a 2 s .co m*/ 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.eclipsensis.settings.NSISSettingsEditorPage.java
License:Open Source License
protected <S, T> TableViewer createTableViewer(Composite composite, final S input, IContentProvider contentProvider, ILabelProvider labelProvider, String description, String[] columnNames, String addTooltip, String editTooltip, String removeTooltip, SelectionListener addAdapter, SelectionListener editAdapter, SelectionListener removeAdapter, IDoubleClickListener doubleClickListener, final TableViewerUpDownMover<S, T> mover) { GridLayout layout = new GridLayout(2, false); composite.setLayout(layout);/*from w w w.jav a2 s . c o m*/ Label label = new Label(composite, SWT.LEFT); label.setText(description); GridData data = new GridData(SWT.FILL, SWT.CENTER, false, false); data.horizontalSpan = 2; label.setLayoutData(data); Table table = new Table(composite, SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); if (!Common.isEmptyArray(columnNames)) { table.setHeaderVisible(true); table.setLinesVisible(true); TableColumn[] columns = new TableColumn[columnNames.length]; for (int i = 0; i < columnNames.length; i++) { columns[i] = new TableColumn(table, SWT.LEFT, i); columns[i].setText(columnNames[i]); } table.addControlListener(new TableResizer()); } TableViewer viewer = new TableViewer(table); viewer.setContentProvider((contentProvider == null ? new WorkbenchContentProvider() : contentProvider)); viewer.setLabelProvider((labelProvider == null ? new WorkbenchLabelProvider() : labelProvider)); viewer.setInput(input); mover.setViewer(viewer); data = new GridData(SWT.FILL, SWT.FILL, true, true); data.verticalSpan = 5; table.setLayoutData(data); Button addButton = createButton(composite, CommonImages.ADD_ICON, addTooltip); if (addAdapter != null) { addButton.addSelectionListener(addAdapter); } final Button editButton = createButton(composite, CommonImages.EDIT_ICON, editTooltip); editButton.setEnabled(false); if (editAdapter != null) { editButton.addSelectionListener(editAdapter); } final Button removeButton = createButton(composite, CommonImages.DELETE_ICON, removeTooltip); removeButton.setEnabled(false); if (removeAdapter != null) { removeButton.addSelectionListener(removeAdapter); } final Button upButton = createButton(composite, CommonImages.UP_ICON, EclipseNSISPlugin.getResourceString("up.tooltip")); //$NON-NLS-1$ upButton.setEnabled(mover.canMoveUp()); upButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { mover.moveUp(); } }); final Button downButton = createButton(composite, CommonImages.DOWN_ICON, EclipseNSISPlugin.getResourceString("down.tooltip")); //$NON-NLS-1$ downButton.setEnabled(mover.canMoveDown()); downButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { mover.moveDown(); } }); viewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); removeButton.setEnabled((selection != null && !selection.isEmpty())); editButton.setEnabled((selection != null && selection.size() == 1)); upButton.setEnabled(mover.canMoveUp()); downButton.setEnabled(mover.canMoveDown()); } }); viewer.addDoubleClickListener(doubleClickListener); return viewer; }
From source file:net.sf.eclipsensis.wizard.settings.dialogs.NSISInstallFilesDialog.java
License:Open Source License
@Override protected Control createControlContents(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); Dialog.applyDialogFont(composite); GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true); gd.widthHint = Common.calculateControlSize(composite, 60, 0).x; composite.setLayoutData(gd);//ww w . j av a2s.c om GridLayout layout = new GridLayout(2, false); layout.marginHeight = 0; layout.marginWidth = 0; composite.setLayout(layout); Label label = NSISWizardDialogUtil.createLabel(composite, SWT.LEFT, "wizard.source.files.label", true, null, //$NON-NLS-1$ true); ((GridData) label.getLayoutData()).horizontalSpan = 2; Composite composite2 = new Composite(composite, SWT.NONE); gd = new GridData(SWT.FILL, SWT.FILL, true, true); gd.horizontalSpan = 2; gd.heightHint = convertHeightInCharsToPixels(10); composite2.setLayoutData(gd); layout = new GridLayout(2, false); layout.marginHeight = 0; layout.marginWidth = 0; composite2.setLayout(layout); Table table = new Table(composite2, SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); table.setLinesVisible(true); table.setHeaderVisible(true); gd = new GridData(SWT.FILL, SWT.FILL, true, true); gd.verticalSpan = 2; table.setLayoutData(gd); TableColumn[] columns = { new TableColumn(table, SWT.LEFT, 0) }; columns[0].setText(EclipseNSISPlugin.getResourceString("wizard.file.name.label")); //$NON-NLS-1$ final TableViewer viewer = new TableViewer(table); viewer.setContentProvider(new CollectionContentProvider()); viewer.setLabelProvider(new CollectionLabelProvider()); viewer.setInput(mFiles); final TableViewerUpDownMover<Collection<String>, String> mover = new TableViewerUpDownMover<Collection<String>, String>() { @Override @SuppressWarnings("unchecked") protected List<String> getAllElements() { Collection<String> collection = (Collection<String>) ((TableViewer) getViewer()).getInput(); if (collection instanceof List<?>) { return (List<String>) collection; } else { return new ArrayList<String>(collection); } } @Override protected void updateStructuredViewerInput(Collection<String> input, List<String> elements, List<String> move, boolean isDown) { input.clear(); input.addAll(elements); } }; mover.setViewer(viewer); composite2 = new Composite(composite2, SWT.NONE); gd = new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false); gd.horizontalSpan = 1; composite2.setLayoutData(gd); layout = new GridLayout(1, false); layout.marginHeight = 0; layout.marginWidth = 0; composite2.setLayout(layout); final Button addButton = new Button(composite2, SWT.PUSH); addButton.setToolTipText(EclipseNSISPlugin.getResourceString("wizard.add.files.tooltip")); //$NON-NLS-1$ addButton.setImage(CommonImages.ADD_ICON); gd = new GridData(SWT.FILL, SWT.BEGINNING, false, false); addButton.setLayoutData(gd); final Button removeButton = new Button(composite2, SWT.PUSH); removeButton.setToolTipText(EclipseNSISPlugin.getResourceString("wizard.remove.files.tooltip")); //$NON-NLS-1$ removeButton.setImage(CommonImages.DELETE_ICON); gd = new GridData(SWT.FILL, SWT.BEGINNING, false, false); removeButton.setLayoutData(gd); removeButton.setEnabled(false); final Button upButton = new Button(composite2, SWT.PUSH); gd = new GridData(SWT.FILL, SWT.BEGINNING, false, false); upButton.setLayoutData(gd); upButton.setImage(CommonImages.UP_ICON); upButton.setToolTipText(EclipseNSISPlugin.getResourceString("up.tooltip")); //$NON-NLS-1$ upButton.setEnabled(mover.canMoveUp()); final Button downButton = new Button(composite2, SWT.PUSH); gd = new GridData(SWT.FILL, SWT.BEGINNING, false, false); downButton.setLayoutData(gd); downButton.setImage(CommonImages.DOWN_ICON); downButton.setToolTipText(EclipseNSISPlugin.getResourceString("down.tooltip")); //$NON-NLS-1$ downButton.setEnabled(mover.canMoveDown()); final ResourceBundle bundle = EclipseNSISPlugin.getDefault().getResourceBundle(); addButton.addSelectionListener(new SelectionAdapter() { String filterPath = ""; //$NON-NLS-1$ @Override public void widgetSelected(SelectionEvent e) { FileDialog dialog = new FileDialog(getShell(), SWT.OPEN | SWT.MULTI | SWT.PRIMARY_MODAL); dialog.setText(EclipseNSISPlugin.getResourceString("wizard.files.dialog.title")); //$NON-NLS-1$ dialog.setFilterNames(Common.loadArrayProperty(bundle, "wizard.source.file.filternames")); //$NON-NLS-1$ dialog.setFilterExtensions(Common.loadArrayProperty(bundle, "wizard.source.file.filters")); //$NON-NLS-1$ if (!Common.isEmpty(filterPath)) { dialog.setFilterPath(filterPath); } if (dialog.open() != null) { filterPath = dialog.getFilterPath(); String[] fileNames = dialog.getFileNames(); for (int i = 0; i < fileNames.length; i++) { mFiles.add(IOUtility.encodePath( new StringBuffer(filterPath).append("\\").append(fileNames[i]).toString())); //$NON-NLS-1$ } viewer.refresh(); validate(); } } }); removeButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); for (Iterator<?> iter = selection.iterator(); iter.hasNext();) { mFiles.remove(iter.next()); } viewer.refresh(); validate(); } }); upButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent se) { mover.moveUp(); } }); downButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent se) { mover.moveDown(); } }); viewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); removeButton.setEnabled((selection != null && !selection.isEmpty())); upButton.setEnabled(mover.canMoveUp()); downButton.setEnabled(mover.canMoveDown()); } }); table.addControlListener(new TableResizer()); final Combo c1 = NSISWizardDialogUtil.createCombo(composite, NSISWizardUtil.getPathConstantsAndVariables(mWizard.getSettings().getTargetPlatform()), mStore.getString("destination"), //$NON-NLS-1$ false, "wizard.destination.label", true, null, true); //$NON-NLS-1$ c1.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { mStore.setValue("destination", c1.getText().trim()); //$NON-NLS-1$ validate(); } }); gd = (GridData) c1.getLayoutData(); gd.horizontalAlignment = GridData.FILL; final Combo c2 = NSISWizardDialogUtil.createCombo(composite, NSISWizardDisplayValues.OVERWRITE_MODE_NAMES, mStore.getInt("overwriteMode"), //$NON-NLS-1$ true, "wizard.overwrite.label", true, null, false); //$NON-NLS-1$ c2.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { mStore.setValue("overwriteMode", c2.getSelectionIndex()); //$NON-NLS-1$ } }); Composite composite3 = new Composite(composite, SWT.NONE); gd = new GridData(SWT.FILL, SWT.FILL, true, false); gd.horizontalSpan = 3; composite3.setLayoutData(gd); layout = new GridLayout(2, true); layout.marginHeight = 0; layout.marginWidth = 0; composite3.setLayout(layout); final Button b1 = NSISWizardDialogUtil.createCheckBox(composite3, "wizard.preserveattr.label", mStore //$NON-NLS-1$ .getBoolean("preserveAttributes"), true, null, false); //$NON-NLS-1$ gd = (GridData) b1.getLayoutData(); gd.horizontalSpan = 1; gd.grabExcessHorizontalSpace = true; b1.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { mStore.setValue("preserveAttributes", b1.getSelection()); //$NON-NLS-1$ } }); final Button b2 = NSISWizardDialogUtil.createCheckBox(composite3, "wizard.nonfatal.label", mStore //$NON-NLS-1$ .getBoolean("nonFatal"), true, null, false); //$NON-NLS-1$ gd = (GridData) b2.getLayoutData(); gd.horizontalSpan = 1; gd.grabExcessHorizontalSpace = true; b2.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { mStore.setValue("nonFatal", b2.getSelection()); //$NON-NLS-1$ } }); return composite; }
From source file:net.sf.gted.editor.entry.detail.EntryDetailsPage.java
License:Open Source License
/** * Create a references table viewer. @note the given viewer will be * overriden.//from www. ja v a 2 s . c om * * @param viewer * table viewer reference which should be recreated * @param entry * current selected po entry * @param table * the tabe * @param columnNames * column names * @param poFile * source po file */ protected void createReferencesViewer(TableViewer viewer, POEntry entry, Table table, String[] columnNames, final IFile poFile) { viewer = new TableViewer(table); viewer.setUseHashlookup(true); viewer.setColumnProperties(columnNames); viewer.setContentProvider(new ReferenceTableContentProvider()); viewer.setLabelProvider(new ReferenceTableLabelProvider()); viewer.setInput(entry); viewer.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(final DoubleClickEvent event) { final Object obj = ((StructuredSelection) event.getSelection()).getFirstElement(); if (obj instanceof POReference) { final POReference reference = (POReference) obj; final Integer lineNumber = reference.lineAsInteger(); String filename = applySourceFilePathPrefixIfPresent(reference); final IFile sourcefile = poFile.getProject().getFile(filename); OpenEditorHelper.openEditor(sourcefile, lineNumber); } } }); }
From source file:net.sf.jmoney.reconciliation.reconcilePage.StatementsSection.java
License:Open Source License
public StatementsSection(Composite parent, FormToolkit toolkit, CurrencyAccount account) { super(parent, toolkit, Section.DESCRIPTION | Section.TITLE_BAR); getSection().setText("Statements"); getSection().setDescription("Double click a statement to show that statement."); final Currency currencyForFormatting = account.getCurrency(); Composite composite = new Composite(getSection(), SWT.NONE); composite.setLayout(new GridLayout()); statementTable = new Table(composite, SWT.FULL_SELECTION | SWT.SINGLE | SWT.V_SCROLL); GridData gdTable = new GridData(SWT.FILL, SWT.FILL, true, true); gdTable.heightHint = 100;//www.j a v a 2 s .c om statementTable.setLayoutData(gdTable); statementTable.setHeaderVisible(true); statementTable.setLinesVisible(true); // Create and setup the TableViewer TableViewer tableViewer = new TableViewer(statementTable); tableViewer.setUseHashlookup(true); // Add the columns TableViewerColumn statementColumn = new TableViewerColumn(tableViewer, SWT.LEFT); statementColumn.getColumn().setWidth(65); statementColumn.getColumn().setText("Statement"); statementColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { StatementDetails statementDetails = (StatementDetails) element; return statementDetails.statement.toLocalizedString(); } }); balanceColumn = new TableViewerColumn(tableViewer, SWT.RIGHT); balanceColumn.getColumn().setWidth(70); balanceColumn.getColumn().setText("Balance"); balanceColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { StatementDetails statementDetails = (StatementDetails) element; return currencyForFormatting.format(statementDetails.getClosingBalance()); } }); contentProvider = new StatementContentProvider(tableViewer); tableViewer.setContentProvider(contentProvider); tableViewer.setComparator(new StatementViewerComparator()); tableViewer.setInput(account); /* * Scroll the statement list to the bottom so that the most recent * statements are shown (if there are any statements). */ StatementDetails lastStatementDetails = contentProvider.getLastStatement(); if (lastStatementDetails != null) { tableViewer.reveal(lastStatementDetails); } getSection().setClient(composite); toolkit.paintBordersFor(composite); refresh(); }
From source file:net.sf.sveditor.ui.search.SVSearchResultsPage.java
License:Open Source License
@Override protected void configureTableViewer(TableViewer viewer) { fTableContentProvider = new SVSearchTableContentProvider(this, viewer); SVSearchTableLabelProvider provider = new SVSearchTableLabelProvider(); viewer.setContentProvider(fTableContentProvider); viewer.setLabelProvider(new SVDecoratingSearchTableLabelProvider(provider)); }
From source file:net.sf.versiontree.views.VersionTreeView.java
License:Open Source License
/** * @param sashForm//from w w w . java2 s .c om * @return */ private TableViewer createTagViewer(SashForm parent) { Table table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER); TableViewer result = new TableViewer(table); TableLayout layout = new TableLayout(); layout.addColumnData(new ColumnWeightData(100)); table.setLayout(layout); result.setContentProvider(new SimpleContentProvider() { @Override public Object[] getElements(Object inputElement) { if (inputElement == null) { return new Object[0]; } CVSTag[] tags = (CVSTag[]) inputElement; return tags; } }); result.setLabelProvider(new TagLabelProvider()); result.setSorter(new ViewerSorter() { @Override public int compare(Viewer viewer, Object e1, Object e2) { if (!(e1 instanceof CVSTag) || !(e2 instanceof CVSTag)) { return super.compare(viewer, e1, e2); } CVSTag tag1 = (CVSTag) e1; CVSTag tag2 = (CVSTag) e2; int type1 = tag1.getType(); int type2 = tag2.getType(); if (type1 != type2) { return type2 - type1; } return super.compare(viewer, tag1, tag2); } }); return result; }
From source file:net.sf.versiontree.views.VersionTreeView.java
License:Open Source License
/** * @param sashForm/*from w w w .java 2 s. c om*/ * @return */ private TableViewer createTableViewer(SashForm parent) { detailProvider = new DetailTableProvider(); TableViewer viewer = detailProvider.createTable(parent); viewer.setContentProvider(new ViewContentProvider()); return viewer; }
From source file:net.sourceforge.sqlexplorer.dataset.DataSetTable.java
License:Open Source License
/** * Create a new table element for a resultset in a given composite. * /*from w ww.j ava 2 s. c o m*/ * @param composite canvas to draw table on * @param dataSet content of table * @param info text displayed in bottem left corner under table */ public DataSetTable(Composite parent, final DataSet dataSet, String info) throws Exception { final Composite composite = new Composite(parent, SWT.FILL); GridLayout layout = new GridLayout(); layout.numColumns = 2; layout.marginLeft = 0; layout.horizontalSpacing = 0; layout.verticalSpacing = 2; layout.marginWidth = 0; layout.marginHeight = 0; GridData gridData = new GridData(GridData.FILL_BOTH); gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; composite.setLayout(layout); composite.setLayoutData(gridData); // check column labels & types DataSet.Column[] columns = dataSet.getColumns(); String[] columnLabels = new String[columns.length]; for (int i = 0; i < columnLabels.length; i++) columnLabels[i] = columns[i].getCaption(); if (columnLabels == null || columnLabels.length == 0) throw new Exception(Messages.getString("DataSetTable.errorInvalid")); // create table structure final TableViewer tableViewer = new TableViewer(composite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.VIRTUAL); final Table table = tableViewer.getTable(); tableViewer.setColumnProperties(columnLabels); table.setItemCount(dataSet.getRows().length); // create listener for sorting Listener sortListener = new Listener() { public void handleEvent(Event e) { // determine new sort column and direction TableColumn sortColumn = table.getSortColumn(); TableColumn currentColumn = (TableColumn) e.widget; int dir = table.getSortDirection(); if (sortColumn == currentColumn) { dir = dir == SWT.UP ? SWT.DOWN : SWT.UP; } else { table.setSortColumn(currentColumn); dir = SWT.UP; } // sort the data based on column and direction dataSet.sort(((Integer) currentColumn.getData("orignalColumnIndex")).intValue(), dir);//$NON-NLS-1$ // update data displayed in table table.setSortDirection(dir); table.clearAll(); } }; GridData tGridData = new GridData(); tGridData.horizontalSpan = 2; tGridData.grabExcessHorizontalSpace = true; tGridData.grabExcessVerticalSpace = true; tGridData.horizontalAlignment = SWT.FILL; tGridData.verticalAlignment = SWT.FILL; table.setLayoutData(tGridData); GridLayout tlayout = new GridLayout(); tlayout.numColumns = 2; tlayout.marginLeft = 0; table.setLayout(tlayout); table.setHeaderVisible(true); table.setLinesVisible(true); // store dataset for use in actions table.setData(dataSet); // add all column headers to our table for (int i = 0; i < columns.length; i++) { DataSet.Column colDef = columns[i]; // add column header TableColumn column = new TableColumn(table, colDef.isRightJustify() ? SWT.RIGHT : SWT.LEFT); column.setText(colDef.getCaption()); column.setMoveable(true); column.setResizable(true); column.addListener(SWT.Selection, sortListener); column.setData("orignalColumnIndex", new Integer(i));//$NON-NLS-1$ } tableViewer.setContentProvider(new DataSetTableContentProvider()); tableViewer.setLabelProvider(new DataSetTableLabelProvider()); tableViewer.setInput(dataSet); // add status bar labels Label infoLabel = new Label(composite, SWT.NULL); infoLabel.setText(info); infoLabel.setLayoutData(new GridData(SWT.LEFT, SWT.NULL, true, false)); final Label positionLabel = new Label(composite, SWT.NULL); positionLabel.setText("");//$NON-NLS-1$ positionLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.NULL, true, false)); // create a TableCursor to navigate around the table final TableCursor cursor = new TableCursor(table, SWT.NONE); cursor.setBackground(table.getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION)); cursor.setForeground(table.getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT)); cursor.setLayout(new FillLayout()); cursor.setVisible(false); cursor.addSelectionListener(new SelectionAdapter() { // when the TableEditor is over a cell, select the corresponding row in // the table public void widgetSelected(SelectionEvent e) { table.setSelection(new TableItem[] { cursor.getRow() }); cursor.setVisible(true); // update label with row/column position positionLabel.setText(Messages.getString("DatabaseDetailView.Tab.RowPrefix") + " " + (table.indexOf(cursor.getRow()) + 1) + Messages.getString("DatabaseDetailView.Tab.ColumnPrefix") + " " + (cursor.getColumn() + 1)); //$NON-NLS-2$ $NON-NLS-4$ positionLabel.getParent().layout(); positionLabel.redraw(); // Show the preview IWorkbenchPage page = SQLExplorerPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow() .getActivePage(); if (page != null) { DataPreviewView view = (DataPreviewView) page.findView(DataPreviewView.class.getName()); if (view != null) { TableItem row = cursor.getRow(); int column = cursor.getColumn(); DataSetRow dsRow = (DataSetRow) row.getData(); Object obj = dsRow.getRawObjectValue(column); try { view.previewData(null, obj); } catch (ExplorerException ex) { SQLExplorerPlugin.error(ex.getMessage(), ex); } } } } }); // add resize listener for cursor, to stop cursor from // taking strange shapes after being table is resized cursor.addControlListener(new ControlAdapter() { public void controlResized(ControlEvent e) { if (cursor != null) { if (cursor.getRow() == null) { cursor.setVisible(false); } else { cursor.layout(); cursor.redraw(); cursor.setVisible(true); } } } }); table.addFocusListener(new FocusAdapter() { public void focusGained(FocusEvent e) { Table t = (Table) e.widget; if (t.getItemCount() != 0) { cursor.setVisible(true); } } }); // refresh tab on F5, copy cell on CTRL-C, etc KeyListener keyListener = new DataSetTableKeyListener(parent, table, cursor); cursor.addKeyListener(keyListener); table.addKeyListener(keyListener); // add context menu to table & cursor final DataSetTableActionGroup actionGroup = new DataSetTableActionGroup(table, cursor); MenuManager menuManager = new MenuManager("DataSetTableContextMenu");//$NON-NLS-1$ menuManager.setRemoveAllWhenShown(true); Menu contextMenu = menuManager.createContextMenu(table); tableViewer.getControl().setMenu(contextMenu); cursor.setMenu(contextMenu); menuManager.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager manager) { actionGroup.fillContextMenu(manager); } }); tableViewer.getTable().pack(); for (TableColumn column : tableViewer.getTable().getColumns()) column.pack(); }