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.enilink.komma.edit.ui.wizards.RefactorRenameWizard.java

License:Open Source License

protected void createPages() {
    configureRenamesPage = new WizardPage("Configure the new URIs to use.") {
        @Override//from   ww w  . j  a  va 2s. c o  m
        public void createControl(Composite parent) {

            Composite composite = new Composite(parent, SWT.NONE);
            composite.setLayout(new GridLayout());

            // nested composite for "one namespace to rule them all"
            Composite nsComposite = new Composite(composite, SWT.NONE);
            GridLayout ncLayout = new GridLayout(2, false);
            ncLayout.marginHeight = 0;
            ncLayout.marginWidth = 0;
            nsComposite.setLayout(ncLayout);

            // toggle button for generic or individual renaming
            final Button useSameButton = new Button(nsComposite, SWT.CHECK);
            useSameButton.setSelection(false);
            useSameButton.setText("Move all elements into this namespace:");

            // FIXME: add validation (URI) for text input field
            final Text namespace = new Text(nsComposite, SWT.BORDER);
            namespace.setLayoutData(new GridData(300, SWT.DEFAULT));
            namespace.setEnabled(useSameButton.getSelection());

            // the table viewer for the rename-mappings
            final TableViewer tableViewer = new TableViewer(composite,
                    SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
            tableViewer.getTable().setEnabled(!useSameButton.getSelection());
            tableViewer.getTable().setHeaderVisible(true);
            tableViewer.getTable().setLinesVisible(true);
            tableViewer.setContentProvider(ArrayContentProvider.getInstance());

            TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.LEFT);
            column.getColumn().setText("Current URI");
            column.getColumn().setWidth(300);
            column.setLabelProvider(new TableLabelProvider(TableLabelProvider.ColumnType.BEFORE));

            column = new TableViewerColumn(tableViewer, SWT.LEFT);
            column.getColumn().setText("New URI");
            column.getColumn().setWidth(300);
            column.setLabelProvider(new TableLabelProvider(TableLabelProvider.ColumnType.AFTER));

            // FIXME: add validation (URI) for text input field
            final CellEditor cellEditor = new TextCellEditor((Composite) tableViewer.getControl());
            column.setEditingSupport(new EditingSupport(tableViewer) {

                @Override
                protected CellEditor getCellEditor(Object element) {
                    return cellEditor;
                }

                @Override
                protected boolean canEdit(Object element) {
                    return (element instanceof Map.Entry);
                }

                @SuppressWarnings("rawtypes")
                @Override
                protected Object getValue(Object element) {
                    if (element instanceof Map.Entry) {
                        IReference value = (IReference) ((Map.Entry) element).getValue();
                        return value != null ? value.toString() : "";
                    }
                    return "";
                }

                @SuppressWarnings({ "unchecked", "rawtypes" })
                @Override
                protected void setValue(Object element, Object value) {
                    if (element instanceof Map.Entry) {
                        if (!(value instanceof IReference)) {
                            if (value.toString().isEmpty()) {
                                value = null;
                            } else {
                                value = URIs.createURI(value.toString());
                            }
                        }
                        ((Map.Entry) element).setValue(value);
                        tableViewer.refresh(element);
                    }
                    setPageComplete(!renameMap.values().contains(null));
                    getContainer().updateButtons();
                }
            });

            // button selection toggles text input and table viewer states
            useSameButton.addSelectionListener(new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    namespace.setEnabled(useSameButton.getSelection());
                    tableViewer.getTable().setEnabled(!useSameButton.getSelection());
                }
            });
            // leaving the text input sets the namespace on all elements
            namespace.addFocusListener(new FocusAdapter() {
                @Override
                public void focusLost(FocusEvent e) {
                    URI namespaceURI = URIs.createURI(namespace.getText());
                    for (Map.Entry<IObject, IReference> entry : renameMap.entrySet()) {
                        entry.setValue(namespaceURI.appendFragment(entry.getKey().getURI().fragment()));
                    }
                    tableViewer.refresh();
                    setPageComplete(true);
                    getContainer().updateButtons();
                }
            });

            tableViewer.setInput(renameMap.entrySet());

            setDescription("Set the new URIs for your selected elements.");
            setControl(composite);
            setPageComplete(false);
        }
    };

    showPreviewPage = new RefactorPreviewPage("Preview") {
        @Override
        public Collection<Change> collectChanges() {
            changes = new RefactoringProcessor(domain).createRenameChanges(renameMap);
            return changes;
        }
    };
}

From source file:net.karlmartens.ui.viewer.TableViewerTest.java

License:Apache License

