Package org.eclipse.php.internal.ui.actions.newprojectwizard

Source Code of org.eclipse.php.internal.ui.actions.newprojectwizard.DelegatingLabelProviderWithTooltip

/*******************************************************************************
* Copyright (c) 2010 IBM Corporation and others.
* 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:
*     IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.php.internal.ui.actions.newprojectwizard;

import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ColumnViewer;
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.IFontProvider;
import org.eclipse.jface.viewers.ILabelDecorator;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.LabelProviderChangedEvent;
import org.eclipse.jface.viewers.ViewerColumn;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;

/**
* @since 3.5
*
*/
public abstract class DelegatingLabelProviderWithTooltip extends ColumnLabelProvider {
  /**
   *
   */
  private final ILabelDecorator decorator;
  ILabelProvider wrappedLabelProvider;

  /**
   * @param decorator
   */
  DelegatingLabelProviderWithTooltip(ILabelProvider wrappedLabelProvider,
      ILabelDecorator decorator) {
    this.wrappedLabelProvider = wrappedLabelProvider;
    this.decorator = decorator;
    wrappedLabelProvider.addListener(new ILabelProviderListener() {
      public void labelProviderChanged(LabelProviderChangedEvent event) {
        fireLabelProviderChanged(event);
      }
    });
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * org.eclipse.jface.viewers.CellLabelProvider#initialize(org.eclipse.jface
   * .viewers.ColumnViewer, org.eclipse.jface.viewers.ViewerColumn)
   */
  protected void initialize(ColumnViewer viewer, ViewerColumn column) {
    super.initialize(viewer, column);
    if (decorator != null) {
      ColumnViewerToolTipSupport.enableFor(viewer);
    }
  }

  protected void fireLabelProviderChanged(LabelProviderChangedEvent event) {
    super.fireLabelProviderChanged(event);
  }

  public String getText(Object element) {
    return wrappedLabelProvider.getText(element);
  }

  public Image getImage(Object element) {
    return wrappedLabelProvider.getImage(element);
  }

  public Font getFont(Object element) {
    if (wrappedLabelProvider instanceof IFontProvider) {
      return ((IFontProvider) wrappedLabelProvider).getFont(element);
    }
    return null;
  }

  public Color getForeground(Object element) {
    if (wrappedLabelProvider instanceof IColorProvider) {
      return ((IColorProvider) wrappedLabelProvider).getForeground(element);
    }
    return null;
  }

  public Color getBackground(Object element) {
    if (wrappedLabelProvider instanceof IColorProvider) {
      return ((IColorProvider) wrappedLabelProvider).getBackground(element);
    }
    return null;
  }

  public String getToolTipText(Object element) {
    if (decorator == null) {
      return null;
    }
    String text = getText(element);
    element = unwrapElement(element);
    return decorator.decorateText(text, element);
  }

  /**
   * Returns the element that will be used to determine the bundle id. In most
   * cases, this method can just return the provided element. Sometimes, it
   * might be necessary to return a nested object, or an
   * IConfigurationElement.
   *
   * @param element
   * @return the element, or a client object wrapped by element, or an
   *         IConfigurationElement
   */
  protected abstract Object unwrapElement(Object element);

  public void dispose() {
    wrappedLabelProvider.dispose();
    super.dispose();
  }
}
TOP

Related Classes of org.eclipse.php.internal.ui.actions.newprojectwizard.DelegatingLabelProviderWithTooltip

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.