ImageLibrary.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:7k
- /**
- * 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;
- }
- }