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 -- 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
