blob: b4ec6938ffb4225764df52472f0ad6e785a20d7f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2004 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
* Jens Lukowski/Innoopract - initial renaming/restructuring
*
*******************************************************************************/
package org.eclipse.wst.sse.ui.internal.extension;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.resource.ImageDescriptor;
import org.osgi.framework.Bundle;
public class ImageUtil {
/**
* Convenience Method. Returns an ImageDescriptor whose path, relative to
* the plugin containing the <code>extension</code> is
* <code>subdirectoryAndFilename</code>. If there isn't any value
* associated with the name then <code>null
* </code> is returned.
*
* This method is convenience and only intended for use by the workbench
* because it explicitly uses the workbench's registry for
* caching/retrieving images from other extensions -- other plugins must
* user their own registry. This convenience method is subject to removal.
*
* Note: subdirectoryAndFilename must not have any leading "." or path
* separators / or \ ISV's should use icons/mysample.gif and not
* ./icons/mysample.gif
*
* Note: This consults the plugin for extension and obtains its
* installation location. all requested images are assumed to be in a
* directory below and relative to that plugins installation directory.
*/
public static ImageDescriptor getImageDescriptorFromExtension(IExtension extension, String subdirectoryAndFilename) {
String pluginId = extension.getNamespace();
Bundle bundle = Platform.getBundle(pluginId);
return getImageDescriptorFromBundle(bundle, subdirectoryAndFilename);
}
/**
* Convenience Method. Return an ImageDescriptor whose path relative to
* the plugin described by <code>bundle</code> is
* <code>subdirectoryAndFilename</code>. Returns <code>null</code> if
* no image could be found.
*
* This method is convenience and only intended for use by the workbench
* because it explicitly uses the workbench's registry for
* caching/retrieving images from other extensions -- other plugins must
* user their own registry. This convenience method is subject to removal.
*
* Note: subdirectoryAndFilename must not have any leading "." or path
* separators / or \ ISV's should use icons/mysample.gif and not
* ./icons/mysample.gif
*
* Note: This consults the plugin for extension and obtains its
* installation location. all requested images are assumed to be in a
* directory below and relative to that plugins installation directory.
*/
public static ImageDescriptor getImageDescriptorFromBundle(Bundle bundle, String subdirectoryAndFilename) {
URL path = bundle.getEntry("/"); //$NON-NLS-1$
URL fullPathString = null;
try {
fullPathString = new URL(path, subdirectoryAndFilename);
return ImageDescriptor.createFromURL(fullPathString);
} catch (MalformedURLException e) {
}
return null;
}
}