i think, i will pass the parent as a second paremeter to my childWidget. It is a lot easier, but also unpleasant.
thanks -------- Original-Nachricht -------- > Datum: Wed, 03 Jun 2009 17:17:55 +0100 > Von: Matthew Gregory <[email protected]> > An: [email protected] > Betreff: Re: [qooxdoo-devel] Property usage > yes, you have to construct your class first and then have your parent > call this.add(widget) before getLayoutParent will return anything useful. > > If you can't refactor your code you could pass the parent widget as a > second parameter to your constructor instead > > Robert Wende wrote: > > i tried this in the constructor of my StartWidget class, but i get > "null". > > > > > > -------- Original-Nachricht -------- > >> Datum: Wed, 03 Jun 2009 17:02:24 +0100 > >> Von: Matthew Gregory <[email protected]> > >> An: [email protected] > >> Betreff: Re: [qooxdoo-devel] Property usage > > > >> this.getLayoutParent() IIRC > >> > >> Robert Wende wrote: > >>> Hi Matt, > >>> > >>> thanks - i didn't see the forest for the trees. > >>> i only need a reference in the StartWidget to the > TravelplanerContainer. > >> Is this possible about a getParent-method? > >>> Thanks > >>> > >>> > >>> -------- Original-Nachricht -------- > >>>> Datum: Wed, 03 Jun 2009 16:45:52 +0100 > >>>> Von: Matthew Gregory <[email protected]> > >>>> An: [email protected] > >>>> Betreff: Re: [qooxdoo-devel] Property usage > >>>> OK, I haven't examined the code in detail but it looks fine, the > >> problem > >>>> is you are calling getJourneyContainer before setJourneyContainer > >>>> > >>>> You do this first: > >>>> this.__startWidget = new travelagent..StartWidget(componentData); > >>>> > >>>> This will call the constructor which is where you are calling > >>>> getJourneyContainer. Then after the constructor returns you are > >>>> setting it > >>>> this.__startWidget.setJourneyContainer("test0rn"); > >>>> > >>>> You need to rearrange your code > >>>> > >>>> > properties: { > >>>> > journeyContainer : {inheritable:true, deferredInit: true} > >>>> > >>>> you could add an apply key to this > >>>> > >>>> > properties: { > >>>> > journeyContainer : {inheritable:true, deferredInit: true, apply > : > >>>> "_applyJourneyContainer"} > >>>> > >>>> You can then add a function to your class that will get called when > you > >>>> set the property > >>>> > >>>> _applyJourneyContainer : function(value) > >>>> { > >>>> alert(value); > >>>> } > >>>> > >>>> > >>>> Hope that helps! > >>>> Matt > >>>> > >>>> > >>>> > >>>> Robert Wende wrote: > >>>>> Hi Matt, > >>>>> > >>>>> my abstract class looks like: > >>>>> > >>>>> > >> > qx.Class.define("travelagent.impl.fe.travelplaner.uis.AbstractMediator", > >>>>> { > >>>>> type: "abstract", > >>>>> extend: qx.ui.container.Composite, > >>>>> > >>>>> properties: { > >>>>> journeyContainer : {inheritable:true, deferredInit: true} > >>>>> }, > >>>>> > >>>>> members: { > >>>>> /** > >>>>> * @abstract > >>>>> */ > >>>>> edit: function() {return true;}, > >>>>> openMap: function() {return true;}, > >>>>> save: function() {return true;}, > >>>>> update: function(e) {return true;} > >>>>> > >>>>> } > >>>>> }); > >>>>> > >>>>> then i derive a DestinationWidget: > >>>>> > >>>>> > >> > qx.Class.define("travelagent.impl.fe.travelplaner.uis.DestinationWidget",{ > >>>>> > >>>>> type: "abstract", > >>>>> extend: travelagent.impl.fe.travelplaner.uis.AbstractMediator, > >>>>> > >>>>> properties: { > >>>>> destinationData : {inheritable:true, deferredInit:true, > >>>>> check : > >>>> "travelagent.impl.data.DestinationData"}, > >>>>> clockWidget : {inheritable:true, deferredInit:true}, > >>>>> calendarWidget : {inheritable:true, deferredInit:true}, > >>>>> mapWidget : {inheritable:true, deferredInit:true} > >>>>> }, > >>>>> > >>>>> members:{ > >>>>> openMap:function(){ > >>>>> return true; > >>>>> } > >>>>> } > >>>>> }); > >>>>> > >>>>> and in my StartWidget, i want to use the journeyContainer-Prop from > >> the > >>>> AbstractMediator. > >>>>> qx.Class.define("travelagent.impl.fe.travelplaner.uis.StartWidget",{ > >>>>> > >>>>> extend:travelagent.impl.fe.travelplaner.uis.DestinationWidget, > >>>>> > >>>>> > >>>>> construct: function(data){ > >>>>> > >>>>> this.base(arguments); > >>>>> this.initDestinationData(data); > >>>>> > >>>>> this.__buildLayout(); //external method for the layout > >>>>> > >>>>> alert(this.getJourneyContainer()); //test the prop > >>>>> }, > >>>>> ... > >>>>> } > >>>>> > >>>>> The alert-methode give my the following: null > >>>>> > >>>>> I set the JourneyContainer-Prop in another class: > >>>>> > >>>>> > >> > qx.Class.define("travelagent.impl.fe.travelplaner.TravelplanerContainer", { > >>>>> extend : qx.ui.container.Scroll, > >>>>> construct : function() { > >>>>> this.base(arguments); > >>>>> this.set({ > >>>>> width : 1024, > >>>>> height : 400 > >>>>> }); > >>>>> > >>>>> var layout = new qx.ui.layout.VBox().set({ > >>>>> spacing : 5 > >>>>> // alignX: "center" > >>>>> }); > >>>>> > >>>>> this.__journeyContainer = new > >> qx.ui.container.Composite(layout).set({ > >>>>> padding : 20, > >>>>> width : 1008, > >>>>> backgroundColor : "white" > >>>>> }); > >>>>> > >>>>> this.__journeyContainer.setAllowStretchX(false); > >>>>> this.add(this.__journeyContainer); > >>>>> > >>>>> this.__journeyContainer.add(new > >>>>> qx.ui.basic.Label("Travelplan")); > >>>>> > >>>>> // init dummywidgets > >>>>> var start = new travelagent.impl.data.DestinationData(); > >>>>> start.setType("StartWidget"); > >>>>> var goal = new travelagent.impl.data.DestinationData(); > >>>>> goal.setType("GoalWidget"); > >>>>> var waypoint = new > >>>>> travelagent.impl.data.DestinationData(); > >>>>> waypoint.setType("WaypointWidget"); > >>>>> var waypoint2 = new > >>>>> travelagent.impl.data.DestinationData(); > >>>>> waypoint2.setType("WaypointWidget"); > >>>>> var waypoint3 = new > >>>>> travelagent.impl.data.DestinationData(); > >>>>> waypoint3.setType("WaypointWidget"); > >>>>> > >>>>> goal.setPrev(waypoint); > >>>>> waypoint.setPrev(start); > >>>>> waypoint2.setPrev(waypoint); > >>>>> waypoint3.setPrev(waypoint2); > >>>>> ... > >>>>> this.addWidget(start); > >>>>> > >>>>> > >>>>> > >>>>> }, > >>>>> > >>>>> members : { > >>>>> // ref to component > >>>>> __journeyContainer : null, > >>>>> __startWidget : null, > >>>>> __goalWidget : null, > >>>>> > >>>>> /** > >>>>> * Adds a widget to the travel plan. Therefore the type > >>>>> of the > given > >>>>> * data object is checked. > >>>>> * > >>>>> * @param componentData > >>>>> * {IComponentData} The data object of the > >>>>> widget to > add. > >>>>> */ > >>>>> addWidget : function(componentData) { > >>>>> switch (componentData.getType()) { > >>>>> case "StartWidget" : > >>>>> this.__startWidget = new > >>>> travelagent.impl.fe.travelplaner.uis.StartWidget(componentData); > >>>>> > >>>>> this.__startWidget.setJourneyContainer("test0rn"); > >>>>> > >>>>> this.__journeyContainer.add(this.__startWidget); > >>>>> ... > >>>>> > >>>>> I hope this helps, > >>>>> Thanks > >>>>> > >>>>> > >>>>> > >>>>> -------- Original-Nachricht -------- > >>>>>> Datum: Wed, 03 Jun 2009 16:10:02 +0100 > >>>>>> Von: Matthew Gregory <[email protected]> > >>>>>> An: [email protected] > >>>>>> Betreff: Re: [qooxdoo-devel] Property usage > >>>>>>> now i have a new problem with my property. > >>>>>>> Another class set the journeyContainer: > >>>>>>> > >>>>>>> this.__startWidget.setJourneyContainer(this) > >>>>>>> > >>>>>>> when i call the getter in the startWidget, i get a null value. > why? > >> i > >>>>>> thought that the property is inherit from AbstractMediator to > >>>> StartWidget. > >>>>>> That should work, any chance of a bit more code? Would be good if > you > >>>>>> could post the code that creates the class, sets the property and > >> then > >>>>>> where the property is being read > >>>>>> > >>>>>>> My second problem concerns the init-process. > >>>>>>> > >>>>>>> i have tried the following: > >>>>>>> > >>>>>>> properties: { > >>>>>>> newTest:{nullable:true} //i guess this is the same like newTest = > >>>> null; > >>>>>>> } > >>>>>>> > >>>>>>> now i want to init the property in my constructor like: > >>>>>>> > >>>>>>> this.initNewTest("hello"); > >>>>>>> > >>>>>>> Firebug says that the function ist undefined. how can i init my > >>>>>> properties? > >>>>>> > >>>>>> (not 100% sure about the accuracy of this statement) Nullable > >>>> properties > >>>>>> are initialized to null by default, use setTest() instead. Or you > >> could > >>>>>> add an init value to the property > >>>>>> > >>>>>> > newTest:{nullable:true, init:"hello"} > >>>>>> > >>>>>> This only works well for "simple" types though, arrays and objects > >> are > >>>>>> initialized by reference and not value > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >> > ------------------------------------------------------------------------------ > >>>>>> OpenSolaris 2009.06 is a cutting edge operating system for > >> enterprises > >>>>>> looking to deploy the next generation of Solaris that includes the > >>>> latest > >>>>>> innovations from Sun and the OpenSource community. Download a copy > >> and > >>>>>> enjoy capabilities such as Networking, Storage and Virtualization. > >>>>>> Go to: http://p.sf.net/sfu/opensolaris-get > >>>>>> _______________________________________________ > >>>>>> qooxdoo-devel mailing list > >>>>>> [email protected] > >>>>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel > >>>> > >> > ------------------------------------------------------------------------------ > >>>> OpenSolaris 2009.06 is a cutting edge operating system for > enterprises > >>>> looking to deploy the next generation of Solaris that includes the > >> latest > >>>> innovations from Sun and the OpenSource community. Download a copy > and > >>>> enjoy capabilities such as Networking, Storage and Virtualization. > >>>> Go to: http://p.sf.net/sfu/opensolaris-get > >>>> _______________________________________________ > >>>> qooxdoo-devel mailing list > >>>> [email protected] > >>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel > >> > >> > ------------------------------------------------------------------------------ > >> OpenSolaris 2009.06 is a cutting edge operating system for enterprises > >> looking to deploy the next generation of Solaris that includes the > latest > >> innovations from Sun and the OpenSource community. Download a copy and > >> enjoy capabilities such as Networking, Storage and Virtualization. > >> Go to: http://p.sf.net/sfu/opensolaris-get > >> _______________________________________________ > >> qooxdoo-devel mailing list > >> [email protected] > >> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel > > > > > ------------------------------------------------------------------------------ > OpenSolaris 2009.06 is a cutting edge operating system for enterprises > looking to deploy the next generation of Solaris that includes the latest > innovations from Sun and the OpenSource community. Download a copy and > enjoy capabilities such as Networking, Storage and Virtualization. > Go to: http://p.sf.net/sfu/opensolaris-get > _______________________________________________ > qooxdoo-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel -- GMX FreeDSL mit DSL 6.000 Flatrate und Telefonanschluss nur 17,95 Euro/mtl.! http://dslspecial.gmx.de/freedsl-aktionspreis/?ac=OM.AD.PD003K11308T4569a ------------------------------------------------------------------------------ OpenSolaris 2009.06 is a cutting edge operating system for enterprises looking to deploy the next generation of Solaris that includes the latest innovations from Sun and the OpenSource community. Download a copy and enjoy capabilities such as Networking, Storage and Virtualization. Go to: http://p.sf.net/sfu/opensolaris-get _______________________________________________ qooxdoo-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
