Example usage for org.eclipse.jface.viewers CheckboxTableViewer CheckboxTableViewer

List of usage examples for org.eclipse.jface.viewers CheckboxTableViewer CheckboxTableViewer

Introduction

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

Prototype

public CheckboxTableViewer(Table table) 

Source Link

Document

Creates a table viewer on the given table control.

Usage

From source file:net.tourbook.common.util.DialogModifyColumns.java

License:Open Source License

private void createUI_12_ProfileViewer(final Composite parent) {

    final Composite layoutContainer = new Composite(parent, SWT.NONE);
    GridDataFactory.fillDefaults()//
            .grab(true, false).hint(SWT.DEFAULT, _pc.convertHeightInCharsToPixels(7)).applyTo(layoutContainer);

    final TableColumnLayout tableLayout = new TableColumnLayout();
    layoutContainer.setLayout(tableLayout);

    final Table table = new Table(layoutContainer, //
            SWT.SINGLE//from   w  w  w .  j av a 2s.co  m
                    //                  | SWT.H_SCROLL
                    //                  | SWT.V_SCROLL
                    | SWT.BORDER | SWT.FULL_SELECTION);

    table.setHeaderVisible(false);
    table.setLinesVisible(false);

    _profileViewer = new CheckboxTableViewer(table);

    _profileViewer.setUseHashlookup(true);
    _profileViewer.setComparator(_profileComparator);

    _profileViewer.setContentProvider(new IStructuredContentProvider() {

        @Override
        public void dispose() {
        }

        @Override
        public Object[] getElements(final Object inputElement) {
            return _dialog_Profiles.toArray();
        }

        @Override
        public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
        }
    });

    _profileViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(final SelectionChangedEvent event) {
            onProfileViewer_Select(event);
        }
    });

    _profileViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(final DoubleClickEvent event) {
            onProfile_Rename();
        }
    });

    /*
     * Create single column
     */
    TableViewerColumn tvc;

    // column: name
    tvc = new TableViewerColumn(_profileViewer, SWT.NONE);
    tvc.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {

            final ColumnProfile profile = ((ColumnProfile) cell.getElement());

            cell.setText(profile.name);
        }
    });
    tableLayout.setColumnData(tvc.getColumn(), new ColumnWeightData(1));
}

From source file:net.tourbook.common.util.DialogModifyColumns.java

License:Open Source License

