Example usage for org.eclipse.jface.viewers TableViewerEditor create

List of usage examples for org.eclipse.jface.viewers TableViewerEditor create

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers TableViewerEditor create.

Prototype

public static void create(TableViewer viewer, ColumnViewerEditorActivationStrategy editorActivationStrategy,
        int feature) 

Source Link

Document

Create a customized editor whose activation process is customized

Usage

From source file:au.gov.ga.earthsci.bookmark.part.BookmarksPart.java

License:Apache License

private void initList(Composite parent) {
    Composite tableHolder = new Composite(parent, SWT.NONE);
    GridData gd = new GridData(GridData.FILL_BOTH);
    gd.grabExcessHorizontalSpace = true;
    gd.grabExcessVerticalSpace = true;//from w  ww .  j  av a  2  s .c  o m
    gd.horizontalAlignment = GridData.FILL;
    tableHolder.setLayoutData(gd);

    TableColumnLayout layout = new TableColumnLayout();
    tableHolder.setLayout(layout);

    bookmarkListTableViewer = new TableViewer(tableHolder,
            SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    bookmarkListTableViewer.getTable().setHeaderVisible(false);
    bookmarkListTableViewer.getTable().setLinesVisible(false);

    bookmarkListTableViewer.getTable().setLayoutData(gd);

    ObservableListContentProvider contentProvider = new ObservableListContentProvider();
    bookmarkListTableViewer.setContentProvider(contentProvider);

    IObservableMap labelMap = BeanProperties.value("name").observeDetail(contentProvider.getKnownElements()); //$NON-NLS-1$

    TableViewerColumn column = new TableViewerColumn(bookmarkListTableViewer, SWT.LEFT);
    column.setEditingSupport(new BookmarkNameEditingSupport(bookmarkListTableViewer));
    column.setLabelProvider(new ObservableMapCellLabelProvider(labelMap) {
        @Override
        public void update(ViewerCell cell) {
            super.update(cell);
            cell.setText(" " + ((IBookmark) cell.getElement()).getName()); //$NON-NLS-1$
            cell.setImage(ImageRegistry.getInstance().get(ImageRegistry.ICON_BOOKMARKS));
        }
    });
    ColumnLayoutData cld = new ColumnWeightData(12);
    layout.setColumnData(column.getColumn(), cld);

    // Allow edit (rename) only via programmatic access (rename command) 
    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(
            bookmarkListTableViewer) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TableViewerEditor.create(bookmarkListTableViewer, activationStrategy,
            ColumnViewerEditor.KEYBOARD_ACTIVATION);

    // Populate the current selection with the actual bookmark items
    bookmarkListTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) bookmarkListTableViewer.getSelection();
            List<?> list = selection.toList();
            selectionService.setSelection(list.toArray(new IBookmark[list.size()]));
        }
    });

    // Apply the bookmark on double click
    bookmarkListTableViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            controller.apply((IBookmark) ((IStructuredSelection) event.getSelection()).getFirstElement());
        }
    });

    // Deselect when clicking outside a valid row
    bookmarkListTableViewer.getTable().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseUp(MouseEvent e) {
            if (bookmarkListTableViewer.getTable().getItem(new Point(e.x, e.y)) == null) {
                bookmarkListTableViewer.setSelection(null);
            }
        }
    });

}

From source file:au.gov.ga.earthsci.bookmark.ui.BookmarksPart.java

License:Apache License

