@qooxdoo/framework
Version:
The JS Framework for Coders
261 lines (213 loc) • 6.97 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2004-2008 1&1 Internet AG, Germany, http://www.1und1.de
License:
MIT: https://opensource.org/licenses/MIT
See the LICENSE file in the project's top-level directory for details.
Authors:
* Fabian Jakobs (fjakobs)
* Christian Hagendorn (chris_schmidt)
************************************************************************ */
/**
* Managed wrapper for the HTML Flash tag.
*
* NOTE: Instances of this class must be disposed of after use
*
*/
qx.Class.define("qx.html.Flash",
{
extend : qx.html.Element,
/*
*****************************************************************************
CONSTRUCTOR
*****************************************************************************
*/
/**
* @param styles {Map?null} optional map of CSS styles, where the key is the name
* of the style and the value is the value to use.
* @param attributes {Map?null} optional map of element attributes, where the
* key is the name of the attribute and the value is the value to use.
*/
construct : function(styles, attributes)
{
this.base(arguments, "div", styles, attributes);
this.__params = {};
this.__variables = {};
this.__attributes = {};
},
/*
*****************************************************************************
MEMBERS
*****************************************************************************
*/
members :
{
/** @type {Map} The attributes for the Flash movie. */
__params : null,
/** @type {Map} the attributes for the object tag */
__attributes : null,
/** @type {Map} The <code>FlashVars</code> to pass variables to the Flash movie. */
__variables : null,
/** @type {qx.bom.Flash} The DOM Flash element. */
__flash : null,
// overridden
_createDomElement : function() {
return qx.dom.Element.create("div");
},
/**
* Creates the DOM Flash movie with all needed attributes and
* <code>FlashVars</code>.
*/
createFlash : function()
{
this.__flash = qx.bom.Flash.create(this.getDomElement(), this.getAttributes(),
this.__variables, this.__params);
},
/**
* Set the URL from the Flash movie to display.
*
* @param value {String} URL from the Flash movie.
*/
setSource : function(value)
{
if (qx.core.Environment.get("qx.debug")) {
qx.core.Assert.assertString(value, "Invalid attribute 'value'.");
}
if (this.__flash) {
throw new Error("The source cannot be modified after initial creation");
}
this.setAttribute("movie", value);
},
/**
* Set the URL from the Flash movie to display.
*
* @param value {String} URL from the Flash movie.
*/
setId : function(value)
{
if (qx.core.Environment.get("qx.debug")) {
qx.core.Assert.assertString(value, "Invalid attribute 'value'.");
}
if (this.__flash) {
throw new Error("The id cannot be modified after initial creation");
}
this.setAttribute("id", value);
},
/**
* Returns the <code>FlashVars</code> for the Flash movie.
*
* @return {Map} Map with key/value pairs for passing
* <code>FlashVars</code>}
*/
getVariables : function() {
return this.__variables;
},
/**
* Set the <code>FlashVars</code> to pass variables to the Flash movie.
*
* @param value {Map} Map with key/value pairs for passing
* <code>FlashVars</code>
*/
setVariables : function(value)
{
if (qx.core.Environment.get("qx.debug")) {
qx.core.Assert.assertMap(value, "Invalid attribute 'value'.");
}
if (this.__flash) {
throw new Error("The variables cannot be modified after initial creation");
}
this.__variables = value;
},
/**
* Returns the attributes for the Flash DOM element.
*
* @return {Map} Attributes for the DOM element.
*/
getAttributes : function () {
return this.__attributes;
},
/**
* Set an attribute for the Flash DOM element.
*
* @param key {String} Key name.
* @param value {String|Boolean|null} Value or <code>null</code> to remove attribute.
*/
setAttribute : function (key, value)
{
if (qx.core.Environment.get("qx.debug")) {
qx.core.Assert.assertString(key, "Invalid attribute 'key'.");
if (arguments.length > 1 && value !== null) {
if (!qx.lang.Type.isBoolean(value) && !qx.lang.Type.isString(value)) {
throw new Error("Invalid attribute 'value' expected String, Boolean or null.");
}
}
}
if (key.indexOf("$$") === 0) {
this.base(arguments, key, value);
}
else if (this.__flash) {
throw new Error("The attributes cannot be modified after initial creation");
}
if (value === null || value === undefined) {
delete this.__attributes[key];
} else {
this.__attributes[key] = value;
}
},
/**
* Returns the params for the Flash DOM element.
*
* @return {Map} Map with key/value pairs for the Flash DOM element.
*/
getParams : function() {
return this.__params;
},
/**
* Set the param for the Flash DOM element, also called attribute.
*
* @param key {String} Key name.
* @param value {String|Boolean|null} Value or <code>null</code> to remove param
*/
setParam : function(key, value)
{
if (qx.core.Environment.get("qx.debug")) {
qx.core.Assert.assertString(key, "Invalid attribute 'key'.");
if (arguments.length > 1 && value !== null) {
if (!qx.lang.Type.isBoolean(value) && !qx.lang.Type.isString(value)) {
throw new Error("Invalid attribute 'value' expected String, Boolean or null.");
}
}
}
if (this.__flash) {
throw new Error("The params cannot be modified after initial creation");
}
if (value === null || value === undefined) {
delete this.__params[key];
} else {
this.__params[key] = value;
}
},
/**
* Return the created DOM Flash movie.
*
* @return {Element|null} The DOM Flash element, otherwise <code>null</code>.
*/
getFlashElement : function() {
return this.__flash;
}
},
/*
*****************************************************************************
DESTRUCT
*****************************************************************************
*/
destruct : function()
{
if (this.__flash) {
qx.bom.Flash.destroy(this.__flash);
}
this.__params = this.__variables = this.__attributes = null;
}
});