/* * Copyright 2017 Eclipse HttpClient (http4e) http://nextinterfaces.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.roussev.http4e.httpclient.core.util; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Cursor; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.RGB; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.roussev.http4e.httpclient.core.CoreContext; import org.roussev.http4e.httpclient.core.CoreObjects; import org.roussev.http4e.httpclient.core.ExceptionHandler; import org.roussev.http4e.httpclient.core.client.view.Utils; import org.roussev.http4e.httpclient.core.misc.ResourceCache; import org.roussev.http4e.httpclient.core.misc.Styles.FontStyle; import org.roussev.http4e.java6.Properties6; /** * A resource(Images, Fonts, etc) utilities class. * * @author Atanas Roussev (http://nextinterfaces.com) */ public class ResourceUtils { private static ResourceCache resourceCache; static { resourceCache = (ResourceCache) CoreContext.getContext().getObject(CoreObjects.RESOURCE_CACHE); if (resourceCache == null) { resourceCache = new ResourceCache(); CoreContext.getContext().putObject(CoreObjects.RESOURCE_CACHE, resourceCache); } } public static Image getImage( String pluginID, String image){ /*--- create from class file location ImageDescriptor iDescr = ImageDescriptor.createFromFile(CoreResources.class, name); Image image = resourceCache.getImage(iDescr); return image; --- get workbench shared image IWorkbench workbench = PlatformUI.getWorkbench(); ISharedImages images = workbench.getSharedImages(); image = images.getImage(ISharedImages.IMG_OBJ_FOLDER); --- image from plugin MyPlugin.getImageDescriptor("icons/a_image.gif").createImage(); AbstractUIPlugin.imageDescriptorFromPlugin(myPluginID, image)).createImage(); */ if (Utils.isIDE()) { return resourceCache.getImage(AbstractUIPlugin.imageDescriptorFromPlugin(pluginID, image)); } else { return resourceCache.getImage(image); } } public static void disposeResources(){ resourceCache.dispose(); } public static Font getFont( FontStyle fontStyle){ return resourceCache.getFont(fontStyle); } public static Color getColor( RGB rgb){ return resourceCache.getColor(rgb); } public static Cursor getCursor( int id){ return resourceCache.getCursor(id); } public static ResourceCache getResourceCache(){ return resourceCache; } public static String getBundleResourcePath( String pluginID, String uri){ try { URL url = FileLocator.find(Platform.getBundle(pluginID), new Path(uri), null); return FileLocator.resolve(url).toExternalForm(); } catch (IOException e1) { ExceptionHandler.handle(e1); } return null; } public static byte[] getBundleResourceBytes( String pluginID, String uri){ byte[] data = {}; try { InputStream in = getBundleResourceStream(pluginID, uri); data = new byte[in.available()]; in.read(data); } catch (Exception e) { ExceptionHandler.handle(e); } return data; } public static InputStream getBundleResourceStream( String pluginID, String uri){ try { if (Utils.isIDE()) { return FileLocator.openStream(Platform.getBundle(pluginID), new Path(uri), false); } else { return new FileInputStream(uri); } } catch (Throwable e) { ExceptionHandler.handle(e); } return null; } public static InputStream getBundleResourceStream2( String pluginID, String uri) throws IOException{ if (Utils.isIDE()) { return FileLocator.openStream(Platform.getBundle(pluginID), new Path(uri), false); } else { return new FileInputStream(uri); } } public static Properties6 getBundleProperties( String pluginID, String uri){ Properties6 properties = new Properties6(); try { InputStreamReader inR = new InputStreamReader(getBundleResourceStream(pluginID, uri), "UTF8"); BufferedReader bufR = new BufferedReader(inR); properties.load(bufR); } catch (Throwable e) { ExceptionHandler.handle(e); } return properties; } }