On Fri, Dec 23, 2011 at 2:03 PM, Simon White <[email protected]> wrote: > 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.
This can only be accomplished using eval, so you'll need to stick with that method. > > 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. I don't know if QooxDoo will understand evals in general, but this kind of eval it most definitely will not understand. You will need to determine a way to tell QooxDoo which classes to include through a manual mechanism. In general, eval code is frowned upon because there is no way to guarantee it will not be maliciously interpreted or lead to major security risks (searching for the equivalent of 'eval' is what many hacking techniques can boil down to). --Greg > > 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 ------------------------------------------------------------------------------ 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
