/******************************************************************************* * Copyright (c) 2011 Red Hat Inc.. * 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: * Red Hat Incorporated - initial API and implementation *******************************************************************************/ package org.jboss.tools.openshift.internal.common.ui; import java.net.MalformedURLException; import java.net.URL; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Plugin; import org.eclipse.core.runtime.Status; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.graphics.Image; /** * @author Andre Dietisheim */ public class ImageRepository { private ImageRegistry imageRegistry; private URL baseUrl; private Plugin plugin; private String imageFolder; public ImageRepository(String imageFolder, Plugin plugin, ImageRegistry imageRegistry) { this.imageFolder = imageFolder; this.plugin = plugin; this.imageRegistry = imageRegistry; } protected URL getBaseUrl() { try { if (baseUrl == null) { this.baseUrl = new URL(plugin.getBundle().getEntry("/"), imageFolder); } return baseUrl; } catch (MalformedURLException e) { plugin.getLog().log( new Status(IStatus.ERROR, plugin.getBundle().getSymbolicName(), NLS.bind("Could not find image folder at {0}", imageFolder), e)); return null; } } public ImageDescriptor create(String name) { return create(imageRegistry, name); } private ImageDescriptor create(ImageRegistry registry,String name) { return create(registry, name, getBaseUrl()); } private ImageDescriptor create(ImageRegistry registry, String name, URL baseUrl) { if (baseUrl == null) { return null; } ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(createFileURL(name, baseUrl)); registry.put(name, imageDescriptor); return imageDescriptor; } private URL createFileURL(String name, URL baseUrl) { try { return new URL(baseUrl, name); } catch (MalformedURLException e) { plugin.getLog().log( new Status(IStatus.ERROR, plugin.getBundle().getSymbolicName(), NLS.bind( "Could not create URL for image {0}", name), e)); return null; } } public Image getImage(String name) { return imageRegistry.get(name); } }