private void createUI_72_ColumnsViewer(final Composite parent) {

    final TableColumnLayout tableLayout = new TableColumnLayout();
    final Composite layoutContainer = new Composite(parent, SWT.NONE);
    layoutContainer.setLayout(tableLayout);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(layoutContainer);

    /*/*from   www . j a  v  a  2 s.  co  m*/
     * create table
     */
    final Table table = new Table(layoutContainer, SWT.CHECK | SWT.FULL_SELECTION | SWT.BORDER);

    table.setLayout(new TableLayout());
    table.setHeaderVisible(true);
    table.setLinesVisible(false);

    _columnViewer = new CheckboxTableViewer(table);

    defineAllColumns(tableLayout);
    reorderColumns(table);

    _columnViewer.setContentProvider(new IStructuredContentProvider() {

        @Override
        public void dispose() {
        }

        @Override
        public Object[] getElements(final Object inputElement) {
            return _columnViewerModel.toArray();
        }

        @Override
        public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
        }
    });

    _columnViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(final DoubleClickEvent event) {

            final Object firstElement = ((IStructuredSelection) _columnViewer.getSelection()).getFirstElement();
            if (firstElement != null) {

                // check/uncheck current item

                _columnViewer.setChecked(firstElement, !_columnViewer.getChecked(firstElement));
            }
        }
    });

    _columnViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(final CheckStateChangedEvent event) {

            final ColumnDefinition colDef = (ColumnDefinition) event.getElement();

            if (colDef.canModifyVisibility()) {

                // keep the checked status
                colDef.setIsColumnDisplayed(event.getChecked());

                // select the checked item
                _columnViewer.setSelection(new StructuredSelection(colDef));

            } else {

                // column can't be unchecked
                _columnViewer.setChecked(colDef, true);
            }

            // save columns
            saveState_CurrentProfileColumns();
        }
    });

    _columnViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(final SelectionChangedEvent event) {
            enableUpDownActions();
        }
    });

    /*
     * set drag adapter
     */
    _columnViewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() },
            new DragSourceListener() {

                @Override
                public void dragFinished(final DragSourceEvent event) {

                    final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer();

                    if (event.doit == false) {
                        return;
                    }

                    transfer.setSelection(null);
                    transfer.setSelectionSetTime(0);
                }

                @Override
                public void dragSetData(final DragSourceEvent event) {
                    // data are set in LocalSelectionTransfer
                }

                @Override
                public void dragStart(final DragSourceEvent event) {

                    final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer();
                    final ISelection selection = _columnViewer.getSelection();

                    _dndCheckedElements = _columnViewer.getCheckedElements();

                    transfer.setSelection(selection);
                    transfer.setSelectionSetTime(_dndDragStartViewerLeft = event.time & 0xFFFFFFFFL);

                    event.doit = !selection.isEmpty();
                }
            });

    /*
     * set drop adapter
     */
    final ViewerDropAdapter viewerDropAdapter = new ViewerDropAdapter(_columnViewer) {

        private Widget _dragOverItem;

        @Override
        public void dragOver(final DropTargetEvent dropEvent) {

            // keep table item
            _dragOverItem = dropEvent.item;

            super.dragOver(dropEvent);
        }

        @Override
        public boolean performDrop(final Object data) {

            if (data instanceof StructuredSelection) {
                final StructuredSelection selection = (StructuredSelection) data;

                if (selection.getFirstElement() instanceof ColumnDefinition) {

                    final ColumnDefinition colDef = (ColumnDefinition) selection.getFirstElement();

                    final int location = getCurrentLocation();
                    final Table filterTable = _columnViewer.getTable();

                    /*
                     * check if drag was startet from this item, remove the item before the new
                     * item is inserted
                     */
                    if (LocalSelectionTransfer.getTransfer().getSelectionSetTime() == _dndDragStartViewerLeft) {
                        _columnViewer.remove(colDef);
                    }

                    int filterIndex;

                    if (_dragOverItem == null) {

                        _columnViewer.add(colDef);
                        filterIndex = filterTable.getItemCount() - 1;

                    } else {

                        // get index of the target in the table
                        filterIndex = filterTable.indexOf((TableItem) _dragOverItem);
                        if (filterIndex == -1) {
                            return false;
                        }

                        if (location == LOCATION_BEFORE) {
                            _columnViewer.insert(colDef, filterIndex);
                        } else if (location == LOCATION_AFTER || location == LOCATION_ON) {
                            _columnViewer.insert(colDef, ++filterIndex);
                        }
                    }

                    // reselect filter item
                    _columnViewer.setSelection(new StructuredSelection(colDef));

                    // set focus to selection
                    filterTable.setSelection(filterIndex);
                    filterTable.setFocus();

                    // recheck items
                    _columnViewer.setCheckedElements(_dndCheckedElements);

                    enableUpDownActions();

                    return true;
                }
            }

            return false;
        }

        @Override
        public boolean validateDrop(final Object target, final int operation, final TransferData transferType) {

            final LocalSelectionTransfer transferData = LocalSelectionTransfer.getTransfer();

            // check if dragged item is the target item
            final ISelection selection = transferData.getSelection();
            if (selection instanceof StructuredSelection) {
                final Object dragFilter = ((StructuredSelection) selection).getFirstElement();
                if (target == dragFilter) {
                    return false;
                }
            }

            if (transferData.isSupportedType(transferType) == false) {
                return false;
            }

            // check if target is between two items
            if (getCurrentLocation() == LOCATION_ON) {
                return false;
            }

            return true;
        }

    };

    _columnViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() },
            viewerDropAdapter);
}

