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

Reply via email to