private void initList(Composite parent) {
    Composite tableHolder = new Composite(parent, SWT.NONE);
    GridData gd = new GridData(GridData.FILL_BOTH);
    gd.grabExcessHorizontalSpace = true;
    gd.grabExcessVerticalSpace = true;/*w w  w.j a va2 s  .com*/
    gd.horizontalAlignment = GridData.FILL;
    tableHolder.setLayoutData(gd);

    TableColumnLayout layout = new TableColumnLayout();
    tableHolder.setLayout(layout);

    bookmarkListTableViewer = new TableViewer(tableHolder,
            SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    bookmarkListTableViewer.getTable().setHeaderVisible(false);
    bookmarkListTableViewer.getTable().setLinesVisible(false);

    bookmarkListTableViewer.getTable().setLayoutData(gd);

    ObservableListContentProvider<IBookmark> contentProvider = new ObservableListContentProvider<IBookmark>(
            IBookmark.class);
    bookmarkListTableViewer.setContentProvider(contentProvider);

    IObservableSet<IBookmark> knownElements = contentProvider.getKnownElements();
    IObservableMap<IBookmark, String> nameMap = BeanProperties.value(IBookmark.class, "name", String.class) //$NON-NLS-1$
            .observeDetail(knownElements);

    TableViewerColumn column = new TableViewerColumn(bookmarkListTableViewer, SWT.LEFT);
    column.setEditingSupport(new BookmarkNameEditingSupport(bookmarkListTableViewer));
    column.setLabelProvider(new ObservableMapCellLabelProvider<IBookmark, String>(nameMap) {
        @Override
        public void update(ViewerCell cell) {
            super.update(cell);
            cell.setText(" " + ((IBookmark) cell.getElement()).getName()); //$NON-NLS-1$
            cell.setImage(ImageRegistry.getInstance().get(ImageRegistry.ICON_BOOKMARKS));
        }
    });
    ColumnLayoutData cld = new ColumnWeightData(12);
    layout.setColumnData(column.getColumn(), cld);

    // Allow edit (rename) only via programmatic access (rename command)
    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(
            bookmarkListTableViewer) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TableViewerEditor.create(bookmarkListTableViewer, activationStrategy,
            ColumnViewerEditor.KEYBOARD_ACTIVATION);

    // Populate the current selection with the actual bookmark items
    bookmarkListTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) bookmarkListTableViewer.getSelection();
            List<?> list = selection.toList();
            selectionService.setSelection(list.toArray(new IBookmark[list.size()]));
        }
    });

    // Apply the bookmark on double click
    bookmarkListTableViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            controller.apply((IBookmark) ((IStructuredSelection) event.getSelection()).getFirstElement());
        }
    });

    // Deselect when clicking outside a valid row
    bookmarkListTableViewer.getTable().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseUp(MouseEvent e) {
            if (bookmarkListTableViewer.getTable().getItem(new Point(e.x, e.y)) == null) {
                bookmarkListTableViewer.setSelection(null);
            }
        }
    });

}

From source file:com.nokia.carbide.cpp.internal.sdk.ui.SDKPreferencePage.java

License:Open Source License

private void createSDKTable() {
    Table table = sdkListTableViewer.getTable();
    table.setHeaderVisible(true);//from w ww.  j a  v  a 2 s  .c o m
    table.setLinesVisible(false);

    SDKViewerStrategy strategy = new SDKViewerStrategy(sdkListTableViewer);
    TableViewerEditor.create(sdkListTableViewer, strategy, ColumnViewerEditor.DEFAULT);

    TableViewerColumn enabledCol = new TableViewerColumn(sdkListTableViewer, SWT.LEFT);
    enabledCol.getColumn().setText(Messages.getString("SDKPreferencePage.SDK_Table_Enabled_Column_Label")); //$NON-NLS-1$
    enabledCol.getColumn().setWidth(50);

    TableViewerColumn idCol = new TableViewerColumn(sdkListTableViewer, SWT.LEFT);
    idCol.setEditingSupport(new IdEditingSupport(sdkListTableViewer)); //$NON-NLS-1$
    idCol.getColumn().setText(Messages.getString("SDKPreferencePage.SDK_Table_ID_Column_Label"));
    idCol.getColumn().setWidth(160);

    TableViewerColumn locationCol = new TableViewerColumn(sdkListTableViewer, SWT.LEFT);
    locationCol.setEditingSupport(new LocationEditingSupport(sdkListTableViewer));
    locationCol.getColumn().setText(Messages.getString("SDKPreferencePage.SDK_Table_Location_Column_Label")); //$NON-NLS-1$
    locationCol.getColumn().setWidth(170);
}

From source file:com.predic8.plugin.membrane.viewers.HeaderTableViewer.java

License:Apache License