From source file:net.tourbook.map3.ui.DialogSelectMap3Color.java

License:Open Source License

private void createUI_10_ColorViewer(final Composite parent) {

    final ArrayList<Map3GradientColorProvider> colorProviders = Map3GradientColorManager
            .getColorProviders(_graphId);

    int tableStyle;
    if (colorProviders.size() > NUMBER_OF_VISIBLE_ROWS) {

        tableStyle = SWT.CHECK //
                | SWT.FULL_SELECTION/*from ww w .  ja v a2s  . c  o  m*/
                //            | SWT.H_SCROLL
                | SWT.V_SCROLL | SWT.NO_SCROLL;
    } else {

        // table contains less than maximum entries, scroll is not necessary

        tableStyle = SWT.CHECK //
                | SWT.FULL_SELECTION | SWT.NO_SCROLL;
    }

    final Composite container = new Composite(parent, SWT.NONE);
    GridDataFactory.fillDefaults()//
            .grab(true, true).applyTo(container);

    GridLayoutFactory.fillDefaults().applyTo(container);
    {
        /*
         * create table
         */
        final Table table = new Table(container, tableStyle);

        GridDataFactory.fillDefaults().grab(true, true).applyTo(table);
        table.setHeaderVisible(false);
        table.setLinesVisible(false);

        /*
         * NOTE: MeasureItem, PaintItem and EraseItem are called repeatedly. Therefore, it is
         * critical for performance that these methods be as efficient as possible.
         */
        final Listener paintListener = new Listener() {
            @Override
            public void handleEvent(final Event event) {

                if (event.type == SWT.MeasureItem || event.type == SWT.PaintItem) {
                    onViewerPaint(event);
                }
            }
        };
        table.addListener(SWT.MeasureItem, paintListener);
        table.addListener(SWT.PaintItem, paintListener);

        /*
         * Set maximum number of visible rows
         */
        table.addControlListener(new ControlAdapter() {
            @Override
            public void controlResized(final ControlEvent e) {

                final int itemHeight = table.getItemHeight();
                final int maxHeight = itemHeight * NUMBER_OF_VISIBLE_ROWS;

                final int defaultHeight = table.computeSize(SWT.DEFAULT, SWT.DEFAULT).y;

                if (defaultHeight > maxHeight) {

                    final GridData gd = (GridData) container.getLayoutData();
                    gd.heightHint = maxHeight;

                    //                  container.layout(true, true);
                }
            }
        });

        _colorViewer = new CheckboxTableViewer(table);

        /*
         * create columns
         */
        defineColumn_10_Checkbox();
        defineColumn_20_MinValue();
        defineColumn_30_ColorImage();
        defineColumn_40_MaxValue();
        defineColumn_50_RelativeAbsolute();
        defineColumn_52_OverwriteLegendMinMax();

        _colorViewer.setComparator(new Map3ProfileComparator());

        _colorViewer.setContentProvider(new IStructuredContentProvider() {

            @Override
            public void dispose() {
            }

            @Override
            public Object[] getElements(final Object inputElement) {

                return colorProviders.toArray(new Map3GradientColorProvider[colorProviders.size()]);
            }

            @Override
            public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
            }
        });

        _colorViewer.setCheckStateProvider(new ICheckStateProvider() {

            @Override
            public boolean isChecked(final Object element) {
                return onViewerIsChecked(element);
            }

            @Override
            public boolean isGrayed(final Object element) {
                return onViewerIsGrayed(element);
            }
        });

        _colorViewer.addCheckStateListener(new ICheckStateListener() {

            @Override
            public void checkStateChanged(final CheckStateChangedEvent event) {
                onViewerCheckStateChange(event);
            }
        });

        _colorViewer.addSelectionChangedListener(new ISelectionChangedListener() {
            @Override
            public void selectionChanged(final SelectionChangedEvent event) {
                onViewerSelectColor();
            }
        });

        _colorViewer.addDoubleClickListener(new IDoubleClickListener() {
            @Override
            public void doubleClick(final DoubleClickEvent event) {
                actionEditSelectedColor();
            }
        });
    }
}

