Example usage for org.eclipse.jface.viewers ViewerCell getControl

List of usage examples for org.eclipse.jface.viewers ViewerCell getControl

Introduction

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

Prototype

public Control getControl() 

Source Link

Document

Get the control for this cell.

Usage

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.dialogs.AbstractIconDialogWithScopeAndFilter.java

License:Open Source License

@Override
protected void rebuildViewer() {
    super.rebuildViewer();
    getViewer().getTable().setHeaderVisible(true);

    ((GridData) getViewer().getTable().getLayoutData()).minimumHeight = 100;

    TableViewerColumn colIcon = new TableViewerColumn(getViewer(), SWT.NONE);
    colIcon.getColumn().setText(Messages.AbstractIconDialogWithScopeAndFilter_icon);
    TableViewerColumn colText = new TableViewerColumn(getViewer(), SWT.NONE);
    colText.getColumn().setText(Messages.AbstractIconDialogWithScopeAndFilter_details);

    // resize the row height using a MeasureItem listener
    getViewer().getTable().addListener(SWT.MeasureItem, new Listener() {
        @Override/*w  ww .j a  v a  2s  . c  o m*/
        public void handleEvent(Event event) {
            // height cannot be per row so simply set
            event.height = maxDisplayedImageSize;
        }
    });

    colIcon.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            IFile file;
            if (cell.getElement() instanceof ContributionData) {
                file = new ContributionDataFile((ContributionData) cell.getElement());
            } else if (cell.getElement() instanceof Entry) {
                file = ((Entry) cell.getElement()).file;
            } else {
                file = (IFile) cell.getElement();
            }

            Image img = icons.get(file);
            if (img == null) {
                InputStream in = null;
                try {
                    in = file.getContents();
                    img = new Image(cell.getControl().getDisplay(), in);
                    icons.put(file, img);
                } catch (Exception e) {
                    // e.printStackTrace();
                    return;
                } finally {
                    if (in != null) {
                        try {
                            in.close();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            // e.printStackTrace();
                        }
                    }
                }
            }

            // scale image if larger then max height
            // also remember max width for column resizing
            if (img != null) {
                double scale1 = ((double) maxDisplayedImageSize) / img.getImageData().height;
                double scale2 = ((double) maxDisplayedImageSize) / img.getImageData().width;
                if (scale2 < scale1) {
                    scale1 = scale2;
                }
                if (scale1 < 1) {
                    int width = (int) (img.getImageData().width * scale1);
                    if (width == 0)
                        width = 1;
                    int height = (int) (img.getImageData().height * scale1);
                    if (height == 0)
                        height = 1;
                    Image img2 = new Image(img.getDevice(), img.getImageData().scaledTo(width, height));
                    img.dispose();
                    img = img2;
                    icons.put(file, img);
                }
                int width = AbstractIconDialogWithScopeAndFilter.this.getViewer().getTable().getColumn(0)
                        .getWidth();
                if (img.getImageData().width > width) {
                    AbstractIconDialogWithScopeAndFilter.this.getViewer().getTable().getColumn(0)
                            .setWidth(img.getImageData().width);
                }
                int height = img.getImageData().height;
                if (height > maxImageHeight) {
                    maxImageHeight = height;
                }
            }

            cell.setImage(img);
        }
    });
    colIcon.getColumn().setWidth(30);

    colText.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            IFile file;
            String installLocation = null;
            if (cell.getElement() instanceof ContributionData) {
                ContributionData contributionData = (ContributionData) cell.getElement();
                file = new ContributionDataFile(contributionData);
                installLocation = contributionData.installLocation;
            } else if (cell.getElement() instanceof Entry) {
                file = ((Entry) cell.getElement()).file;
                installLocation = ((Entry) cell.getElement()).installLocation;
            } else {
                file = (IFile) cell.getElement();
            }
            StyledString styledString = new StyledString(file.getProjectRelativePath().toString(), null);
            String bundle = FilteredContributionDialog.getBundle(file);
            if (bundle != null) {
                styledString.append(" - " + bundle, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            } else if (installLocation != null) {
                styledString.append(" - " + installLocation, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
            }

            cell.setText(styledString.getString());
            cell.setStyleRanges(styledString.getStyleRanges());
        }
    });
    colText.getColumn().setWidth(400);

    getShell().addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            clearImages();
        }
    });
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.ComponentLabelProvider.java

