Hi I thought that was the case. The problem is that I was trying to build a generic system because I do not yet know all the classes because I have not built them. In my previous development environment it was possible to build classes in a factory without every having the actual name in the code. You simply passed in the class name as a string and it would return an instance of the class.
The other problem I can see is that if I use this technique QooxDoo will not know all the classes to package when it comes time to deploy the application. Simon On 23/12/2011 2:47 PM, Greg Hellings wrote: > Simon, you misunderstand the first version. You should not be > constructing a string with it. What are the possible values that lcWin > can have and what are the possible classes you're trying to > instantiate? If I know that I can construct a better example that > accomplishes what you're trying to do so it's less confusing. > > --Greg > > On Fri, Dec 23, 2011 at 1:35 PM, Simon White > <[email protected]> wrote: >> Hi >> I can make the eval technique work but I cannot make the map technique >> work because it always gives an error about string type. >> >> var lcWin = >> qx.core.Init.getApplication().__frmDesktop.getActiveWindow().classname; >> var lcClass = >> var map = { >> 'somekey' : >> lcWin.substr(0,lcWin.indexOf("."))+".con"+lcWin.substr(lcWin.indexOf(".")+4)+"_"+this.getLabel(), >> 'otherkey' : dcbase.otherTypeOfButton >> }; >> >> Simon >> >> On 23/12/2011 2:04 PM, Greg Hellings wrote: >>> You can do this a number of ways depending on your need. >>> >>> With an associative array/map object: >>> var map = { >>> 'somekey' : dcbase.myCustomerButton, >>> 'otherkey' : dcbase.otherTypeOfButton >>> }; >>> >>> var val = 'somekey'; >>> var lcClass = new (map[val])(); >>> >>> Or you could do it with a call to eval: >>> >>> var classToCreate = 'dcbase.myCustomerButton'; >>> var lcClass = eval('new ' + classToCreate + '()'); >>> >>> Or you could do it, similar to the first technique, but with a factory >>> method (probably attached statically to a parent class of all the >>> objects you might create in this instance). >>> >>> --Greg >>> >>> On Fri, Dec 23, 2011 at 12:58 PM, Simon White >>> <[email protected]> wrote: >>>> Hi >>>> >>>> I would like to be able to create a new class by building the class name >>>> at runtime as opposed to hard coding the class in code. Can this be done? >>>> >>>> For example instead of >>>> >>>> var lo = new dcbase.myCustomerButton(); >>>> >>>> I would like to do the following: >>>> >>>> var lcClass = myWindow.Classname.substr(1,8)+"_con"+myButton.getLabel() >>>> >>>> var = new lcClass; >>>> >>>> Thanks, >>>> Simon >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> Write once. Port to many. >>>> Get the SDK and tools to simplify cross-platform app development. Create >>>> new or port existing apps to sell to consumers worldwide. Explore the >>>> Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join >>>> http://p.sf.net/sfu/intel-appdev >>>> _______________________________________________ >>>> qooxdoo-devel mailing list >>>> [email protected] >>>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel >>> >>> ------------------------------------------------------------------------------ >>> Write once. Port to many. >>> Get the SDK and tools to simplify cross-platform app development. Create >>> new or port existing apps to sell to consumers worldwide. Explore the >>> Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join >>> http://p.sf.net/sfu/intel-appdev >> >> >> >> ------------------------------------------------------------------------------ >> Write once. Port to many. >> Get the SDK and tools to simplify cross-platform app development. Create >> new or port existing apps to sell to consumers worldwide. Explore the >> Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join >> http://p.sf.net/sfu/intel-appdev >> _______________________________________________ >> qooxdoo-devel mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel > > ------------------------------------------------------------------------------ > Write once. Port to many. > Get the SDK and tools to simplify cross-platform app development. Create > new or port existing apps to sell to consumers worldwide. Explore the > Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join > http://p.sf.net/sfu/intel-appdev ------------------------------------------------------------------------------ Write once. Port to many. Get the SDK and tools to simplify cross-platform app development. Create new or port existing apps to sell to consumers worldwide. Explore the Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join http://p.sf.net/sfu/intel-appdev _______________________________________________ qooxdoo-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
