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

Reply via email to