License:Open Source License

@Override
public void update(final ViewerCell cell) {
    if (cell.getElement() instanceof EObject) {

        EObject o = (EObject) cell.getElement();
        AbstractComponentEditor elementEditor = editor.getEditor(o.eClass());
        if (elementEditor != null) {
            String label = elementEditor.getLabel(o);
            String detailText = elementEditor.getDetailLabel(o);
            Styler styler = null;//from   www .  ja v  a  2 s  .  c  o  m

            if (o instanceof MUIElement) {

                if (!((MUIElement) o).isVisible() && !((MUIElement) o).isToBeRendered()) {
                    label += "<" + Messages.ComponentLabelProvider_invisible + "/" //$NON-NLS-1$//$NON-NLS-2$
                            + Messages.ComponentLabelProvider_notrendered + ">"; //$NON-NLS-1$
                    styler = BOTH_STYLER;
                } else if (!((MUIElement) o).isVisible()) {
                    label += "<" + Messages.ComponentLabelProvider_invisible + ">"; //$NON-NLS-1$//$NON-NLS-2$
                    styler = NOT_VISIBLE_STYLER;
                } else if (!((MUIElement) o).isToBeRendered()) {
                    label += "<" + Messages.ComponentLabelProvider_notrendered + ">"; //$NON-NLS-1$ //$NON-NLS-2$
                    styler = NOT_RENDERED_STYLER;
                }
            }

            if (detailText == null) {
                StyledString styledString = new StyledString(label, styler);
                cell.setText(styledString.getString());
                cell.setStyleRanges(styledString.getStyleRanges());
            } else {
                StyledString styledString = new StyledString(label, styler);
                styledString.append(" - " + detailText, StyledString.DECORATIONS_STYLER); //$NON-NLS-1$
                cell.setText(styledString.getString());
                cell.setStyleRanges(styledString.getStyleRanges());
            }
            cell.setImage(elementEditor.getImage(o, cell.getControl().getDisplay()));
        } else {
            cell.setText(cell.getElement().toString());
        }
    } else if (cell.getElement() instanceof VirtualEntry<?>) {
        String s = cell.getElement().toString();
        if (font == null) {
            FontData[] data = cell.getControl().getFont().getFontData();
            font = new Font(cell.getControl().getDisplay(),
                    new FontData(data[0].getName(), data[0].getHeight(), SWT.ITALIC));
        }
        cell.setFont(font);
        cell.setText(s);
    } else {
        cell.setText(cell.getElement().toString());
    }
}

From source file:org.eclipse.emf.ecp.edit.internal.swt.controls.ECPFocusCellDrawHighlighter.java

License:Open Source License

private void markFocusedCell(Event event, ViewerCell cell) {
    Color background = cell.getControl().isFocusControl() ? getSelectedCellBackgroundColor(cell)
            : getSelectedCellBackgroundColorNoFocus(cell);
    Color foreground = cell.getControl().isFocusControl() ? getSelectedCellForegroundColor(cell)
            : getSelectedCellForegroundColorNoFocus(cell);

    if (foreground != null || background != null || onlyTextHighlighting(cell)) {
        // GC gc = event.gc;

        if (background == null) {
            background = cell.getItem().getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION);
        }//  w  ww  . jav  a 2s  . c  o  m

        if (foreground == null) {
            foreground = cell.getItem().getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT);
        }

        // gc.setBackground(background);
        // gc.setForeground(foreground);
        //
        // if (onlyTextHighlighting(cell)) {
        // Rectangle area = event.getBounds();
        // Rectangle rect = cell.getTextBounds();
        // if( rect != null ) {
        // area.x = rect.x;
        // }
        // gc.fillRectangle(area);
        // } else {
        // gc.fillRectangle(event.getBounds());
        // }
        cell.setBackground(background);
        cell.setForeground(foreground);

        // event.detail &= ~SWT.SELECTED;
    }
}