From source file:net.tourbook.preferences.PrefPageTourTypeFilterList.java

License:Open Source License

private void createUI_20_TourTypeViewer(final Composite parent) {

    final TableLayoutComposite layouter = new TableLayoutComposite(parent, SWT.NONE);
    GridDataFactory.fillDefaults().grab(true, true).hint(200, SWT.DEFAULT).applyTo(layouter);

    final Table table = new Table(layouter,
            (SWT.CHECK | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION));

    table.setHeaderVisible(false);//from   w w  w. jav  a  2  s  .  c o  m
    table.setLinesVisible(false);

    _tourTypeViewer = new CheckboxTableViewer(table);

    TableViewerColumn tvc;

    // column: name
    tvc = new TableViewerColumn(_tourTypeViewer, SWT.NONE);
    tvc.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final TourType tourType = ((TourType) cell.getElement());
            cell.setText(tourType.getName());
            cell.setImage(UI.getInstance().getTourTypeImage(tourType.getTypeId()));
        }
    });
    layouter.addColumnData(new ColumnWeightData(1));

    _tourTypeViewer.setContentProvider(new IStructuredContentProvider() {

        @Override
        public void dispose() {
        }

        @Override
        public Object[] getElements(final Object inputElement) {
            return _tourTypes.toArray();
        }

        @Override
        public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
        }
    });

    _tourTypeViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(final CheckStateChangedEvent event) {
            _isModified = true;
        }
    });

    _tourTypeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(final SelectionChangedEvent event) {
            onSelectTourType();
        }
    });

    _tourTypeViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(final DoubleClickEvent event) {

            /*
             * invert check state
             */
            final TourType tourType = (TourType) ((StructuredSelection) _tourTypeViewer.getSelection())
                    .getFirstElement();

            final boolean isChecked = _tourTypeViewer.getChecked(tourType);

            _tourTypeViewer.setChecked(tourType, !isChecked);

            //            getSelectedTourTypes();
        }
    });
}

From source file:net.tourbook.srtm.PrefPageSRTMColors.java

License:Open Source License

private void createUI_12_ProfileViewer_Table(final Composite parent) {

    final Table table = new Table(parent,
            SWT.FULL_SELECTION | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.CHECK);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(table);

    table.setLayout(new TableLayout());
    table.setHeaderVisible(true);/*from  www. ja  va2 s .co  m*/

    /*
     * NOTE: MeasureItem, PaintItem and EraseItem are called repeatedly. Therefore, it is
     * critical for performance that these methods be as efficient as possible.
     */
    final Listener paintListener = new Listener() {
        @Override
        public void handleEvent(final Event event) {

            if (event.index == _profileImageColumn) {
                onPaintColorImage(event);
            }
        }
    };
    table.addListener(SWT.MeasureItem, paintListener);
    table.addListener(SWT.PaintItem, paintListener);

    /*
     * create viewer
     */
    _profileViewer = new CheckboxTableViewer(table);

    _columnManager.createColumns(_profileViewer);

    _tcProfileImage = _colDefImage.getTableColumn();
    _profileImageColumn = _colDefImage.getCreateIndex();

    _profileViewer.setContentProvider(new ProfileContentProvider());
    _profileViewer.setSorter(new ProfileSorter());

    _profileViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(final CheckStateChangedEvent event) {

            final SRTMProfile checkedProfile = (SRTMProfile) event.getElement();

            // ignore the same profile
            if (_selectedProfile != null && checkedProfile == _selectedProfile) {

                // prevent unchecking selected profile
                event.getCheckable().setChecked(checkedProfile, true);

                return;
            }

            // select checked profile
            selectProfileInViewer(checkedProfile);
        }
    });

    _profileViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(final SelectionChangedEvent event) {

            final Object firstElement = ((StructuredSelection) event.getSelection()).getFirstElement();
            if (firstElement instanceof SRTMProfile) {
                onSelectProfile((SRTMProfile) firstElement, false);
            }
        }
    });

    _profileViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(final DoubleClickEvent event) {
            onEditProfile();
        }
    });

}

