private StagingViewLabelProvider getLabelProvider(ContentViewer viewer) { IBaseLabelProvider base = viewer.getLabelProvider(); IStyledLabelProvider styled = ((DelegatingStyledCellLabelProvider) base) .getStyledStringProvider(); return (StagingViewLabelProvider) styled; }
@Override public void addListener(ILabelProviderListener listener) { super.addListener(listener); if (this.decorator != null) { this.decorator.addListener(this.labelProviderListener); } }
@Override public void dispose() { super.dispose(); if (this.decorator != null) { this.decorator.removeListener(this.labelProviderListener); this.decorator.dispose(); this.decorator = null; } }
@Override public void update(ViewerCell cell) { Object element = cell.getElement(); StyledString styledString = getStyledText(element); String newText= styledString.toString(); StyleRange[] oldStyleRanges= cell.getStyleRanges(); StyleRange[] newStyleRanges= isOwnerDrawEnabled() ? styledString.getStyleRanges() : null; if (!Arrays.equals(oldStyleRanges, newStyleRanges)) { cell.setStyleRanges(newStyleRanges); if (cell.getText().equals(newText)) { // make sure there will be a refresh from a change cell.setText(""); //$NON-NLS-1$ } } cell.setText(newText); cell.setImage(getImage(element)); cell.setFont(getFont(element)); cell.setForeground(getForeground(element)); cell.setBackground(getBackground(element)); // no super call required. changes on item will trigger the refresh. }
fTreeViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(labelProvider)); fTreeViewer.setComparator(new ViewerComparator() { private Collator fCollator= Collator.getInstance();
@Override public Color getForeground(Object element) { if (this.decorator instanceof IColorDecorator) { Color foreground = ((IColorDecorator) this.decorator) .decorateForeground(element); if (foreground != null) return foreground; } return super.getForeground(element); }
@Override public boolean isLabelProperty(Object element, String property) { if (super.isLabelProperty(element, property)) { return true; } return this.decorator != null && this.decorator.isLabelProperty(element, property); }
@Override public Font getFont(Object element) { if (this.decorator instanceof IFontDecorator) { Font font = ((IFontDecorator) this.decorator).decorateFont(element); if (font != null) return font; } return super.getFont(element); }
@Override public Color getBackground(Object element) { if (this.decorator instanceof IColorDecorator) { Color color = ((IColorDecorator) this.decorator) .decorateBackground(element); if (color != null) return color; } return super.getBackground(element); }
@Override public Image getImage(Object element) { Image image = super.getImage(element); if (this.decorator == null) { return image; } Image decorated = null; if (this.decorator instanceof LabelDecorator) { decorated = ((LabelDecorator) this.decorator).decorateImage(image, element, getDecorationContext()); } else { decorated = this.decorator.decorateImage(image, element); } if (decorated != null) return decorated; return image; }
/** * Returns the styled text for the label of the given element. * * @param element * the element for which to provide the styled label text * @return the styled text string used to label the element */ @Override protected StyledString getStyledText(Object element) { StyledString styledString = super.getStyledText(element); if (this.decorator == null) { return styledString; } String label = styledString.getString(); String decorated; if (this.decorator instanceof LabelDecorator) { decorated = ((LabelDecorator) this.decorator).decorateText(label, element, getDecorationContext()); } else { decorated = this.decorator.decorateText(label, element); } if (decorated == null) return styledString; Styler style = getDecorationStyle(element); return StyledCellLabelProvider.styleDecoratedString(decorated, style, styledString); }
@Override public void update(ViewerCell cell) { Object element = cell.getElement(); StyledString styledString = getStyledText(element); String newText= styledString.toString(); StyleRange[] oldStyleRanges= cell.getStyleRanges(); StyleRange[] newStyleRanges= isOwnerDrawEnabled() ? styledString.getStyleRanges() : null; if (!Arrays.equals(oldStyleRanges, newStyleRanges)) { cell.setStyleRanges(newStyleRanges); if (cell.getText().equals(newText)) { // make sure there will be a refresh from a change cell.setText(""); //$NON-NLS-1$ } } cell.setText(newText); cell.setImage(getImage(element)); cell.setFont(getFont(element)); cell.setForeground(getForeground(element)); cell.setBackground(getBackground(element)); // no super call required. changes on item will trigger the refresh. }
fTreeViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(labelProvider)); fTreeViewer.setComparator(new ViewerComparator() { private Collator fCollator= Collator.getInstance();
@Override public Color getForeground(Object element) { if (this.decorator instanceof IColorDecorator) { Color foreground = ((IColorDecorator) this.decorator) .decorateForeground(element); if (foreground != null) return foreground; } return super.getForeground(element); }
@Override public boolean isLabelProperty(Object element, String property) { if (super.isLabelProperty(element, property)) { return true; } return this.decorator != null && this.decorator.isLabelProperty(element, property); }
@Override public Font getFont(Object element) { if (this.decorator instanceof IFontDecorator) { Font font = ((IFontDecorator) this.decorator).decorateFont(element); if (font != null) return font; } return super.getFont(element); }
@Override public Color getBackground(Object element) { if (this.decorator instanceof IColorDecorator) { Color color = ((IColorDecorator) this.decorator) .decorateBackground(element); if (color != null) return color; } return super.getBackground(element); }
@Override public Image getImage(Object element) { Image image = super.getImage(element); if (this.decorator == null) { return image; } Image decorated = null; if (this.decorator instanceof LabelDecorator) { decorated = ((LabelDecorator) this.decorator).decorateImage(image, element, getDecorationContext()); } else { decorated = this.decorator.decorateImage(image, element); } if (decorated != null) return decorated; return image; }
/** * Returns the styled text for the label of the given element. * * @param element * the element for which to provide the styled label text * @return the styled text string used to label the element */ @Override protected StyledString getStyledText(Object element) { StyledString styledString = super.getStyledText(element); if (this.decorator == null) { return styledString; } String label = styledString.getString(); String decorated; if (this.decorator instanceof LabelDecorator) { decorated = ((LabelDecorator) this.decorator).decorateText(label, element, getDecorationContext()); } else { decorated = this.decorator.decorateText(label, element); } if (decorated == null) return styledString; Styler style = getDecorationStyle(element); return StyledCellLabelProvider.styleDecoratedString(decorated, style, styledString); }
viewer.setLabelProvider(new DelegatingStyledCellLabelProvider( styleProvider)); applyDialogFont(composite);