From source file:org.eclipse.emf.examples.library.databinding.common.FocusCellOwnerDrawHighlighter.java

License:Open Source License

private void markFocusedCell(Event event, ViewerCell cell) {
    Color background = (cell.getControl().isFocusControl()) ? getSelectedCellBackgroundColor(cell)
            : getSelectedCellBackgroundColorNoFocus(cell);
    Color foreground = (cell.getControl().isFocusControl()) ? getSelectedCellForegroundColor(cell)
            : getSelectedCellForegroundColorNoFocus(cell);

    if (foreground != null || background != null || onlyTextHighlighting(cell)) {
        GC gc = event.gc;/*from www  .  ja  va 2 s .com*/

        if (background == null) {
            background = cell.getItem().getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION);
        }

        if (foreground == null) {
            foreground = cell.getItem().getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT);
        }

        gc.setBackground(background);
        gc.setForeground(foreground);

        if (onlyTextHighlighting(cell)) {
            Rectangle area = event.getBounds();
            Rectangle rect = cell.getTextBounds();
            if (rect != null) {
                area.x = rect.x;
            }
            gc.fillRectangle(area);
        } else {
            gc.fillRectangle(event.getBounds());
        }

        event.detail &= ~SWT.SELECTED;
    }
}

From source file:org.eclipse.emf.examples.library.databinding.common.FocusCellOwnerDrawHighlighter.java

License:Open Source License

protected void focusCellChanged(ViewerCell newCell, ViewerCell oldCell) {
    super.focusCellChanged(newCell, oldCell);

    // Redraw new area
    if (newCell != null) {
        Rectangle rect = newCell.getBounds();
        int x = newCell.getColumnIndex() == 0 ? 0 : rect.x;
        int width = newCell.getColumnIndex() == 0 ? rect.x + rect.width : rect.width;
        // 1 is a fix for Linux-GTK
        newCell.getControl().redraw(x, rect.y - 1, width, rect.height + 1, true);
    }//w  w w .  j  a v a  2 s  . co  m

    if (oldCell != null) {
        Rectangle rect = oldCell.getBounds();
        int x = oldCell.getColumnIndex() == 0 ? 0 : rect.x;
        int width = oldCell.getColumnIndex() == 0 ? rect.x + rect.width : rect.width;
        // 1 is a fix for Linux-GTK
        oldCell.getControl().redraw(x, rect.y - 1, width, rect.height + 1, true);
    }
}

From source file:org.eclipse.jface.snippets.viewers.FocusBorderCellHighlighter.java

License:Open Source License

@Override
protected void focusCellChanged(ViewerCell cell) {
    super.focusCellChanged(cell);

    // Redraw new area
    if (cell != null) {
        Rectangle rect = cell.getBounds();
        int x = cell.getColumnIndex() == 0 ? 0 : rect.x;
        int width = cell.getColumnIndex() == 0 ? rect.x + rect.width : rect.width;
        cell.getControl().redraw(x, rect.y, width, rect.height, true);
    }/*from ww w .  ja  v  a  2  s  . com*/

    if (oldCell != null) {
        Rectangle rect = oldCell.getBounds();
        int x = oldCell.getColumnIndex() == 0 ? 0 : rect.x;
        int width = oldCell.getColumnIndex() == 0 ? rect.x + rect.width : rect.width;
        oldCell.getControl().redraw(x, rect.y, width, rect.height, true);
    }

    this.oldCell = cell;
}

From source file:org.eclipse.rcptt.ui.actions.Q7ElementLabelProvider.java

License:Open Source License

