summaryrefslogtreecommitdiff
path: root/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/OO.js
diff options
context:
space:
mode:
Diffstat (limited to 'webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/OO.js')
-rw-r--r--webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/OO.js749
1 files changed, 0 insertions, 749 deletions
diff --git a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/OO.js b/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/OO.js
deleted file mode 100644
index f4e25452b5..0000000000
--- a/webapps/qooxdoo-0.6.3-sdk/frontend/framework/source/class/qx/OO.js
+++ /dev/null
@@ -1,749 +0,0 @@
-/* ************************************************************************
-
- qooxdoo - the new era of web development
-
- http://qooxdoo.org
-
- Copyright:
- 2004-2006 by 1&1 Internet AG, Germany, http://www.1and1.org
-
- License:
- LGPL 2.1: http://www.gnu.org/licenses/lgpl.html
-
- Authors:
- * Sebastian Werner (wpbasti)
- * Andreas Ecker (ecker)
-
-************************************************************************ */
-
-/* ************************************************************************
-
-#id(qx.OO)
-#module(core)
-#after(qx.Settings)
-#load(qx.lang.Core)
-#load(qx.util.Return)
-#optional(qx.event.type.DataEvent)
-
-************************************************************************ */
-
-// Usage of this hacky construct to make qx.OO available inside the API viewer
-qx.OO = {};
-qx.OO.defineClass = function() {};
-qx.Class = qx.OO;
-qx.OO.defineClass("qx.OO");
-
-qx.Class.classes = {};
-qx.Class.setter = {};
-qx.Class.getter = {};
-qx.Class.resetter = {};
-qx.Class.values = {};
-qx.Class.propertyNumber = 0;
-
-
-
-
-/*
----------------------------------------------------------------------------
- DEFINE CLASS IMPLEMENTATION
----------------------------------------------------------------------------
-*/
-
-/**
- * define a new qooxdoo class
- * All classes should be defined in this way.
- *
- * @param vClassName {string} fully qualified class name (e.g. "qx.ui.form.Button")
- * @param vSuper {Object} super class
- * @param vConstructor {Function} the constructor of the new class
- */
-qx.Class.defineClass = function(vClassName, vSuper, vConstructor)
-{
- var vSplitName = vClassName.split(".");
- var vNameLength = vSplitName.length-1;
- var vTempObject = window;
-
- // Setting up namespace
- for (var i=0; i<vNameLength; i++)
- {
- if (typeof vTempObject[vSplitName[i]] === "undefined") {
- vTempObject[vSplitName[i]] = {};
- }
-
- vTempObject = vTempObject[vSplitName[i]];
- }
-
- // Instantiate objects/inheritance
- if (typeof vSuper === "undefined")
- {
- if (typeof vConstructor !== "undefined") {
- throw new Error("SuperClass is undefined, but constructor was given for class: " + vClassName);
- }
-
- qx.Class = vTempObject[vSplitName[i]] = {};
- qx.Proto = null;
- qx.Super = null;
- }
- else if (typeof vConstructor === "undefined")
- {
- qx.Class = vTempObject[vSplitName[i]] = vSuper;
- qx.Proto = null;
- qx.Super = vSuper;
- }
- else
- {
- qx.Class = vTempObject[vSplitName[i]] = vConstructor;
-
- // build helper function
- // this omits the initial constructor call while inherit properties
- var vHelperConstructor = function() {};
- vHelperConstructor.prototype = vSuper.prototype;
- qx.Proto = vConstructor.prototype = new vHelperConstructor;
-
- qx.Super = vConstructor.superclass = vSuper;
-
- qx.Proto.classname = vConstructor.classname = vClassName;
- qx.Proto.constructor = vConstructor;
- }
-
- // Store reference to global classname registry
- qx.OO.classes[vClassName] = qx.Class;
-}
-
-
-
-
-
-
-/*
----------------------------------------------------------------------------
- OBJECT PROPERTY EXTENSION
----------------------------------------------------------------------------
-*/
-
-qx.Class.addFastProperty = function(vConfig)
-{
- var vName = vConfig.name;
- var vUpName = qx.lang.String.toFirstUp(vName);
-
- var vStorageField = "_value" + vUpName;
- var vGetterName = "get" + vUpName;
- var vSetterName = "set" + vUpName;
- var vComputerName = "_compute" + vUpName;
-
- qx.Proto[vStorageField] = typeof vConfig.defaultValue !== "undefined" ? vConfig.defaultValue : null;
-
- if (vConfig.noCompute)
- {
- qx.Proto[vGetterName] = function() {
- return this[vStorageField];
- }
- }
- else
- {
- qx.Proto[vGetterName] = function() {
- return this[vStorageField] == null ? this[vStorageField] = this[vComputerName]() : this[vStorageField];
- }
- }
-
- if (vConfig.setOnlyOnce)
- {
- qx.Proto[vSetterName] = function(vValue)
- {
- this[vStorageField] = vValue;
- this[vSetterName] = null;
-
- return vValue;
- }
- }
- else
- {
- qx.Proto[vSetterName] = function(vValue) {
- return this[vStorageField] = vValue;
- }
- }
-
- if (!vConfig.noCompute)
- {
- qx.Proto[vComputerName] = function() {
- return null;
- }
- }
-}
-
-qx.OO.addCachedProperty = function(p)
-{
- var vName = p.name;
- var vUpName = qx.lang.String.toFirstUp(vName);
-
- var vStorageField = "_cached" + vUpName;
- var vComputerName = "_compute" + vUpName;
- var vChangeName = "_change" + vUpName;
-
- if (typeof p.defaultValue !== "undefined") {
- qx.Proto[vStorageField] = p.defaultValue;
- }
-
- qx.Proto["get" + vUpName] = function()
- {
- if (this[vStorageField] == null) {
- this[vStorageField] = this[vComputerName]();
- }
-
- return this[vStorageField];
- }
-
- qx.Proto["_invalidate" + vUpName] = function()
- {
- if (this[vStorageField] != null)
- {
- this[vStorageField] = null;
-
- if (p.addToQueueRuntime) {
- this.addToQueueRuntime(p.name);
- }
- }
- }
-
- qx.Proto["_recompute" + vUpName] = function()
- {
- var vOld = this[vStorageField];
- var vNew = this[vComputerName]();
-
- if (vNew != vOld)
- {
- this[vStorageField] = vNew;
- this[vChangeName](vNew, vOld);
-
- return true;
- }
-
- return false;
- }
-
- qx.Proto[vChangeName] = function(vNew, vOld) {};
- qx.Proto[vComputerName] = function() { return null; };
-}
-
-qx.Class.addPropertyGroup = function(p)
-{
- /* --------------------------------------------------------------------------------
- PRE-CHECKS
- -------------------------------------------------------------------------------- */
- if(typeof p !== "object") {
- throw new Error("Param should be an object!");
- }
-
- if (qx.util.Validation.isInvalid(p.name)) {
- throw new Error("Malformed input parameters: name needed!");
- }
-
- if (qx.util.Validation.isInvalid(p.members)) {
- throw new Error("Malformed input parameters: members needed!");
- }
-
- p.method = qx.lang.String.toFirstUp(p.name);
-
-
- /* --------------------------------------------------------------------------------
- CACHING
- -------------------------------------------------------------------------------- */
- p.getter = [];
- p.setter = [];
-
- for (var i=0, l=p.members.length; i<l; i++) {
- p.setter.push("set" + qx.lang.String.toFirstUp(p.members[i]));
- }
-
- for (var i=0, l=p.members.length; i<l; i++) {
- p.getter.push("get" + qx.lang.String.toFirstUp(p.members[i]));
- }
-
-
- /* --------------------------------------------------------------------------------
- GETTER
- -------------------------------------------------------------------------------- */
- qx.Proto["get" + p.method] = function()
- {
- var a = [];
- var g = p.getter;
-
- for (var i=0, l=g.length; i<l; i++) {
- a.push(this[g[i]]());
- }
-
- return a;
- };
-
-
- /* --------------------------------------------------------------------------------
- SETTER
- -------------------------------------------------------------------------------- */
- switch(p.mode)
- {
- case "shorthand":
- qx.Proto["set" + p.method] = function()
- {
- if (arguments.length > 4 || arguments.length == 0) {
- throw new Error("Invalid number of arguments for property " + p.name + ": " + arguments);
- }
-
- try
- {
- var ret = qx.lang.Array.fromShortHand(arguments);
- }
- catch(ex)
- {
- throw new Error("Invalid shorthand values for property " + p.name + ": " + arguments + ": " + ex);
- }
-
- var s = p.setter;
- var l = s.length;
-
- for (var i=0; i<l; i++) {
- this[s[i]](ret[i]);
- }
- };
- break;
-
- default:
- qx.Proto["set" + p.method] = function()
- {
- var s = p.setter;
- var l = s.length;
-
- if (arguments.length != l) {
- throw new Error("Invalid number of arguments (needs: " + l + ", is: " + arguments.length + ") for property " + p.name + ": " + qx.lang.Array.fromArguments(arguments).toString());
- }
-
- for (var i=0; i<l; i++) {
- this[s[i]](arguments[i]);
- }
- };
- }
-}
-
-qx.Class.removeProperty = function(p)
-{
- if (typeof qx.Proto._properties !== "string") {
- throw new Error("Has no properties!");
- }
-
- if(typeof p !== "object") {
- throw new Error("Param should be an object!");
- }
-
- if (qx.util.Validation.isInvalid(p.name)) {
- throw new Error("Malformed input parameters: name needed!");
- }
-
- // building shorter prototype access
- var pp = qx.Proto;
-
- p.method = qx.lang.String.toFirstUp(p.name);
- p.implMethod = p.impl ? qx.lang.String.toFirstUp(p.impl) : p.method;
-
- var valueKey = "_value" + p.method;
-
- // Remove property from list
- pp._properties = qx.lang.String.remove(pp._properties, p.name);
-
- // Reset default value to null
- pp[valueKey] = null;
-
- // Reset methods
- pp["get" + p.method] = null;
- pp["set" + p.method] = null;
- pp["reset" + p.method] = null;
- pp["apply" + p.method] = null;
- pp["force" + p.method] = null;
- pp["getDefault" + p.method] = null;
- pp["setDefault" + p.method] = null;
-}
-
-qx.Class._createProperty = function(p)
-{
- if(typeof p !== "object") {
- throw new Error("AddProperty: Param should be an object!");
- }
-
- if (qx.util.Validation.isInvalid(p.name)) {
- throw new Error("AddProperty: Malformed input parameters: name needed!");
- }
-
- // building shorter prototype access
- var pp = qx.Proto;
-
- p.method = qx.lang.String.toFirstUp(p.name);
- p.implMethod = p.impl ? qx.lang.String.toFirstUp(p.impl) : p.method;
-
- if (p.defaultValue == undefined) {
- p.defaultValue = null;
- }
-
- if (qx.util.Validation.isInvalidBoolean(p.allowNull)) {
- p.allowNull = true;
- }
-
- if (qx.util.Validation.isInvalidBoolean(p.allowMultipleArguments)) {
- p.allowMultipleArguments = false;
- }
-
-
-
-
-
-
- if (typeof p.type === "string") {
- p.hasType = true;
- }
- else if (typeof p.type !== "undefined") {
- throw new Error("AddProperty: Invalid type definition for property " + p.name + ": " + p.type);
- }
- else {
- p.hasType = false;
- }
-
- if (typeof p.instance === "string") {
- p.hasInstance = true;
- }
- else if (typeof p.instance !== "undefined") {
- throw new Error("AddProperty: Invalid instance definition for property " + p.name + ": " + p.instance);
- }
- else {
- p.hasInstance = false;
- }
-
- if (typeof p.classname === "string") {
- p.hasClassName = true;
- }
- else if (typeof p.classname !== "undefined") {
- throw new Error("AddProperty: Invalid classname definition for property " + p.name + ": " + p.classname);
- }
- else {
- p.hasClassName = false;
- }
-
-
-
-
-
-
- p.hasConvert = qx.util.Validation.isValidFunction(p.convert);
- p.hasPossibleValues = qx.util.Validation.isValidArray(p.possibleValues);
- p.hasUnitDetection = qx.util.Validation.isValidString(p.unitDetection);
-
- p.addToQueue = p.addToQueue || false;
- p.addToQueueRuntime = p.addToQueueRuntime || false;
-
- // upper-case name
- p.up = p.name.toUpperCase();
-
- // register global uppercase name
- qx.OO["PROPERTY_" + p.up] = p.name;
-
- var valueKey = "_value" + p.method;
- var evalKey = "_eval" + p.method;
- var changeKey = "change" + p.method;
- var modifyKey = "_modify" + p.implMethod;
- var checkKey = "_check" + p.implMethod;
-
- if (!qx.OO.setter[p.name])
- {
- qx.OO.setter[p.name] = "set" + p.method;
- qx.OO.getter[p.name] = "get" + p.method;
- qx.OO.resetter[p.name] = "reset" + p.method;
- qx.OO.values[p.name] = valueKey;
- }
-
- // unit detection support
- if (p.hasUnitDetection)
- {
- // computed unit
- var cu = "_computed" + p.method;
- pp[cu + "Value"] = null;
- pp[cu + "Parsed"] = null;
- pp[cu + "Type"] = null;
- pp[cu + "TypeNull"] = true;
- pp[cu + "TypePixel"] = false;
- pp[cu + "TypePercent"] = false;
- pp[cu + "TypeAuto"] = false;
- pp[cu + "TypeFlex"] = false;
-
- var unitDetectionKey = "_unitDetection" + qx.lang.String.toFirstUp(p.unitDetection);
- }
-
- // apply default value
- pp[valueKey] = p.defaultValue;
-
- // building getFoo(): Returns current stored value
- pp["get" + p.method] = function() {
- return this[valueKey];
- };
-
- // building forceFoo(): Set (override) without do anything else
- pp["force" + p.method] = function(newValue) {
- return this[valueKey] = newValue;
- };
-
- // building resetFoo(): Reset value to default value
- pp["reset" + p.method] = function() {
- return this["set" + p.method](p.defaultValue);
- };
-
- // building toggleFoo(): Switching between two boolean values
- if (p.type === "boolean")
- {
- pp["toggle" + p.method] = function(newValue) {
- return this["set" + p.method](!this[valueKey]);
- };
- }
-
- if (p.allowMultipleArguments || p.hasConvert || p.hasInstance || p.hasClassName || p.hasPossibleValues || p.hasUnitDetection || p.addToQueue || p.addToQueueRuntime || p.addToStateQueue)
- {
- // building setFoo(): Setup new value, do type and change detection, converting types, call unit detection, ...
- pp["set" + p.method] = function(newValue)
- {
- // convert multiple arguments to array
- if (p.allowMultipleArguments && arguments.length > 1) {
- newValue = qx.lang.Array.fromArguments(arguments);
- }
-
- // support converter methods
- if (p.hasConvert)
- {
- try
- {
- newValue = p.convert.call(this, newValue, p);
- }
- catch(ex)
- {
- throw new Error("Attention! Could not convert new value for " + p.name + ": " + newValue + ": " + ex);
- }
- }
-
- var oldValue = this[valueKey];
-
- if (newValue === oldValue) {
- return newValue;
- }
-
- if (!(p.allowNull && newValue == null))
- {
- if (p.hasType && typeof newValue !== p.type) {
- return this.error("Attention! The value \"" + newValue + "\" is an invalid value for the property \"" + p.name + "\" which must be typeof \"" + p.type + "\" but is typeof \"" + typeof newValue + "\"!", new Error());
- }
-
- if (p.hasInstance && !(newValue instanceof qx.OO.classes[p.instance])) {
- return this.error("Attention! The value \"" + newValue + "\" is an invalid value for the property \"" + p.name + "\" which must be an instance of \"" + p.instance + "\"!", new Error());
- }
-
- if (p.hasClassName && newValue.classname != p.classname) {
- return this.error("Attention! The value \"" + newValue + "\" is an invalid value for the property \"" + p.name + "\" which must be an object with the classname \"" + p.classname + "\"!", new Error());
- }
-
- if (p.hasPossibleValues && newValue != null && !qx.lang.Array.contains(p.possibleValues, newValue)) {
- return this.error("Failed to save value for " + p.name + ". '" + newValue + "' is not a possible value!", new Error());
- }
- }
-
- // Allow to check and transform the new value before storage
- if (this[checkKey])
- {
- try
- {
- newValue = this[checkKey](newValue, p);
-
- // Don't do anything if new value is indentical to old value
- if (newValue === oldValue) {
- return newValue;
- }
- }
- catch(ex)
- {
- return this.error("Failed to check property " + p.name, ex);
- }
- }
-
- // Store new value
- this[valueKey] = newValue;
-
- // Check if there is a modifier implementation
- if (this[modifyKey])
- {
- try
- {
- var r = this[modifyKey](newValue, oldValue, p);
- if (!r) {
- return this.error("Modification of property \"" + p.name + "\" failed without exception (" + r + ")", new Error());
- }
- }
- catch(ex)
- {
- return this.error("Modification of property \"" + p.name + "\" failed with exception", ex);
- }
- }
-
- // Unit detection support
- if (p.hasUnitDetection) {
- this[unitDetectionKey](p, newValue);
- }
-
- // Auto queue addition support
- if (p.addToQueue) {
- this.addToQueue(p.name);
- }
- else if (p.addToQueueRuntime) {
- this.addToQueueRuntime(p.name);
- }
-
- // Auto state queue addition support
- if (p.addToStateQueue) {
- this.addToStateQueue();
- }
-
- // Create Event
- if (this.hasEventListeners && this.hasEventListeners(changeKey))
- {
- try
- {
- this.createDispatchDataEvent(changeKey, newValue);
- }
- catch(ex)
- {
- throw new Error("Property " + p.name + " modified: Failed to dispatch change event: " + ex);
- }
- }
-
- return newValue;
- };
- }
- else
- {
- // building setFoo(): Setup new value, do type and change detection, converting types, call unit detection, ...
- pp["set" + p.method] = function(newValue)
- {
- // this.debug("Fast Setter: " + p.name);
-
- var oldValue = this[valueKey];
-
- if (newValue === oldValue) {
- return newValue;
- }
-
- if (!(p.allowNull && newValue == null))
- {
- if (p.hasType && typeof newValue !== p.type) {
- return this.error("Attention! The value \"" + newValue + "\" is an invalid value for the property \"" + p.name + "\" which must be typeof \"" + p.type + "\" but is typeof \"" + typeof newValue + "\"!", new Error());
- }
- }
-
- // Allow to check and transform the new value before storage
- if (this[checkKey])
- {
- try
- {
- newValue = this[checkKey](newValue, p);
-
- // Don't do anything if new value is indentical to old value
- if (newValue === oldValue) {
- return newValue;
- }
- }
- catch(ex)
- {
- return this.error("Failed to check property " + p.name, ex);
- }
- }
-
- // Store new value
- this[valueKey] = newValue;
-
- // Check if there is a modifier implementation
- if (this[modifyKey])
- {
- try
- {
- var r = this[modifyKey](newValue, oldValue, p);
- if (!r) {
- var valueStr = new String(newValue).substring(0, 50);
- return this.error("Setting property \"" + p.name + "\" to \"" + valueStr + "\" failed without exception (" + r + ")", new Error());
- }
- }
- catch(ex)
- {
- var valueStr = new String(newValue).substring(0, 50);
- return this.error("Setting property \"" + p.name + "\" to \"" + valueStr + "\" failed with exception", ex);
- }
- }
-
- // Create Event
- if (this.hasEventListeners && this.hasEventListeners(changeKey))
- {
- var vEvent = new qx.event.type.DataEvent(changeKey, newValue, oldValue, false);
-
- vEvent.setTarget(this);
-
- try
- {
- this.dispatchEvent(vEvent, true);
- }
- catch(ex)
- {
- throw new Error("Property " + p.name + " modified: Failed to dispatch change event: " + ex);
- }
- }
-
- return newValue;
- };
- }
-
- // building user configured get alias for property
- if (typeof p.getAlias === "string") {
- pp[p.getAlias] = pp["get" + p.method];
- }
-
- // building user configured set alias for property
- if (typeof p.setAlias === "string") {
- pp[p.setAlias] = pp["set" + p.method];
- }
-}
-
-qx.Class.changeProperty = qx.OO._createProperty;
-
-qx.Class.addProperty = function(p)
-{
- qx.OO.propertyNumber++;
-
- qx.OO._createProperty(p);
-
- // add property to (all) property list
- if (typeof qx.Proto._properties !== "string") {
- qx.Proto._properties = p.name;
- } else {
- qx.Proto._properties += "," + p.name;
- }
-
- // add property to object property list
- switch(p.type)
- {
- case undefined:
- case "object":
- case "function":
- if (typeof qx.Proto._objectproperties !== "string") {
- qx.Proto._objectproperties = p.name;
- } else {
- qx.Proto._objectproperties += "," + p.name;
- }
- }
-}
-
-qx.Class.inheritField = function(vField, vData)
-{
- qx.lang.Object.carefullyMergeWith(vData, qx.Super.prototype[vField]);
- qx.Proto[vField] = vData;
-}
-
-qx.Class.isAvailable = function(vClassName) {
- return typeof qx.OO.classes[vClassName] !== "undefined";
-}