public HeaderTableViewer(Composite parent, int style) {
    super(parent, style);

    table = getTable();//w w  w  .j  ava2  s  . c o m
    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    TableLayout layout = new TableLayout();
    table.setLayout(layout);

    layout.addColumnData((new ColumnWeightData(1)));

    new TableColumn(table, SWT.NONE).setText("Header Name");

    layout.addColumnData((new ColumnWeightData(2)));

    new TableColumn(table, SWT.NONE).setText("Value");

    setContentProvider(new HeaderTableContentProvider());

    setLabelProvider(new HeaderTableLabelProvider());

    setColumnProperties(columnNames);

    editors = new CellEditor[] { new TextCellEditor(table), new TextCellEditor(table) };

    setCellEditors(editors);
    setCellModifier(new HeaderTableCellModifier(this));
    TableViewerEditor.create(this, new ColumnViewerEditorActivationStrategy(this) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    }, ColumnViewerEditor.DEFAULT);
    menuAction = new HeaderTableMenuAction(this);

    addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent e) {

            if (!(e.getSelection() instanceof IStructuredSelection))
                return;

            menuAction.setEnableRemoveAction(isHeaderField(e));
        }

        private boolean isHeaderField(SelectionChangedEvent e) {
            return ((IStructuredSelection) e.getSelection()).getFirstElement() instanceof HeaderField;
        }
    });

    addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            Object selectedItem = ((IStructuredSelection) event.getSelection()).getFirstElement();
            if (selectedItem instanceof HeaderField) {
                HeaderTableViewer.this.editElement(selectedItem, 1);
            }
        }
    });
}

From source file:com.predic8.plugin.membrane.views.ProxiesView.java

License:Apache License

protected void addCellEditorsAndModifiersToViewer() {
    setCellEditorForTableViewer(tableViewer);
    cellEditorModifier = new ProxyNameCellEditorModifier();
    cellEditorModifier.setTableViewer(tableViewer);
    tableViewer.setCellModifier(cellEditorModifier);

    TableViewerEditor.create(tableViewer, new ColumnViewerEditorActivationStrategy(tableViewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }//from   w  ww .j ava2s.  co m
    }, ColumnViewerEditor.DEFAULT);
}

From source file:com.predic8.plugin.membrane.views.RuleStatisticsView.java

License:Apache License

private void addCellEditorsAndModifiersToViewer() {
    final CellEditor[] cellEditors = new CellEditor[1];
    cellEditors[0] = new TextCellEditor(tableViewer.getTable(), SWT.BORDER);
    tableViewer.setCellEditors(cellEditors);
    tableViewer.setColumnProperties(new String[] { "name" });

    cellEditorModifier = new RuleNameCellEditorModifier();
    cellEditorModifier.setTableViewer(tableViewer);
    tableViewer.setCellModifier(cellEditorModifier);

    TableViewerEditor.create(tableViewer, new ColumnViewerEditorActivationStrategy(tableViewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }/*from w ww  . j a  v  a 2 s . c o  m*/
    }, ColumnViewerEditor.DEFAULT);
}

From source file:com.predic8.plugin.membrane.views.RulesView.java

License:Apache License

