ImageLibrary.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:7k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.eclipse;
  19. import java.net.URL;
  20. import java.util.HashMap;
  21. import java.util.Map;
  22. import org.eclipse.core.runtime.FileLocator;
  23. import org.eclipse.core.runtime.Path;
  24. import org.eclipse.jface.resource.ImageDescriptor;
  25. import org.eclipse.swt.graphics.Image;
  26. import org.eclipse.ui.ISharedImages;
  27. import org.eclipse.ui.PlatformUI;
  28. import org.eclipse.ui.plugin.AbstractUIPlugin;
  29. import org.osgi.framework.Bundle;
  30. /**
  31.  * Icons manager
  32.  */
  33. public class ImageLibrary {
  34.   private final Bundle bundle = Activator.getDefault().getBundle();
  35.   /**
  36.    * Singleton instance
  37.    */
  38.   private static volatile ImageLibrary instance = null;
  39.   private ISharedImages sharedImages =
  40.       PlatformUI.getWorkbench().getSharedImages();
  41.   /**
  42.    * Where resources (icons, images...) are available in the Bundle
  43.    */
  44.   private static final String RESOURCE_DIR = "resources/";
  45.   /**
  46.    * Public access to image descriptors
  47.    * 
  48.    * @param name
  49.    * @return the image descriptor
  50.    */
  51.   public static ImageDescriptor get(String name) {
  52.     return getInstance().getImageDescriptorByName(name);
  53.   }
  54.   /**
  55.    * Public access to images
  56.    * 
  57.    * @param name
  58.    * @return the image
  59.    */
  60.   public static Image getImage(String name) {
  61.     return getInstance().getImageByName(name);
  62.   }
  63.   /**
  64.    * Singleton access
  65.    * 
  66.    * @return the Image library
  67.    */
  68.   public static ImageLibrary getInstance() {
  69.     if (instance == null) {
  70.       synchronized (ImageLibrary.class) {
  71.         if (instance == null)
  72.           instance = new ImageLibrary();
  73.       }
  74.     }
  75.     return instance;
  76.   }
  77.   /**
  78.    * Map of registered resources (ImageDescriptor and Image)
  79.    */
  80.   private Map<String, ImageDescriptor> descMap =
  81.       new HashMap<String, ImageDescriptor>();
  82.   private Map<String, Image> imageMap = new HashMap<String, Image>();
  83.   /**
  84.    * Image library constructor: put image definitions here.
  85.    */
  86.   private ImageLibrary() {
  87.     /*
  88.      * Servers view
  89.      */
  90.     newImage("server.view.location.entry", "Elephant-24x24.png");
  91.     newImage("server.view.job.entry", "job.gif");
  92.     newImage("server.view.action.location.new", "location-new-16x16.png");
  93.     newImage("server.view.action.location.edit", "location-edit-16x16.png");
  94.     newSharedImage("server.view.action.delete",
  95.         ISharedImages.IMG_TOOL_DELETE);
  96.     /*
  97.      * DFS Browser
  98.      */
  99.     newImage("dfs.browser.root.entry", "files.gif");
  100.     newImage("dfs.browser.location.entry", "Elephant-16x16.png");
  101.     newSharedImage("dfs.browser.folder.entry", ISharedImages.IMG_OBJ_FOLDER);
  102.     newSharedImage("dfs.browser.file.entry", ISharedImages.IMG_OBJ_FILE);
  103.     // DFS files in editor
  104.     newSharedImage("dfs.file.editor", ISharedImages.IMG_OBJ_FILE);
  105.     // Actions
  106.     newImage("dfs.browser.action.mkdir", "new-folder.png");
  107.     newImage("dfs.browser.action.download", "download.png");
  108.     newImage("dfs.browser.action.upload_files", "upload.png");
  109.     newImage("dfs.browser.action.upload_dir", "upload.png");
  110.     newSharedImage("dfs.browser.action.delete",
  111.         ISharedImages.IMG_TOOL_DELETE);
  112.     newImage("dfs.browser.action.refresh", "refresh.png");
  113.     /*
  114.      * Wizards
  115.      */
  116.     newImage("wizard.mapper.new", "mapwiz.png");
  117.     newImage("wizard.reducer.new", "reducewiz.png");
  118.     newImage("wizard.driver.new", "driverwiz.png");
  119.     newImage("wizard.mapreduce.project.new", "projwiz.png");
  120.   }
  121.   /**
  122.    * Accessor to images
  123.    * 
  124.    * @param name
  125.    * @return
  126.    */
  127.   private ImageDescriptor getImageDescriptorByName(String name) {
  128.     return this.descMap.get(name);
  129.   }
  130.   /**
  131.    * Accessor to images
  132.    * 
  133.    * @param name
  134.    * @return
  135.    */
  136.   private Image getImageByName(String name) {
  137.     return this.imageMap.get(name);
  138.   }
  139.   /**
  140.    * Access to platform shared images
  141.    * 
  142.    * @param name
  143.    * @return
  144.    */
  145.   private ImageDescriptor getSharedByName(String name) {
  146.     return sharedImages.getImageDescriptor(name);
  147.   }
  148.   /**
  149.    * Load and register a new image. If the image resource does not exist or
  150.    * fails to load, a default "error" resource is supplied.
  151.    * 
  152.    * @param name name of the image
  153.    * @param filename name of the file containing the image
  154.    * @return whether the image has correctly been loaded
  155.    */
  156.   private boolean newImage(String name, String filename) {
  157.     ImageDescriptor id;
  158.     boolean success;
  159.     try {
  160.       URL fileURL =
  161.           FileLocator.find(bundle, new Path(RESOURCE_DIR + filename), null);
  162.       id = ImageDescriptor.createFromURL(FileLocator.toFileURL(fileURL));
  163.       success = true;
  164.     } catch (Exception e) {
  165.       e.printStackTrace();
  166.       id = ImageDescriptor.getMissingImageDescriptor();
  167.       // id = getSharedByName(ISharedImages.IMG_OBJS_ERROR_TSK);
  168.       success = false;
  169.     }
  170.     descMap.put(name, id);
  171.     imageMap.put(name, id.createImage(true));
  172.     return success;
  173.   }
  174.   /**
  175.    * Register an image from the workspace shared image pool. If the image
  176.    * resource does not exist or fails to load, a default "error" resource is
  177.    * supplied.
  178.    * 
  179.    * @param name name of the image
  180.    * @param sharedName name of the shared image ({@link ISharedImages})
  181.    * @return whether the image has correctly been loaded
  182.    */
  183.   private boolean newSharedImage(String name, String sharedName) {
  184.     boolean success = true;
  185.     ImageDescriptor id = getSharedByName(sharedName);
  186.     if (id == null) {
  187.       id = ImageDescriptor.getMissingImageDescriptor();
  188.       // id = getSharedByName(ISharedImages.IMG_OBJS_ERROR_TSK);
  189.       success = false;
  190.     }
  191.     descMap.put(name, id);
  192.     imageMap.put(name, id.createImage(true));
  193.     return success;
  194.   }
  195.   /**
  196.    * Register an image from the workspace shared image pool. If the image
  197.    * resource does not exist or fails to load, a default "error" resource is
  198.    * supplied.
  199.    * 
  200.    * @param name name of the image
  201.    * @param sharedName name of the shared image ({@link ISharedImages})
  202.    * @return whether the image has correctly been loaded
  203.    */
  204.   private boolean newPluginImage(String name, String pluginId,
  205.       String filename) {
  206.     boolean success = true;
  207.     ImageDescriptor id =
  208.         AbstractUIPlugin.imageDescriptorFromPlugin(pluginId, filename);
  209.     if (id == null) {
  210.       id = ImageDescriptor.getMissingImageDescriptor();
  211.       // id = getSharedByName(ISharedImages.IMG_OBJS_ERROR_TSK);
  212.       success = false;
  213.     }
  214.     descMap.put(name, id);
  215.     imageMap.put(name, id.createImage(true));
  216.     return success;
  217.   }
  218. }