From source file:net.tourbook.ui.views.tourCatalog.WizardPageReferenceTour.java

License:Open Source License

private void createRefTourTableViewer(final Composite parent) {

    final TableLayoutComposite layouter = new TableLayoutComposite(parent, SWT.NONE);
    final GridData gridData = new GridData(GridData.FILL_BOTH);
    gridData.widthHint = convertWidthInCharsToPixels(30);
    layouter.setLayoutData(gridData);//from  w ww.  j  ava 2 s .  c om

    final Table table = new Table(layouter,
            SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION | SWT.CHECK);
    table.setLinesVisible(false);

    TableColumn column;
    column = new TableColumn(table, SWT.NONE);
    column.setText(Messages.tourCatalog_wizard_Column_tour);
    layouter.addColumnData(new ColumnWeightData(1, false));

    _refTourViewer = new CheckboxTableViewer(table);
    _refTourViewer.setContentProvider(new RefTourContentProvider());
    _refTourViewer.setLabelProvider(new RefTourLabelProvider());

    _refTourViewer.setComparator(new ViewerComparator() {
        @SuppressWarnings("unchecked")
        @Override
        public int compare(final Viewer viewer, final Object e1, final Object e2) {
            return getComparator().compare(((TourReference) e1).getLabel(), ((TourReference) e2).getLabel());
        }
    });

    _refTourViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(final SelectionChangedEvent event) {
            showReferenceTour(event);
        }
    });

    _refTourViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(final CheckStateChangedEvent event) {
            validatePage();
        }
    });

    _refTourViewer.setInput(this);
}

From source file:net.tourbook.ui.views.tourCatalog.WizardPage_20_ReferenceTour.java

License:Open Source License

private void createUI_10_RefTourTableViewer(final Composite parent) {

    final TableColumnLayout tableLayout = new TableColumnLayout();

    final Composite layoutContainer = new Composite(parent, SWT.NONE);
    layoutContainer.setLayout(tableLayout);
    GridDataFactory.fillDefaults()//
            .grab(true, true).applyTo(layoutContainer);

    final Table table = new Table(layoutContainer, 0
            //            SWT.H_SCROLL //
            //            | SWT.V_SCROLL //
            | SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION | SWT.CHECK);

    table.setLinesVisible(false);/*from  ww  w  . j  a va 2  s . co m*/

    _refTourViewer = new CheckboxTableViewer(table);

    /*
     * create columns
     */
    TableViewerColumn tvc;

    // column: reference tour
    tvc = new TableViewerColumn(_refTourViewer, SWT.LEAD);
    tvc.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {

            final RefTourItem refTour = (RefTourItem) cell.getElement();

            cell.setText(refTour.label);
        }
    });

    tableLayout.setColumnData(tvc.getColumn(), new ColumnWeightData(100));

    /*
     * Setup viewer
     */
    _refTourViewer.setContentProvider(new RefTourContentProvider());
    _refTourViewer.setComparator(new RefTourComparator());

    _refTourViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(final SelectionChangedEvent event) {
            showReferenceTour(event);
        }
    });

    _refTourViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(final CheckStateChangedEvent event) {
            onCheckRefTour(event);
        }
    });
}

From source file:net.tourbook.ui.views.tourMarker.TourMarkerAllView.java

License:Open Source License