private TableViewer createTableViewer(Composite composite) {
    final TableViewer tableViewer = new TableViewer(composite,
            SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
    createColumns(tableViewer);//  w  w  w. j a  v  a2  s.c  o m
    tableViewer.setContentProvider(new RulesViewContentProvider());

    tableViewer.setLabelProvider(new RulesViewLabelProvider());

    GridData gridData = new GridData(GridData.FILL_BOTH);
    gridData.grabExcessVerticalSpace = true;
    gridData.grabExcessHorizontalSpace = true;
    tableViewer.getTable().setLayoutData(gridData);
    PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, MembraneUIPlugin.PLUGIN_ID + "RuleStatistics");

    setCellEditorForTableViewer(tableViewer);

    tableViewer.setColumnProperties(new String[] { "name" });

    cellEditorModifier = new RuleNameCellEditorModifier();
    cellEditorModifier.setTableViewer(tableViewer);
    tableViewer.setCellModifier(cellEditorModifier);

    TableViewerEditor.create(tableViewer, new ColumnViewerEditorActivationStrategy(tableViewer) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    }, ColumnViewerEditor.DEFAULT);

    tableViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            Object selectedItem = selection.getFirstElement();
            if (selectedItem instanceof Rule) {
                tableViewer.editElement(selectedItem, 0);
            }
        }
    });

    tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection();
            if (selection == null || selection.isEmpty()) {
                controlsComposite.enableDependentButtons(false);
                return;
            }
            controlsComposite.enableDependentButtons(true);

            setSelectedRule((Rule) selection.getFirstElement());

        }

        private void setSelectedRule(Rule selectedRule) {
            removeRuleAction.setSelectedRule(selectedRule);
            editRuleAction.setSelectedRule(selectedRule);
            removeAllExchangesAction.setSelectedRule(selectedRule);
            showRuleDetailsAction.setSelectedRule(selectedRule);
            controlsComposite.setSelectedRule(selectedRule);

            updatedetailsViewIfVisible(selectedRule);
        }

    });

    return tableViewer;
}

From source file:era.foss.typeeditor.common.AddDeleteTableViewer.java

License:Open Source License

/**
 * Create table.//from   w ww . j a  va 2  s.co  m
 */
private void setupTable() {

    // set table attributes
    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    // add key listener
    table.addKeyListener(new KeyListener() {

        public void keyPressed(KeyEvent e) {
            if (e.character == SWT.DEL) {
                removeElements();
                refresh();
            }
        }

        @Override
        public void keyReleased(KeyEvent e) {
            /* do nothing */
        }
    });

    // prepare the activation strategy for setting a default behavior when editing table cells
    // (may be overwritten)
    ColumnViewerEditorActivationStrategy actStrategy = new ColumnViewerEditorActivationStrategy(this) {
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            boolean retVal = false;

            // TODO: make click-behavior like: 1) single-click if drop-down box 2) double-click if text-box
            // ((ViewerCell) event.getSource()).getElement(). ...?

            if (((ViewerCell) event.getSource()).getColumnIndex() <= 0)
                retVal = (event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                        || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
                        || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC);
            if (((ViewerCell) event.getSource()).getColumnIndex() >= 1)
                retVal = (event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                        || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION
                        || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC);
            return retVal;
        }
    };

    // define strategy how table cells are traversed and activated with the keyboard
    TableViewerEditor.create(this, actStrategy,
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);

}

From source file:eu.geclipse.jsdl.ui.widgets.DataStageInTable.java

License:Open Source License

/**
 * @param parent//  www  . j ava2s  .  c  o m
 * @param input
 * @param buttonsPosition
 */
