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

Reply via email to