@Override
public void update(ViewerCell cell) {
    Object element = cell.getElement();
    Control ctrl = cell.getControl();
    Widget item = cell.getViewerRow().getItem();
    int index = 0;
    if (ctrl instanceof Tree) {
        index = ((Tree) ctrl).indexOf((TreeItem) item);
    } else if (ctrl instanceof Table) {
        index = ((Table) ctrl).indexOf((TableItem) item);
    }/*from w  w  w.j ava2s. c om*/

    StyledString styled = getStyledText(element, index);
    cell.setText(styled.getString());
    cell.setStyleRanges(styled.getStyleRanges());
    cell.setImage(getImage(element));
}

From source file:org.eclipse.wazaabi.engine.swt.commons.views.collections.ColumnManager.java

License:Open Source License

protected void createViewerColumn(final org.eclipse.swt.widgets.Widget w,
        final AbstractColumnDescriptor columnDescriptor, final int columnIndex) {

    ViewerColumn viewerColumn = null;//ww w  .  ja v  a  2  s  . co  m
    if (w instanceof org.eclipse.swt.widgets.Tree) {
        viewerColumn = new TreeViewerColumn((TreeViewer) collectionView.getViewer(),
                getSWTColumnHeaderStyle(columnDescriptor));

        // TODO : not supported yet
        // viewerColumn.getColumn().setMoveable(true);

        final TreeColumn column = ((TreeViewerColumn) viewerColumn).getColumn();

        column.setText(columnDescriptor.getLabel() != null ? columnDescriptor.getLabel() : "");//$NON-NLS-1$

        if (getSWTWidget() instanceof org.eclipse.swt.widgets.Composite
                && ((org.eclipse.swt.widgets.Composite) getSWTWidget())
                        .getLayout() instanceof AbstractColumnLayout) {
            ColumnLayoutData columnLayoutData = null;
            if (columnDescriptor.eClass() == CoreCollectionsStylesPackage.Literals.COLUMN_DESCRIPTOR)
                columnLayoutData = new ColumnPixelData(((ColumnDescriptor) columnDescriptor).getWidth(),
                        columnDescriptor.isResizable());
            else if (columnDescriptor
                    .eClass() == CoreCollectionsStylesPackage.Literals.WEIGHTED_COLUMN_DESCRIPTOR)
                columnLayoutData = new ColumnWeightData(
                        ((WeightedColumnDescriptor) columnDescriptor).getWeight(),
                        ((WeightedColumnDescriptor) columnDescriptor).getMinimumWidth(),
                        columnDescriptor.isResizable());
            ((AbstractColumnLayout) ((org.eclipse.swt.widgets.Composite) getSWTWidget()).getLayout())
                    .setColumnData(column, columnLayoutData);
        }

    } else if (w instanceof org.eclipse.swt.widgets.Table) {
        viewerColumn = new TableViewerColumn((TableViewer) collectionView.getViewer(),
                getSWTColumnHeaderStyle(columnDescriptor));

        // TODO : not supported yet
        // viewerColumn.getColumn().setMoveable(true);

        ((TableViewerColumn) viewerColumn).getColumn()
                .setText(columnDescriptor.getLabel() != null ? columnDescriptor.getLabel() : "");//$NON-NLS-1$

        final TableColumn column = ((TableViewerColumn) viewerColumn).getColumn();

        column.setText(columnDescriptor.getLabel() != null ? columnDescriptor.getLabel() : "");//$NON-NLS-1$

        if (getSWTWidget() instanceof org.eclipse.swt.widgets.Composite
                && ((org.eclipse.swt.widgets.Composite) getSWTWidget())
                        .getLayout() instanceof AbstractColumnLayout) {
            ColumnLayoutData columnLayoutData = null;
            if (columnDescriptor.eClass() == CoreCollectionsStylesPackage.Literals.COLUMN_DESCRIPTOR)
                columnLayoutData = new ColumnPixelData(((ColumnDescriptor) columnDescriptor).getWidth(),
                        columnDescriptor.isResizable());
            else if (columnDescriptor
                    .eClass() == CoreCollectionsStylesPackage.Literals.WEIGHTED_COLUMN_DESCRIPTOR)
                columnLayoutData = new ColumnWeightData(
                        ((WeightedColumnDescriptor) columnDescriptor).getWeight(),
                        ((WeightedColumnDescriptor) columnDescriptor).getMinimumWidth(),
                        columnDescriptor.isResizable());
            ((AbstractColumnLayout) ((org.eclipse.swt.widgets.Composite) getSWTWidget()).getLayout())
                    .setColumnData(column, columnLayoutData);
        }

    }
    if (viewerColumn != null) {
        if (collectionView.getLabelProvider() instanceof PathSelectorLabelProvider) {
            final PathSelectorLabelProvider labelProvider = (PathSelectorLabelProvider) collectionView
                    .getLabelProvider();
            viewerColumn.setLabelProvider(new ColumnLabelProvider() {

                public String getText(Object element) {
                    return labelProvider.getColumnText(element, columnIndex);
                }

                public Image getImage(Object element) {
                    return labelProvider.getColumnImage(element, columnIndex);
                }

            });
        } else if (collectionView.getLabelProvider() instanceof DynamicLabelProvider) {
            final DynamicLabelProvider labelProvider = (DynamicLabelProvider) collectionView.getLabelProvider();
            viewerColumn.setLabelProvider(new StyledCellLabelProvider() {

                @Override
                public void update(ViewerCell cell) {
                    final Object element = cell.getElement();
                    final int columnIndex = cell.getColumnIndex();
                    final Display display = cell.getControl().getDisplay();
                    cell.setText(labelProvider.getColumnText(element, columnIndex));
                    cell.setImage(labelProvider.getColumnImage(element, columnIndex));
                    final Color foreground = labelProvider.getForegroundColor(element, columnIndex, display);
                    if (foreground != null)
                        cell.setForeground(foreground);
                    final Color background = labelProvider.getBackgroundColor(element, columnIndex, display);
                    if (background != null)
                        cell.setBackground(background);
                    final Font font = labelProvider.getFont(element, columnIndex, display, cell.getFont());
                    if (font != null)
                        cell.setFont(font);
                    super.update(cell);
                }
            });
        } else
            viewerColumn.setLabelProvider(new ColumnLabelProvider() {

                public String getText(Object element) {
                    return element != null ? element.toString() : ""; //$NON-NLS-1$
                }

            });
        if (columnDescriptor.getEditingSupport() != null) {
            DynamicEditingSupport dynamicEditingSupport = new DynamicEditingSupport(this, columnDescriptor);
            dynamicEditingSupports.put(columnDescriptor, dynamicEditingSupport);
            viewerColumn.setEditingSupport(dynamicEditingSupport);
        }
    }

}