public DataStageInTable(final Composite parent, final List<DataStagingType> input, final int buttonsPosition) {
    this.input = input;
    this.mainComp = new Composite(parent, SWT.NONE);
    GridLayout gLayout;
    if (buttonsPosition == DataStageInTable.BUTTONS_RIGHT) {
        gLayout = new GridLayout(2, false);
    } else {
        gLayout = new GridLayout(1, false);
    }
    this.mainComp.setLayout(gLayout);
    GridData gData = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL);
    this.mainComp.setLayoutData(gData);
    this.table = new Table(this.mainComp, SWT.BORDER | SWT.VIRTUAL | SWT.MULTI | SWT.FULL_SELECTION);
    this.table.setHeaderVisible(true);
    this.table.setLinesVisible(true);
    gData = new GridData(GridData.FILL_BOTH);
    gData.grabExcessVerticalSpace = true;
    gData.widthHint = 400;
    gData.heightHint = 100;
    this.table.setLayoutData(gData);
    TableLayout tableLayout = new TableLayout();
    this.table.setLayout(tableLayout);
    TableColumn nameColumn = new TableColumn(this.table, SWT.CENTER);
    ColumnLayoutData data = new ColumnWeightData(100);
    tableLayout.addColumnData(data);
    data = new ColumnWeightData(100);
    tableLayout.addColumnData(data);
    data = new ColumnWeightData(150);
    tableLayout.addColumnData(data);
    nameColumn.setText(Messages.getString("DataStageInTable.source_location_field_label")); //$NON-NLS-1$
    TableColumn typeColumn = new TableColumn(this.table, SWT.LEFT);
    typeColumn.setText(Messages.getString("DataStageInTable.name_field_label")); //$NON-NLS-1$
    this.tableViewer = new TableViewer(this.table);
    IStructuredContentProvider contentProvider = new DataStageInContentProvider();
    this.tableViewer.setContentProvider(contentProvider);
    this.tableViewer.setColumnProperties(
            new String[] { Messages.getString("DataStageInTable.source_location_field_label"), //$NON-NLS-1$
                    Messages.getString("DataStageInTable.name_field_label") //$NON-NLS-1$
            });
    this.tableViewer.setLabelProvider(new DataStageInContentLabelProvider());
    if (this.input == null) {
        this.input = new ArrayList<DataStagingType>();
    }
    this.tableViewer.setInput(this.input);
    this.tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(final SelectionChangedEvent event) {
            updateButtons();
        }
    });
    Composite buttonsComp = new Composite(this.mainComp, SWT.NONE);
    if (buttonsPosition == DataStageInTable.BUTTONS_BOTTOM) {
        gLayout = new GridLayout(3, true);
    } else {
        gLayout = new GridLayout(1, false);
    }
    buttonsComp.setLayout(gLayout);
    this.addButton = new Button(buttonsComp, SWT.PUSH);
    gData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_END);
    buttonsComp.setLayoutData(gData);
    gData = new GridData(GridData.FILL_BOTH);
    this.addButton.setLayoutData(gData);
    this.addButton.setText(Messages.getString("DataStageInTable.add_button_label")); //$NON-NLS-1$
    this.addButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent event) {
            editDataStagingEntry(null);
        }
    });
    this.editButton = new Button(buttonsComp, SWT.PUSH);
    gData = new GridData(GridData.FILL_BOTH);
    this.editButton.setLayoutData(gData);
    this.editButton.setText(Messages.getString("DataStageInTable.edit_button_label")); //$NON-NLS-1$
    this.editButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent event) {
            editDataStagingEntry(getSelectedObject());
        }
    });
    this.removeButton = new Button(buttonsComp, SWT.PUSH);
    gData = new GridData(GridData.FILL_BOTH);
    this.removeButton.setLayoutData(gData);
    this.removeButton.setText(Messages.getString("DataStageInTable.remove_button_label")); //$NON-NLS-1$
    this.removeButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent event) {
            DataStageInTable.this.input.remove(getSelectedObject());
            DataStageInTable.this.tableViewer.refresh();
        }
    });
    DialogCellEditor editor = new DialogCellEditor() {

        @Override
        protected Object openDialogBox(final Control cellEditorWindow) {
            String filename = (String) doGetValue();
            GridFileDialog dialog = new GridFileDialog(DataStageInTable.this.mainComp.getShell(),
                    GridFileDialog.STYLE_ALLOW_ONLY_EXISTING | GridFileDialog.STYLE_ALLOW_ONLY_FILES);
            if (dialog.open() == Window.OK) {
                URI[] uris = dialog.getSelectedURIs();
                if ((uris != null) && (uris.length > 0)) {
                    filename = uris[0].toString();
                }
            }
            // IGridConnectionElement connection = GridFileDialog.openFileDialog(
            // DataStageInTable.this.mainComp.getShell(),
            // Messages.getString( "DataStageInTable.grid_file_dialog_title" ),
            // //$NON-NLS-1$
            // null,
            // true );
            // if( connection != null ) {
            // try {
            // filename = connection.getConnectionFileStore().toString();
            // } catch( CoreException cExc ) {
            // ProblemException exception = new ProblemException(
            // ICoreProblems.NET_CONNECTION_FAILED,
            // cExc,
            // Activator.PLUGIN_ID );
            // ProblemDialog.openProblem( DataStageInTable.this.mainComp.getShell(),
            // Messages.getString( "DataStageInTable.error" ), //$NON-NLS-1$
            // Messages.getString( "DataStageInTable.error" ), //$NON-NLS-1$
            // exception );
            // }
            // }
            return filename;
        }
    };
    CellEditor[] table1 = new CellEditor[1];
    table1[0] = editor;
    editor.create(this.table);
    this.tableViewer.setCellModifier(new ICellModifier() {

        public boolean canModify(final Object element, final String property) {
            return true;
        }

        public Object getValue(final Object element, final String property) {
            int columnIndex = -1;
            if (property.equals(Messages.getString("DataStageInTable.source_location_field_label"))) { //$NON-NLS-1$
                columnIndex = 0;
            }
            if (property.equals(Messages.getString("DataStageInTable.name_field_label"))) { //$NON-NLS-1$
                columnIndex = 1;
            }
            Object result = null;
            DataStagingType data1 = (DataStagingType) element;
            switch (columnIndex) {
            case 0:
                result = data1.getSource().getURI();
                break;
            case 1:
                result = data1.getFileName();
                break;
            default:
                result = ""; //$NON-NLS-1$
            }
            return result;
        }

        public void modify(final Object element, final String property, final Object value) {
            int columnIndex = -1;
            if (property.equals(Messages.getString("DataStageInTable.source_location_field_label"))) { //$NON-NLS-1$
                columnIndex = 0;
            }
            if (property.equals(Messages.getString("DataStageInTable.name_field_label"))) { //$NON-NLS-1$
                columnIndex = 1;
            }
            TableItem item = (TableItem) element;
            DataStagingType dataOld = (DataStagingType) item.getData();
            DataStagingType dataNew = null;
            switch (columnIndex) {
            case 0:
                dataNew = getNewDataStagingType(dataOld.getFileName(), (String) value);
                if (!dataNew.getFileName().equals(dataOld.getFileName())
                        || !dataNew.getSource().getURI().equals(dataOld.getSource().getURI())) {
                    if (!isDataInInput(dataNew)) {
                        // DataStageInTable.this.input.add( dataNew );
                        // DataStageInTable.this.input.remove( dataOld );
                        updateDataStaging(dataOld, dataNew.getFileName(), dataNew.getSource());
                        DataStageInTable.this.tableViewer.refresh();
                    } else {
                        MessageDialog.openError(DataStageInTable.this.mainComp.getShell(),
                                Messages.getString("DataStageInTable.edit_dialog_title"), //$NON-NLS-1$
                                Messages.getString("DataStageInTable.value_exists_dialog_message")); //$NON-NLS-1$
                    }
                }
                break;
            case 1:
                dataNew = getNewDataStagingType((String) value, dataOld.getSource().getURI());
                if (!dataNew.getFileName().equals(dataOld.getFileName())
                        || !dataNew.getSource().getURI().equals(dataOld.getSource().getURI())) {
                    if (!isDataInInput(dataNew)) {
                        // DataStageInTable.this.input.add( dataNew );
                        // DataStageInTable.this.input.remove( dataOld );
                        updateDataStaging(dataOld, dataNew.getFileName(), dataNew.getSource());
                        DataStageInTable.this.tableViewer.refresh();
                    } else {
                        MessageDialog.openError(DataStageInTable.this.mainComp.getShell(),
                                Messages.getString("DataStageInTable.edit_dialog_title"), //$NON-NLS-1$
                                Messages.getString("DataStageInTable.value_exists_dialog_message")); //$NON-NLS-1$
                    }
                }
                break;
            }
        }
    });
    CellEditor[] edTable = new CellEditor[] { editor, new TextCellEditor(this.tableViewer.getTable()) };
    this.tableViewer.setCellEditors(edTable);
    TableViewerEditor.create(this.tableViewer, new ColumnViewerEditorActivationStrategy(this.tableViewer),
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL);
    updateButtons();
}