public static void main(String[] args) throws Exception {
    final Image[] images = new Image[] { //
            Images.FILTER.createImage(), //
            Images.COPY.createImage(), //
            Images.CUT.createImage(), //
            Images.PASTE.createImage(), //
    };//from  w  w  w.j  a  v  a 2 s  . co m

    final int fixedColumns = 5;
    final Object[][] input = new Object[100][];
    for (int i = 0; i < input.length; i++) {
        input[i] = new Object[20];
        input[i][0] = images[i % 4];
        input[i][1] = "Item " + Integer.toString(i);
        input[i][2] = Boolean.valueOf(i % 3 == 0);
        input[i][3] = TestComboEditingSupport.ITEMS[0 + (i % TestComboEditingSupport.ITEMS.length)];
        input[i][4] = new LocalDate((int) (Math.random() * 50) + 2000, (int) (Math.random() * 11) + 1,
                (int) (Math.random() * 27) + 1);

        for (int j = fixedColumns; j < input[i].length; j++) {
            input[i][j] = Integer.toString(Double.valueOf(Math.random() * 10000).intValue());
        }
    }

    final Shell shell = new Shell();
    shell.setLayout(GridLayoutFactory.swtDefaults().create());

    final Display display = shell.getDisplay();

    final Button b = new Button(shell, SWT.PUSH);
    b.setLayoutData(GridDataFactory.swtDefaults().create());
    b.setText("Columns");

    final TableViewer viewer = new TableViewer(shell);
    viewer.setContentProvider(new ArrayContentProvider());
    viewer.setComparator(new ViewerComparator(new NumberStringComparator()));

    final TableViewerColumn c0 = new TableViewerColumn(viewer, SWT.NONE);
    c0.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return "";
        }

        @Override
        public Image getImage(Object element) {
            Object[] arr = (Object[]) element;
            return (Image) arr[0];
        }
    });
    c0.getColumn().setWidth(20);

    final TableViewerColumn c1 = new TableViewerColumn(viewer, SWT.NONE);
    c1.setLabelProvider(new TestColumnLabelProvider(1));
    c1.setEditingSupport(new TestTextEditingSupport(viewer, 1, SWT.LEFT));
    c1.getColumn().setText("Name");
    c1.getColumn().setWidth(75);

    final TableViewerColumn c2 = new TableViewerColumn(viewer, SWT.CHECK);
    c2.setLabelProvider(new TestColumnLabelProvider(2));
    c2.setEditingSupport(new TestBooleanEditingSupport(viewer, 2));
    c2.getColumn().setText("Active");
    c2.getColumn().setWidth(60);

    final TableViewerColumn c3 = new TableViewerColumn(viewer, SWT.LEFT);
    c3.setLabelProvider(new TestColumnLabelProvider(3));
    c3.setEditingSupport(new TestComboEditingSupport(viewer, 3));
    c3.getColumn().setText("Color");
    c3.getColumn().setWidth(60);

    final TableViewerColumn c4 = new TableViewerColumn(viewer, SWT.LEFT);
    c4.setLabelProvider(new TestColumnLabelProvider(4));
    c4.setEditingSupport(new TestCalendarComboEditingSupport(viewer, 4));
    c4.getColumn().setText("Date");
    c4.getColumn().setWidth(90);

    for (int i = fixedColumns; i < input[0].length; i++) {
        final TableViewerColumn c = new TableViewerColumn(viewer, SWT.RIGHT);
        c.setLabelProvider(new TestColumnLabelProvider(i));
        c.setEditingSupport(new TestTextEditingSupport(viewer, i, SWT.RIGHT));
        c.getColumn().setText("Test " + Integer.toString(i + 1));
        c.getColumn().setWidth(40);
        c.getColumn().setHideable(false);
        c.getColumn().setFilterable(false);
    }

    final Table table = viewer.getControl();
    table.setLayoutData(GridDataFactory//
            .fillDefaults()//
            .grab(true, true)//
            .create());
    table.setHeaderVisible(true);
    table.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
    table.setFont(new Font(display, "Arial", 8, SWT.NORMAL));
    table.addColumnSortSupport();
    table.setFixedColumnCount(fixedColumns);
    table.setFixedHeaderColumnCount(1);
    table.setFixedRowCount(3);

    final TableViewerClipboardManager clipboardManager = new TableViewerClipboardManager(viewer,
            OPERATION_COPY | OPERATION_CUT | OPERATION_DELETE | OPERATION_PASTE | OPERATION_SELECT_ALL);
    clipboardManager.createContextMenu();

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            System.out.println("Selection");
        }
    });

    b.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            final ConfigureColumnsDialog dialog = new ConfigureColumnsDialog(shell, table, "Title", "header",
                    "message");
            dialog.open();
        }
    });

    viewer.setInput(input);

    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
}

From source file:net.lopezbobeda.rap.examples.mail.views.MainView.java

License:Open Source License

