blob: 2beb38c6f578d1fff573bd95dabed60371e91d85 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2005 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.wst.common.snippets.internal.palette;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.wst.common.snippets.core.ISnippetsEntry;
import org.eclipse.wst.common.snippets.internal.PluginRecord;
import org.eclipse.wst.common.snippets.internal.SnippetsPluginImageHelper;
import org.eclipse.wst.common.snippets.internal.SnippetsPluginImages;
public class SnippetImageDescriptorHelper {
protected static SnippetImageDescriptorHelper instance = null;
/**
* Gets the instance.
*
* @return Returns a SnippetImageHelper
*/
public synchronized static SnippetImageDescriptorHelper getInstance() {
if (instance == null)
instance = new SnippetImageDescriptorHelper();
return instance;
}
public SnippetImageDescriptorHelper() {
super();
}
protected ImageDescriptor getDefaultDescriptor() {
return getImageDescriptor(SnippetsPluginImages.IMG_OBJ_SNIPPETS);
}
public ImageDescriptor getImageDescriptor(SnippetPaletteDrawer category) {
return getImageDescriptor(category, false);
}
public ImageDescriptor getImageDescriptor(SnippetPaletteDrawer category, boolean largeIcon) {
String iconName = largeIcon ? category.getLargeIconName() : category.getSmallIconName();
if (largeIcon && (iconName == null || iconName.length() == 0))
iconName = category.getSmallIconName();
if (category == null || iconName == null || iconName.length() == 0)
return getDefaultDescriptor();
ImageDescriptor image = null;
if (category.getSourceType() == ISnippetsEntry.SNIPPET_SOURCE_PLUGINS) {
PluginRecord record = (PluginRecord) category.getSourceDescriptor();
if (record != null && record.getPluginName() != null) {
image = getInstalledImage(record.getPluginName(), iconName);
}
}
else {
image = getImageDescriptor(iconName);
}
if (image == null || image.equals(ImageDescriptor.getMissingImageDescriptor()))
image = getDefaultDescriptor();
return image;
}
public ImageDescriptor getImageDescriptor(SnippetPaletteItem item) {
return getImageDescriptor(item, false);
}
public ImageDescriptor getImageDescriptor(SnippetPaletteItem item, boolean largeIcon) {
ImageDescriptor image = null;
String iconName = largeIcon ? item.getLargeIconName() : item.getSmallIconName();
if (largeIcon && (iconName == null || iconName.length() == 0))
iconName = item.getSmallIconName();
if (item.getSourceType() == ISnippetsEntry.SNIPPET_SOURCE_PLUGINS) {
PluginRecord record = (PluginRecord) item.getSourceDescriptor();
if (record != null && record.getPluginName() != null) {
image = getInstalledImage(record.getPluginName(), iconName);
if (image == null && item.getCategory() != null) {
image = getImageDescriptor((SnippetPaletteDrawer) item.getCategory(), largeIcon);
}
}
}
else {
if (iconName == null || iconName.length() < 1)
image = getImageDescriptor((SnippetPaletteDrawer) item.getCategory(), largeIcon);
else
image = getImageDescriptor(iconName);
}
if (image == null || image.equals(ImageDescriptor.getMissingImageDescriptor()))
image = getDefaultDescriptor();
return image;
}
public ImageDescriptor getImageDescriptor(String resource) {
ImageDescriptor image = null;
if (resource != null) {
image = SnippetsPluginImageHelper.getInstance().getImageDescriptor(resource);
}
if (image == null || image.equals(ImageDescriptor.getMissingImageDescriptor()))
image = getDefaultDescriptor();
return image;
}
/**
* @param image
* @param iconName
* @param plugin
* @return
*/
protected ImageDescriptor getInstalledImage(String plugin, String iconName) {
ImageDescriptor image = null;
if (iconName != null && iconName.length() > 0) {
if (plugin != null) {
image = SnippetsPluginImageHelper.getInstance().getImageDescriptor(iconName, plugin);
}
}
if (image == null || image.equals(ImageDescriptor.getMissingImageDescriptor()))
image = getDefaultDescriptor();
return image;
}
}