private void createUI_10_MarkerViewer(final Composite parent) {

    /*//  w w w.  jav  a2s.  c o  m
     * create table
     */
    final Table table = new Table(parent, SWT.FULL_SELECTION | SWT.MULTI | SWT.CHECK);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(table);

    table.setHeaderVisible(true);
    table.setLinesVisible(_prefStore.getBoolean(ITourbookPreferences.VIEW_LAYOUT_DISPLAY_LINES));

    /*
     * It took a while that the correct listener is set and also the checked item is fired and
     * not the wrong selection.
     */
    table.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(final Event event) {
            onSelect_TourMarker(event);
        }
    });
    ;

    /*
     * create table viewer
     */
    _markerViewer = new CheckboxTableViewer(table);

    _columnManager.createColumns(_markerViewer);

    _markerViewer.setUseHashlookup(true);
    _markerViewer.setContentProvider(new MarkerContentProvider());
    _markerViewer.addFilter(new MarkerItemFilter());
    _markerViewer.setComparator(_markerComparator);

    _markerViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(final DoubleClickEvent event) {
            onTourMarker_DoubleClick();
        }
    });

    _markerViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(final CheckStateChangedEvent event) {
            onTourMarker_StateChanged(event);
        }
    });

    updateUI_SetSortDirection(//
            _markerComparator.__sortColumnId, _markerComparator.__sortDirection);

    createUI_20_ContextMenu();
}

From source file:net.tourbook.util.DialogModifyColumns.java

License:Open Source License