public MainView(final Composite shell) {
    registerImages();//from w w  w  .  j a  v a 2  s.  c  om
    final Composite parent = new SashForm(shell, SWT.HORIZONTAL | SWT.FILL);
    GridData theCompositeGridData = new GridData();
    theCompositeGridData.grabExcessHorizontalSpace = true;
    theCompositeGridData.grabExcessVerticalSpace = true;
    theCompositeGridData.horizontalAlignment = SWT.FILL;
    theCompositeGridData.verticalAlignment = SWT.FILL;
    parent.setLayoutData(theCompositeGridData);

    // GridLayout layout = new GridLayout(2, false);
    // parent.setLayout(layout);
    final TreeView label = new TreeView(parent);

    GridData labelGridData = new GridData();
    // labelGridData.verticalSpan = 2;
    labelGridData.grabExcessVerticalSpace = true;
    labelGridData.verticalAlignment = SWT.FILL;
    label.getViewer().getTree().setLayoutData(labelGridData);

    final Composite rightView = new Composite(parent, SWT.NONE);
    GridLayout rightViewLayout = new GridLayout(1, false);
    rightView.setLayout(rightViewLayout);

    TableViewer viewer = new TableViewer(rightView,
            SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.RESIZE);
    createColumns(viewer);

    final Table table = viewer.getTable();
    table.setHeaderVisible(true);
    table.setLinesVisible(true);
    GridData gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalAlignment = SWT.FILL;
    Email[] emails = new Email[] {
            new Email("edmundo@lopezbobeda.net", "jean.val.jean@miserable.fr", "Urgent!!", "Message 1"),
            new Email("diego.de.la.vega@lopezbobeda.net", "jean.val.jean@miserable.fr", "Plus Urgent!!",
                    "Message 2") };

    final Label placeHolder = new Label(rightView, SWT.NONE);
    placeHolder.setText("No message selected");

    table.setLayoutData(gridData);

    viewer.setContentProvider(ArrayContentProvider.getInstance());
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {

        Composite mailView = null;

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            if (!placeHolder.isDisposed()) {
                placeHolder.dispose();
            }
            if (mailView != null) {
                mailView.dispose();
            }
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            MessageView mv = new MessageView(rightView, (Email) selection.getFirstElement());
            mailView = mv.getView();
            rightView.layout();
        }
    });
    viewer.setInput(emails);
}

From source file:net.rim.ejde.internal.ui.editors.locale.ResourceEditorPage.java

License:Open Source License

private TableViewer createTableViewer(Control topAttachControl, ResourceLocale locale) {
    Table table = createTable(topAttachControl);
    TableViewer viewer = new TableViewer(table);
    viewer.setColumnProperties(_columnProperties);
    viewer.setContentProvider(_contentProvider);
    viewer.setLabelProvider(_labelProvider);
    viewer.setSorter(new ResourceSorter(viewer, _comparators));
    viewer.setInput(locale);/*from  w w w  .j av  a 2 s .c  o m*/

    return viewer;
}

From source file:net.rim.ejde.internal.ui.editors.model.factories.ControlFactory.java

License:Open Source License

/**
 * Builds a table control onto the given composite body
 *
 * @param label/*w w w. j ava2s. c  om*/
 * @param style
 * @param columns
 * @param columnProperties
 * @param body
 * @param toolkit
 * @param cProvider
 * @param lProvider
 * @param input
 * @return
 */
public static final Viewer buildTableControl(Composite body, FormToolkit toolkit, String label,
        String toolTipText, Integer style, Integer columns, String columnProperties[],
        IStructuredContentProvider contentProvider, ITableLabelProvider labelProvider, Object input) {
    // Create label control
    if (label != null) {
        buildLabelControl(body, toolkit, ControlFactory.ControlType.LABEL, label, 3);
    }

    Integer tableStyle = SWT.VIRTUAL | SWT.FULL_SELECTION | SWT.BORDER;

    if (style != null) {
        tableStyle = tableStyle | style;
    }
    if ((tableStyle & SWT.MULTI) == 0) {
        tableStyle = tableStyle + SWT.SINGLE;
    }

    // Create table control
    Table table = toolkit.createTable(body, tableStyle);
    table.setToolTipText(toolTipText);

    CellEditor[] editors = new CellEditor[1];
    TextCellEditor textEditor = new TextCellEditor(table);
    textEditor.setStyle(SWT.READ_ONLY);
    editors[0] = textEditor;

    // Create table viewer control
    TableViewer tableViewer;
    if ((tableStyle & SWT.CHECK) != 0) {
        tableViewer = new CheckboxTableViewer(table);
    } else {
        tableViewer = new TableViewer(table);
    }
    tableViewer.setContentProvider(contentProvider == null ? new DefaultContentProvider() : contentProvider);
    tableViewer.setLabelProvider(labelProvider == null ? new DefaultLabelProvider() : labelProvider);
    tableViewer.setUseHashlookup(true);
    tableViewer.setColumnProperties(columnProperties);
    tableViewer.setCellEditors(editors);
    tableViewer.setInput(input);

    initializeControlLayout(body, table, ControlType.TABLE, columns);
    return tableViewer;
}

From source file:net.rim.ejde.internal.ui.views.process.ProcessView.java

License:Open Source License

public void createTableViewPart(Composite parent) {
    TableViewer tableViewer = new TableViewer(parent,
            SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.VIRTUAL | SWT.SINGLE | SWT.FULL_SELECTION);
    tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
    tableViewer.getTable().setHeaderVisible(true);
    tableViewer.getTable().setLinesVisible(true);
    tableViewer.setContentProvider(new VarContentProvider(tableViewer));
    VarLabelProvider labelProvider = new VarLabelProvider(tableViewer);
    setLabelProvider(labelProvider);/* ww  w.  j a va  2 s.c o m*/
    tableViewer.setLabelProvider(labelProvider);
    tableViewer.getTable().addMouseListener(new VarMouseAdapter());
    tableViewer.getTable().addSelectionListener(new VarTableRowSelectionListener());
    setTableView(tableViewer);
    // create table columns
    createColumns();
    // create context menu(pop-up menu)
    createContextMenu();
    // start live update
    startLiveupdate();
}

