| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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.apache.hadoop.eclipse; |
| |
| import java.net.URL; |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import org.eclipse.core.runtime.FileLocator; |
| import org.eclipse.core.runtime.Path; |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.swt.graphics.Image; |
| import org.eclipse.ui.ISharedImages; |
| import org.eclipse.ui.PlatformUI; |
| import org.eclipse.ui.plugin.AbstractUIPlugin; |
| import org.osgi.framework.Bundle; |
| |
| /** |
| * Icons manager |
| */ |
| public class ImageLibrary { |
| |
| private final Bundle bundle = Activator.getDefault().getBundle(); |
| |
| /** |
| * Singleton instance |
| */ |
| private static volatile ImageLibrary instance = null; |
| |
| private ISharedImages sharedImages = |
| PlatformUI.getWorkbench().getSharedImages(); |
| |
| /** |
| * Where resources (icons, images...) are available in the Bundle |
| */ |
| private static final String RESOURCE_DIR = "resources/"; |
| |
| /** |
| * Public access to image descriptors |
| * |
| * @param name |
| * @return the image descriptor |
| */ |
| public static ImageDescriptor get(String name) { |
| return getInstance().getImageDescriptorByName(name); |
| } |
| |
| /** |
| * Public access to images |
| * |
| * @param name |
| * @return the image |
| */ |
| public static Image getImage(String name) { |
| return getInstance().getImageByName(name); |
| } |
| |
| /** |
| * Singleton access |
| * |
| * @return the Image library |
| */ |
| public static ImageLibrary getInstance() { |
| if (instance == null) { |
| synchronized (ImageLibrary.class) { |
| if (instance == null) |
| instance = new ImageLibrary(); |
| } |
| } |
| return instance; |
| } |
| |
| /** |
| * Map of registered resources (ImageDescriptor and Image) |
| */ |
| private Map<String, ImageDescriptor> descMap = |
| new HashMap<String, ImageDescriptor>(); |
| |
| private Map<String, Image> imageMap = new HashMap<String, Image>(); |
| |
| /** |
| * Image library constructor: put image definitions here. |
| */ |
| private ImageLibrary() { |
| /* |
| * Servers view |
| */ |
| newImage("server.view.location.entry", "Elephant-24x24.png"); |
| newImage("server.view.job.entry", "job.gif"); |
| newImage("server.view.action.location.new", "location-new-16x16.png"); |
| newImage("server.view.action.location.edit", "location-edit-16x16.png"); |
| newSharedImage("server.view.action.delete", |
| ISharedImages.IMG_TOOL_DELETE); |
| |
| /* |
| * DFS Browser |
| */ |
| newImage("dfs.browser.root.entry", "files.gif"); |
| newImage("dfs.browser.location.entry", "Elephant-16x16.png"); |
| newSharedImage("dfs.browser.folder.entry", ISharedImages.IMG_OBJ_FOLDER); |
| newSharedImage("dfs.browser.file.entry", ISharedImages.IMG_OBJ_FILE); |
| // DFS files in editor |
| newSharedImage("dfs.file.editor", ISharedImages.IMG_OBJ_FILE); |
| // Actions |
| newImage("dfs.browser.action.mkdir", "new-folder.png"); |
| newImage("dfs.browser.action.download", "download.png"); |
| newImage("dfs.browser.action.upload_files", "upload.png"); |
| newImage("dfs.browser.action.upload_dir", "upload.png"); |
| newSharedImage("dfs.browser.action.delete", |
| ISharedImages.IMG_TOOL_DELETE); |
| newImage("dfs.browser.action.refresh", "refresh.png"); |
| |
| /* |
| * Wizards |
| */ |
| newImage("wizard.mapper.new", "mapwiz.png"); |
| newImage("wizard.reducer.new", "reducewiz.png"); |
| newImage("wizard.driver.new", "driverwiz.png"); |
| newImage("wizard.mapreduce.project.new", "projwiz.png"); |
| } |
| |
| /** |
| * Accessor to images |
| * |
| * @param name |
| * @return |
| */ |
| private ImageDescriptor getImageDescriptorByName(String name) { |
| return this.descMap.get(name); |
| } |
| |
| /** |
| * Accessor to images |
| * |
| * @param name |
| * @return |
| */ |
| private Image getImageByName(String name) { |
| return this.imageMap.get(name); |
| } |
| |
| /** |
| * Access to platform shared images |
| * |
| * @param name |
| * @return |
| */ |
| private ImageDescriptor getSharedByName(String name) { |
| return sharedImages.getImageDescriptor(name); |
| } |
| |
| /** |
| * Load and register a new image. If the image resource does not exist or |
| * fails to load, a default "error" resource is supplied. |
| * |
| * @param name name of the image |
| * @param filename name of the file containing the image |
| * @return whether the image has correctly been loaded |
| */ |
| private boolean newImage(String name, String filename) { |
| ImageDescriptor id; |
| boolean success; |
| |
| try { |
| URL fileURL = |
| FileLocator.find(bundle, new Path(RESOURCE_DIR + filename), null); |
| id = ImageDescriptor.createFromURL(FileLocator.toFileURL(fileURL)); |
| success = true; |
| |
| } catch (Exception e) { |
| |
| e.printStackTrace(); |
| id = ImageDescriptor.getMissingImageDescriptor(); |
| // id = getSharedByName(ISharedImages.IMG_OBJS_ERROR_TSK); |
| success = false; |
| } |
| |
| descMap.put(name, id); |
| imageMap.put(name, id.createImage(true)); |
| |
| return success; |
| } |
| |
| /** |
| * Register an image from the workspace shared image pool. If the image |
| * resource does not exist or fails to load, a default "error" resource is |
| * supplied. |
| * |
| * @param name name of the image |
| * @param sharedName name of the shared image ({@link ISharedImages}) |
| * @return whether the image has correctly been loaded |
| */ |
| private boolean newSharedImage(String name, String sharedName) { |
| boolean success = true; |
| ImageDescriptor id = getSharedByName(sharedName); |
| |
| if (id == null) { |
| id = ImageDescriptor.getMissingImageDescriptor(); |
| // id = getSharedByName(ISharedImages.IMG_OBJS_ERROR_TSK); |
| success = false; |
| } |
| |
| descMap.put(name, id); |
| imageMap.put(name, id.createImage(true)); |
| |
| return success; |
| } |
| |
| /** |
| * Register an image from the workspace shared image pool. If the image |
| * resource does not exist or fails to load, a default "error" resource is |
| * supplied. |
| * |
| * @param name name of the image |
| * @param sharedName name of the shared image ({@link ISharedImages}) |
| * @return whether the image has correctly been loaded |
| */ |
| private boolean newPluginImage(String name, String pluginId, |
| String filename) { |
| |
| boolean success = true; |
| ImageDescriptor id = |
| AbstractUIPlugin.imageDescriptorFromPlugin(pluginId, filename); |
| |
| if (id == null) { |
| id = ImageDescriptor.getMissingImageDescriptor(); |
| // id = getSharedByName(ISharedImages.IMG_OBJS_ERROR_TSK); |
| success = false; |
| } |
| |
| descMap.put(name, id); |
| imageMap.put(name, id.createImage(true)); |
| |
| return success; |
| } |
| } |