From source file:eu.geclipse.jsdl.ui.widgets.DataStageOutTable.java

License:Open Source License

/**
 * Creates new instance of table, table viewer, buttons (add, edit and
 * remove).//  www  . j av a 2s  .  co m
 * 
 * @param parent controls' parent
 * @param input input for a table
 * @param buttonsPosition
 */
public DataStageOutTable(final Composite parent, final List<DataStagingType> input, final int buttonsPosition) {
    this.input = input;
    this.mainComp = new Composite(parent, SWT.NONE);
    GridLayout gLayout;
    if (buttonsPosition == DataStageOutTable.BUTTONS_BOTTOM) {
        gLayout = new GridLayout(1, false);
    } else {
        gLayout = new GridLayout(2, false);
    }
    this.mainComp.setLayout(gLayout);
    GridData gData = new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_BOTH);
    this.mainComp.setLayoutData(gData);
    this.table = new Table(this.mainComp, SWT.BORDER | SWT.VIRTUAL | SWT.MULTI | SWT.FULL_SELECTION);
    this.table.setHeaderVisible(true);
    this.table.setLinesVisible(true);
    gData = new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL);
    gData.grabExcessVerticalSpace = true;
    gData.widthHint = 400;
    gData.heightHint = 100;
    this.table.setLayoutData(gData);
    TableLayout tableLayout = new TableLayout();
    this.table.setLayout(tableLayout);
    TableColumn nameColumn = new TableColumn(this.table, SWT.CENTER);
    ColumnLayoutData data = new ColumnWeightData(100);
    tableLayout.addColumnData(data);
    data = new ColumnWeightData(100);
    tableLayout.addColumnData(data);
    data = new ColumnWeightData(150);
    tableLayout.addColumnData(data);
    nameColumn.setText(Messages.getString("DataStageInTable.name_field_label")); //$NON-NLS-1$
    TableColumn locationColumn = new TableColumn(this.table, SWT.LEFT);
    locationColumn.setText(Messages.getString("DataStageInTable.target_location_field_label")); //$NON-NLS-1$
    this.tableViewer = new TableViewer(this.table);
    IStructuredContentProvider contentProvider = new DataStageInContentProvider();
    this.tableViewer.setContentProvider(contentProvider);
    this.tableViewer.setColumnProperties(new String[] { Messages.getString("DataStageInTable.name_field_label"), //$NON-NLS-1$
            Messages.getString("DataStageInTable.target_location_field_label") //$NON-NLS-1$
    });
    this.tableViewer.setLabelProvider(new DataStageInContentLabelProvider());
    if (this.input == null) {
        this.input = new ArrayList<DataStagingType>();
    }
    this.tableViewer.setInput(this.input);
    this.tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(final SelectionChangedEvent event) {
            updateButtons();
        }
    });
    Composite buttonsComp = new Composite(this.mainComp, SWT.NONE);
    if (buttonsPosition == DataStageOutTable.BUTTONS_BOTTOM) {
        gLayout = new GridLayout(3, true);
    } else {
        gLayout = new GridLayout(1, false);
    }
    buttonsComp.setLayout(gLayout);
    this.addButton = new Button(buttonsComp, SWT.PUSH);
    gData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_END);
    buttonsComp.setLayoutData(gData);
    gData = new GridData(GridData.FILL_BOTH);
    this.addButton.setLayoutData(gData);
    this.addButton.setText(Messages.getString("DataStageInTable.add_button_label")); //$NON-NLS-1$
    this.addButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent e) {
            editDataStagingEntry(null);
        }
    });
    this.editButton = new Button(buttonsComp, SWT.PUSH);
    gData = new GridData(GridData.FILL_BOTH);
    this.editButton.setLayoutData(gData);
    this.editButton.setText(Messages.getString("DataStageInTable.edit_button_label")); //$NON-NLS-1$
    this.editButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent e) {
            editDataStagingEntry(getSelectedObject());
        }
    });
    this.removeButton = new Button(buttonsComp, SWT.PUSH);
    gData = new GridData(GridData.FILL_BOTH);
    this.removeButton.setLayoutData(gData);
    this.removeButton.setText(Messages.getString("DataStageInTable.remove_button_label")); //$NON-NLS-1$
    this.removeButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(final SelectionEvent e) {
            DataStageOutTable.this.input.remove(getSelectedObject());
            DataStageOutTable.this.tableViewer.refresh();
        }
    });
    DialogCellEditor editor = new DialogCellEditor() {

        @Override
        protected Object openDialogBox(final Control cellEditorWindow) {
            String filename = (String) doGetValue();
            cellEditorWindow.getData();
            GridFileDialog dialog = new GridFileDialog(DataStageOutTable.this.mainComp.getShell(),
                    GridFileDialog.STYLE_ALLOW_ONLY_FILES);
            if (dialog.open() == Window.OK) {
                URI[] uris = dialog.getSelectedURIs();
                if ((uris != null) && (uris.length > 0)) {
                    filename = uris[0].toString();
                }
            }
            return filename;
        }
    };
    CellEditor[] table1 = new CellEditor[1];
    table1[0] = editor;
    editor.create(this.table);
    this.tableViewer.setCellModifier(new ICellModifier() {

        public boolean canModify(final Object element, final String property) {
            return true;
        }

        public Object getValue(final Object element, final String property) {
            int columnIndex = -1;
            if (property.equals(Messages.getString("DataStageInTable.name_field_label"))) { //$NON-NLS-1$
                columnIndex = 0;
            }
            if (property.equals(Messages.getString("DataStageInTable.target_location_field_label"))) { //$NON-NLS-1$
                columnIndex = 1;
            }
            Object result = null;
            DataStagingType data1 = (DataStagingType) element;
            switch (columnIndex) {
            case 0:
                result = data1.getFileName();
                break;
            case 1:
                result = data1.getTarget().getURI();
                break;
            default:
                result = ""; //$NON-NLS-1$
            }
            return result;
        }

        public void modify(final Object element, final String property, final Object value) {
            int columnIndex = -1;
            if (property.equals(Messages.getString("DataStageInTable.name_field_label"))) { //$NON-NLS-1$
                columnIndex = 0;
            }
            if (property.equals(Messages.getString("DataStageInTable.target_location_field_label"))) { //$NON-NLS-1$
                columnIndex = 1;
            }
            TableItem item = (TableItem) element;
            DataStagingType dataOld = (DataStagingType) item.getData();
            DataStagingType dataNew = null;
            switch (columnIndex) {
            case 0:
                dataNew = getNewDataStagingType((String) value, dataOld.getTarget().getURI());
                if (!dataNew.getFileName().equals(dataOld.getFileName())
                        || !dataNew.getTarget().getURI().equals(dataOld.getTarget().getURI())) {
                    if (!isDataInInput(dataNew)) {
                        DataStageOutTable.this.input.add(dataNew);
                        DataStageOutTable.this.input.remove(dataOld);
                        DataStageOutTable.this.tableViewer.refresh();
                    } else {
                        MessageDialog.openError(DataStageOutTable.this.mainComp.getShell(),
                                Messages.getString("DataStageOutTable.edit_dialog_title"), //$NON-NLS-1$
                                Messages.getString("DataStageOutTable.data_exists_error")); //$NON-NLS-1$
                    }
                }
                break;
            case 1:
                dataNew = getNewDataStagingType(dataOld.getFileName(), (String) value);
                if (!dataNew.getFileName().equals(dataOld.getFileName())
                        || !dataNew.getTarget().getURI().equals(dataOld.getTarget().getURI())) {
                    if (!isDataInInput(dataNew)) {
                        DataStageOutTable.this.input.add(dataNew);
                        DataStageOutTable.this.input.remove(dataOld);
                        DataStageOutTable.this.tableViewer.refresh();
                    } else {
                        MessageDialog.openError(DataStageOutTable.this.mainComp.getShell(),
                                Messages.getString("DataStageOutTable.edit_dialog_title"), //$NON-NLS-1$
                                Messages.getString("DataStageOutTable.data_exists_error")); //$NON-NLS-1$
                    }
                }
                break;
            }
        }
    });
    CellEditor[] edTable = new CellEditor[] { new TextCellEditor(this.tableViewer.getTable()), editor };
    this.tableViewer.setCellEditors(edTable);
    TableViewerEditor.create(this.tableViewer, new ColumnViewerEditorActivationStrategy(this.tableViewer),
            ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
                    | ColumnViewerEditor.TABBING_VERTICAL);
    updateButtons();
}