private void createUI10ColumnsViewer(final Composite parent) {

    final TableColumnLayout tableLayout = new TableColumnLayout();
    final Composite layoutContainer = new Composite(parent, SWT.NONE);
    layoutContainer.setLayout(tableLayout);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(layoutContainer);

    /*/* www  .  j  a  va 2  s.c o m*/
     * create table
     */
    final Table table = new Table(layoutContainer, SWT.CHECK | SWT.FULL_SELECTION | SWT.BORDER);

    table.setLayout(new TableLayout());
    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    _columnViewer = new CheckboxTableViewer(table);

    /*
     * create columns
     */
    TableViewerColumn tvc;
    TableColumn tvcColumn;

    // column: label
    tvc = new TableViewerColumn(_columnViewer, SWT.LEAD);
    tvcColumn = tvc.getColumn();
    tvcColumn.setText(Messages.ColumnModifyDialog_column_column);
    tvc.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ColumnDefinition colDef = (ColumnDefinition) cell.getElement();
            cell.setText(colDef.getColumnLabel());

            // paint columns in a different color which can't be hidden
            if (colDef.canModifyVisibility() == false) {
                cell.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_FOREGROUND));
            }
        }
    });
    tableLayout.setColumnData(tvcColumn, new ColumnWeightData(1, true));

    // column: unit
    tvc = new TableViewerColumn(_columnViewer, SWT.LEAD);
    tvcColumn = tvc.getColumn();
    tvcColumn.setText(Messages.ColumnModifyDialog_column_unit);
    tvc.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ColumnDefinition colDef = (ColumnDefinition) cell.getElement();
            cell.setText(colDef.getColumnUnit());

            // paint columns in a different color which can't be hidden
            if (colDef.canModifyVisibility() == false) {
                cell.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_FOREGROUND));
            }
        }
    });
    tableLayout.setColumnData(tvcColumn, new ColumnPixelData(_pc.convertWidthInCharsToPixels(13), true));

    // column: width
    tvc = new TableViewerColumn(_columnViewer, SWT.TRAIL);
    tvcColumn = tvc.getColumn();
    tvcColumn.setText(Messages.ColumnModifyDialog_column_width);
    tvc.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ColumnDefinition colDef = (ColumnDefinition) cell.getElement();
            cell.setText(Integer.toString(colDef.getColumnWidth()));

            // paint columns in a different color which can't be hidden
            if (colDef.canModifyVisibility() == false) {
                cell.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_FOREGROUND));
            }
        }
    });
    tableLayout.setColumnData(tvcColumn, new ColumnPixelData(_pc.convertWidthInCharsToPixels(10), true));

    _columnViewer.setContentProvider(new IStructuredContentProvider() {

        public void dispose() {
        }

        public Object[] getElements(final Object inputElement) {
            return _allColumnsInDialog.toArray();
        }

        public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
        }
    });

    _columnViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(final DoubleClickEvent event) {

            final Object firstElement = ((IStructuredSelection) _columnViewer.getSelection()).getFirstElement();
            if (firstElement != null) {

                // check/uncheck current item

                _columnViewer.setChecked(firstElement, !_columnViewer.getChecked(firstElement));
            }
        }
    });

    _columnViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(final CheckStateChangedEvent event) {

            final ColumnDefinition colDef = (ColumnDefinition) event.getElement();

            if (colDef.canModifyVisibility()) {

                // keep the checked status
                colDef.setIsCheckedInDialog(event.getChecked());

                // select the checked item
                _columnViewer.setSelection(new StructuredSelection(colDef));

            } else {

                // column can't be unchecked
                _columnViewer.setChecked(colDef, true);
            }
        }
    });

    _columnViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(final SelectionChangedEvent event) {
            enableUpDownButtons();
        }
    });

    /*
     * set drag adapter
     */
    _columnViewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() },
            new DragSourceListener() {

                public void dragFinished(final DragSourceEvent event) {

                    final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer();

                    if (event.doit == false) {
                        return;
                    }

                    transfer.setSelection(null);
                    transfer.setSelectionSetTime(0);
                }

                public void dragSetData(final DragSourceEvent event) {
                    // data are set in LocalSelectionTransfer
                }

                public void dragStart(final DragSourceEvent event) {

                    final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer();
                    final ISelection selection = _columnViewer.getSelection();

                    _dndCheckedElements = _columnViewer.getCheckedElements();

                    transfer.setSelection(selection);
                    transfer.setSelectionSetTime(_dndDragStartViewerLeft = event.time & 0xFFFFFFFFL);

                    event.doit = !selection.isEmpty();
                }
            });

    /*
     * set drop adapter
     */
    final ViewerDropAdapter viewerDropAdapter = new ViewerDropAdapter(_columnViewer) {

        private Widget _dragOverItem;

        @Override
        public void dragOver(final DropTargetEvent dropEvent) {

            // keep table item
            _dragOverItem = dropEvent.item;

            super.dragOver(dropEvent);
        }

        @Override
        public boolean performDrop(final Object data) {

            if (data instanceof StructuredSelection) {
                final StructuredSelection selection = (StructuredSelection) data;

                if (selection.getFirstElement() instanceof ColumnDefinition) {

                    final ColumnDefinition colDef = (ColumnDefinition) selection.getFirstElement();

                    final int location = getCurrentLocation();
                    final Table filterTable = _columnViewer.getTable();

                    /*
                     * check if drag was startet from this item, remove the item before the new
                     * item is inserted
                     */
                    if (LocalSelectionTransfer.getTransfer().getSelectionSetTime() == _dndDragStartViewerLeft) {
                        _columnViewer.remove(colDef);
                    }

                    int filterIndex;

                    if (_dragOverItem == null) {

                        _columnViewer.add(colDef);
                        filterIndex = filterTable.getItemCount() - 1;

                    } else {

                        // get index of the target in the table
                        filterIndex = filterTable.indexOf((TableItem) _dragOverItem);
                        if (filterIndex == -1) {
                            return false;
                        }

                        if (location == LOCATION_BEFORE) {
                            _columnViewer.insert(colDef, filterIndex);
                        } else if (location == LOCATION_AFTER || location == LOCATION_ON) {
                            _columnViewer.insert(colDef, ++filterIndex);
                        }
                    }

                    // reselect filter item
                    _columnViewer.setSelection(new StructuredSelection(colDef));

                    // set focus to selection
                    filterTable.setSelection(filterIndex);
                    filterTable.setFocus();

                    // recheck items
                    _columnViewer.setCheckedElements(_dndCheckedElements);

                    enableUpDownButtons();

                    return true;
                }
            }

            return false;
        }

        @Override
        public boolean validateDrop(final Object target, final int operation, final TransferData transferType) {

            final LocalSelectionTransfer transferData = LocalSelectionTransfer.getTransfer();

            // check if dragged item is the target item
            final ISelection selection = transferData.getSelection();
            if (selection instanceof StructuredSelection) {
                final Object dragFilter = ((StructuredSelection) selection).getFirstElement();
                if (target == dragFilter) {
                    return false;
                }
            }

            if (transferData.isSupportedType(transferType) == false) {
                return false;
            }

            // check if target is between two items
            if (getCurrentLocation() == LOCATION_ON) {
                return false;
            }

            return true;
        }

    };

    _columnViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() },
            viewerDropAdapter);
}

