Package com.extjs.gxt.ui.client.util

Source Code of com.extjs.gxt.ui.client.util.IconHelper

/*
* Ext GWT 2.2.4 - Ext for GWT
* Copyright(c) 2007-2010, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
package com.extjs.gxt.ui.client.util;

import java.util.Map;

import com.extjs.gxt.ui.client.core.El;
import com.extjs.gxt.ui.client.core.FastMap;
import com.extjs.gxt.ui.client.core.XDOM;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.impl.ClippedImagePrototype;

/**
* Provides helper methods to create <code>AbstractImagePrototype</code>
* instances from paths and CSS style names.
*/
public class IconHelper {

  private static El el;

  /**
   * Returns an 16 x 16 image prototype for the given url.
   *
   * @param url the image url
   * @return the image
   */
  public static AbstractImagePrototype createPath(String url) {
    return createPath(url, 16, 16);
  }

  /**
   * Returns an image for the given url.
   *
   * @param url the image url
   * @param width the image width in pixels
   * @param height the image height in pixels
   * @return the image
   */
  public static AbstractImagePrototype createPath(String url, int width, int height) {
    ClippedImagePrototype c = new ClippedImagePrototype(url, 0, 0, width, height);
    return c;
  }

  /**
   * Returns a 16 x 16 from the given CSS style name.
   *
   * @param styleName the style name
   * @return the image
   */
  public static AbstractImagePrototype createStyle(String styleName) {
    return createStyle(styleName, 16, 16);
  }

  /**
   * Returns an image from the given CSS style name.
   *
   * @param styleName the style name
   * @param width the image width
   * @param height the image height
   * @return the image
   */
  public static AbstractImagePrototype createStyle(String styleName, int width, int height) {
    if (cacheMap == null) {
      el = new El(DOM.createDiv());
      DOM.appendChild(XDOM.getBody(), el.dom);
      el.makePositionable(true);
      el.setLeftTop(-10000, -10000);
      el.setVisibility(false);
      cacheMap = new FastMap<String>();
    }

    String url = cacheMap.get(styleName);
    if (url == null) {
      el.addStyleName(styleName);
      url = el.getStyleAttribute("backgroundImage").replace("\")", "").replace(")", "").replace("url(\"", "").replace(
          "url(", "");
      el.removeStyleName(styleName);
      if ("none".equals(url)) {
        return null;
      }
      cacheMap.put(styleName, url);

    }

    return createPath(url, width, height);
  }

  /**
   * Returns an 16 x 16 image. If the passed parameter is an image path, as
   * defined by @link {@link Util#isImagePath(String)}, it is treated as an
   * image path. Otherwise, the parameter is treated as a CSS style name.
   *
   * @param s either a image path or a CSS style name
   * @return the image
   */
  public static AbstractImagePrototype create(String s) {
    return create(s, 16, 16);
  }

  /**
   * Returns an image.If the passed parameter is an image path, as defined by @link
   * {@link Util#isImagePath(String)}, it is treated as an image path.
   * Otherwise, the parameter is treated as a CSS style name.
   *
   * @param s either a image path or a CSS style name
   * @param width the image width
   * @param height the image height
   * @return the image
   */
  public static AbstractImagePrototype create(String s, int width, int height) {
    return Util.isImagePath(s) ? createPath(s, width, height) : createStyle(s, width, height);
  }

  private static Map<String, String> cacheMap;

}
TOP

Related Classes of com.extjs.gxt.ui.client.util.IconHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.