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 -- GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT! Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01 ------------------------------------------------------------------------------ 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
