/** * Copyright (c) 2013-2016 Angelo ZERR. * 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: * Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation */ package tern.eclipse.ide.internal.ui.descriptors; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.plugin.AbstractUIPlugin; import tern.eclipse.ide.ui.ImageResource; import tern.eclipse.ide.ui.descriptors.ITernModuleImage; import tern.utils.StringUtils; /** * Tern module image. * */ public class TernModuleImage implements ITernModuleImage { private final String id; private final String imageKey; public TernModuleImage(IConfigurationElement ce) { this.id = ce.getAttribute("id"); this.imageKey = getImageKey(ce, id); } private String getImageKey(IConfigurationElement ce, String id) { String iconPath = ce.getAttribute("icon"); if (StringUtils.isEmpty(iconPath)) { return null; } String name = ce.getDeclaringExtension().getContributor().getName(); String imageKey = new StringBuilder("ternDescriptor_").append(name) .append(id).toString(); ImageDescriptor imageDescriptor = AbstractUIPlugin .imageDescriptorFromPlugin(name, iconPath); if (imageDescriptor == null && iconPath != null && iconPath.length() > 0) imageDescriptor = ImageDescriptor.getMissingImageDescriptor(); ImageResource.registerImageDescriptor(imageKey, imageDescriptor); return imageKey; } public String getId() { return id; } @Override public Image getImage() { if (imageKey == null) { return null; } return ImageResource.getImage(imageKey); } @Override public ImageDescriptor getImageDescriptor() { if (imageKey == null) { return null; } return ImageResource.getImageDescriptor(imageKey); } public void dispose() { } }