Example usage for org.eclipse.jface.viewers TableViewer setContentProvider

List of usage examples for org.eclipse.jface.viewers TableViewer setContentProvider

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers TableViewer setContentProvider.

Prototype

@Override
public void setContentProvider(IContentProvider provider) 

Source Link

Document

Sets the content provider used by this AbstractTableViewer.

Usage

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();
}