From source file:net.roboconf.eclipse.modeler.dialogs.ImportedVariableDialog.java

License:Apache License

@Override
protected Control createDialogArea(Composite parent) {

    // Global UI//www.j  av  a2  s.c om
    Composite bigContainer = (Composite) super.createDialogArea(parent);
    GridLayoutFactory.swtDefaults().margins(5, 0).applyTo(bigContainer);
    bigContainer.setLayoutData(new GridData(GridData.FILL_BOTH));

    getShell().setText("Imported Variables");
    setTitle("Imported Variables");
    setMessage("Edit the variables to import.");

    // Find all the variables
    for (RoboconfFacet type : findAllFacetsAndComponents()) {

        Collection<String> varNames = findAllExportedVariables(type);
        if (!type.getExports().isEmpty())
            varNames.add(type.getName() + ".*");

        for (String varName : varNames) {
            RoboconfImportedVariable var = RoboconfEmfFactory.eINSTANCE.createRoboconfImportedVariable();
            var.setName(varName);
            if (var.getName().startsWith(this.component.getName() + "."))
                var.setOptional(true);

            this.nameToImportedVariables.put(varName, var);
        }
    }

    // Update the map that will act as our model.
    // We do this in two steps because...
    // 1. nameToImportedVariables is a tree map. Variables are sorted alphabetically.
    // 2. importedVariablesToTaken is our model for the UI. Since it is a linked hash map,
    // it preserves insertion order. So, we preserve the order from the tree map.
    //
    // And we cannot directly use a tree map with imported variables.
    // The class was generated by EMF and there is no natural ordering.
    for (RoboconfImportedVariable var : this.nameToImportedVariables.values()) {
        this.importedVariablesToTaken.put(var, Boolean.FALSE);
    }

    // Should they be marked as used?
    updateImportedVariablesStates();

    // Display them in a table viewer
    final TableViewer viewer = new TableViewer(bigContainer, SWT.BORDER | SWT.SINGLE);
    viewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
    viewer.getTable().setHeaderVisible(true);
    viewer.getTable().setLinesVisible(true);

    TableLayout tlayout = new TableLayout();
    tlayout.addColumnData(new ColumnWeightData(12, 90, true));
    tlayout.addColumnData(new ColumnWeightData(40, 200, true));
    tlayout.addColumnData(new ColumnWeightData(12, 90, true));
    viewer.getTable().setLayout(tlayout);

    String[] columnTitles = { "Import", "Variable Name", "Optional" };
    for (int i = 0; i < columnTitles.length; i++) {
        int style = i == 1 ? SWT.LEFT : SWT.CENTER;
        TableColumn column = new TableColumn(viewer.getTable(), style);
        column.setText(columnTitles[i]);
    }

    viewer.setLabelProvider(new ImportedVariableLabelProvider(this.checked, this.unchecked));
    viewer.setContentProvider(new ArrayContentProvider());
    viewer.setInput(this.importedVariablesToTaken.entrySet());
    viewer.getTable().addListener(SWT.MouseDoubleClick, new Listener() {

        @Override
        @SuppressWarnings({ "unchecked", "rawtypes" })
        public void handleEvent(Event event) {

            Point p = new Point(event.x, event.y);
            ViewerCell cell = viewer.getCell(p);

            Map.Entry<RoboconfImportedVariable, Boolean> entry = (Map.Entry) cell.getElement();
            RoboconfImportedVariable var = entry.getKey();

            if (cell.getColumnIndex() == 0) {
                entry.setValue(!entry.getValue());

            } else if (cell.getColumnIndex() == 2) {
                var.setOptional(!var.isOptional());
            }

            viewer.refresh(entry);
        }
    });

    return bigContainer;
}

From source file:net.sf.eclipsensis.config.NSISConfigSelectionPage.java

License:Open Source License

