/** * <copyright> * * Copyright (c) 2010-2016 Thales Global Services S.A.S. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Thales Global Services S.A.S. - initial API and implementation * * </copyright> */ package org.eclipse.emf.diffmerge.ui.util; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.IColorProvider; import org.eclipse.jface.viewers.IFontProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; /** * A label provider supporting colors, fonts and tooltips, that delegates to * another label provider for certain operations. * This class is intended to be sub-classed. * Sub-classes must define what part of the behavior diverges from the delegate. * @author Olivier Constant */ public class DelegatingLabelProvider extends ColumnLabelProvider { /** The non-null label provider to which behavior is delegated */ private ILabelProvider _delegate; /** * Default constructor */ public DelegatingLabelProvider() { this(null); } /** * Constructor * @param delegate_p the optional label provider to which behavior is delegated */ public DelegatingLabelProvider(ILabelProvider delegate_p) { setDelegate(delegate_p); } /** * @see org.eclipse.jface.viewers.ColumnLabelProvider#getFont(java.lang.Object) */ @Override public Font getFont(Object element_p) { Font result = null; if (_delegate instanceof IFontProvider) result = ((IFontProvider)_delegate).getFont(element_p); return result; } /** * @see org.eclipse.jface.viewers.ColumnLabelProvider#getBackground(java.lang.Object) */ @Override public Color getBackground(Object element_p) { Color result = null; if (_delegate instanceof IColorProvider) result = ((IColorProvider)_delegate).getBackground(element_p); return result; } /** * Return the default delegate * @return a non-null label provider */ protected ILabelProvider getDefaultDelegate() { return DiffMergeLabelProvider.getInstance(); } /** * Return the label provider to which behavior is delegated * @return a non-null label provider */ public ILabelProvider getDelegate() { return _delegate; } /** * @see org.eclipse.jface.viewers.ColumnLabelProvider#getForeground(java.lang.Object) */ @Override public Color getForeground(Object element_p) { Color result = null; if (_delegate instanceof IColorProvider) result = ((IColorProvider)_delegate).getForeground(element_p); return result; } /** * @see org.eclipse.jface.viewers.LabelProvider#getImage(java.lang.Object) */ @Override public Image getImage(Object element_p) { return _delegate.getImage(element_p); } /** * @see org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object) */ @Override public String getText(Object element_p) { return _delegate.getText(element_p); } /** * Set the delegate of this label provider (null for default) * @param delegate_p a potentially null label provider */ public void setDelegate(ILabelProvider delegate_p) { _delegate = delegate_p; if (_delegate == null) _delegate = getDefaultDelegate(); } }