sresources.java

来自「SANCHO」· Java 代码 · 共 319 行

JAVA
319
字号
/* * Copyright (C) 2004-2005 Rutger M. Ovidius for use with the sancho project. * See LICENSE.txt for license information. */package sancho.view.utility;import java.io.File;import java.net.URL;import java.net.URLClassLoader;import java.util.Enumeration;import java.util.Hashtable;import java.util.Locale;import java.util.ResourceBundle;import java.util.StringTokenizer;import org.eclipse.jface.resource.ImageDescriptor;import org.eclipse.jface.resource.ImageRegistry;import org.eclipse.swt.graphics.Color;import org.eclipse.swt.graphics.GC;import org.eclipse.swt.graphics.Image;import org.eclipse.swt.graphics.ImageData;import org.eclipse.swt.graphics.PaletteData;import org.eclipse.swt.graphics.RGB;import sancho.utility.VersionInfo;import sancho.view.MainWindow;import sancho.view.preferences.PreferenceLoader;public class SResources {  private static ImageRegistry imageRegistry;  private static Hashtable stringRegistry;  private static final String epDirectory = "e/";  private static final String miscDirectory = "m/";  private static final String imagesDirectory = "img/";  private static final String networksDirectory = "n/";  public static final String S_ES = "";  public static final String S_PERCENT = "%";  public static final String S_SPACE = " ";  public static final String S_SLASH2 = " / ";  public static final String S_SLASH = "/";  public static final String S_COLON = ": ";  public static final String S_COMMA = ", ";  public static final String S_OBS = " (";  public static final String S_OB = "(";  public static final String S_CB = ")";  public static final String S_DASH = "-";  public static final String S_NL = "\n";  public static final String S_DOT = ".";  public static final String[] SA_Z = {"z"};  public static final String S_0 = "0";  public static final String S_00 = "00";  public static final String S_GIF = ".gif";  static {    String localeString = PreferenceLoader.loadString("locale");    if (PreferenceLoader.getLocaleString() != null)      localeString = PreferenceLoader.getLocaleString();    String userDIR = VersionInfo.getHomeDirectory();    File file = new File(userDIR + VersionInfo.getName() + "_" + localeString + ".properties");    ResourceBundle bundle;    if (!file.exists())      bundle = ResourceBundle.getBundle(VersionInfo.getName());    else {      try {        String language = "";        String country = "";        String variant = "";        StringTokenizer st = new StringTokenizer(localeString, "_");        if (st.countTokens() > 0)          language = st.nextToken();        if (st.countTokens() > 0)          country = st.nextToken();        if (st.countTokens() > 0)          variant = st.nextToken();        Locale l = new Locale(language, country, variant);        URL[] urlArray = new URL[]{new URL("file:///" + userDIR)};        URLClassLoader urlClassLoader = new URLClassLoader(urlArray);        bundle = ResourceBundle.getBundle(VersionInfo.getName(), l, urlClassLoader);      } catch (Exception e) {        bundle = ResourceBundle.getBundle(VersionInfo.getName());      }    }    stringRegistry = new Hashtable();    String key;    String value = null;    for (Enumeration e = bundle.getKeys(); e.hasMoreElements();) {      key = (String) e.nextElement();      value = bundle.getString(key);      stringRegistry.put(key.intern(), value.intern());    }  }  private SResources() {  }  public static void initialize() {    createImageRegistry();  }  /**   * Get resource image   *    * @param key   * @return Image   */  public static synchronized Image getImage(String key) {    return getImageRegistry().get(key);  }  /**   * Get resource imageDescriptor   *    * @param key   * @return   */  public static synchronized ImageDescriptor getImageDescriptor(String key) {    return getImageRegistry().getDescriptor(key);  }  /**   * Get ImageRegistry   *    * @return ImageRegistry   */  private static ImageRegistry getImageRegistry() {    if (imageRegistry == null)      imageRegistry = new ImageRegistry();    return imageRegistry;  }  public static synchronized void putImage(String key, Image image) {    try {      getImageRegistry().put(key, image);    } catch (IllegalArgumentException e) {      e.printStackTrace();    }  }  public static synchronized void putImage(String key, ImageDescriptor imageDescriptor) {    try {      getImageRegistry().put(key, imageDescriptor);    } catch (IllegalArgumentException e) {      e.printStackTrace();    }  }  /**   * Get resource string   *    * @param key   * @return String   */  public static String getString(String key) {    String result = (String) stringRegistry.get(key);    if (result == null)      return key;    return result.intern();  }  /**   * Create the image registry   */  private static void createImageRegistry() {    ImageRegistry reg = SResources.getImageRegistry();    reg.put("splashScreen", createRawImage("splash.png"));    reg.put("splashHighlight", createRawImage("splash-hl.png"));    reg.put("ProgramIcon", createRawImage("icon.gif"));    reg.put("ProgramIcon-12", createRawImage("icon-12.gif"));    reg.put("tray-16", createRawImage("tray-16.gif"));    reg.put("tray-22", createRawImage("tray-22.gif"));    reg.put("about", createRawImage("about.png"));    reg.put("welcome", createRawImage("welcome.png"));    String[] buttonFiles = {"statistics", "console", "transfers", "search", "servers", "friends", "shares",        "rooms", "webbrowser"};    for (int i = 0; i < buttonFiles.length; i++) {      String buttonString = "tab." + buttonFiles[i];      reg.put(buttonString + ".button", createRawImage(buttonFiles[i] + ".gif"));      reg.put(buttonString + ".buttonActive", createActiveImage(reg.getDescriptor(buttonString + ".button")));      reg.put(buttonString + ".buttonSmall", createRawImage(buttonFiles[i] + "-16.gif"));      reg.put(buttonString + ".buttonSmallActive", createActiveImage(reg.getDescriptor("tab."          + buttonFiles[i] + ".buttonSmall")));    }    reg.put("FriendsButtonSmallBW", createRawImage("friends-16-bw.gif"));    reg.put("FriendsButtonSmallBWPlus", createRawImage("friends-16-bw-plus.gif"));    reg.put("FriendsButtonSmallPlus", createRawImage("friends-16-plus.gif"));    reg.put("rateDownArrow", createRawImage("down.gif"));    reg.put("rateUpArrow", createRawImage("up.gif"));    reg.put("RedCrossSmall", createRawImage("red_cross-12.gif"));    createNetworksIcons(reg);    createMiscIcons(reg);    createEPIcons(reg);  }  public static void createMiscIcons(ImageRegistry reg) {    String[] mIcons = {"ep_unknown", "ep_transferring", "ep_noneeded", "ep_connecting", "ep_asking",        "search_small", "search_complete", "up_arrow_blue", "up_arrow_green", "down_arrow_green",        "down_arrow_yellow", "x", "x-light", "toggle", "heart", "irc", "page-forward", "page-back",        "page-refresh", "page-stop", "jigle", "bitzi", "sharereactor", "info", "cancel", "resume", "pause",        "preview", "verify", "commit", "commit_question", "edonkey", "globe", "rotate", "collapseall",        "expandall", "new-message", "plus", "forward", "back", "plus-globe", "minus", "maximize", "restore",        "table", "split-table", "copy", "home", "clear", "clear-12", "graph", "dropdown", "menu-disconnect",        "menu-connect", "nuke", "cabinet", "preferences", "web-link", "web-link-12", "gun", "refine",        "defprog", "http-add", "folder-12", "file-explorer", "brothers", "azureus", "abc", "bittornado",        "g3", "torrentstorm", "bitcomet"};    for (int i = 0; i < mIcons.length; i++)       reg.put(mIcons[i], createID_M(mIcons[i]));        for (int i = 1; i < 10; i++)      reg.put(String.valueOf(i), createID_M(String.valueOf(i)));  }  /**   * @param reg   */  public static void createEPIcons(ImageRegistry reg) {    reg.put("epRatingPoor", createID_E("ep_rating_poor"));    reg.put("epRatingFair", createID_E("ep_rating_fair"));    reg.put("epRatingGood", createID_E("ep_rating_good"));    reg.put("epRatingExcellent", createID_E("ep_rating_excellent"));    reg.put("epRatingFake", createID_E("ep_rating_fake"));    for (int i = 0; i < 9; i++)      reg.put("epClientType" + i, createID_E("client_type_" + i));  }  /**   * @param reg   */  public static void createNetworksIcons(ImageRegistry reg) {    String[] fileNames = {"directconnect", "donkey", "gnutella", "gnutella2", "fasttrack", "soulseek",        "opennap", "unknown"};    String resName;    for (int i = 0; i < fileNames.length; i++) {      resName = "e.network." + fileNames[i];      reg.put(resName + ".connected", createID_N(fileNames[i] + "_connected"));      reg.put(resName + ".disconnected", createID_N(fileNames[i] + "_disconnected"));      reg.put(resName + ".disabled", createID_N(fileNames[i] + "_disabled"));      reg.put(resName + ".badconnect", createID_N(fileNames[i] + "_badconnect"));    }    fileNames = new String[]{"bittorrent", "multinet", "filetp"};    for (int i = 0; i < fileNames.length; i++) {      resName = "e.network." + fileNames[i];      reg.put(resName + ".connected", createID_N(fileNames[i] + "_connected"));      reg.put(resName + ".disabled", createID_N(fileNames[i] + "_disabled"));    }  }  /**   * @param imageDescriptor   * @return Image   */  private static Image createActiveImage(ImageDescriptor imageDescriptor) {    ImageData imageData = imageDescriptor.getImageData();    Image result = new Image(null, imageData);    GC gc = new GC(result);    for (int w = 0; w < imageData.width; w++) {      for (int h = 0; h < imageData.height; h++) {        int pixel = imageData.getPixel(w, h);        PaletteData paletteData = imageData.palette;        RGB oldRGB = paletteData.getRGB(pixel);        if (pixel != imageData.transparentPixel) {          Color foregroundColor = WidgetFactory.changeColor(oldRGB, 20, 255);          gc.setForeground(foregroundColor);          gc.drawPoint(w, h);          foregroundColor.dispose();        }      }    }    gc.dispose();    return result;  }  private static ImageDescriptor createRawImage(String filename) {    return ImageDescriptor.createFromFile(MainWindow.class, imagesDirectory + filename);  }  private static ImageDescriptor createID_M(String filename) {    return createRawImage(miscDirectory + filename + S_GIF);  }  private static ImageDescriptor createID_N(String filename) {    return createRawImage(networksDirectory + filename + S_GIF);  }  private static ImageDescriptor createID_E(String filename) {    return createRawImage(epDirectory + filename + S_GIF);  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?