Here is the qooxdoo compatible no tweak solution for lightweight
properties (nice name! addLightweightProperty?):
/*adding the property xpath to qx.ui.core.Widget
*with setter and getter:
*/
qx.Proto = qx.ui.core.Widget.prototype;
qx.ui.core.Widget.prototype._x_path = null;
qx.ui.core.Widget.prototype.getXpath = function() {
return this._x_path;
};
qx.ui.core.Widget.prototype.setXpath = function(value) {
return this._x_path = value;
};
qx.OO.setter["xpath"] = "setXpath";
qx.OO.getter["xpath"] = "getXpath";
Dietrich Streifert schrieb:
> Hello List, Hello Sebastian (who is maybe deepest inside the object
> property implementation),
>
> In my application I need to add some properties to the whole widget
> hierarchie (maybe bad style, but anyway). So I do the following:
>
> qx.ui.core.Widget.prototype._x_path = null;
> qx.ui.core.Widget.prototype.getXpath = function() {
> return this._x_path;
> };
> qx.ui.core.Widget.prototype.setXpath = function(value) {
> return this._x_path = value;
> };
>
> For setting this property (and a few other) properties I'm usualy
> calling the set method of the instance
>
> widgetInstance.set({xpath:'bla', foo:'blu', bar:'blo'});
>
> The definition of the set method is in qx.core.Object.prototype:
>
> qx.Proto.set = function(propertyValues)
> {
> if (typeof propertyValues !== "object") {
> throw new Error("Please use a valid hash of property key-values
> pairs.");
> }
>
> for (var prop in propertyValues)
> {
> try
> {
> this[qx.OO.setter[prop]](propertyValues[prop]);
> }
> catch(ex)
> {
> this.error("Setter of property " + prop + " returned with an
> error", ex);
> }
> }
>
> return this;
> }
>
> Because the method relies on the existence of the setter and getter in
> qx.OO.setter this fails as self defined setters and getters are nevver
> assigned to qx.OO.setter. This also seems to happen if we have a fast
> property added through addFastProperty. As a side effect FF 2.0 freezes
> on the massive exception fireing in the try catch block (at least for my
> application which has a big widget stack).
>
> The solution would be to not rely on qx.OO.setter and to assemble the
> setter call through a string concatenation:
>
> this['set'+qx.lang.String.toFirstUp(prop)](propertyValues[prop]);
>
> In this case all setters and getters are catched.
>
> Maybe this can eliminate the setter hash completely?
>
> Any Ideas on this?
>
> Thank you.
>
> Best regards.
>
>
>
--
Mit freundlichen Grüßen
Dietrich Streifert
Visionet GmbH
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel