/******************************************************************************* * 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; } }