All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gxt-2.1.1-sources.com.extjs.gxt.ui.client.widget.flash.FlashComponent Maven / Gradle / Ivy

There is a newer version: 2.3.1-gwt22
Show newest version
/*
 * Ext GWT - Ext for GWT
 * Copyright(c) 2007-2009, Ext JS, LLC.
 * [email protected]
 * 
 * http://extjs.com/license
 */
package com.extjs.gxt.ui.client.widget.flash;

import java.util.Date;

import com.extjs.gxt.ui.client.GXT;
import com.extjs.gxt.ui.client.core.XDOM;
import com.extjs.gxt.ui.client.widget.BoxComponent;
import com.extjs.gxt.ui.client.widget.flash.SwfObject.SwfConfig;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Window;

/**
 * Base class for components that embed a flash object.
 */
public class FlashComponent extends BoxComponent {

  public enum WMode {
    TRANSPARENT, OPAQUE, WINDOW
  };

  protected Element swfElement;
  protected SwfObject swfObject;

  private String expressInstallUrl;
  private String flashVersion = "9.0.45";
  private String swfHeight = "100%";
  private String swfId;
  private String swfWidth = "100%";
  private String url;
  private WMode wmode = WMode.TRANSPARENT;
  private boolean ieFixEnabled = GXT.isIE;

  /**
   * Creates a new flash component.
   * 
   * @param url the url of the flash file
   */
  public FlashComponent(String url) {
    this.url = url;
  }

  /**
   * Gets the express install url.
   * 
   * @return the express install url.
   */
  public String getExpressInstall() {
    return expressInstallUrl;
  }

  /**
   * Returns the flash version.
   * 
   * @return the flash version
   */
  public String getFlashVersion() {
    return flashVersion;
  }

  /**
   * Returns the width of the flash object.
   * 
   * @return the width of the flash object
   */
  public String getSwfHeight() {
    return swfHeight;
  }

  /**
   * Returns the flash id.
   * 
   * @return the flash id
   */
  public String getSwfId() {
    swfId = swfId != null ? swfId : (swfId = "extswf"
        + XDOM.getUniqueId().replace("-", ""));
    return swfId;
  }

  /**
   * Returns the flash object width.
   * 
   * @return the flash object width
   */
  public String getSwfWidth() {
    return swfWidth;
  }

  /**
   * Returns the wmode.
   * 
   * @return the wmode
   */
  public WMode getWmode() {
    return wmode;
  }

  /**
   * Returns true if the IE fix is enabled.
   * 
   * @return the IE fix enabled state
   */
  public boolean isIeFixEnabled() {
    return ieFixEnabled;
  }

  /**
   * Add support for express install.
   * 
   * @param url the url of the express install file
   */
  public void setExpressInstall(String url) {
    this.expressInstallUrl = url;
  }

  /**
   * Sets the flash version.
   * 
   * @param flashVersion the flash version
   */
  public void setFlashVersion(String flashVersion) {
    this.flashVersion = flashVersion;
  }

  /**
   * Sets if an IE fix should be used to ensure flash-to-JS interaction works.
   * Enabled by default.
   * 
   * @param enabled true to enable the IE fix
   */
  public void setIeFixEnabled(boolean enabled) {
    this.ieFixEnabled = enabled;
  }

  /**
   * Sets the flash object height (defaults to '100%').
   * 
   * @param swfHeight the height
   */
  public void setSwfHeight(String swfHeight) {
    this.swfHeight = swfHeight;
  }

  /**
   * Sets the flash id (- will be removed and are not allowed).
   * 
   * @param swfId the flash id
   */
  public void setSwfId(String swfId) {
    this.swfId = swfId;
  }

  /**
   * Sets the flash object width (defaults to '100%').
   * 
   * @param swfWidth the width
   */
  public void setSwfWidth(String swfWidth) {
    this.swfWidth = swfWidth;
  }

  /**
   * Sets the wmode (defaults to WMode.TRANSPARENT).
   * 
   * @param wmode the wmode
   */
  public void setWmode(WMode wmode) {
    this.wmode = wmode;
  }

  @Override
  protected void onAttach() {
    super.onAttach();
    el().setInnerHtml("
"); SwfConfig config = new SwfConfig(); injectFlash(config); } @Override protected void onDetach() { SwfObject.removeSWF(getSwfId()); swfElement = null; super.onDetach(); } @Override protected void onRender(Element target, int index) { setElement(DOM.createDiv(), target, index); } protected void injectFlash(SwfConfig config) { String flashUrl = url; if (ieFixEnabled) { flashUrl += "?" + new Date().getTime(); } if (expressInstallUrl != null) { config.setExpressInstallUrl(expressInstallUrl); } config.addParameter("id", swfId); config.addParameter("allowScriptAccess", "always"); config.addParameter("wmode", wmode.toString().toLowerCase()); config.addFlashVar("id", swfId); config.addFlashVar("allowedDomain", Window.Location.getHostName()); config.addFlashVar("elementID", getId()); config.setVersion(flashVersion); SwfObject.embedSWF(flashUrl, swfId, config); swfElement = el().firstChild().dom; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy