Done, 2 jira ticket created http://issues.apache.org/struts/browse/WW-1484 - upgrading Struts2 dojo widget that might failed due to upgrading dojo to 0.4
http://issues.apache.org/struts/browse/WW-1485 - upgrading Struts2 dojo to 0.4 Musachy Barroso <[EMAIL PROTECTED]> wrote: yes, I overwrote those bindXs with defineWidget. We are going to need another bug for the actual upgrade from dojo 0.3 to 0.4(0.4 was released today I think). musachy tm jee wrote: >> I'm using defineWidget, and it is cool. >> > Yup. Is it that the bind, binddiv, bindanchor etc have been written with > dojo.widget.defineWidget? If so, this would be great. :-) I've converter the > bind component using defineWidget... but looks like it could be deleted > now.... :-) > > >> I will be looking into hostedqa >> > You could get a free account from Pat at [ plightbo at friendly gmail dot com > ] > > Cheers. > > > Musachy Barroso wrote: I'm using defineWidget, and it is cool. I will be > looking into hostedqa > given that it is being used in struts already, as per Don's comment > somewhere on this thread. > > musachy > > tm jee wrote: > >> Hi guys, >> >> sorry for jumping into this late. I think we should do the followings for >> struts2 dojo widgets. >> >> - use dojo.widget.defineWidget instead of the old-way of using dojo.provide, >> dojo.extends etc. Dojo got most of its widget rewritten using this way. >> >> - have struts2 widgets/utils as a separate module and add them in using >> dojo.setModulePrefix(...) (0.3) I think the method is renamed in 0.4 and the >> concept of module is namespace in 0.4 >> >> - have javadoc comments in our widget, hopefully it would be easier to >> follow and maybe if possible able to generate docs like >> http://dojotoolkit.org/api But I am not sure about how to do this yet. >> Definitely interested in finding out more. >> >> - have a test folder, like dojo's where we could have pages that test the >> widget, we could use Pat's product to do test the pages (something like >> HostedQA or Selenium) >> >> What you guys think? :-) >> >> Rainer Hermanns wrote: I'll wait for your patch against 0.4 then. >> As soon as I get it, I'll update Dojo first and commit your patches for >> the tags separately. >> >> just let me know, when you are done :) >> tia, >> Rainer >> >> >> >>> :) I know. What I meant is that it shouldn't be applied yet 'cause I >>> made it using 0.3 and I haven't tried it on 0.4 yet. >>> >>> musachy >>> >>> Martin Cooper wrote: >>> >>> >>>> On 10/30/06, Musachy Barroso wrote: >>>> >>>> >>>>> Oh, ok. Then just don't apply the patch. >>>>> >>>>> >>>> No, no - I'm not saying that it shouldn't be applied, only that it >>>> should be >>>> a separate commit. >>>> >>>> By the way, do we have a Jira >>>> >>>> >>>>> issue for the dojo upgrade? >>>>> >>>>> >>>> Not that I can see. Feel free to add one, and one with your patch, if >>>> there >>>> isn't one already. >>>> >>>> -- >>>> Martin. >>>> >>>> >>>> musachy >>>> >>>> >>>>> Martin Cooper wrote: >>>>> >>>>> >>>>>> On 10/30/06, Musachy Barroso wrote: >>>>>> >>>>>> >>>>>>> Hi Rainer >>>>>>> >>>>>>> Give me a couple of days so I can test it against 0.4 (I made the >>>>>>> >>>>>>> >>>>> patch >>>>> >>>>> >>>>>>> using 0.3) and finish some changes(for BindButton) that I have for a >>>>>>> >>>>>>> >>>>> new >>>>> >>>>> >>>>>>> patch. I will give you a new patch soon with the changes for Bind, >>>>>>> BindDiv, BindAnchor, BindButton and TabbedPanel tested on dojo >>>>>>> >>>>>>> >>>>> 0.4. If >>>>> >>>>> >>>>>>> you want to go ahead and upgrade to 0.4 and apply the patch later, >>>>>>> that's fine. (I will just be bothering with another patch soon :) ) >>>>>>> >>>>>>> >>>>>> Well, the upgrade and the patch should certainly be separate >>>>>> >>>>>> >>>>> commits, so >>>>> >>>>> >>>>>> that we can track the changes separately, and so that we can revert >>>>>> one or >>>>>> the other if that ever becomes necessary. Beyond that, it's up to the >>>>>> prospective committer to determine timing. ;-) >>>>>> >>>>>> -- >>>>>> Martin Cooper >>>>>> >>>>>> >>>>>> musachy >>>>>> >>>>>> >>>>>>> Rainer Hermanns wrote: >>>>>>> >>>>>>> >>>>>>>> Musachy, >>>>>>>> >>>>>>>> I could upgrade the embedded Dojo files to the 0.4 release >>>>>>>> >>>>>>>> >>>>> during the >>>>> >>>>> >>>>>>> week. >>>>>>> >>>>>>> >>>>>>>> If your patches for the s2 ajax tags already are against the >>>>>>>> >>>>>>>> >>>>>>> 0.4release, >>>>>>> >>>>>>> >>>>>>>> I could apply those as well. >>>>>>>> >>>>>>>> What do you (and others of course) think? >>>>>>>> >>>>>>>> regards, >>>>>>>> Rainer >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> Any idea on when is Dojo going to be bumped up to 0.4? >>>>>>>>> >>>>>>>>> musachy >>>>>>>>> >>>>>>>>> Don Brown wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> Yes, let's start with bumping up Dojo to 0.4, then apply >>>>>>>>>> >>>>>>>>>> >>>>> patches to >>>>> >>>>> >>>>>>>>>> update the tags. How much work do you think it'll be to upgrade >>>>>>>>>> >>>>>>>>>> >>>>>>> Dojo? >>>>>>> >>>>>>> >>>>>>>>>> Don >>>>>>>>>> >>>>>>>>>> Musachy Barroso wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> I attached a new patch to WW-205, this one includes the new >>>>>>>>>>> TabbedPanel, BindDiv and BindAnchor. It needs Dojo 0.3.1.Do >>>>>>>>>>> >>>>>>>>>>> >>>>> you >>>>> >>>>> >>>>>>> want >>>>>>> >>>>>>> >>>>>>>>>>> me to create a patch to update to Dojo 0.3.1?(We just need to >>>>>>>>>>> >>>>>>>>>>> >>>>>>> replace >>>>>>> >>>>>>> >>>>>>>>>>> dojo distribution under static/dojo.) >>>>>>>>>>> >>>>>>>>>>> I modified the examples in showcase and the test cases. Let me >>>>>>>>>>> >>>>>>>>>>> >>>>> know >>>>> >>>>> >>>>>>>>>>> if something is missing or wrong (bear with me on my first >>>>>>>>>>> >>>>>>>>>>> >>>>> patch >>>>> :) >>>>> >>>>> >>>>>>> ). >>>>>>> >>>>>>> >>>>>>>>>>> musachy >>>>>>>>>>> >>>>>>>>>>> Don Brown wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> Ok, then put those two under one ticket. You know best :) >>>>>>>>>>>> >>>>>>>>>>>> Don >>>>>>>>>>>> >>>>>>>>>>>> Musachy Barroso wrote: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> That's ok, the only problem is that this one by itself would >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>> break >>>>>>> >>>>>>> >>>>>>>>>>>>> anchor and tabbed panel. >>>>>>>>>>>>> >>>>>>>>>>>>> musachy >>>>>>>>>>>>> >>>>>>>>>>>>> Don Brown wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> I'd prefer separate issues, with attached patches. As for >>>>>>>>>>>>>> testing, we started to use Patrick's hostedqa stuff, but we >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>> need >>>>> >>>>> >>>>>>>>>>>>>> to use it more. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Don >>>>>>>>>>>>>> >>>>>>>>>>>>>> Musachy Barroso wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> I have everything (I think :)) for the ajax Div Tag, do you >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>> want >>>>>>> >>>>>>> >>>>>>>>>>>>>>> me to create a patch for it, or wait and create a big one >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>> when >>>>> >>>>> >>>>>>>>>>>>>>> I'm done with the other widgets (anchor, tree...dojo 0.2 -> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>> 0.3)? >>>>>>> >>>>>>> >>>>>>>>>>>>>>> musachy >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> //Have you guys consider anything to test this ajax stuff? >>>>>>>>>>>>>>> (Selenium maybe?) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Musachy Barroso wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> This was with 0.3.1 which is the current release. I >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>> posted a >>>>> >>>>> >>>>>>>>>>>>>>>> message on their mailing list. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> musachy >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Don Brown wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Have you tried this with the Dojo 0.4 release? Any >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>> reason >>>>> we >>>>> >>>>> >>>>>>>>>>>>>>>>> shouldn't upgrade to it? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Don >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Musachy Barroso wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Would something like this include all the current >>>>>>>>>>>>>>>>>> functionality in BindDiv? (events for stop/start timer, >>>>>>>>>>>>>>>>>> refresh, start after a delay, advisor via dojo's >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>> "handler" >>>>> >>>>> >>>>>>>>>>>>>>>>>> property). This way BindDiv will be easier to maintain >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>> (dojo's >>>>>>> >>>>>>> >>>>>>>>>>>>>>>>>> ContentPane + timer) and the Tab widget can be deleted >>>>>>>>>>>>>>>>>> (doesn't add anything to this one). By the way this >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>> doesn't >>>>> >>>>> >>>>>>>>>>>>>>>>>> work on AMD 64/firefox/linux due to a dojo's bug. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> dojo.provide("struts.widgets.BindDiv"); >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> dojo.require("dojo.widget.*"); >>>>>>>>>>>>>>>>>> dojo.require("dojo.io.*"); >>>>>>>>>>>>>>>>>> dojo.require("dojo.widget.Container"); >>>>>>>>>>>>>>>>>> dojo.require("dojo.widget.ContentPane"); >>>>>>>>>>>>>>>>>> dojo.require("dojo.animation.Timer"); >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> struts.widgets.BindDiv = function() { >>>>>>>>>>>>>>>>>> dojo.widget.html.ContentPane.call(this); >>>>>>>>>>>>>>>>>> var self = this; >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> this.widgetType = "BindDiv"; >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> this.href = ""; >>>>>>>>>>>>>>>>>> this.extractContent = false; >>>>>>>>>>>>>>>>>> this.parseContent = false; >>>>>>>>>>>>>>>>>> this.cacheContent = false; >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> this.frequency = 0; >>>>>>>>>>>>>>>>>> this.delay = 0; >>>>>>>>>>>>>>>>>> this.startTimer = false; >>>>>>>>>>>>>>>>>> this.timer = null; >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> //pub/sub events >>>>>>>>>>>>>>>>>> this.refreshListenTopics = ""; >>>>>>>>>>>>>>>>>> this.stopTimerListenTopics = ""; >>>>>>>>>>>>>>>>>> this.startTimerListenTopics = ""; >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> this.postCreate = function() { >>>>>>>>>>>>>>>>>> if(self.frequency > 0) { >>>>>>>>>>>>>>>>>> self.timer = new >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>> dojo.animation.Timer(self.frequency); >>>>> >>>>> >>>>>>>>>>>>>>>>>> self.timer.onTick = self.reloadContents; >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> //start the timer >>>>>>>>>>>>>>>>>> if(self.startTimer) { >>>>>>>>>>>>>>>>>> //start after delay >>>>>>>>>>>>>>>>>> dojo.debug("starting timer after " + self.delay); >>>>>>>>>>>>>>>>>> dojo.lang.setTimeout(self.delay, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>> self.startTimer); >>>>> >>>>> >>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> //attach listeners >>>>>>>>>>>>>>>>>> if(!dojo.string.isBlank(self.refreshListenTopics)) { >>>>>>>>>>>>>>>>>> dojo.debug("Listening to " + >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>> self.refreshListenTopics >>>>> ); >>>>> >>>>> >>>>>>>>>>>>>>>>>> dojo.event.topic.subscribe(self.refreshListenTopics, >>>>>>>>>>>>>>>>>> self, "reloadContents"); >>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>> if(!dojo.string.isBlank(self.stopTimerListenTopics)) >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>> { >>>>> >>>>> >>>>>>>>>>>>>>>>>> dojo.debug("Listening to " + >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>> self.stopTimerListenTopics); >>>>>>> >>>>>>> >>>>> dojo.event.topic.subscribe(self.stopTimerListenTopics, >>>>> >>>>> >>>>>>>>>>>>>>>>>> self, "stopTimer"); >>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>> if(!dojo.string.isBlank(self.startTimerListenTopics)) { >>>>> >>>>> >>>>>>>>>>>>>>>>>> dojo.debug("Listening to " + >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>> self.startTimerListenTopics >>>>>>> ); >>>>>>> >>>>>>> >>>>> dojo.event.topic.subscribe(self.startTimerListenTopics >>>>> , >>>>> >>>>> >>>>>>>>>>>>>>>>>> self, "startTimer"); >>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>> }; >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> this.reloadContents = function() { >>>>>>>>>>>>>>>>>> //refresh is not visible in ContentPane >>>>>>>>>>>>>>>>>> self.isLoaded = false; >>>>>>>>>>>>>>>>>> self.loadContents(); >>>>>>>>>>>>>>>>>> }; >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> this.stopTimer = function() { >>>>>>>>>>>>>>>>>> dojo.debug("stopping timer"); >>>>>>>>>>>>>>>>>> self.timer.stop(); >>>>>>>>>>>>>>>>>> }; >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> this.startTimer = function() { >>>>>>>>>>>>>>>>>> dojo.debug("starting timer with frequency " + >>>>>>>>>>>>>>>>>> self.frequency); >>>>>>>>>>>>>>>>>> self.timer.start(); >>>>>>>>>>>>>>>>>> }; >>>>>>>>>>>>>>>>>> }; >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> dojo.inherits(struts.widgets.BindDiv, >>>>>>>>>>>>>>>>>> dojo.widget.html.ContentPane); >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> dojo.widget.tags.addParseTreeHandler("dojo:BindDiv"); >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Musachy Barroso wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> I was looking at the Div/Panel classes and I think we >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>> need to >>>>>>> >>>>>>> >>>>>>>>>>>>>>>>>>> do some changes, right now Panel extends Div and >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>> PanelTag >>>>> >>>>> >>>>>>>>>>>>>>>>>>> exteds DivTag. The problem is that the new PanelTag >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>> wraps >>>>> >>>>> >>>>>>>>>>>>>>>>>>> dojo's ContentPane, while DivTag wraps HTMLBindDiv(from >>>>>>>>>>>>>>>>>>> struts), and they are quite different. I think we >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>> should >>>>> >>>>> >>>>>>>>>>>>>>>>>>> replace HTMLBindDiv with an implementation that extends >>>>>>>>>>>>>>>>>>> dojo's ContentPane and add a timer to it for the auto >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>> refresh. >>>>>>> >>>>>>> >>>>>>>>>>>>>>>>>>> what do you guys think? >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> musachy >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Ian Roughley wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Yes - this was the direction that we wanted to go >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>> in. Try >>>>> >>>>> >>>>>>>>>>>>>>>>>>>> to do as much as possible in dojo and provide light >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>> wrappers >>>>>>> >>>>>>> >>>>>>>>>>>>>>>>>>>> in Struts. When we first implemented the tabs, there >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>> was no >>>>>>> >>>>>>> >>>>>>>>>>>>>>>>>>>> such dojo implementation. The one feature that we had >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>> that >>>>>>> >>>>>>> >>>>>>>>>>>>>>>>>>>> you should check that has been implemented in dojo >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>> is the >>>>> >>>>> >>>>>>>>>>>>>>>>>>>> pub/sub events - so there should be events that each >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>> tabs >>>>> >>>>> >>>>>>>>>>>>>>>>>>>> listens to to refresh itself. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> I think as Don pointed out, we want to keep a very >>>>>>>>>>>>>>>>>>>> lightweight wrapper in struts and have all the work >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>> being >>>>> >>>>> >>>>>>>>>>>>>>>>>>>> done in dojo. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> The other big thing that would be a great help is >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>> converting >>>>>>> >>>>>>> >>>>>>>>>>>>>>>>>>>> the code from dojo 0.2 to 0.3 :) >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Ian >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> >>>>>>> >>>>>>>>>>>>>>>>>>> To unsubscribe, e-mail: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>> [EMAIL PROTECTED] >>>>> >>>>> >>>>>>>>>>>>>>>>>>> For additional commands, e-mail: === message truncated === --------------------------------- All new Yahoo! Mail "The new Interface is stunning in its simplicity and ease of use." - PC Magazine