From source file:org.eclipsetrader.ui.internal.views.ViewItemLabelProvider.java

License:Open Source License

protected void updateBackground(ViewerCell cell) {
    if (cell.getControl() instanceof Table && cell.getItem() instanceof TableItem) {
        int rowIndex = ((Table) cell.getControl()).indexOf((TableItem) cell.getItem());
        cell.setBackground((rowIndex & 1) != 0 ? oddRowsColor : evenRowsColor);

        IViewItem element = (IViewItem) cell.getElement();
        ISessionData data = (ISessionData) element.getAdapter(ISessionData.class);
        if (data != null) {
            int[] timers = (int[]) data.getData(K_FADE_LEVELS);
            int columnIndex = cell.getColumnIndex();
            if (timers != null && columnIndex < timers.length) {
                if (timers[columnIndex] > 0) {
                    switch (timers[columnIndex]) {
                    case 4:
                        cell.setBackground((rowIndex & 1) != 0 ? tickOddRowsFade[0] : tickEvenRowsFade[0]);
                        break;
                    case 3:
                        cell.setBackground((rowIndex & 1) != 0 ? tickOddRowsFade[1] : tickEvenRowsFade[1]);
                        break;
                    case 2:
                        cell.setBackground((rowIndex & 1) != 0 ? tickOddRowsFade[2] : tickEvenRowsFade[2]);
                        break;
                    case 1:
                        break;
                    default:
                        cell.setBackground(tickBackgroundColor);
                        break;
                    }//from   ww  w .  j a  v  a 2s.c  om
                }
            }
        }
    } else {
        cell.setBackground(evenRowsColor);

        IViewItem element = (IViewItem) cell.getElement();
        ISessionData data = (ISessionData) element.getAdapter(ISessionData.class);
        if (data != null) {
            int[] timers = (int[]) data.getData(K_FADE_LEVELS);
            int columnIndex = cell.getColumnIndex();
            if (timers != null && columnIndex < timers.length) {
                if (timers[columnIndex] > 0) {
                    switch (timers[columnIndex]) {
                    case 4:
                        cell.setBackground(tickEvenRowsFade[0]);
                        break;
                    case 3:
                        cell.setBackground(tickEvenRowsFade[1]);
                        break;
                    case 2:
                        cell.setBackground(tickEvenRowsFade[2]);
                        break;
                    case 1:
                        break;
                    default:
                        cell.setBackground(tickBackgroundColor);
                        break;
                    }
                }
            }
        }
    }
}