From source file:nexcore.tool.uml.ui.realization.sequencediagram.dialog.AddCoveredLifelineByMessageDialog.java

License:Open Source License

/**
 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
 *///  w  ww .j a v  a 2 s  .c  o  m
@Override
protected Control createDialogArea(Composite parent) {

    Composite composite = (Composite) super.createDialogArea(parent);

    composite.getShell().setText(UMLMessage.LABEL_INSERT_COVERED_LIFELINE);

    GridLayout layout = (GridLayout) composite.getLayout();
    layout.numColumns = 1;

    Table table = new Table(composite,
            SWT.BORDER | SWT.CHECK | SWT.H_SCROLL | SWT.V_SCROLL | SWT.HIDE_SELECTION);
    TableColumn column = new TableColumn(table, SWT.NONE);
    column.setMoveable(false);
    TableLayout tableLayout = new TableLayout();
    tableLayout.addColumnData(new ColumnWeightData(100));
    table.setLayout(tableLayout);
    GridData gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
    gd.widthHint = 300;
    gd.heightHint = 200;
    table.setLayoutData(gd);

    lifelineTableViwer = new CheckboxTableViewer(table);
    lifelineTableViwer.setContentProvider(new CoveredLifelineByMessageContentProvider());
    List<AbstractConnection> connectionList = SequenceUtil
            .ascSortedMessageListByYValue(diagram.getConnectionList());
    lifelineTableViwer.setLabelProvider(new CoveredLifelineByMessageLabelProvider(connectionList));

    lifelineTableViwer.setInput(lifelineMap);
    lifelineTableViwer.setAllChecked(true);

    Composite buttonComposit = new Composite(composite, SWT.NONE);
    GridLayout gridLayout = new GridLayout();
    gridLayout.numColumns = 2;
    buttonComposit.setLayout(gridLayout);
    buttonComposit.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

    checkAllButton = new Button(buttonComposit, SWT.NONE);
    checkAllButton.setText(UMLMessage.LABEL_SELECT_ALL);
    checkAllButton.addSelectionListener(new SelectionListener() {
        /**
         * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public void widgetSelected(SelectionEvent e) {
            lifelineTableViwer.setAllChecked(true);
        }

        /**
         * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public void widgetDefaultSelected(SelectionEvent e) {
        }
    });
    unCheckAllButton = new Button(buttonComposit, SWT.NONE);
    unCheckAllButton.setText(UMLMessage.LABEL_UNSELECT_ALL);
    unCheckAllButton.addSelectionListener(new SelectionListener() {
        /**
         * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public void widgetSelected(SelectionEvent e) {
            lifelineTableViwer.setAllChecked(false);
        }

        /**
         * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
         */
        public void widgetDefaultSelected(SelectionEvent e) {
        }
    });

    return composite;

}