/******************************************************************************* * Copyright (c) 2009, 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.preferences.includepath; import org.eclipse.core.resources.IResource; import org.eclipse.dltk.core.DLTKCore; import org.eclipse.dltk.core.IBuildpathEntry; import org.eclipse.dltk.core.IModelElement; import org.eclipse.dltk.core.IScriptFolder; import org.eclipse.dltk.internal.ui.wizards.buildpath.BPListElement; import org.eclipse.dltk.internal.ui.wizards.buildpath.BPListLabelProvider; import org.eclipse.dltk.ui.DLTKPluginImages; import org.eclipse.dltk.ui.DLTKUIPlugin; import org.eclipse.dltk.ui.ScriptElementImageDescriptor; import org.eclipse.dltk.ui.ScriptElementImageProvider; import org.eclipse.dltk.ui.viewsupport.ImageDescriptorRegistry; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.php.core.libfolders.LibraryFolderManager; import org.eclipse.php.internal.ui.phar.wizard.PharUIUtil; import org.eclipse.php.internal.ui.util.LabelProviderUtil; import org.eclipse.php.internal.ui.util.PHPPluginImages; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; public class PHPIPListLabelProvider extends BPListLabelProvider { private String fInvalidLabel; private ImageDescriptorRegistry fRegistry; public PHPIPListLabelProvider() { super(); fInvalidLabel = IncludePathMessages.CPListLabelProvider_invalid; fRegistry = DLTKUIPlugin.getImageDescriptorRegistry(); } @Override protected ImageDescriptor getCPListElementBaseImage(BPListElement cpentry) { if (cpentry.getEntryKind() == IBuildpathEntry.BPE_LIBRARY) { return DLTKPluginImages.getDescriptor(DLTKPluginImages.IMG_OBJS_LIBRARY); } else if (cpentry.getEntryKind() == IBuildpathEntry.BPE_SOURCE) { // handling Folder special case - need to decide if it's in the // build path or not. ImageDescriptor folderBaseImage = getFolderBaseImage(cpentry.getResource()); if (null != folderBaseImage) return folderBaseImage; } return super.getCPListElementBaseImage(cpentry); } @Override public Image getImage(Object element) { if (element instanceof BPListElement) { BPListElement cpentry = (BPListElement) element; ImageDescriptor imageDescriptor = getCPListElementBaseImage(cpentry); if (imageDescriptor != null) { if (PharUIUtil.isInvalidPharBuildEntry(cpentry)) { imageDescriptor = new ScriptElementImageDescriptor(imageDescriptor, ScriptElementImageDescriptor.ERROR, ScriptElementImageProvider.SMALL_SIZE); } return fRegistry.get(imageDescriptor); } } return super.getImage(element); } @Override public String getCPListElementText(BPListElement cpentry) { String result = LabelProviderUtil.getVariableName(cpentry.getPath(), cpentry.getEntryKind()); if (result == null) { result = super.getCPListElementText(cpentry); } if (PharUIUtil.isInvalidPharBuildEntry(cpentry)) { result = result + fInvalidLabel; } return result; } private static ImageDescriptor getFolderBaseImage(IResource resource) { IModelElement modelElement = DLTKCore.create(resource); if (null != modelElement) { if (modelElement instanceof IScriptFolder) { LibraryFolderManager lfm = LibraryFolderManager.getInstance(); if (lfm.isInLibraryFolder(modelElement.getResource())) return PHPPluginImages.DESC_OBJS_PHP_LIBFOLDER; else return PHPPluginImages.DESC_OBJS_PHPFOLDER_ROOT; } } else { return PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER); } return null; } }