From source file:org.eclipsetrader.ui.internal.views.WatchListViewCellLabelProvider.java

License:Open Source License

@Override
public void update(ViewerCell cell) {
    WatchListViewItem element = (WatchListViewItem) cell.getElement();

    IAdaptable adaptableValue = (IAdaptable) attributeMaps[0].get(element);
    WatchListViewCellAttribute attribute = (WatchListViewCellAttribute) attributeMaps[1].get(element);
    if (adaptableValue == null) {
        return;/*  ww w.j  a va 2s. c o m*/
    }

    if (!objectEquals(adaptableValue, valueMap.get(element))) {
        String text = (String) adaptableValue.getAdapter(String.class);
        if (text == null) {
            text = ""; //$NON-NLS-1$
        }
        if (!text.equals(cell.getText())) {
            cell.setText(text);
        }

        cell.setForeground((Color) adaptableValue.getAdapter(Color.class));
        cell.setFont((Font) adaptableValue.getAdapter(Font.class));

        ImageData imageData = (ImageData) adaptableValue.getAdapter(ImageData.class);
        if (imageData != null) {
            imageData.transparentPixel = imageData.palette.getPixel(new RGB(255, 255, 255));
            Image newImage = new Image(Display.getDefault(), imageData);
            Image oldImage = cell.getImage();
            cell.setImage(newImage);
            if (oldImage != null) {
                oldImage.dispose();
            }
        } else {
            Image image = (Image) adaptableValue.getAdapter(Image.class);
            cell.setImage(image != null && image.isDisposed() ? null : image);
        }
        valueMap.put(element, adaptableValue);
    }

    if (!objectEquals(attribute, decoratorMap.get(element))) {
        if (ownerDrawEnabled) {
            cell.setBackground(null);
            Rectangle rect = cell.getBounds();
            cell.getControl().redraw(rect.x, rect.y, rect.width, rect.height, false);
        } else {
            if (attribute == null) {
                cell.setBackground(null);
            } else {
                TableItem tableItem = (TableItem) cell.getViewerRow().getItem();
                int rowIndex = tableItem.getParent().indexOf(tableItem);
                if ((rowIndex & 1) != 0) {
                    if (attribute.oddBackground == null || !attribute.oddBackground.isDisposed()) {
                        cell.setBackground(attribute.oddBackground);
                    }
                } else {
                    if (attribute.evenBackground == null || !attribute.evenBackground.isDisposed()) {
                        cell.setBackground(attribute.evenBackground);
                    }
                }
            }
        }
        decoratorMap.put(element, attribute);
    }
}