Package org.eclipse.php.internal.ui.util

Source Code of org.eclipse.php.internal.ui.util.PHPModelLabelProvider

/*******************************************************************************
* Copyright (c) 2014 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
*     Zend Technologies
*******************************************************************************/
package org.eclipse.php.internal.ui.util;

import org.eclipse.dltk.core.IMember;
import org.eclipse.dltk.core.IMethod;
import org.eclipse.dltk.core.IModelElement;
import org.eclipse.dltk.core.ModelException;
import org.eclipse.dltk.ui.DLTKUIPlugin;
import org.eclipse.dltk.ui.ScriptElementImageProvider;
import org.eclipse.dltk.ui.ScriptElementLabels;
import org.eclipse.dltk.ui.viewsupport.ImageDescriptorRegistry;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.php.core.compiler.PHPFlags;
import org.eclipse.php.internal.core.Logger;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;

/**
*
* @author Dawid zulus Pakula <zulus@w3des.net>
* @since 3.3
*/
public class PHPModelLabelProvider extends LabelProvider implements
    ILabelProvider {

  private ImageDescriptorRegistry fRegistry;
  final private int fImageFlags;
  final private long fTextFlags;
  private ScriptElementImageProvider fImageProvider;

  public static final long DEFAULT_TEXTFLAGS = ScriptElementLabels.ALL_DEFAULT;
  public static final int DEFAULT_IMAGEFLAGS = ScriptElementImageProvider.OVERLAY_ICONS
      | ScriptElementImageProvider.SMALL_ICONS;

  /**
   * @param textFlags
   *            Flags defined in {@link ScriptElementLabels}.
   * @param imageFlags
   *            Flags defined in {@link ScriptElementImageProvider}.
   */
  public PHPModelLabelProvider(final long textFlags, final int imageFlags) {
    fImageFlags = imageFlags;
    fTextFlags = textFlags;
    fRegistry = null;
    fImageProvider = new ScriptElementImageProvider();
  }

  public PHPModelLabelProvider() {
    this(DEFAULT_TEXTFLAGS, DEFAULT_IMAGEFLAGS);
  }

  private ImageDescriptorRegistry getRegistry() {
    if (fRegistry == null)
      fRegistry = DLTKUIPlugin.getImageDescriptorRegistry();
    return fRegistry;
  }

  @Override
  public Image getImage(Object element) {
    if (element instanceof IModelElement) {
      ImageDescriptor baseImage = getImageDescriptor(
          (IModelElement) element, fImageFlags);
      if (baseImage != null) {
        return getRegistry().get(baseImage);
      }

    }
    return null;
  }

  public ImageDescriptor getImageDescriptor(IModelElement element,
      int imageFlags) {
    if (element == null) {
      return null;
    }
    ImageDescriptor baseImage = getBaseImageDescriptor(element, imageFlags);
    if (baseImage != null) {
      int adornmentFlags = getAdornmentFlags(element);
      Point size = ((imageFlags & ScriptElementImageProvider.SMALL_ICONS) != 0) ? ScriptElementImageProvider.SMALL_SIZE
          : ScriptElementImageProvider.BIG_SIZE;
      return new PHPElementImageDescriptor(baseImage, adornmentFlags,
          size);
    }
    return null;
  }

  private ImageDescriptor getBaseImageDescriptor(IModelElement element,
      int imageFlags) {

    return fImageProvider.getBaseImageDescriptor(element, imageFlags);
  }

  private int getAdornmentFlags(IModelElement element) {
    int adornments = 0;
    int modifiers = 0;
    if (element instanceof IMember) {
      try {
        modifiers = ((IMember) element).getFlags();
      } catch (ModelException e) {
        if (e.isDoesNotExist()) {
          return modifiers;
        }
        Logger.logException(e);
      }
    }
    try {
      if (element.getElementType() == IModelElement.METHOD
          && ((IMethod) element).isConstructor())
        adornments |= PHPElementImageDescriptor.CONSTRUCTOR;
    } catch (ModelException e) {
      if (e.isDoesNotExist()) {
        return modifiers;
      }
      Logger.logException(e);
    }
    if (PHPFlags.isAbstract(modifiers))
      adornments |= PHPElementImageDescriptor.ABSTRACT;
    if (PHPFlags.isConstant(modifiers)) {
      adornments |= PHPElementImageDescriptor.CONSTANT;
    } else if (PHPFlags.isFinal(modifiers)) {
      adornments |= PHPElementImageDescriptor.FINAL;
    }
    if (PHPFlags.isStatic(modifiers))
      adornments |= PHPElementImageDescriptor.STATIC;
    if (PHPFlags.isDeprecated(modifiers))
      adornments |= PHPElementImageDescriptor.DEPRECATED;
    return adornments;
  }

  @Override
  public String getText(Object element) {
    // TODOw
    return null;
  }
}
TOP

Related Classes of org.eclipse.php.internal.ui.util.PHPModelLabelProvider

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.