Hi, You can have a look at defer, maybe that will help you in some way: http://manual.qooxdoo.org/1.3/pages/core/oo_feature_summary.html something like this: defer: function(statics,members,properties){ members.setContextMenuHandler(0,members.__handler); } not tested.
cheers, Gabi ________________________________________ From: Peter Schneider [[email protected]] Sent: Thursday, December 16, 2010 2:12 PM To: qooxdoo Development Subject: [qooxdoo-devel] Mixin constructor should be called before 'normal' constructor Hi there, I strongly feel that the current order of constructor calls for mixins is wrong. I didn't want to necropost a thread by Ralf Nieuwenhuijsen[1] that is about 2.5 years old...but it basically explains the reason of this wrong behavior an I therefore took the liberty and "stole" his description from that thread ;) Problem/Issue: ============== > [...] > The mixin constructor is called _after_ the normal constructor rather than > before. This is the wrong default. > > Why? Because the mixin can make no assumptions about the class it's mixed > in.. so it won't be calling or setting properties other than its own. > > But the class using the mixin knows its using the mixin. It wants to use the > mixin in the contructor, but it can't. > [...] Example: ======== It is not possible to do this: <code> qx.Class.define("app.ContextTable", { extend : qx.ui.table.Table, include : qx.ui.table.MTableContextMenu, construct : function (tableModel) { this.base(arguments, tableModel); // This *fails*, 'cause the mixins constructor was not yet called! this.setContextMenuHandler(0, this.__handler, this); }, members : { __handler: function (col, row, table, dataModel, contextMenu) { return false; // implementation stripped for clarity } } }); </code> I think I will open a bug for this. In the mean time, does anybody have an idea how to work around this issue with the current implementation? My current version (which I don't really like) looks like this: <code> qx.Class.define("app.ContextTable", { extend : qx.ui.table.Table, include : qx.ui.table.MTableContextMenu, construct : function (tableModel) { this.base(arguments, tableModel); }, members : { /* This method _has_to_be_called_ after instantiating this Table :( */ initContextMenu : function () { this.setContextMenuHandler(0, this.__handler, this); return this; // for chaining support }, __handler: function (col, row, table, dataModel, contextMenu) { return false; // implementation stripped for clarity } } }); // ... somewhere else: var tableModel = new qx.ui.table.model.Simple; // ... var table = new app.ContextTable(tableModel).initContextMenu(); // ... </code> Thanks in advance for any hints, Peter [1] http://old.nabble.com/Problems-with-Mixins-td16806052.html#a16806052 ------------------------------------------------------------------------------ Lotusphere 2011 Register now for Lotusphere 2011 and learn how to connect the dots, take your collaborative environment to the next level, and enter the era of Social Business. http://p.sf.net/sfu/lotusphere-d2d _______________________________________________ qooxdoo-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel ------------------------------------------------------------------------------ Lotusphere 2011 Register now for Lotusphere 2011 and learn how to connect the dots, take your collaborative environment to the next level, and enter the era of Social Business. http://p.sf.net/sfu/lotusphere-d2d _______________________________________________ qooxdoo-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