public void createControl(Composite parent) {
    Composite parent2 = new Composite(parent, SWT.NONE);
    parent2.setLayout(new GridLayout(1, false));
    Font wizardFont = parent2.getFont();

    Label l = new Label(parent2, SWT.NONE);
    l.setFont(wizardFont);//from   w  w  w  . jav a 2s .  c o  m
    l.setText(EclipseNSISPlugin.getResourceString("config.wizard.welcome.message")); //$NON-NLS-1$

    Group g = new Group(parent2, SWT.NONE);
    g.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    g.setLayout(new GridLayout(1, false));
    l = new Label(g, SWT.NONE);
    l.setText(EclipseNSISPlugin.getResourceString("available.config.wizards.label")); //$NON-NLS-1$
    l.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
    l.setFont(wizardFont);

    Table table = new Table(g, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    table.setFont(wizardFont);
    table.setLinesVisible(false);
    table.setHeaderVisible(false);
    table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    TableViewer viewer = new TableViewer(table);
    viewer.setContentProvider(new CollectionContentProvider());
    viewer.setLabelProvider(new LabelProvider() {
        ImageManager mImageManager = EclipseNSISPlugin.getImageManager();

        @Override
        public Image getImage(Object element) {
            if (element instanceof NSISConfigWizardNode) {
                NSISConfigWizardDescriptor descriptor = ((NSISConfigWizardNode) element).getDescriptor();
                ImageDescriptor icon = descriptor.getIcon();
                if (icon != null) {
                    if (!mImageManager.containsImage(descriptor.getId())) {
                        mImageManager.putImageDescriptor(descriptor.getId(), icon);
                    }
                    return mImageManager.getImage(descriptor.getId());
                }
                return null;
            }
            return super.getImage(element);
        }

        @Override
        public String getText(Object element) {
            if (element instanceof NSISConfigWizardNode) {
                return ((NSISConfigWizardNode) element).getDescriptor().getName();
            }
            return super.getText(element);
        }

    });
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection sel = (IStructuredSelection) event.getSelection();
            if (sel.isEmpty()) {
                setSelectedNode(null);
            } else {
                NSISConfigWizardNode node = (NSISConfigWizardNode) sel.getFirstElement();
                setDescription(node.getDescriptor().getDescription());
                setSelectedNode(node);
            }
        }
    });
    viewer.getTable().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            if (canFlipToNextPage()) {
                IWizardPage nextPage = getNextPage();
                if (nextPage != null) {
                    getContainer().showPage(nextPage);
                }
            }
        }
    });
    NSISConfigWizardDescriptor[] wizardDescriptors = NSISConfigWizardRegistry.INSTANCE.getWizardDescriptors();
    Collection<NSISConfigWizardNode> input = new ArrayList<NSISConfigWizardNode>();
    for (int i = 0; i < wizardDescriptors.length; i++) {
        input.add(new NSISConfigWizardNode(this, wizardDescriptors[i]));
    }
    viewer.setInput(input);
    if (input.size() > 0) {
        viewer.setSelection(new StructuredSelection(input.iterator().next()));
    }
    setControl(parent2);
}

From source file:net.sf.eclipsensis.dialogs.FileSelectionDialog.java

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite parent2 = (Composite) super.createDialogArea(parent);
    Composite composite = new Composite(parent2, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    GridLayout layout = new GridLayout(1, true);
    composite.setLayout(layout);//from ww w  .  j a va 2  s  . c o  m

    SashForm form = new SashForm(composite, SWT.HORIZONTAL);
    form.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    layout = new GridLayout(1, true);
    form.setLayout(layout);

    composite = new Composite(form, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    layout = new GridLayout(1, true);
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    composite.setLayout(layout);

    Label l = new Label(composite, SWT.NONE);
    l.setText(EclipseNSISPlugin.getResourceString("fileselection.parent.folder.label")); //$NON-NLS-1$
    l.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    Tree tree = new Tree(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    gridData.widthHint = VIEWER_WIDTH;
    gridData.heightHint = VIEWER_HEIGHT;
    tree.setLayoutData(gridData);
    final TreeViewer tv = new TreeViewer(tree);
    tv.setContentProvider(new ContainerContentProvider());
    tv.setLabelProvider(WorkbenchLabelProvider.getDecoratingWorkbenchLabelProvider());
    tv.setSorter(new ViewerSorter());

    composite = new Composite(form, SWT.None);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    layout = new GridLayout(1, true);
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    composite.setLayout(layout);

    l = new Label(composite, SWT.NONE);
    l.setText(EclipseNSISPlugin.getResourceString("fileselection.file.label")); //$NON-NLS-1$
    l.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    Table table = new Table(composite,
            SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
    gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    gridData.widthHint = VIEWER_WIDTH;
    gridData.heightHint = VIEWER_HEIGHT;
    table.setLayoutData(gridData);
    table.setLinesVisible(false);
    final TableViewer tv2 = new TableViewer(table);
    tv2.setContentProvider(new FilesContentProvider());
    tv2.setLabelProvider(new FilesLabelProvider());
    tv2.setSorter(new ViewerSorter());
    if (mFilter != null) {
        tv2.addFilter(new ViewerFilter() {
            @Override
            public boolean select(Viewer viewer, Object parentElement, Object element) {
                return mFilter.select(element);
            }
        });
    }

    tv.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            tv2.setInput(selection.getFirstElement()); // allow null
        }
    });
    tv.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            ISelection selection = event.getSelection();
            if (selection instanceof IStructuredSelection) {
                Object item = ((IStructuredSelection) selection).getFirstElement();
                if (tv.getExpandedState(item)) {
                    tv.collapseToLevel(item, 1);
                } else {
                    tv.expandToLevel(item, 1);
                }
            }
        }
    });

    tv2.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            if (selection != null && !selection.isEmpty()) {
                mFile = (IFile) selection.getFirstElement();
            } else {
                mFile = null;
            }
            Button button = getButton(IDialogConstants.OK_ID);
            if (button != null) {
                button.setEnabled(selection != null && !selection.isEmpty());
            }
        }
    });
    tv2.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            if (mFile != null) {
                setReturnCode(Window.OK);
                close();
            }
        }
    });

    tv.setInput(ResourcesPlugin.getWorkspace());
    if (mContainer != null) {
        tv.setSelection(new StructuredSelection(mContainer));
        if (mFile != null) {
            tv2.setSelection(new StructuredSelection(mFile));
        } else {
            tv2.setSelection(new StructuredSelection());
        }
    }
    return parent2;
}

From source file:net.sf.eclipsensis.installoptions.properties.dialogs.FileFilterDialog.java

License:Open Source License

@Override
@SuppressWarnings("unchecked")
protected Control createDialogArea(Composite parent) {
    GridLayout layout;/*from w w  w .j  a v a 2 s  . co m*/
    Composite composite = (Composite) super.createDialogArea(parent);

    final Group summaryGroup = new Group(composite, SWT.SHADOW_ETCHED_IN);
    summaryGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
    summaryGroup.setLayout(new GridLayout(2, false));
    summaryGroup.setText(InstallOptionsPlugin.getResourceString("filter.summary.group.name")); //$NON-NLS-1$
    Table summaryTable = new Table(summaryGroup, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    summaryTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    summaryTable.setLinesVisible(true);
    summaryTable.setHeaderVisible(true);

    TableColumn[] columns = new TableColumn[2];
    columns[0] = new TableColumn(summaryTable, SWT.LEFT);
    columns[0].setText(InstallOptionsPlugin.getResourceString("filter.description")); //$NON-NLS-1$
    columns[1] = new TableColumn(summaryTable, SWT.LEFT);
    columns[1].setText(InstallOptionsPlugin.getResourceString("filter.patterns")); //$NON-NLS-1$
    summaryTable.addControlListener(new TableResizer());

    final TableViewer summaryViewer = new TableViewer(summaryTable);
    summaryViewer.setContentProvider(new CollectionContentProvider());
    summaryViewer.setLabelProvider(new FileFilterLabelProvider());

    final Composite summaryButtons = new Composite(summaryGroup, SWT.NONE);
    summaryButtons.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false));
    layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    summaryButtons.setLayout(layout);

    final Button summaryAdd = new Button(summaryButtons, SWT.PUSH);
    summaryAdd.setImage(CommonImages.ADD_ICON);
    summaryAdd.setToolTipText(EclipseNSISPlugin.getResourceString("new.tooltip")); //$NON-NLS-1$
    summaryAdd.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    summaryAdd.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput();
            if (list != null) {
                String desc = InstallOptionsPlugin
                        .getFormattedString("default.filter.description", new Object[] { "" }).trim(); //$NON-NLS-1$ //$NON-NLS-2$
                int counter = 1;
                for (ListIterator<FileFilter> iter = list.listIterator(); iter.hasNext();) {
                    if ((iter.next()).getDescription().equals(desc)) {
                        while (iter.hasPrevious()) {
                            iter.previous();
                        }
                        desc = InstallOptionsPlugin.getFormattedString("default.filter.description", //$NON-NLS-1$
                                new Object[] { new Integer(counter++) });
                        continue;
                    }
                }
                FileFilter f = new FileFilter(desc, new FilePattern[] {
                        new FilePattern(InstallOptionsPlugin.getResourceString("default.filter.pattern")) }); //$NON-NLS-1$
                list.add(f);
                summaryViewer.refresh(false);
                summaryViewer.setSelection(new StructuredSelection(f));

            }
        }
    });

    final Button summaryDel = new Button(summaryButtons, SWT.PUSH);
    summaryDel.setImage(CommonImages.DELETE_ICON);
    summaryDel.setToolTipText(EclipseNSISPlugin.getResourceString("remove.tooltip")); //$NON-NLS-1$
    summaryDel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    summaryDel.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput();
            if (list != null) {
                IStructuredSelection selection = (IStructuredSelection) summaryViewer.getSelection();
                if (!selection.isEmpty()) {
                    for (Iterator<?> iter = selection.toList().iterator(); iter.hasNext();) {
                        list.remove(iter.next());
                    }
                    summaryViewer.refresh(false);
                }
            }
        }
    });
    summaryDel.setEnabled(!summaryViewer.getSelection().isEmpty());

    final TableViewerUpDownMover<List<FileFilter>, FileFilter> summaryMover = new TableViewerUpDownMover<List<FileFilter>, FileFilter>() {
        @Override
        protected List<FileFilter> getAllElements() {
            return (List<FileFilter>) ((TableViewer) getViewer()).getInput();
        }

        @Override
        protected void updateStructuredViewerInput(List<FileFilter> input, List<FileFilter> elements,
                List<FileFilter> move, boolean isDown) {
            (input).clear();
            (input).addAll(elements);
        }
    };
    summaryMover.setViewer(summaryViewer);

    final Button summaryUp = new Button(summaryButtons, SWT.PUSH);
    summaryUp.setImage(CommonImages.UP_ICON);
    summaryUp.setToolTipText(EclipseNSISPlugin.getResourceString("up.tooltip")); //$NON-NLS-1$
    summaryUp.setEnabled(summaryMover.canMoveUp());
    summaryUp.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    summaryUp.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            summaryMover.moveUp();
        }
    });

    final Button summaryDown = new Button(summaryButtons, SWT.PUSH);
    summaryDown.setImage(CommonImages.DOWN_ICON);
    summaryDown.setToolTipText(EclipseNSISPlugin.getResourceString("down.tooltip")); //$NON-NLS-1$
    summaryDown.setEnabled(summaryMover.canMoveDown());
    summaryDown.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    summaryDown.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            summaryMover.moveDown();
        }
    });

    final Group detailsGroup = new Group(composite, SWT.SHADOW_ETCHED_IN);
    detailsGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
    detailsGroup.setLayout(new GridLayout(1, false));
    detailsGroup.setText(InstallOptionsPlugin.getResourceString("filter.detail.group.name")); //$NON-NLS-1$

    boolean isNull = (mCurrent == null);
    Composite detailsComposite = new Composite(detailsGroup, SWT.NONE);
    detailsComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    layout = new GridLayout(2, false);
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    detailsComposite.setLayout(layout);

    final Label descriptionLabel = new Label(detailsComposite, SWT.NONE);
    descriptionLabel.setText(InstallOptionsPlugin.getResourceString("filter.description")); //$NON-NLS-1$
    descriptionLabel.setLayoutData(new GridData());
    descriptionLabel.setEnabled(!isNull);

    final Text descriptionText = new Text(detailsComposite, SWT.BORDER);
    descriptionText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    descriptionText.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            if (mCurrent != null) {
                mCurrent.setDescription(descriptionText.getText());
                summaryViewer.update(mCurrent, null);
            }
        }
    });
    descriptionText.setEnabled(!isNull);

    final Label patternsLabel = new Label(detailsGroup, SWT.NONE);
    patternsLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    patternsLabel.setText(InstallOptionsPlugin.getResourceString("filter.patterns")); //$NON-NLS-1$
    patternsLabel.setEnabled(!isNull);

    detailsComposite = new Composite(detailsGroup, SWT.NONE);
    detailsComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    layout = new GridLayout(2, false);
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    detailsComposite.setLayout(layout);

    final Table patternsTable = new Table(detailsComposite, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    patternsTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    patternsTable.setLinesVisible(true);
    patternsTable.setEnabled(!isNull);
    new TableColumn(patternsTable, SWT.LEFT);
    final TextCellEditor textEditor = new TextCellEditor(patternsTable);
    ((Text) textEditor.getControl()).addVerifyListener(new VerifyListener() {
        public void verifyText(VerifyEvent e) {
            e.doit = e.text.indexOf(IInstallOptionsConstants.LIST_SEPARATOR) < 0
                    && e.text.indexOf(InstallOptionsFileRequest.FILTER_SEPARATOR) < 0;
            if (!e.doit) {
                e.display.beep();
            }
        }
    });
    patternsTable.addControlListener(new TableResizer());

    textEditor.setValidator(new ICellEditorValidator() {
        public String isValid(Object value) {
            if (!Common.isEmpty((String) value)) {
                return null;
            } else {
                return InstallOptionsPlugin.getResourceString("empty.filter.pattern.error"); //$NON-NLS-1$
            }
        }
    });

    final TableViewer patternsViewer = new TableViewer(patternsTable);
    patternsViewer.setColumnProperties(new String[] { "pattern" }); //$NON-NLS-1$
    patternsViewer.setContentProvider(new ArrayContentProvider());
    patternsViewer.setLabelProvider(new LabelProvider());
    patternsViewer.setCellEditors(new CellEditor[] { textEditor });
    patternsViewer.setCellModifier(new ICellModifier() {
        public boolean canModify(Object element, String property) {
            return true;
        }

        public Object getValue(Object element, String property) {
            return ((FilePattern) element).getPattern();
        }

        public void modify(Object element, String property, Object value) {
            if (value == null) {
                Common.openError(getShell(), textEditor.getErrorMessage(),
                        InstallOptionsPlugin.getShellImage());
            } else {
                FilePattern pattern = (FilePattern) ((TableItem) element).getData();
                pattern.setPattern((String) value);
                patternsViewer.update(pattern, null);
                summaryViewer.update(mCurrent, null);
            }
        }
    });

    final Composite patternsButtons = new Composite(detailsComposite, SWT.NONE);
    patternsButtons.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false));
    layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    patternsButtons.setLayout(layout);

    final Button patternsAdd = new Button(patternsButtons, SWT.PUSH);
    patternsAdd.setImage(CommonImages.ADD_ICON);
    patternsAdd.setToolTipText(EclipseNSISPlugin.getResourceString("new.tooltip")); //$NON-NLS-1$
    patternsAdd.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    patternsAdd.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            if (mCurrent != null) {
                FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput();
                patterns = (FilePattern[]) Common.resizeArray(patterns, patterns.length + 1);
                String filter = InstallOptionsPlugin.getResourceString("default.filter.pattern"); //$NON-NLS-1$
                patterns[patterns.length - 1] = new FilePattern(filter);
                mCurrent.setPatterns(patterns);
                patternsViewer.setInput(patterns);
                patternsViewer.setSelection(new StructuredSelection(patterns[patterns.length - 1]));
                summaryViewer.update(mCurrent, null);
                patternsViewer.editElement(patterns[patterns.length - 1], 0);
                ((Text) textEditor.getControl()).setSelection(filter.length());
            }
        }
    });
    patternsAdd.setEnabled(!isNull);

    final Button patternsDel = new Button(patternsButtons, SWT.PUSH);
    patternsDel.setImage(CommonImages.DELETE_ICON);
    patternsDel.setToolTipText(EclipseNSISPlugin.getResourceString("remove.tooltip")); //$NON-NLS-1$
    patternsDel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    patternsDel.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            if (mCurrent != null) {
                FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput();
                int[] indices = patternsTable.getSelectionIndices();
                FilePattern[] patterns2 = (FilePattern[]) Common.resizeArray(patterns,
                        patterns.length - indices.length);
                int j = 0;
                int k = 0;
                for (int i = 0; i < patterns.length; i++) {
                    if (j >= indices.length || i != indices[j]) {
                        patterns2[k++] = patterns[i];
                    } else {
                        j++;
                    }
                }
                mCurrent.setPatterns(patterns2);
                patternsViewer.setInput(patterns2);
                summaryViewer.update(mCurrent, null);
            }
        }
    });
    IStructuredSelection sel = (IStructuredSelection) patternsViewer.getSelection();
    FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput();
    int len = (Common.isEmptyArray(patterns) ? 0 : patterns.length);
    patternsDel.setEnabled(!isNull && !sel.isEmpty() && sel.size() != len && len > 1);

    final TableViewerUpDownMover<FilePattern[], FilePattern> patternsMover = new TableViewerUpDownMover<FilePattern[], FilePattern>() {
        @Override
        protected List<FilePattern> getAllElements() {
            if (mCurrent != null) {
                return Common.makeList((FilePattern[]) ((TableViewer) getViewer()).getInput());
            }
            return Collections.<FilePattern>emptyList();
        }

        @Override
        protected void updateStructuredViewerInput(FilePattern[] input, List elements, List move,
                boolean isDown) {
            if (mCurrent != null) {
                for (int i = 0; i < input.length; i++) {
                    input[i] = (FilePattern) elements.get(i);
                }
                patternsViewer.refresh();
                summaryViewer.update(mCurrent, null);
            }
        }
    };
    patternsMover.setViewer(patternsViewer);

    final Button patternsUp = new Button(patternsButtons, SWT.PUSH);
    patternsUp.setImage(CommonImages.UP_ICON);
    patternsUp.setToolTipText(EclipseNSISPlugin.getResourceString("up.tooltip")); //$NON-NLS-1$
    patternsUp.setEnabled(!isNull && patternsMover.canMoveUp());
    patternsUp.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    patternsUp.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            patternsMover.moveUp();
        }
    });

    final Button patternsDown = new Button(patternsButtons, SWT.PUSH);
    patternsDown.setImage(CommonImages.DOWN_ICON);
    patternsDown.setToolTipText(EclipseNSISPlugin.getResourceString("down.tooltip")); //$NON-NLS-1$
    patternsDown.setEnabled(!isNull && patternsMover.canMoveDown());
    patternsDown.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    patternsDown.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            patternsMover.moveDown();
        }
    });

    patternsViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection sel = (IStructuredSelection) event.getSelection();
            FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput();
            int len = (patterns == null ? 0 : patterns.length);
            patternsDel.setEnabled(!sel.isEmpty() && sel.size() != len && len > 1);
            patternsUp.setEnabled(patternsMover.canMoveUp());
            patternsDown.setEnabled(patternsMover.canMoveDown());
        }
    });

    summaryViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection sel = (IStructuredSelection) event.getSelection();
            summaryDel.setEnabled(!sel.isEmpty());
            summaryUp.setEnabled(summaryMover.canMoveUp());
            summaryDown.setEnabled(summaryMover.canMoveDown());
            mCurrent = null;
            if (!sel.isEmpty()) {
                if (sel.size() == 1) {
                    mCurrent = (FileFilter) sel.getFirstElement();
                }
            }
            boolean isNull = (mCurrent == null);
            descriptionText.setText((isNull ? "" : mCurrent.getDescription())); //$NON-NLS-1$
            descriptionText.setSelection(descriptionText.getText().length());
            patternsViewer.setInput((isNull ? null : mCurrent.getPatterns()));
            descriptionLabel.setEnabled(!isNull);
            descriptionText.setEnabled(!isNull);
            patternsLabel.setEnabled(!isNull);
            patternsTable.setEnabled(!isNull);
            patternsAdd.setEnabled(!isNull);
            FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput();
            int len = (Common.isEmptyArray(patterns) ? 0 : patterns.length);
            patternsDel.setEnabled(!isNull && !sel.isEmpty() && sel.size() != len && len > 1);
            patternsUp.setEnabled(!isNull && patternsMover.canMoveUp());
            patternsDown.setEnabled(!isNull && patternsMover.canMoveDown());
        }
    });

    applyDialogFont(composite);
    ((GridData) composite.getLayoutData()).widthHint = convertWidthInCharsToPixels(80);
    summaryViewer.setInput(mFilter);
    return composite;
}