Re: GWT Widget styling using CSS and UiBinder
Thanks for the reply Rob. I did try the piece of code you have pasted even previously but it did not work. Even a simple rule like a color change or a bg-color change within all the parenthesis don't work. This technique doesn't work if I put it in the ui.xml nor does it work in a .css file referred as a CSSResource interface. Again, the examples online are incomplete. If possible, please share a working example. Thank you again! Vikram On Jul 7, 9:12 pm, Rob Coops rco...@gmail.com wrote: On Thu, Jul 7, 2011 at 11:09 AM, vik vmgu...@gmail.com wrote: Can somebody please post a simple example on how to style a 'fairly- complex' widget like the gwt-DatePicker with different colors and assets? There are a few examples online for the date picker but they either are incomplete or don't use the UiBinder technique. I would like to use the UiBinder ui.xml files to store information as in colors, bg images etc. Thanks! -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. Hi Vik, I would suggest using the build in styles CSS Style Rules .gwt-DatePicker { } .datePickerMonthSelector { the month selector widget } .datePickerMonth { the month in the month selector widget } .datePickerPreviousButton { the previous month button } .datePickerNextButton { the next month button } .datePickerDays { the portion of the picker that shows the days } .datePickerWeekdayLabel { the label over weekdays } .datePickerWeekendLabel { the label over weekends } .datePickerDay { a single day } .datePickerDayIsToday { today's date } .datePickerDayIsWeekend { a weekend day } .datePickerDayIsFiller { a day in another month } .datePickerDayIsValue { the selected day } .datePickerDayIsDisabled { a disabled day } .datePickerDayIsHighlighted { the currently highlighted day } .datePickerDayIsValueAndHighlighted { the highlighted day if it is also selected } Since with UIBinder you can only assign a single style name and as far as I know this is not automatically used to replace the datePicker part of the default styles you are pretty much stuck with these once. Though I would not put it past the Google team to be smart enough to do that I fear that this might just not work at the moment. To be able to do this and still add you own style use: addStyleNames. Regards, Rob -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: GWT Designer Eclipse Problem
Even I have tried a lot to get GWT Designer working. Can anybody suggest the right usage of GWT Designer? On Sat, Jun 4, 2011 at 3:51 PM, Noor baken...@gmail.com wrote: Hi, I am using Ubuntu , Eclipse 3.5 with GWT designer. But when I placing a control on the my interface, the whole interface is becomming black, I have installed Eclipse 3.6 and getting the same problem Snapshot: http://i.stack.imgur.com/Z8jwD.png -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Google plugin for Eclipse withou WindowBuilder (GWT Designer)
Forget about it, the new update on the Designers beta Version fixed the problem. It now runs like a charm 2011/7/6 Sebastian open.sebast...@gmail.com Hello Vrto, may I ask which Ubuntu Version do you use? Is it 32 or 64 Bit? I am using 11.04 with AMD64 and can´t get the Designer running at all (Eclipse Indigo). I ask beacause it is a clean Installation and I supposed that the failure was on the Ubuntu side. 2011/6/16 Vrto michal.vrt...@gmail.com BTW, I've seen your Google IO 2011 presentation (n1) and I was surprised how fast GWT designer worked on your Windows machine (and it looked virtualized from Mac OS X if I remember correctly!). Is it possible that it's slower on Linux? With Eclipse on Sun's JRE? I guess I will try it with fresh install of Indigio, where my Eclipse installation will not be huge monster with billion of plugins if that's any better. On Jun 16, 10:41 pm, Eric Clayberg clayb...@google.com wrote: I would be curious as to how the latest GWT Designer build feels to you... http://code.google.com/webtoolkit/tools/download-gwtdesigner-beta.html On Jun 16, 1:08 pm, Vrto michal.vrt...@gmail.com wrote: I disabled that of course, but when Eclipse stars it does always stuff like updatinggwtdesignerpaletten, building somegwtdesigner stuff and I am minimalist I just dont want that heh :) On Jun 16, 7:02 pm, Renato Beserra renatobese...@gmail.com wrote: I don't like theGWTDesignereither, but how does it cause you problems? Is it opening your classes by default or something? 2011/6/16 Vrto michal.vrt...@gmail.com Hello, I like Google Plugin for Eclipse, but I don't likeGWT Designer. It's slow, buggy, keeps updating itself, loads terribly load and so on. Is there any chance of releasing google plugin withoutGWT Designer? Thanks! -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- Renato Beserra Sousa -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: GWT Designer Eclipse Problem
The same here with Ubuntu 11.04 x64 and Eclipse Indigo. My installed libWebKit Versions are libwebkitgtk-1.0.so.0.6.0 and libwebkitgtk-3.0.so.0.6.0. Tried the workaround but had no luck with it. 2011/7/7 Alexander Mitin alexander.mi...@gmail.com Try this workaround: 1. Open terminal and change dir to /usr/lib 2. Do sudo ln -s libwebkitgtk-1.0.so.0.6.0 libwebkit-1.0.so.2 command, where libwebkitgtk-1.0.so.0.6.0 is the webkit lib file, it's name could be different in version numbers. 3. Restart Eclipse. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Gwt touch ui
Is anyone doing some open source work on gwt + touch ui? This demo is totally incredible http://dev.sencha.com/deploy/touch/examples/kitchensink/ We must have this implemented with gwt -- Guit: Elegant, beautiful, modular and *production ready* gwt applications. http://code.google.com/p/guit/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Gwt touch ui
gwt4air 2.2 will actually have a Gwt Touch module Stay tuned :) 2011/7/8 Gal Dolber gal.dol...@gmail.com Is anyone doing some open source work on gwt + touch ui? This demo is totally incredible http://dev.sencha.com/deploy/touch/examples/kitchensink/ We must have this implemented with gwt -- Guit: Elegant, beautiful, modular and *production ready* gwt applications. http://code.google.com/p/guit/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- GWT API for non Java based platforms http://code.google.com/p/gwt4air/ http://www.gwt4air.appspot.com/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: GWT Widget styling using CSS and UiBinder
Here is what I did to test this: !DOCTYPE ui:UiBinder SYSTEM http://dl.google.com/gwt/DTD/xhtml.ent; ui:UiBinder xmlns:ui=urn:ui:com.google.gwt.uibinder xmlns:g=urn:import:com.google.gwt.user.client.ui xmlns:p1=urn:import:com.google.gwt.user.datepicker.client g:HTMLPanel p1:DatePicker/ /g:HTMLPanel /ui:UiBinder (can't be more basic then that) And in my css file I have simply added the following lines: .gwt-DatePicker { font-size: 40pt; } .datePickerMonthSelector { color: red; } .datePickerMonth { font-weight: bold; } I did this in a new project where I did nothing more then simply alter the .css file and create this one UiBinder bit of code, adding it directly to the root layout panel (I like standards mode :-) I am not using the CSSResource interface and I found that if you do the following the styles are ignored: !DOCTYPE ui:UiBinder SYSTEM http://dl.google.com/gwt/DTD/xhtml.ent; ui:UiBinder xmlns:ui=urn:ui:com.google.gwt.uibinder xmlns:g=urn:import:com.google.gwt.user.client.ui xmlns:p1=urn:import:com.google.gwt.user.datepicker.client ui:style .gwt-DatePicker { font-size: 40pt; } .datePickerMonthSelector { color: red; } .datePickerMonth { font-weight: bold; } .datePickerPreviousButton { } .datePickerNextButton { } .datePickerDays { } .datePickerWeekdayLabel { } .datePickerWeekendLabel { } .datePickerDay { } .datePickerDayIsToday { } .datePickerDayIsWeekend { } .datePickerDayIsFiller { } .datePickerDayIsValue { } .datePickerDayIsDisabled { } .datePickerDayIsHighlighted { } .datePickerDayIsValueAndHighlighted { } /ui:style g:HTMLPanel p1:DatePicker/ /g:HTMLPanel /ui:UiBinder Now personally I am very very much against inline styles or any styles other then in a separate stylesheet so I actually don't mind that this does not work. Though I do not see why it wouldn't as the classes are applied to the elements so the UiBinder should not ignore this code just because it is not assigned later on using addStyleNames or setStyleName but it seems that optimization has removed this bit of code from the final product as it sees it as never used. (Unless I am totally crazy and doing this completely wrong) As far as examples and documentation goes I agree the GWT documentation is though extensive very much a trail and error thing which quite often feels incomplete or assuming a bit more knowledge of the GWT framework then a beginner with it can have. Anyway the styles do get applied though it might be that using CSSResource the file is loaded to early and the default style sheet from GWT gets loaded after overwriting your styles at least that is the only reason I can come up with why it would not work in your case. Hope this helps, Rob On Fri, Jul 8, 2011 at 8:17 AM, vik vmgu...@gmail.com wrote: Thanks for the reply Rob. I did try the piece of code you have pasted even previously but it did not work. Even a simple rule like a color change or a bg-color change within all the parenthesis don't work. This technique doesn't work if I put it in the ui.xml nor does it work in a .css file referred as a CSSResource interface. Again, the examples online are incomplete. If possible, please share a working example. Thank you again! Vikram On Jul 7, 9:12 pm, Rob Coops rco...@gmail.com wrote: On Thu, Jul 7, 2011 at 11:09 AM, vik vmgu...@gmail.com wrote: Can somebody please post a simple example on how to style a 'fairly- complex' widget like the gwt-DatePicker with different colors and assets? There are a few examples online for the date picker but they either are incomplete or don't use the UiBinder technique. I would like to use the UiBinder ui.xml files to store information as in colors, bg images etc. Thanks! -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. Hi Vik, I would suggest using the build in styles CSS Style Rules .gwt-DatePicker { } .datePickerMonthSelector { the month selector widget } .datePickerMonth { the month in the month selector widget } .datePickerPreviousButton { the previous month button } .datePickerNextButton { the next month button } .datePickerDays { the portion of the picker that shows the days } .datePickerWeekdayLabel { the label over weekdays } .datePickerWeekendLabel { the label over weekends } .datePickerDay { a single day } .datePickerDayIsToday { today's date } .datePickerDayIsWeekend { a weekend day } .datePickerDayIsFiller { a day in another month } .datePickerDayIsValue { the selected day } .datePickerDayIsDisabled { a disabled day } .datePickerDayIsHighlighted { the currently highlighted day } .datePickerDayIsValueAndHighlighted { the
Re: CellTable with SimplePager displaying GAE datastore data in async
What framework are you using to connect to the datastore? I've not used JDO or JPA, but in Objectify you can set an offset and a limit on a query. In onRangeChanged you can get them like this: Range range = display.getVisibleRange(); Integer offset = range.getStart(); Integer limit = range.getLength(); So there's no need to work with cursors. If this functionality is not exposed through your datastore layer you could always use the low level api. On Jul 7, 7:47 pm, George Agiasoglou george.agiasog...@newsint.co.uk wrote: Hi there, I have a celltable which displays data from GAE datastore using an AsyncDataProvider. Everything works fine up to the last page. So if pageSize is 10 and the results are 35, doing 1-10, 11-20, 21-30 and back works fine. In order to do this I store cursors so that I can continue from where I left off or go back. If however, I go to the last page and the range changes to display 25-35 and then back like so, 35-25, 25-15, 15-5 etc the cursors are rendered useless. Have you comes across this problem? What are your experiences? Maybe I am not using SimplePager properly? I am not complaining how the SimplePager is implemented, and I do understand the fact it manages to always maintain the same number of records in View and keep the hight constant. Will the only solution be to write my own custom pager? Thanks, George -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Gwt touch ui
Hi Alain, touch support with flash? do you mean only for android devices? On Fri, Jul 8, 2011 at 3:27 AM, Alain Ekambi jazzmatad...@googlemail.comwrote: gwt4air 2.2 will actually have a Gwt Touch module Stay tuned :) 2011/7/8 Gal Dolber gal.dol...@gmail.com Is anyone doing some open source work on gwt + touch ui? This demo is totally incredible http://dev.sencha.com/deploy/touch/examples/kitchensink/ We must have this implemented with gwt -- Guit: Elegant, beautiful, modular and *production ready* gwt applications. http://code.google.com/p/guit/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- GWT API for non Java based platforms http://code.google.com/p/gwt4air/ http://www.gwt4air.appspot.com/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- Guit: Elegant, beautiful, modular and *production ready* gwt applications. http://code.google.com/p/guit/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Gwt touch ui
Not Flash. Pure Gwt based solution 2011/7/8 Gal Dolber gal.dol...@gmail.com Hi Alain, touch support with flash? do you mean only for android devices? On Fri, Jul 8, 2011 at 3:27 AM, Alain Ekambi jazzmatad...@googlemail.comwrote: gwt4air 2.2 will actually have a Gwt Touch module Stay tuned :) 2011/7/8 Gal Dolber gal.dol...@gmail.com Is anyone doing some open source work on gwt + touch ui? This demo is totally incredible http://dev.sencha.com/deploy/touch/examples/kitchensink/ We must have this implemented with gwt -- Guit: Elegant, beautiful, modular and *production ready* gwt applications. http://code.google.com/p/guit/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com . To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- GWT API for non Java based platforms http://code.google.com/p/gwt4air/ http://www.gwt4air.appspot.com/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- Guit: Elegant, beautiful, modular and *production ready* gwt applications. http://code.google.com/p/guit/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- GWT API for non Java based platforms http://code.google.com/p/gwt4air/ http://www.gwt4air.appspot.com/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Gwt touch ui
great news! thanks Alain On Friday, July 8, 2011, Alain Ekambi jazzmatad...@googlemail.com wrote: Not Flash.Pure Gwt based solution 2011/7/8 Gal Dolber gal.dol...@gmail.com Hi Alain,touch support with flash? do you mean only for android devices? On Fri, Jul 8, 2011 at 3:27 AM, Alain Ekambi jazzmatad...@googlemail.com wrote: gwt4air 2.2 will actually have a Gwt Touch moduleStay tuned :) 2011/7/8 Gal Dolber gal.dol...@gmail.com Is anyone doing some open source work on gwt + touch ui? This demo is totally incredible http://dev.sencha.com/deploy/touch/examples/kitchensink/ We must have this implemented with gwt -- Guit: Elegant, beautiful, modular and *production ready* gwt applications. http://code.google.com/p/guit/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- GWT API for non Java based platforms http://code.google.com/p/gwt4air/http://www.gwt4air.appspot.com/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- Guit: Elegant, beautiful, modular and *production ready* gwt applications. http://code.google.com/p/guit/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- GWT API for non Java based platforms http://code.google.com/p/gwt4air/ http://www.gwt4air.appspot.com/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- Guit: Elegant, beautiful, modular and *production ready* gwt applications. http://code.google.com/p/guit/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Recursive Editors
You need a *subeditor* for the foos. I.e. have FooEditor (implements EditorFoo) contain a subeditor for @Path(foos), of type CompositeEditorListFoo, Foo, FooEditor (or ListEditorFoo, FooEditor). -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/26WK2KqKsfcJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: RequestFactory: Usage of the EntityService / EntityLocator / ServiceLocator pattern
ServiceLocator is the only mean you can use instance methods in your service, instead of static methods. It's up to you to choose. I believe both will continue to be supported (I can't see any reason it wouldn't be) -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/MXXfpIHlzn0J. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Aw: Is it possible to go to a new Place without inserting a new history item?
On Thursday, July 7, 2011 5:46:44 PM UTC+2, Eugen Paraschiv wrote: Yes, I am aware that if I don't include the tokenizer in the mapping, it works fine. The problem with that is that it's an all or nothing solution, whereas I'm looking for a programatic way of choosing when the navigation should add a new history item and when it should not. It seems to be a very simple thing to do - a flag in the PlaceChangeEvent (support for this seems to exist in various other gwt projects - GWTP for instance). I'll also try to give more detail on my use case: I'm navigating to a new Place/Activity with the url looking like this: abc:null. This page has a list of items, which can be selected, and this selection changes the URL as well, adding the id at the end - abc:1, abc:2. This happens automatically and so what I'm getting is two events added to the history - first abc:null and then, automatically abc:1. That messes with the history completely - back now clearly won't work (will go to abc:null). So, what I'd like to do is make the first navigation (to abc:null) not add it's event to history (because I know that selection will add a history entry anyways). If I could do that, then a single entry would end up in history and the world will be right again :). How about fixing the root issue? namely that you're firing a second place change automatically just after the abc:null. as I understand it, your abc:null place means the list of items with the first one selected, which is different from the item of id 1, with the list of items where it'd be selected (that'd be the definition of abc:1). -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/bwG6qU0ZwTYJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: CellTable with SimplePager displaying GAE datastore data in async
Hi Ioan, thank you for your reply. Indeed I use objectify and to be honest I have not used the offset ever, however, when I was looking what's the best feature to use I stamped upon this thread https://groups.google.com/d/topic/objectify-appengine/tkC103e2ILQ/discussion and so I have only used cursors so far. I may have to rethink my strategy, since I do not expect to have more than 8000-1 records and offset sounds appealing. I will let you know if it works out! Thanks, George -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/dcAuokGXrgkJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Aw: Is it possible to go to a new Place without inserting a new history item?
you said:first abc:null and then, automatically abc:1. That messes with the history completely - back now clearly won't work (will go to abc:null). this is because of ur ABCActivity is not singlton, if it is singlton it wont call the method(probably initial method) which will setPlaceName(null); OR this method is called in activity's start method, because when you request an activity it will call the start method,but in same activity's different place. From: Thomas Broyer t.bro...@gmail.com To: google-web-toolkit@googlegroups.com Sent: Friday, July 8, 2011 4:46 PM Subject: Re: Aw: Is it possible to go to a new Place without inserting a new history item? On Thursday, July 7, 2011 5:46:44 PM UTC+2, Eugen Paraschiv wrote: Yes, I am aware that if I don't include the tokenizer in the mapping, it works fine. The problem with that is that it's an all or nothing solution, whereas I'm looking for a programatic way of choosing when the navigation should add a new history item and when it should not. It seems to be a very simple thing to do - a flag in the PlaceChangeEvent (support for this seems to exist in various other gwt projects - GWTP for instance). I'll also try to give more detail on my use case: I'm navigating to a new Place/Activity with the url looking like this: abc:null. This page has a list of items, which can be selected, and this selection changes the URL as well, adding the id at the end - abc:1, abc:2. This happens automatically and so what I'm getting is two events added to the history - first abc:null and then, automatically abc:1. That messes with the history completely - back now clearly won't work (will go to abc:null). So, what I'd like to do is make the first navigation (to abc:null) not add it's event to history (because I know that selection will add a history entry anyways). If I could do that, then a single entry would end up in history and the world will be right again :). How about fixing the root issue? namely that you're firing a second place change automatically just after the abc:null. as I understand it, your abc:null place means the list of items with the first one selected, which is different from the item of id 1, with the list of items where it'd be selected (that'd be the definition of abc:1). -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/bwG6qU0ZwTYJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: RequestFactory: Usage of the EntityService / EntityLocator / ServiceLocator pattern
On Jul 8, 10:42 am, Thomas Broyer t.bro...@gmail.com wrote: ServiceLocator is the only mean you can use instance methods in your service, instead of static methods. It's up to you to choose. I believe both I'm rather interested in what's the more elegant way to manage persistence via RF. -Alex -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: RequestFactory: Usage of the EntityService / EntityLocator / ServiceLocator pattern
All things 'static' are generally seen as not elegant in Java, so using a ServiceLocator would make more elegant. YMMV. Also, elegant doesn't necessarily match with pragmatic, so there might be additional costs to making things elegant. If you ask me, I'd go with instance methods and a ServiceLocator (and dependency injection), because it makes testing the service with mock dependencies easier (less error prone, make it possible to test in parallel with different dependency mocks, etc.) -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/dPztG5JCrSkJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: GWT 2.4 - Mobile Web App
Okay, I have found that the ScrollPanel implements already touch events and do a scroll event on mobile devices. However, I have found that on IPhone4, the scrolling is smooth, fast, whereas on Android Froyo and Android Gingerbread, the scrolling isn't fast, it just slides vertically or horizontally but hardly. Sometimes, suddenly it moves fast and scrolls as on IPhone device, then it just hangs and gets back to the slow scrolling. Is there any fix for that or shall I wait for the final Release of GWT 2.4 ? Thank's! -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/9LH7uE2WN_IJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Linking multiple GWT applciations..
So you want to have a single app (your dashboard, but independently develop each game as a totally separated gwt app, is that right? Total flexibility, no? First, there have been countless questions about how to communicate between 2 (supposedly) independent GWT apps. Secondly, this design, despite being flexible in theory, is by far tight in practice. Imagine you want to add a 3rd game, you will have to do another IF and full build of the dashboard, just to show it up. What I recommend is have a lightweight dashboard, with just a GameData widget (that contains the link to the actual JS, an image, etc). When you click on one, you should either navigate (be redirected) to an Url, OR inject the JS and have it look for a specific contained (like div id=gameSpace). Regards, Alex -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/Fgl6kEIZ8UIJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Application will not run outside dev mode (gwt 2.3)
Hi Ok, I managed to locate and fix the problem, which I suspect is a GWT bug. What it had was something like this: public final static MyRpcServiceAsync rpc = GWT.create(MyRpcService.class); public void onModuleLoad() { rpc.bootstrap(new AsyncCallbackBootstrap() { ... public void onSuccess(Bootstrap b) { RootPanel rootPanel = RootPanel.get(); rootPanel.add(...); ... } } That failed outside devmode, but when i changed that to (changing rootPanel from local to class variable): public final static MyRpcServiceAsync rpc = GWT.create(MyRpcService.class); private RootPanel rootPanel; public void onModuleLoad() { rootPanel = RootPanel.get(); rpc.bootstrap(new AsyncCallbackBootstrap() { ... public void onSuccess(Bootstrap b) { rootPanel.add(...); ... } } That took me a while to figure out. Best regards Jens On Jul 7, 9:06 am, Jens djar...@gmail.com wrote: Yes, I ran the GWT compiler to ensure the source for both hosted mode and non hosted mode would be the same. I have tested 5 setups: 1) Development mode (gwt internal jetty) with ?gwt.codesvr 2) Development mode (external server, tomcat) with ?gwt.codesvr 3) Development mode (gwt internal jetty) without ?gwt.codesvr but with a gwt compile in eclipse 4) Development mode (external server, tomcat) without ?gwt.codesvr but with a gwt compile in eclipse 5) External tomcat server deployed as a war (where the war is simply a zip of the war dir in eclipse) 1) 2) Works as expected 3) 4) gives the Uncaught TypeError: Cannot read property 'com_google_gwt_user_client_rpc_impl_RemoteServiceProxy_serializer' of undefined error 5) gives me an Uncaught TypeError: Cannot read property 'f' of undefined My guess is that some changes i made in the rpc methods trigger this. Best regards Jens On Jul 6, 9:08 pm, Magno Machado magn...@gmail.com wrote: Did you ran GWT Compiler and are the compiled files (the *.cache.html, module.nocache.js and etc) updated? Or are you simply running devmode and removing the ?gwt.codesvr from the url? On Wed, Jul 6, 2011 at 1:13 PM, Jens djar...@gmail.com wrote: Hi I have an application that i have been working on for a while, but now suddenly the application will not run outside dev mode. If i remove the gwt.codesvr=127.0.0.1:9997 from my url, the application stops working (it will not bootstrap). After digging a bit around i found the following javascript stacktrace in chrome: Uncaught TypeError: Cannot read property 'com_google_gwt_user_client_rpc_impl_RemoteServiceProxy_serializer' of undefined (anonymous function) FDA307FC33B43DADD6B98D9EE42A955C.cache.html:976 gwtOnLoad FDA307FC33B43DADD6B98D9EE42A955C.cache.html:22850 maybeStartModule myapp.nocache.js:40 allocationrule.onScriptLoad myapp.nocache.js:273 (anonymous function)FDA307FC33B43DADD6B98D9EE42A955C.cache.html:22858 Any clues on what going on here? Best regards Jens -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- Magno Machado Paulohttp://blog.magnomachado.com.brhttp://code.google.com/p/emballo/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Aw: Is it possible to go to a new Place without inserting a new history item?
I get where you're coming from with this, but consider this scenario: I now have the following entities in the list: 1, 2, 3, so the first element in the list would be 1. When going to the list, I would go to abc:1 which is fine - 1 will be selected and nothing else will happen (a place changed event will still be fired, but GWT will figure out that I'm navigating to the same place and ignore it). But then, 1 is deleted and so the list is 2, 3..., so the hardcoded navigation to 1 doesn't work any more. I cannot keep recalculating the URLs based on the first element of the list, because that would mean HTTP requests and queries just to navigate somewhere. What's worse is that 1 2 3 are id's so it will be dependent on the id generation strategy I'm using - if for instance 1 is deleted, then it may be reused for a new entity (it won't but just for the sake of the argument), which would lead to invalid bookmarks. Perhaps the solution is to consider abc:null as a place where no element is selected and then let the user select the element. Thanks for the feedback. Eugen. On Fri, Jul 8, 2011 at 11:46 AM, Thomas Broyer t.bro...@gmail.com wrote: On Thursday, July 7, 2011 5:46:44 PM UTC+2, Eugen Paraschiv wrote: Yes, I am aware that if I don't include the tokenizer in the mapping, it works fine. The problem with that is that it's an all or nothing solution, whereas I'm looking for a programatic way of choosing when the navigation should add a new history item and when it should not. It seems to be a very simple thing to do - a flag in the PlaceChangeEvent (support for this seems to exist in various other gwt projects - GWTP for instance). I'll also try to give more detail on my use case: I'm navigating to a new Place/Activity with the url looking like this: abc:null. This page has a list of items, which can be selected, and this selection changes the URL as well, adding the id at the end - abc:1, abc:2. This happens automatically and so what I'm getting is two events added to the history - first abc:null and then, automatically abc:1. That messes with the history completely - back now clearly won't work (will go to abc:null). So, what I'd like to do is make the first navigation (to abc:null) not add it's event to history (because I know that selection will add a history entry anyways). If I could do that, then a single entry would end up in history and the world will be right again :). How about fixing the root issue? namely that you're firing a second place change automatically just after the abc:null. as I understand it, your abc:null place means the list of items with the first one selected, which is different from the item of id 1, with the list of items where it'd be selected (that'd be the definition of abc:1). -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/bwG6qU0ZwTYJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Aw: Is it possible to go to a new Place without inserting a new history item?
That is true. In my case however, making the activity a singleton introduces a degree of complexity into the system, and I would rather not deal with that complexity unless I have to. If your use case is such that you need the client-side caching and you have done proper profiling and reached this conclusion, good, but to use singletons for performance reasons (I'm guessing that's the idea behind the singleton activities) seems to be a premature optimization in my case. Thanks for the answer and the help. Eugen. On Fri, Jul 8, 2011 at 12:24 PM, Abduxkur Ablimit sugar...@yahoo.comwrote: you said:first abc:null and then, automatically abc:1. That messes with the history completely - back now clearly won't work (will go to abc:null). this is because of ur ABCActivity is not singlton, if it is singlton it wont call the method(probably initial method) which will setPlaceName(null); OR this method is called in activity's start method, because when you request an activity it will call the start method,but in same activity's different place. -- *From:* Thomas Broyer t.bro...@gmail.com *To:* google-web-toolkit@googlegroups.com *Sent:* Friday, July 8, 2011 4:46 PM *Subject:* Re: Aw: Is it possible to go to a new Place without inserting a new history item? On Thursday, July 7, 2011 5:46:44 PM UTC+2, Eugen Paraschiv wrote: Yes, I am aware that if I don't include the tokenizer in the mapping, it works fine. The problem with that is that it's an all or nothing solution, whereas I'm looking for a programatic way of choosing when the navigation should add a new history item and when it should not. It seems to be a very simple thing to do - a flag in the PlaceChangeEvent (support for this seems to exist in various other gwt projects - GWTP for instance). I'll also try to give more detail on my use case: I'm navigating to a new Place/Activity with the url looking like this: abc:null. This page has a list of items, which can be selected, and this selection changes the URL as well, adding the id at the end - abc:1, abc:2. This happens automatically and so what I'm getting is two events added to the history - first abc:null and then, automatically abc:1. That messes with the history completely - back now clearly won't work (will go to abc:null). So, what I'd like to do is make the first navigation (to abc:null) not add it's event to history (because I know that selection will add a history entry anyways). If I could do that, then a single entry would end up in history and the world will be right again :). How about fixing the root issue? namely that you're firing a second place change automatically just after the abc:null. as I understand it, your abc:null place means the list of items with the first one selected, which is different from the item of id 1, with the list of items where it'd be selected (that'd be the definition of abc:1). -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/bwG6qU0ZwTYJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Aw: Is it possible to go to a new Place without inserting a new history item?
On Friday, July 8, 2011 12:57:01 PM UTC+2, Eugen Paraschiv wrote: I get where you're coming from with this, but consider this scenario: I now have the following entities in the list: 1, 2, 3, so the first element in the list would be 1. When going to the list, I would go to abc:1 which is fine - 1 will be selected and nothing else will happen (a place changed event will still be fired, but GWT will figure out that I'm navigating to the same place and ignore it). But then, 1 is deleted and so the list is 2, 3..., so the hardcoded navigation to 1 doesn't work any more. That's what you're doing right now, not what I'm suggesting. I cannot keep recalculating the URLs based on the first element of the list, because that would mean HTTP requests and queries just to navigate somewhere. Why would you recalculate the URLs? (see below) When you go to abc:null, it shows the list and 'selects' the first one (be it abc:1, or abc:2, it depends what the list contains) When you go to abc:1, it shows the first item (if it exists) and also shows the list with that item selected. Where you might have issues is if your list and detail are two distinct activities, but then again, it's a design flaw: you're not navigating to abc:1, you're navigating to abc:null (which happens to also display abc:1), firing a subsequent navigation to abc:1 is IMO a mistake, and that's what you should try to fix, rather than workaround the consequences. There are several possible fixes: - abc:null triggers a special details activity (or more probably a details activity in a special state) that waits for an event on the EventBus before doing anything. the list activity, when loading from abc:null, dispatches such an event pointing to the first item in the list. - calculating places, as you said, each time you want to go to the list, to actually go to the first item in the list instead. and there are probably others. What's worse is that 1 2 3 are id's so it will be dependent on the id generation strategy I'm using - if for instance 1 is deleted, then it may be reused for a new entity (it won't but just for the sake of the argument), which would lead to invalid bookmarks. That's another issue, dependent on your PlaceTokenizer and ID generation stategy. It's up to you to define whether a given URL can be reused or not. Perhaps the solution is to consider abc:null as a place where no element is selected and then let the user select the element. It'd make things much easier for sure! but the event-based approach above shouldn't be that hard to implement I guess. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/SOaVQv1lrxcJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Aw: Re: Aw: Is it possible to go to a new Place without inserting a new history item?
Am Freitag, 8. Juli 2011 12:57:01 UTC+2 schrieb Eugen Paraschiv: Perhaps the solution is to consider abc:null as a place where no element is selected and then let the user select the element. Thats what I do when a user visits a place the first time after a fresh app start. Once the user selects something I go to the new place that reflects the selection. In addition I update the menu item link that leads to that place. That way the user can navigate away..but when he comes back to that place he sees the last selection he has done. So basically I only do placeController.goTo(..) when the state changes inside a place. All other navigation is done directly with Hyperlink instances with the history token as url (so all my navigation widgets listen to PlaceChangeEvent and update the corresponding hyperlink). For example I have a side menu which contains new Hyperlink(#employees). Once an employee is selected in the list the side menu item url gets updated to #/employees/selected id. Thus the selection is saved inside the hyperlink itself. That was a nice solution for me and maybe for you too. Just imagine if you select an item automatically, it may occur the case that the user is not interested to see that automatically selected item and then you have also done some additional http requests just to load the one the user is not interested in. -- J. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/Q1uRZLsPglgJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Aw: Re: Aw: Is it possible to go to a new Place without inserting a new history item?
And what about user experience? If the user actually bookmarks abc:null and the app treats abc:null as select the first entry in the list then the selection may change over time if some editing is done (adding/removing items). If the user is unexperienced and is not interested in the url thing it is maybe confusing that a bookmark gives different results over time. That can not be solved by a nifty url history token because the interpretation of that token is the problem in that case. The only solution would be to not use something like abc:null and instead to figure out which item is the first in the list to be able to select it on an id basis prior the actual place change. Or am I missing something? Because of the user experience with bookmarking we do not select anything like the first entry in that list/dropdown whatever by default in our app. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/zGVFz_WFWKEJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Re: Aw: Is it possible to go to a new Place without inserting a new history item?
Good point about the user experience - it does have a potentially high degree of inconsistency if I make abc:null select the first entry, same as abc:1 this time and abc:2 the next. I will do as you suggest, abc:null will select nothing, and it will be up to the user to actually select something from the list. Initially I tried not to do that so that I wouldn't have to implement an unselected state for some of the widgets, but I'm seeing now that the complexity added to navigation and state management simply isn't worth it. Thanks again for the help and suggestions. Eugen. On Fri, Jul 8, 2011 at 2:39 PM, Jens jens.nehlme...@gmail.com wrote: And what about user experience? If the user actually bookmarks abc:null and the app treats abc:null as select the first entry in the list then the selection may change over time if some editing is done (adding/removing items). If the user is unexperienced and is not interested in the url thing it is maybe confusing that a bookmark gives different results over time. That can not be solved by a nifty url history token because the interpretation of that token is the problem in that case. The only solution would be to not use something like abc:null and instead to figure out which item is the first in the list to be able to select it on an id basis prior the actual place change. Or am I missing something? Because of the user experience with bookmarking we do not select anything like the first entry in that list/dropdown whatever by default in our app. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/zGVFz_WFWKEJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Aw: Is it possible to go to a new Place without inserting a new history item?
To answer some of your feedback - there is a single Activity for the entire page. About the calculation of the URL, the reason behind URL recalculation each time was to be able to navigate to abc:id directly and bypass the entire problem with first going to abc:null and handling that scenario. The solution I try out is making abc:null unselected - no item will be selected at that point. Thanks for the feedback. I will keep the event based solution in mind for more complex scenarios. Eugen. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/f0cTfHp88nAJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: GWT + Spring Security
Hi Kevin, thanks for your answer. I tried to do it on the interface my server-side code uses as the implementation contract but I was using a JSR-250 annotation @RolesAllowed, which wasn't on my client scope. I just tried the @PreAuthorize annotation and it seems to work on the client-side. Do I need the DispatcherServlet in order to make the annotation works? 2011/7/7 Kevin Jordan ke...@kjordan.net It's been a while since I've set mine up to do this, but when you say you're setting them in the interface on the client side, are you trying them on the Async interface or the interface your server-side code implements off of? If you do it on the interface your server- side code uses as the implementation contract, it will automatically get those for spring security to check on the server-side and if you set them up with spring doing the intercepting of the URL with something such as org.springframework.web.servlet.DispatcherServlet and in its myservletnamefromwebxml-servlets.xml, do something like ?xml version=1.0 encoding=UTF-8? beans xmlns=http://www.springframework.org/schema/beans; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:util=http://www.springframework.org/schema/util; xsi:schemaLocation= http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd; bean id=urlMapping class=org.gwtwidgets.server.spring.GWTHandler property name=mappings map entry key=/myService.rpc value-ref=MyRPCService / /map /property /bean /beans Note that I'm using the GWTHandler bean from gwt-sl (http:// sourceforge.net/projects/gwt-widget/files/GWT%20Server%20Library/) to do the URL mapping since it does better integration with GWT than spring's built-in handlers do. You may also want to look into gwtsecurity to send better exceptions to your client: http://code.google.com/p/gwtsecurity/ On Jul 7, 1:02 pm, Renato Beserra renatobese...@gmail.com wrote: Thanks for your answer. I considered something like that, but every restricted rpc method implementation has to call another method, with its own interface secured by annotations, right? 2011/7/7 Juan Pablo Gardella gardellajuanpa...@gmail.com Hi Renato, I have a service layer, so in this method I use JSR250 http://en.wikipedia.org/wiki/JSR_250annotations, Spring security can work with this API. In client side I don't protect the invocations. In server side, spring security throws an exception, if try to access to a protected method, and travel to the client. I wrap it in a class and show an alert to the user. Juan 2011/7/7 Renato Beserra renatobese...@gmail.com Hi, I am integrating a GWT application with Spring Security and I got a great example on a previous thread - http://groups.google.com/group/google-web-toolkit/browse_thread/threa But now I want to secure my rpc calls, but i have a problem: Spring Security provides some annotations that i should use on the method declaration. But in GWT RPC the interface should be defined on client side, so the annotation is not valid. Is there a simpler solution other than making my rpc implementation to call a secured method on the server-side? Thanks in advance. -- Renato Beserra Sousa -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- Renato Beserra Sousa -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- Renato Beserra Sousa -- You
Re: RequestFactory: Usage of the EntityService / EntityLocator / ServiceLocator pattern
On Jul 8, 11:51 am, Thomas Broyer t.bro...@gmail.com wrote: If you ask me, I'd go with instance methods and a ServiceLocator (and dependency injection), Is there anywhere a concrete code sample for this pattern? I'm considering to use Dep. Injection too. Thx again for the info! -Alex -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: CellTable with SimplePager displaying GAE datastore data in async
Ioan it works fine, thank you! -George -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/UtFKujFHj4kJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: RequestFactory: Usage of the EntityService / EntityLocator / ServiceLocator pattern
See http://wanderingcanadian.posterous.com/guiced-up-gwt-requestfactory and https://github.com/mgenov/injecting-request-factory -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/IBjlEqCX0fgJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Working with GWT 2.3 and MyBatis
Hello. The problem is a missing XML file where the configuration database, and so gives an error of IO. bye Fabricio 2011/6/28 Geraldo Lopes geraldo...@gmail.com Gwt is persistent agnostic. It looks like your client code is referencing server code. When you compile the client code it gets translated to javascript, and run in the browser, and because of this there are restrictions to which code can be translated. http://code.google.com/intl/en/webtoolkit/doc/latest/DevGuideCodingBasics.html#DevGuideJavaCompatibility Hope this helps, Geraldo Lopes de Souza On 28 jun, 10:30, peter faulk mikesw...@gmail.com wrote: I am new to using GWT, and I am trying to get some simple persistence going using MyBatis. Under the server folder/directory, I have a connection factory source file that simply reads from a configuration.xml in order to create a MyBatis SqlSessionFactory object. In my project .gwt.xml, I path set for for both server and client. I have both the mybatis-3.0.5.jar and the mybatis-3.0.5- sources.jar in my classpath and in the WEB-INF\lib directory. When run the GWT Compile Project, I see the following errors in my ConnectionFactory.java: org.apache.ibatis.io.Resources cannot be resolved org.apache.ibatis.session.SqlSessionFactory cannot be resolved It is clear that the jar file is not being recognized or picked up during compilation. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: GWT + Spring Security
You'll need to have your service invoked as a Spring Bean somehow to make the annotations take effect. It won't work as just a servlet entry in your web.xml. DispatcherServlet is one of the easiest way to make it do that. On Jul 8, 7:11 am, Renato Beserra renatobese...@gmail.com wrote: Hi Kevin, thanks for your answer. I tried to do it on the interface my server-side code uses as the implementation contract but I was using a JSR-250 annotation @RolesAllowed, which wasn't on my client scope. I just tried the @PreAuthorize annotation and it seems to work on the client-side. Do I need the DispatcherServlet in order to make the annotation works? 2011/7/7 Kevin Jordan ke...@kjordan.net It's been a while since I've set mine up to do this, but when you say you're setting them in the interface on the client side, are you trying them on the Async interface or the interface your server-side code implements off of? If you do it on the interface your server- side code uses as the implementation contract, it will automatically get those for spring security to check on the server-side and if you set them up with spring doing the intercepting of the URL with something such as org.springframework.web.servlet.DispatcherServlet and in its myservletnamefromwebxml-servlets.xml, do something like ?xml version=1.0 encoding=UTF-8? beans xmlns=http://www.springframework.org/schema/beans; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:util=http://www.springframework.org/schema/util; xsi:schemaLocation= http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd; bean id=urlMapping class=org.gwtwidgets.server.spring.GWTHandler property name=mappings map entry key=/myService.rpc value-ref=MyRPCService / /map /property /bean /beans Note that I'm using the GWTHandler bean from gwt-sl (http:// sourceforge.net/projects/gwt-widget/files/GWT%20Server%20Library/) to do the URL mapping since it does better integration with GWT than spring's built-in handlers do. You may also want to look into gwtsecurity to send better exceptions to your client:http://code.google.com/p/gwtsecurity/ On Jul 7, 1:02 pm, Renato Beserra renatobese...@gmail.com wrote: Thanks for your answer. I considered something like that, but every restricted rpc method implementation has to call another method, with its own interface secured by annotations, right? 2011/7/7 Juan Pablo Gardella gardellajuanpa...@gmail.com Hi Renato, I have a service layer, so in this method I use JSR250 http://en.wikipedia.org/wiki/JSR_250annotations, Spring security can work with this API. In client side I don't protect the invocations. In server side, spring security throws an exception, if try to access to a protected method, and travel to the client. I wrap it in a class and show an alert to the user. Juan 2011/7/7 Renato Beserra renatobese...@gmail.com Hi, I am integrating a GWT application with Spring Security and I got a great example on a previous thread - http://groups.google.com/group/google-web-toolkit/browse_thread/threa But now I want to secure my rpc calls, but i have a problem: Spring Security provides some annotations that i should use on the method declaration. But in GWT RPC the interface should be defined on client side, so the annotation is not valid. Is there a simpler solution other than making my rpc implementation to call a secured method on the server-side? Thanks in advance. -- Renato Beserra Sousa -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- Renato Beserra Sousa -- You received this message because you are subscribed to
Re: GWT + Spring Security
You just solved my doubt. The DispatcherServlet looks very simple with your explanation and I will try to use it. Thank you very much! Best Regards, 2011/7/8 Kevin Jordan ke...@kjordan.net You'll need to have your service invoked as a Spring Bean somehow to make the annotations take effect. It won't work as just a servlet entry in your web.xml. DispatcherServlet is one of the easiest way to make it do that. On Jul 8, 7:11 am, Renato Beserra renatobese...@gmail.com wrote: Hi Kevin, thanks for your answer. I tried to do it on the interface my server-side code uses as the implementation contract but I was using a JSR-250 annotation @RolesAllowed, which wasn't on my client scope. I just tried the @PreAuthorize annotation and it seems to work on the client-side. Do I need the DispatcherServlet in order to make the annotation works? 2011/7/7 Kevin Jordan ke...@kjordan.net It's been a while since I've set mine up to do this, but when you say you're setting them in the interface on the client side, are you trying them on the Async interface or the interface your server-side code implements off of? If you do it on the interface your server- side code uses as the implementation contract, it will automatically get those for spring security to check on the server-side and if you set them up with spring doing the intercepting of the URL with something such as org.springframework.web.servlet.DispatcherServlet and in its myservletnamefromwebxml-servlets.xml, do something like ?xml version=1.0 encoding=UTF-8? beans xmlns=http://www.springframework.org/schema/beans; xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance; xmlns:util=http://www.springframework.org/schema/util; xsi:schemaLocation= http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd; bean id=urlMapping class=org.gwtwidgets.server.spring.GWTHandler property name=mappings map entry key=/myService.rpc value-ref=MyRPCService / /map /property /bean /beans Note that I'm using the GWTHandler bean from gwt-sl (http:// sourceforge.net/projects/gwt-widget/files/GWT%20Server%20Library/) to do the URL mapping since it does better integration with GWT than spring's built-in handlers do. You may also want to look into gwtsecurity to send better exceptions to your client:http://code.google.com/p/gwtsecurity/ On Jul 7, 1:02 pm, Renato Beserra renatobese...@gmail.com wrote: Thanks for your answer. I considered something like that, but every restricted rpc method implementation has to call another method, with its own interface secured by annotations, right? 2011/7/7 Juan Pablo Gardella gardellajuanpa...@gmail.com Hi Renato, I have a service layer, so in this method I use JSR250 http://en.wikipedia.org/wiki/JSR_250annotations, Spring security can work with this API. In client side I don't protect the invocations. In server side, spring security throws an exception, if try to access to a protected method, and travel to the client. I wrap it in a class and show an alert to the user. Juan 2011/7/7 Renato Beserra renatobese...@gmail.com Hi, I am integrating a GWT application with Spring Security and I got a great example on a previous thread - http://groups.google.com/group/google-web-toolkit/browse_thread/threa.. .. But now I want to secure my rpc calls, but i have a problem: Spring Security provides some annotations that i should use on the method declaration. But in GWT RPC the interface should be defined on client side, so the annotation is not valid. Is there a simpler solution other than making my rpc implementation to call a secured method on the server-side? Thanks in advance. -- Renato Beserra Sousa -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to
Re: secure widgets
looks to me like a dead end for developing security sensitive UI with GWT. thank you Robert. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Youtube iFrame z-index problem
Presumably you're using Internet Explorer...which has issues showing HTML elements over other objects on the page that are rendered natively by the OS (iframes, flash, select boxes, etc). To get around this limitation, GWT utilizes a hack where you put an iframe shim behind the popup panel's contents so the shim iframe obscures the other one. See the code in PopupImplIE6 for how its used - there's also a link in the code to a blog posting w/ a fuller explanation. On Jul 7, 10:16 am, tobirius t.herrm...@alkacon.com wrote: I am struggling to put UI elements above an embedded youtube iframe. No z-index seems large enough to get on top of the iframe. Only when using a PopupPanel it seems to be possible to show content above the iframe. I wonder how this is done. What is so special about the PopupPanel that it is always on top? Greetings, Tobias -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: secure widgets
In order to write a secure rich Web app, you need to think in terms of protecting the data, not the UI itself. This is true for any JS application, not just GWT. /dmc On Fri, Jul 8, 2011 at 9:44 AM, Alberto Sarubbi asaru...@gmail.com wrote: looks to me like a dead end for developing security sensitive UI with GWT. thank you Robert. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- David Chandler Developer Programs Engineer, GWT+GAE w: http://code.google.com/ b: http://turbomanage.wordpress.com/ b: http://googlewebtoolkit.blogspot.com/ t: @googledevtools -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Recursive Editors
Thanks Thomas and Gal. Now I'm getting. [ERROR] [editorsampleproject] - Cycle detected in editor graph. Editor type com.google.gwt.editor.client.adapters.ListEditor at path foos can be reached again at path foos..foos I'm probably just going to abandon this and just manually get/set the objects. It isn't that much work since the object is recursive. I could've written it by hand a long time ago, but thought this was a good deep dive into editors. Seperate question because I *know *I'm going to need this in the future somewhere. How do you implement an editor on a Set? -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/_ULlinHJC40J. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Why no GWT for Calendar API?
On 7/7/2011 8:38 PM, Jim Douglas wrote: With 328 stars, it's the most popular open issue: http://code.google.com/p/google-web-toolkit/issues/detail?id=603 Thanks, but I'm asking about a GWT binding for the Google Calendar API, not j.u.Calendar. Cheers, jec -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: secure widgets
Agreed. What the client sends to the server can be the wild west. Never trust it. My recipe, YMMV, but my apps hide display of access limited objects on the client side(all are there in the js) but more to avoid confusion to users than as a security measure. The real security is on the server side that they cannot alter with js live editing tools or faked GET/POST/RPC requests. When they first login I get access privs from the datastore and put them into the server session attribs as well as pass them back to the client to control widget display per access. Client side: if (hasAccess(clientSession, const.SUPER)) showWidget(); Server side: public boolean doSomething() throws AccessException { HttpSession sess = getThreadLocalRequest().getSession(); if (hasAccess(sess,const.SUPER)) return(doSuperThing()); else throw new AccessException(Access denied!); } Comments welcome. Always looking for a better mousetrap. :-) -William -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/7eCBXy3XPOMJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Why no GWT for Calendar API?
Hmm, ok. Well, I see that the request was closed as not planned: http://code.google.com/p/gwt-google-apis/issues/detail?id=157 And this response from 2008 suggests working with the Java API on the server or the JavaScript API on the client: http://groups.google.com/group/google-web-toolkit/browse_thread/thread/1c8e9ef01528a9f0 I wouldn't want to try to work out the JSNI bindings for that, though. On Jul 8, 7:26 am, Jeffrey Chimene jchim...@gmail.com wrote: On 7/7/2011 8:38 PM, Jim Douglas wrote: With 328 stars, it's the most popular open issue: http://code.google.com/p/google-web-toolkit/issues/detail?id=603 Thanks, but I'm asking about a GWT binding for the Google Calendar API, not j.u.Calendar. Cheers, jec -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Why no GWT for Calendar API?
On 7/8/2011 7:47 AM, Jim Douglas wrote: Hmm, ok. Well, I see that the request was closed as not planned: http://code.google.com/p/gwt-google-apis/issues/detail?id=157 And this response from 2008 suggests working with the Java API on the server or the JavaScript API on the client: http://groups.google.com/group/google-web-toolkit/browse_thread/thread/1c8e9ef01528a9f0 I wouldn't want to try to work out the JSNI bindings for that, though. Thank-you for the search-fu! I'd considered the javascript solution, but it's the older API. This is an interesting discontinuity in the solution space. Cheers, jec -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: secure widgets
In protecting the data as David rightly suggests, you can protect the UI by returning SC_UNAUTHORIZED if an unauthenticated user attempts to access any remote service. I've overridden the RequestFactory onResponseReceived function which redirects to a login page if the response is SC_UNAUTHORIZED. See my answer on StackOverflow: http://stackoverflow.com/questions/6508238/gwt-authentication-for-some-part-of-application-using-gwt-login-page/6511218#6511218 -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/dyG-MeKIFnQJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Why no GWT for Calendar API?
There is a third party binding to the GData api for calendar: http://code.google.com/p/gwt-gdata/ -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/_XQHOsWfIvgJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Getting absolute paths an Editor from a Violation picked up from RequestContext onViolation
I'm using round-trip validation for my entities - i.e. I pick up any violations from RequestContext.onViolation then populate errors in the UI via an EditorVisitor. This mostly works well except I can't figure out how to get absolute paths of sub-editors from a violation. In my EditorVisitor I've had to implement a hack to get the last section of the path: public T void endVisit(EditorContextT ctx) { String path = ctx.getAbsolutePath(); //here's the hack if (path.contains(.)) { path = path.split(\\.)[1]; } for (Violation violation : errors) { if (path.equals(violation.getPath())) { ctx.getEditorDelegate().recordError(violation.getMessage(), null, null); } } } Clearly this will cause issues when sub-editors and editors have the same property names. Does anyone know if there's a way to work out the absolute path of an editor from a violation? Thanks, Will -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/qVcMjKfSy78J. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Youtube iFrame z-index problem
By default flash will display on top of everything else, regardless of any z-index Try adding ?wmode=Opaque to the end of you iFrame src URL. On Jul 7, 7:16 am, tobirius t.herrm...@alkacon.com wrote: I am struggling to put UI elements above an embedded youtube iframe. No z-index seems large enough to get on top of the iframe. Only when using a PopupPanel it seems to be possible to show content above the iframe. I wonder how this is done. What is so special about the PopupPanel that it is always on top? Greetings, Tobias -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Linking multiple GWT applciations..
Thanks for the comments Alex and Robert, I'm aware that this decoupling is against GWT's philosophy. The reason I'm still trying to keep it separate is because these are actually separate projects (each game) with different developers working on each part with separate svn code repos. The game code changes very rapidly. The pseudo code I mentioned in the post was just a crude illustration of the logic, although the design would be something more polymorphic. The portal's fundamental requirement is to be not only be able to dynamically load each game on-demand, but also to be able to send game client commands viz. launch, play, pause, quit, add-player, and, also have game server side control e.g register-checkpoint-callback, fetch- progress-report. I have the flexibility to have all games run off the same Tomcat server process along with the portal, but I'd like to keep their entry points and services separate from the portal's. The client side communication between portal and game should NOT be over HTTP, similarly server side communication between portal and game should NOT be over the wire. So it is in fact a tight/native portal-to-game integration that is needed. So what I'm really asking here is just project code modularisation. As in, I just need the flexibility to be able to develop code independently and be able to integrate the games when deploying the portal. The games need to be able to run in their own entry points so their devs can test them out independently without needing the portal. And I should be able to fetch the latest code for all games and test the portal. Rebuilding/redeploying all the code is not a major concern for us. Some deeper design details For the game plugin interface I have defined a client side interface (IPortalGameClient) and server side interface (IPortalGameServer) to abstract out all client and server communication between portal and game. Any game that wishes to plug into the portal needs to implement the client and server interfaces. On the portal client side a GameProxy (which also implements the IPortalGameClient) is used to talk to the Game client that can handle failure-retries, caching, etc. The portal needs to do the heavy lifting of managing sessions, player logins, check-pointing, resuming after failure, etc. Whew! I rambled on there .. sorry bout that. Appreciate any help on figuring this out. thanks, -Gautam. On Jul 8, 3:33 am, Alex Dobjanschi alex.dobjans...@gmail.com wrote: So you want to have a single app (your dashboard, but independently develop each game as a totally separated gwt app, is that right? Total flexibility, no? First, there have been countless questions about how to communicate between 2 (supposedly) independent GWT apps. Secondly, this design, despite being flexible in theory, is by far tight in practice. Imagine you want to add a 3rd game, you will have to do another IF and full build of the dashboard, just to show it up. What I recommend is have a lightweight dashboard, with just a GameData widget (that contains the link to the actual JS, an image, etc). When you click on one, you should either navigate (be redirected) to an Url, OR inject the JS and have it look for a specific contained (like div id=gameSpace). Regards, Alex -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: TabLayoutPanel selectTab() not working correctly
Making some progress but still having the same problem. If i change my onClick event to onMouseDown it works. Why it works on the mousedown and not the onclick im not sure. It seems to be something to do with the order that events are being triggered. If i call the add function to add a tab to the tabpanel and then call selectTab() to change the to the new tab in the onclick handler the selectTab() doesn't change the value. Maybe it's getting overridden by an event that is fired in the tabpanel? If i put it into to a onMouseOut event it works because the tab has been added and appears on the screen before i move my mouse and the onmouseout event is triggered. I would greatly appreciate some insight into why this might be happening. Thanks, -Mark On Jul 7, 9:08 am, Mark Wengranowski m...@greatlittlebox.com wrote: Hi everyone, I'm having a wierd problem with a TabLayoutPanel where the selectTab() function does not work when called from my custom header composite. So far this is what i've done. 1. Create a new UI binder composiete that has a tablayoutpanel 2. Create a custom header UI binder composite which consists of 3 labels. the labels are used for a url, close tab button, and new tab button. 3. Add the custom header to the tablayoutpanel 4. Created onClick events for the new tab label and the close tab label. What's weird is that if i call mylayoutpanel.selectTab(1) from inside my custom header with the onclick events it will not set the index or change the selected tab on the layoutpanel. I can call many other functions on mylayoutpanel such as setVisible(false) and they work just fine. If i Call selectTab() from the class that contains the tablayoutpanel it works just fine. I've followed it through the debugger and all of the references seem to be there. is there something im missing? -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Encountered a problem while deploying
Hi, When i deployed a project created with smartGWT, i got this following error Unable to update app: Error posting to URL: https://appengine.google.com/api/appversion/clonefiles?app_id=pojomarketversion=1; 500 Internal Server Error htmlhead meta http-equiv=content-type content=text/html;charset=utf-8 title500 Server Error/title /head body text=#00 bgcolor=#ff h1Error: Server Error/h1 h2The server encountered an error and could not complete your request.pIf the problem persists, please A HREF= http://code.google.com/appengine/community.html;report/A your problem and mention this error message and the query that caused it./h2 h2/h2 /body/html See the deployment console for more details Unable to update app: Error posting to URL: https://appengine.google.com/api/appversion/clonefiles?app_id=pojomarketversion=1; 500 Internal Server Error htmlhead meta http-equiv=content-type content=text/html;charset=utf-8 title500 Server Error/title /head body text=#00 bgcolor=#ff h1Error: Server Error/h1 h2The server encountered an error and could not complete your request.pIf the problem persists, please A HREF= http://code.google.com/appengine/community.html;report/A your problem and mention this error message and the query that caused it./h2 h2/h2 /body/html Regards, Swaminathan.G -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: secure widgets
we actually protect EVERY call to our server validating the user rights before proceeding to the service execution. it just doesn't seem right to show a user a button that he can't click because he don't have the permission to do. it sounds more logical not showing the button at all. of course, validations on server side will catch any click on a forbidden button, then comes the question: why would i show the button then?.. thanks for the advice people. may be i just don't get right the js gui development yet :) -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Why no GWT for Calendar API?
You don't need JSNI, there's a JsDatehttp://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/core/client/JsDate.htmlclass. Also, have a look at GodaTime, or JodaTime-GWT. The JodaTime is much cleaner and easier to use, and close to what's coming to Java 8 (JSR-310, alpha code at threeten.sourceforge.net) -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/YQARJjHMGOAJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Google plugin for Eclipse withou WindowBuilder (GWT Designer)
Glad to hear that! On Jul 8, 2:21 am, Sebastian open.sebast...@gmail.com wrote: Forget about it, the new update on the Designers beta Version fixed the problem. It now runs like a charm 2011/7/6 Sebastian open.sebast...@gmail.com Hello Vrto, may I ask which Ubuntu Version do you use? Is it 32 or 64 Bit? I am using 11.04 with AMD64 and can´t get the Designer running at all (Eclipse Indigo). I ask beacause it is a clean Installation and I supposed that the failure was on the Ubuntu side. 2011/6/16 Vrto michal.vrt...@gmail.com BTW, I've seen your Google IO 2011 presentation (n1) and I was surprised how fast GWT designer worked on your Windows machine (and it looked virtualized from Mac OS X if I remember correctly!). Is it possible that it's slower on Linux? With Eclipse on Sun's JRE? I guess I will try it with fresh install of Indigio, where my Eclipse installation will not be huge monster with billion of plugins if that's any better. On Jun 16, 10:41 pm, Eric Clayberg clayb...@google.com wrote: I would be curious as to how the latest GWT Designer build feels to you... http://code.google.com/webtoolkit/tools/download-gwtdesigner-beta.html On Jun 16, 1:08 pm, Vrto michal.vrt...@gmail.com wrote: I disabled that of course, but when Eclipse stars it does always stuff like updatinggwtdesignerpaletten, building somegwtdesigner stuff and I am minimalist I just dont want that heh :) On Jun 16, 7:02 pm, Renato Beserra renatobese...@gmail.com wrote: I don't like theGWTDesignereither, but how does it cause you problems? Is it opening your classes by default or something? 2011/6/16 Vrto michal.vrt...@gmail.com Hello, I like Google Plugin for Eclipse, but I don't likeGWT Designer. It's slow, buggy, keeps updating itself, loads terribly load and so on. Is there any chance of releasing google plugin withoutGWT Designer? Thanks! -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- Renato Beserra Sousa -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Getting absolute paths an Editor from a Violation picked up from RequestContext onViolation
Why aren't you using RequestFactoryEditorDriver#setViolationshttp://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/requestfactory/client/RequestFactoryEditorDriver.html#setViolations(java.lang.Iterable) ? -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/h9dkVf18BuYJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: secure widgets
Agreed! Don't show the button if the user doesn't have permissions. But also check perms on the server to protect against hackers. /dmc On Fri, Jul 8, 2011 at 2:54 PM, Alberto Sarubbi asaru...@gmail.com wrote: we actually protect EVERY call to our server validating the user rights before proceeding to the service execution. it just doesn't seem right to show a user a button that he can't click because he don't have the permission to do. it sounds more logical not showing the button at all. of course, validations on server side will catch any click on a forbidden button, then comes the question: why would i show the button then?.. thanks for the advice people. may be i just don't get right the js gui development yet :) -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- David Chandler Developer Programs Engineer, GWT+GAE w: http://code.google.com/ b: http://turbomanage.wordpress.com/ b: http://googlewebtoolkit.blogspot.com/ t: @googledevtools -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Pluggable modules
Great, success. Thanks. So I conclude it is impossible to pass a Java object from one GWT application client space, through JSNI to another GWT application client space even with the XS linker option. It only appears possible using JavaScriptObject subclasses, i.e. JScript overlays. I might need to bother you again, but I have lots to keep trying now :) Thanks again. Mike On Jul 5, 6:14 pm, lemaiol lema...@gmail.com wrote: I do not know really well gwt-exporter, but having a look at your question in SO, I have the feeling that you need somehow to pass real JS objects as parameters. I would try inheriting from JavaScritpObject: public class Person extends JavaScriptObject { protected Person() { // GWT JSO compliance requirement } // Use this factory method to create the entities public static Person create(String name, int age) { Person result = JSObject.create().cast(); // Maybe the name of the class JSObject used here is wrong (not compiled code!) result.setName(name); result.setAge(age); } public native String getName() /*-{ return this.name; // the use of this is here required!! }-*/; public native void setName(String name) /*-{ this.name = name; }-*/; ... } Hope it helps! Berto On Jul 4, 10:27 am, manstis michael.ans...@gmail.com wrote: Hi Berto, I've stuck everything on github; git://github.com/manstis/gwt-plugins.git plugin - the plugin pluginserver - the framework plugincommon contains my common model There's only about 10 files in all; so it's not so ominous. I thought this would be easier than trying to explain directly - I'm not expecting you to fix anything, it's just so you can see what I have and give some suggestions. As it stands, I can pass the common model class to the framework, but all attributes are undefined:http://stackoverflow.com/questions/6535303/gwt-gwt-exporter-passing-o... If you decided to try and run it; plugin and pluginserver WARs can be deployed to Tomcat (I use 6.0) and select the URL for the server portion. Cheers, Mike On Jul 3, 10:14 am,lemaiollema...@gmail.com wrote: Hi Mike, How are the modules loaded and how are they invoked? Berto On Jun 22, 2:10 pm, manstis michael.ans...@gmail.com wrote: Great, lots to play with :) Before I look into writing my own JSNI bridge, I've still been trying to use gwt-exporter, but. I've three GWT applications:- (1) Plugin (inherits Common) (2) Backend (inherits Common) (3) Common Plugin Contains:- ... echoButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { //Debugging statements shown -- shows 'callback' is not null PluginCallbackString callback = getPluginCallback(); Window.alert(Plugin.onModuleLoad.onClick.callback is + (callback != null ? not : ) + null); echo(text.getText(), callback); } }); ... private native void echo(String text, PluginCallbackString callback) /*-{ //Debugging statements shown -- shows 'callback' is not null alert(Plugin.echo.callback is + (callback != null ? not : ) + null); $wnd.com.anstis.pluginserver.CommonService.echo(text, callback); }-*/; Backend Contains:- public void onModuleLoad() { //Use gwt-exporter to generate the JSNI for CommonService.class GWT.create(CommonService.class); } CommonService is:- @Export public class CommonService implements Exportable { private static final EchoServiceAsync echoService = GWT.create(EchoService.class); public static void echo(String input, PluginCallbackString callback) { //Debugging statements shown -- shows 'callback' is null Window.alert(CommonService.echo.callback is + (callback != null ? not : ) + null); try { //The guts of the method, invoke a GWT-RPC call -- RTE, as 'callback' is null echoService.echo(input, callback); } catch (Exception e) { e.fillInStackTrace(); e.printStackTrace(System.out); Window.alert(e.getMessage()); } } } Common Simply defines PluginCallback, as follows:- public class PluginCallbackT implements AsyncCallbackT { public void onFailure(Throwable caught) {} public void onSuccess(T result) {} } My problem is that the PluginCallback instance is proven to be non- null in Plugin (both Java and JSNI methods), but is reported as null in Backends CommonService. Somewhere it is getting munged, but I only pass a Java Object from Plugin to JSNI (echo) to Java (CommonService) so don't understand why it's being nulled?!?! Any ideas (I'll post
Re: Pluggable modules
Should anybody else search for something similar and stumbles across this thread there is a working example at git://github.com/manstis/gwt-plugins.git On Jul 8, 8:50 pm, manstis michael.ans...@gmail.com wrote: Great, success. Thanks. So I conclude it is impossible to pass a Java object from one GWT application client space, through JSNI to another GWT application client space even with the XS linker option. It only appears possible using JavaScriptObject subclasses, i.e. JScript overlays. I might need to bother you again, but I have lots to keep trying now :) Thanks again. Mike On Jul 5, 6:14 pm, lemaiol lema...@gmail.com wrote: I do not know really well gwt-exporter, but having a look at your question in SO, I have the feeling that you need somehow to pass real JS objects as parameters. I would try inheriting from JavaScritpObject: public class Person extends JavaScriptObject { protected Person() { // GWT JSO compliance requirement } // Use this factory method to create the entities public static Person create(String name, int age) { Person result = JSObject.create().cast(); // Maybe the name of the class JSObject used here is wrong (not compiled code!) result.setName(name); result.setAge(age); } public native String getName() /*-{ return this.name; // the use of this is here required!! }-*/; public native void setName(String name) /*-{ this.name = name; }-*/; ... } Hope it helps! Berto On Jul 4, 10:27 am, manstis michael.ans...@gmail.com wrote: Hi Berto, I've stuck everything on github; git://github.com/manstis/gwt-plugins.git plugin - the plugin pluginserver - the framework plugincommon contains my common model There's only about 10 files in all; so it's not so ominous. I thought this would be easier than trying to explain directly - I'm not expecting you to fix anything, it's just so you can see what I have and give some suggestions. As it stands, I can pass the common model class to the framework, but all attributes are undefined:http://stackoverflow.com/questions/6535303/gwt-gwt-exporter-passing-o... If you decided to try and run it; plugin and pluginserver WARs can be deployed to Tomcat (I use 6.0) and select the URL for the server portion. Cheers, Mike On Jul 3, 10:14 am,lemaiollema...@gmail.com wrote: Hi Mike, How are the modules loaded and how are they invoked? Berto On Jun 22, 2:10 pm, manstis michael.ans...@gmail.com wrote: Great, lots to play with :) Before I look into writing my own JSNI bridge, I've still been trying to use gwt-exporter, but. I've three GWT applications:- (1) Plugin (inherits Common) (2) Backend (inherits Common) (3) Common Plugin Contains:- ... echoButton.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { //Debugging statements shown -- shows 'callback' is not null PluginCallbackString callback = getPluginCallback(); Window.alert(Plugin.onModuleLoad.onClick.callback is + (callback != null ? not : ) + null); echo(text.getText(), callback); } }); ... private native void echo(String text, PluginCallbackString callback) /*-{ //Debugging statements shown -- shows 'callback' is not null alert(Plugin.echo.callback is + (callback != null ? not : ) + null); $wnd.com.anstis.pluginserver.CommonService.echo(text, callback); }-*/; Backend Contains:- public void onModuleLoad() { //Use gwt-exporter to generate the JSNI for CommonService.class GWT.create(CommonService.class); } CommonService is:- @Export public class CommonService implements Exportable { private static final EchoServiceAsync echoService = GWT.create(EchoService.class); public static void echo(String input, PluginCallbackString callback) { //Debugging statements shown -- shows 'callback' is null Window.alert(CommonService.echo.callback is + (callback != null ? not : ) + null); try { //The guts of the method, invoke a GWT-RPC call -- RTE, as 'callback' is null echoService.echo(input, callback); } catch (Exception e) { e.fillInStackTrace(); e.printStackTrace(System.out); Window.alert(e.getMessage()); } } } Common Simply defines PluginCallback, as follows:- public class PluginCallbackT implements AsyncCallbackT { public void onFailure(Throwable caught) {} public void onSuccess(T result) {} } My problem is that the
Spring Security with GWT
Hi people, I am using GWT 2.3 and Spring Security 3. To explain my application structure a little bit. My WebContent folder contains: WebContent/ -WEB-INF/ -login.html -logout.html -secure/ ---index.html Starting my application and trying to access http://127.0.0.1.:/secure/index.html redirects me to http://127.0.0.1.:/login.html... That's the way it should be. After entering my credentials I get taken to my secured index.html. There I have a navigation bar containing a FormPanel which fires a POST j_spring_security_logout. My configuration says that in this case I should get taken to http://127.0.0.1.:/logout.html. The security log shows that the security chain is processing a redirect to this page. But the strange behaviour I stay on the secured index page in FF or IE. Obviously something blocks the redirect or do I have a general missunderstanding? Here some parts of my security file: security:http auto-config=true security:intercept-url pattern=/secure/index.html requires-channel=http access=IS_AUTHENTICATED_FULLY / security:form-login login-processing-url=/j_spring_security_check login-page=/login.html default-target-url=/secure/index.html authentication-failure-url=/logout.html / security:access-denied-handler error-page=/login.html / security:logout logout-success-url=/logout.html/ /security:http The log file after pressing logout button: org.springframework.security.web.FilterChainProxy - Converted URL to lowercase, from: '/j_spring_security_logout'; to: '/ j_spring_security_logout' DEBUG 23:25:06,632 [btpool0-1] org.springframework.security.web.FilterChainProxy - Candidate is: '/ j_spring_security_logout'; pattern is /**; matched=true DEBUG 23:25:06,632 [btpool0-1] org.springframework.security.web.FilterChainProxy - / j_spring_security_logout at position 1 of 11 in additional filter chain; firing Filter: 'ChannelProcessingFilter' DEBUG 23:25:06,632 [btpool0-1] security.web.access.intercept.DefaultFilterInvocationSecurityMetadataSource - Converted URL to lowercase, from: '/j_spring_security_logout'; to: '/ j_spring_security_logout' DEBUG 23:25:06,633 [btpool0-1] security.web.access.intercept.DefaultFilterInvocationSecurityMetadataSource - Candidate is: '/j_spring_security_logout'; pattern is /secure/ index.html; matched=false DEBUG 23:25:06,633 [btpool0-1] org.springframework.security.web.FilterChainProxy - / j_spring_security_logout at position 2 of 11 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter' DEBUG 23:25:06,633 [btpool0-1] springframework.security.web.context.HttpSessionSecurityContextRepository - Obtained a valid SecurityContext from SPRING_SECURITY_CONTEXT: 'org.springframework.security.core.context.SecurityContextImpl@441d0230: Authentication: org.springframework.security.authentication.UsernamePasswordAuthenticationToken@441d0230: Principal: org.springframework.security.core.userdetails.User@36ebcb: Username: user; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_USER; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@0: RemoteIpAddress: 127.0.0.1; SessionId: 1mkhid3rhfysw; Granted Authorities: ROLE_USER' DEBUG 23:25:06,633 [btpool0-1] org.springframework.security.web.FilterChainProxy - / j_spring_security_logout at position 3 of 11 in additional filter chain; firing Filter: 'LogoutFilter' DEBUG 23:25:06,633 [btpool0-1] security.web.authentication.logout.LogoutFilter - Logging out user 'org.springframework.security.authentication.UsernamePasswordAuthenticationToken@441d0230: Principal: org.springframework.security.core.userdetails.User@36ebcb: Username: user; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_USER; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@0: RemoteIpAddress: 127.0.0.1; SessionId: 1mkhid3rhfysw; Granted Authorities: ROLE_USER' and transferring to logout destination DEBUG 23:25:06,633 [btpool0-1] security.web.authentication.logout.SimpleUrlLogoutSuccessHandler - Using default Url: /logout.html DEBUG 23:25:06,633 [btpool0-1] org.springframework.security.web.DefaultRedirectStrategy - Redirecting to '/logout.html' DEBUG 23:25:06,633 [btpool0-1] springframework.security.web.context.HttpSessionSecurityContextRepository - SecurityContext is empty or anonymous - context will not be stored in HttpSession. DEBUG 23:25:06,633 [btpool0-1] springframework.security.web.context.SecurityContextPersistenceFilter - SecurityContextHolder now cleared, as request processing
Re: secure widgets
The idea behind security is simple, trust no one and trust nothing... only when who ever tries to access and authenticates them self and is authorized to access what ever it is the are attempting to access allow this action. So try and hide anything that a user should not have access to. This will prevent them form attempting to access this and limits the number of errors or warnings you will have to show. Always check the credentials on every single call don't assume that due to the user having access to a button they must have the rights check these rights instead. If at all possible do not provide access at all the more access you have to give the more likely it is this will be abused. If you think you are being paranoid you need to look for another job you can never be paranoid enough ;-) In all honesty I think that GWT is not a very good platform for secure applications for the simple reason that a lot of the hiding of functionality happens on the wrong system (the client side). Now there is a lot to say against security trough obscurity but look at it this way if you had never seen or heard a bout an iPhone or iPad would you want one? Exactly 99% of the people would say no to that and that means a big reduction in the number of people that might try and get one... If you are working on a system that should be as secure as possible I would advocate against GWT simply because as originally said most of the hiding of functionality happens on the wrong system which means that attackers gain a lot of knowledge that would otherwise be just that bit harder to come by. Of course there is nothing stopping them from gaining this knowledge anyway, but every hurdle is one more reason to leave your site for what it is and try to mess with your neighbors site instead. No matter how many people advocate against the obscurity argument less information is the reason wars have been lost and in this day and age where information makes Google... restricting access to information means slightly more security for your site no matter which way you look at it. On Fri, Jul 8, 2011 at 9:09 PM, David Chandler drfibona...@google.comwrote: Agreed! Don't show the button if the user doesn't have permissions. But also check perms on the server to protect against hackers. /dmc On Fri, Jul 8, 2011 at 2:54 PM, Alberto Sarubbi asaru...@gmail.comwrote: we actually protect EVERY call to our server validating the user rights before proceeding to the service execution. it just doesn't seem right to show a user a button that he can't click because he don't have the permission to do. it sounds more logical not showing the button at all. of course, validations on server side will catch any click on a forbidden button, then comes the question: why would i show the button then?.. thanks for the advice people. may be i just don't get right the js gui development yet :) -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- David Chandler Developer Programs Engineer, GWT+GAE w: http://code.google.com/ b: http://turbomanage.wordpress.com/ b: http://googlewebtoolkit.blogspot.com/ t: @googledevtools -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Re: Getting absolute paths an Editor from a Violation picked up from RequestContext onViolation
I guess because I was using SimpleBeanEditorDriver which doesn't have that method (until 2.4 is released I now see). Thanks for pointing it out. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/5C6SsxZygYUJ. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
Simulating button click in DialogBox with key event?
I know I'm missing something obvious here, but what's the current correct approach to catching a keyboard event to close a DialogBox or do something similar (i.e., simulate clicking the Save or OK button)? I found an older example that uses onNativePreviewEvent() that seems to be unsupported now, and I've got some other mischief running in a class derived from FocusPanel that overrides onKeyPress(), but but I can't seem to get anything working with anything derived from DialogBox... Thoughts or advice appreciated. -- You received this message because you are subscribed to the Google Groups Google Web Toolkit group. To post to this group, send email to google-web-toolkit@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
[gwt-contrib] Why are symbolMaps files not gzipped?
The subject says it all: why are symbolMaps files not gzipped? Each permutation produces, for our project, a 41Mb file. Fortunately we're only producing 2 permutations, but it still makes more than 80M that we don't (yet?) use, and there's no switch to turn them off. Gzipping brings the file size from 41M down to 1.4M! and because this used for logging, and because most people will probably log only errors (and maybe warnings) in production, I think the size outweighs the performance here. Not to mention that this has caused issues when it was introduced, with people keeping the default of generating them to war/WEB-INF and being refused upload of their app to AppEngine (files too big), and then wondering whether it was safe to simply not deploy them. So, would gzipping be an issue? or in other words, is it worth providing a patch for that? Thanks in advance -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: This patch substantially reduces the overhead of Java types in the output by minimizing vtable s... (issue1447821)
http://gwt-code-reviews.appspot.com/1447821/diff/6053/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java File dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java (right): http://gwt-code-reviews.appspot.com/1447821/diff/6053/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java#newcode516 dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java:516: } else { maybe a little cleaner to break the control flow into: else if (currentClass == program.getIndexedType(Array)) { ... } else { ... } http://gwt-code-reviews.appspot.com/1447821/diff/6053/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java#newcode521 dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java:521: } else { comment explaining why? http://gwt-code-reviews.appspot.com/1447821/diff/6053/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java File dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java (right): http://gwt-code-reviews.appspot.com/1447821/diff/6053/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java#newcode2161 dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java:2161: // don't implement, fall through to Object.getClass() why do arrays need to be different (add to comment?) http://gwt-code-reviews.appspot.com/1447821/diff/6053/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java#newcode2763 dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java:2763: private static final long AST_VERSION = 2; do we need to bump this version, since array classes will now be serialized differently? http://gwt-code-reviews.appspot.com/1447821/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: JsoNormalizer did not give unique names to devirtualized (issue1467812)
I'm not sure why the JsNamer classes (e.g. JsPrettyNamer) don't already do the right thing (don't they?). They definitely do have naming disambiguation logic, etc. Is there something more fundamental here? http://gwt-code-reviews.appspot.com/1467812/diff/1/dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java File dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java (right): http://gwt-code-reviews.appspot.com/1467812/diff/1/dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java#newcode198 dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java:198: } whitespace http://gwt-code-reviews.appspot.com/1467812/diff/1/dev/core/test/com/google/gwt/dev/jjs/impl/JsoDevirtualizerTest.java File dev/core/test/com/google/gwt/dev/jjs/impl/JsoDevirtualizerTest.java (right): http://gwt-code-reviews.appspot.com/1467812/diff/1/dev/core/test/com/google/gwt/dev/jjs/impl/JsoDevirtualizerTest.java#newcode67 dev/core/test/com/google/gwt/dev/jjs/impl/JsoDevirtualizerTest.java:67: static class Jso2 extends JavaScriptObject implements Iface2 {, break up into 2 lines for readability http://gwt-code-reviews.appspot.com/1467812/diff/1/dev/core/test/com/google/gwt/dev/jjs/impl/JsoDevirtualizerTest.java#newcode79 dev/core/test/com/google/gwt/dev/jjs/impl/JsoDevirtualizerTest.java:79: // The salient point in the results below is that the JSO method used for s/val1 and val1/val1 and val2 s/val2 and val3/val3 and val4 s/name the/name than the http://gwt-code-reviews.appspot.com/1467812/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] [google-web-toolkit] r10423 committed - Updating npapi plugin to remove gwtId from Jso objects (idenity fix),...
Revision: 10423 Author: cod...@google.com Date: Thu Jul 7 08:33:00 2011 Log: Updating npapi plugin to remove gwtId from Jso objects (idenity fix), adds a second map in LocalObjects. Review at http://gwt-code-reviews.appspot.com/1469803 http://code.google.com/p/google-web-toolkit/source/detail?r=10423 Added: /trunk/plugins/npapi/NPVariantUtil.h /trunk/user/test/com/google/gwt/core/client/JsIdentityTest.java Modified: /trunk/plugins/npapi/JavaObject.cpp /trunk/plugins/npapi/LocalObjectTable.h /trunk/plugins/npapi/NPVariantWrapper.h /trunk/plugins/npapi/ScriptableInstance.cpp /trunk/plugins/npapi/ScriptableInstance.h /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/background.html /trunk/user/test/com/google/gwt/core/CoreSuite.java === --- /dev/null +++ /trunk/plugins/npapi/NPVariantUtil.hThu Jul 7 08:33:00 2011 @@ -0,0 +1,132 @@ +#ifndef _H_NPVariantUtil +#define _H_NPVariantUtil + +#include Debug.h +#include mozincludes.h + +/** + * Wraps an NPVariant and provides various helper functions + */ +class NPVariantUtil { +public: + static int isBoolean(const NPVariant variant) { +return NPVARIANT_IS_BOOLEAN(variant); + } + + static bool getAsBoolean(const NPVariant variant) { +return NPVARIANT_TO_BOOLEAN(variant); + } + + // Return true if the variant is holding a regular integer or an integral double. + static int isInt(const NPVariant variant) { +if (NPVARIANT_IS_INT32(variant)) { + return 1; +} else if (NPVARIANT_IS_DOUBLE(variant)) { + // As of http://trac.webkit.org/changeset/72974 we get doubles for all + // numerical variants out of V8. + double d = NPVARIANT_TO_DOUBLE(variant); + int i = static_castint(d); + // Verify that d is an integral value in range. + return (d == static_castdouble(i)); +} else { + return 0; +} + } + + static int getAsInt(const NPVariant variant) { +if (isInt(variant)) { + if (NPVARIANT_IS_INT32(variant)) { +return NPVARIANT_TO_INT32(variant); + } else if (NPVARIANT_IS_DOUBLE(variant)) { +return static_castint(NPVARIANT_TO_DOUBLE(variant)); + } +} + +Debug::log(Debug::Error) getAsInt: variant + NPVariantUtil::toString(variant) not int Debug::flush; +return 0; + } + + static int isNull(const NPVariant variant) { +return NPVARIANT_IS_NULL(variant); + } + + static int isObject(const NPVariant variant) { +return NPVARIANT_IS_OBJECT(variant); + } + + static NPObject* getAsObject(const NPVariant variant) { +if (NPVARIANT_IS_OBJECT(variant)) { + return NPVARIANT_TO_OBJECT(variant); +} +Debug::log(Debug::Error) getAsObject: variant not object Debug::flush; +return 0; + } + + static int isString(const NPVariant variant) { +return NPVARIANT_IS_STRING(variant); + } + + static const NPString* getAsNPString(const NPVariant variant) { +if (NPVARIANT_IS_STRING(variant)) { + return NPVARIANT_TO_STRING(variant); +} +Debug::log(Debug::Error) getAsNPString: variant not string Debug::flush; +return 0; + } + + static std::string toString(const NPVariant variant) { +std::string retval; +// TODO(jat): remove sprintfs +char buf[40]; +NPObject* npObj; +switch (variant.type) { + case NPVariantType_Void: +retval = undef; +break; + case NPVariantType_Null: +retval = null; +break; + case NPVariantType_Bool: +retval = bool(; +retval += (NPVARIANT_TO_BOOLEAN(variant) ? true : false); +retval += ')'; +break; + case NPVariantType_Int32: +retval = int(; +snprintf(buf, sizeof(buf), %d), NPVARIANT_TO_INT32(variant)); +retval += buf; +break; + case NPVariantType_Double: +retval = double(; +snprintf(buf, sizeof(buf), %g), NPVARIANT_TO_DOUBLE(variant)); +retval += buf; +break; + case NPVariantType_String: +{ + retval = string(; + NPString str = NPVARIANT_TO_STRING(variant); + retval += std::string(str.UTF8Characters, str.UTF8Length); + retval += ')'; +} +break; + case NPVariantType_Object: +npObj = NPVARIANT_TO_OBJECT(variant); +snprintf(buf, sizeof(buf), obj(class=%p, , npObj-_class); +retval = buf; +snprintf(buf, sizeof(buf), count=%d, , npObj-referenceCount); +retval += buf; +snprintf(buf, sizeof(buf), %p), npObj); +retval += buf; +break; + default: +snprintf(buf, sizeof(buf), Unknown type %d, variant.type); +retval = buf; +break; +} +return retval; + } + +}; + +#endif === --- /dev/null +++ /trunk/user/test/com/google/gwt/core/client/JsIdentityTest.java Thu Jul 7 08:33:00 2011 @@ -0,0 +1,196 @@ +/* + * Copyright 2011 Google Inc. + * + * Licensed under the Apache
[gwt-contrib] Re: Fix JsInliner, to properly handle name scope tracking after multi-level inlining. Was causing l... (issue1472803)
I've deleted that comment (it was incorrect). The issue turns out to be an interaction between the JsInliner and JsObfuscateNamer. The issue is with how JsInliner manages the scope for names that are hoisted to new scopes via inlining. This fix solves the test-cases provided in the original issue (and duplicate issues). http://gwt-code-reviews.appspot.com/1472803/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] [google-web-toolkit] r10424 committed - Un-breaking the code due to failed test case with htmlunit...
Revision: 10424 Author: cod...@google.com Date: Thu Jul 7 10:09:23 2011 Log: Un-breaking the code due to failed test case with htmlunit Review by: con...@google.com http://code.google.com/p/google-web-toolkit/source/detail?r=10424 Deleted: /trunk/plugins/npapi/NPVariantUtil.h /trunk/user/test/com/google/gwt/core/client/JsIdentityTest.java Modified: /trunk/plugins/npapi/JavaObject.cpp /trunk/plugins/npapi/LocalObjectTable.h /trunk/plugins/npapi/NPVariantWrapper.h /trunk/plugins/npapi/ScriptableInstance.cpp /trunk/plugins/npapi/ScriptableInstance.h /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/background.html /trunk/user/test/com/google/gwt/core/CoreSuite.java === --- /trunk/plugins/npapi/NPVariantUtil.hThu Jul 7 08:33:00 2011 +++ /dev/null @@ -1,132 +0,0 @@ -#ifndef _H_NPVariantUtil -#define _H_NPVariantUtil - -#include Debug.h -#include mozincludes.h - -/** - * Wraps an NPVariant and provides various helper functions - */ -class NPVariantUtil { -public: - static int isBoolean(const NPVariant variant) { -return NPVARIANT_IS_BOOLEAN(variant); - } - - static bool getAsBoolean(const NPVariant variant) { -return NPVARIANT_TO_BOOLEAN(variant); - } - - // Return true if the variant is holding a regular integer or an integral double. - static int isInt(const NPVariant variant) { -if (NPVARIANT_IS_INT32(variant)) { - return 1; -} else if (NPVARIANT_IS_DOUBLE(variant)) { - // As of http://trac.webkit.org/changeset/72974 we get doubles for all - // numerical variants out of V8. - double d = NPVARIANT_TO_DOUBLE(variant); - int i = static_castint(d); - // Verify that d is an integral value in range. - return (d == static_castdouble(i)); -} else { - return 0; -} - } - - static int getAsInt(const NPVariant variant) { -if (isInt(variant)) { - if (NPVARIANT_IS_INT32(variant)) { -return NPVARIANT_TO_INT32(variant); - } else if (NPVARIANT_IS_DOUBLE(variant)) { -return static_castint(NPVARIANT_TO_DOUBLE(variant)); - } -} - -Debug::log(Debug::Error) getAsInt: variant - NPVariantUtil::toString(variant) not int Debug::flush; -return 0; - } - - static int isNull(const NPVariant variant) { -return NPVARIANT_IS_NULL(variant); - } - - static int isObject(const NPVariant variant) { -return NPVARIANT_IS_OBJECT(variant); - } - - static NPObject* getAsObject(const NPVariant variant) { -if (NPVARIANT_IS_OBJECT(variant)) { - return NPVARIANT_TO_OBJECT(variant); -} -Debug::log(Debug::Error) getAsObject: variant not object Debug::flush; -return 0; - } - - static int isString(const NPVariant variant) { -return NPVARIANT_IS_STRING(variant); - } - - static const NPString* getAsNPString(const NPVariant variant) { -if (NPVARIANT_IS_STRING(variant)) { - return NPVARIANT_TO_STRING(variant); -} -Debug::log(Debug::Error) getAsNPString: variant not string Debug::flush; -return 0; - } - - static std::string toString(const NPVariant variant) { -std::string retval; -// TODO(jat): remove sprintfs -char buf[40]; -NPObject* npObj; -switch (variant.type) { - case NPVariantType_Void: -retval = undef; -break; - case NPVariantType_Null: -retval = null; -break; - case NPVariantType_Bool: -retval = bool(; -retval += (NPVARIANT_TO_BOOLEAN(variant) ? true : false); -retval += ')'; -break; - case NPVariantType_Int32: -retval = int(; -snprintf(buf, sizeof(buf), %d), NPVARIANT_TO_INT32(variant)); -retval += buf; -break; - case NPVariantType_Double: -retval = double(; -snprintf(buf, sizeof(buf), %g), NPVARIANT_TO_DOUBLE(variant)); -retval += buf; -break; - case NPVariantType_String: -{ - retval = string(; - NPString str = NPVARIANT_TO_STRING(variant); - retval += std::string(str.UTF8Characters, str.UTF8Length); - retval += ')'; -} -break; - case NPVariantType_Object: -npObj = NPVARIANT_TO_OBJECT(variant); -snprintf(buf, sizeof(buf), obj(class=%p, , npObj-_class); -retval = buf; -snprintf(buf, sizeof(buf), count=%d, , npObj-referenceCount); -retval += buf; -snprintf(buf, sizeof(buf), %p), npObj); -retval += buf; -break; - default: -snprintf(buf, sizeof(buf), Unknown type %d, variant.type); -retval = buf; -break; -} -return retval; - } - -}; - -#endif === --- /trunk/user/test/com/google/gwt/core/client/JsIdentityTest.java Thu Jul 7 08:33:00 2011 +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright 2011 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the License); you may not - * use this file
[gwt-contrib] [google-web-toolkit] r10425 committed - Integrating r3302 from GWT 1.5 back into trunk. The change fixes a bu...
Revision: 10425 Author: jlaba...@google.com Date: Thu Jul 7 10:26:33 2011 Log: Integrating r3302 from GWT 1.5 back into trunk. The change fixes a bug in Tree where opening a TreeItem while another node is selected causes the Tree to scroll to scroll to the selected node (opening an item does not select a node). The original fix was committed directly to the GWT 1.5 branch. Since I had the file open, I added @Overrides to get rid of compiler warnings. The only actual change is line 659. Issue: 1467 Review at http://gwt-code-reviews.appspot.com/1467813 Review by: aliibra...@google.com http://code.google.com/p/google-web-toolkit/source/detail?r=10425 Modified: /trunk/user/src/com/google/gwt/user/client/ui/Tree.java === --- /trunk/user/src/com/google/gwt/user/client/ui/Tree.java Wed Feb 16 10:10:39 2011 +++ /trunk/user/src/com/google/gwt/user/client/ui/Tree.java Thu Jul 7 10:26:33 2011 @@ -300,6 +300,7 @@ * @see com.google.gwt.user.client.ui.HasWidgets#add(com.google.gwt.user.client.ui.Widget) * @param widget widget to add. */ + @Override public void add(Widget widget) { addItem(widget); } @@ -309,18 +310,22 @@ * * @see #add(Widget) */ + @Override public void add(IsWidget w) { this.add(asWidgetOrNull(w)); } + @Override public HandlerRegistration addBlurHandler(BlurHandler handler) { return addDomHandler(handler, BlurEvent.getType()); } + @Override public HandlerRegistration addCloseHandler(CloseHandlerTreeItem handler) { return addHandler(handler, CloseEvent.getType()); } + @Override public HandlerRegistration addFocusHandler(FocusHandler handler) { return addDomHandler(handler, FocusEvent.getType()); } @@ -328,6 +333,7 @@ /** * @deprecated Use {@link #addFocusHandler} instead */ + @Override @Deprecated public void addFocusListener(FocusListener listener) { ListenerWrapper.WrappedFocusListener.add(this, listener); @@ -349,6 +355,7 @@ * @param itemHtml the html of the item to be added * @return the item that was added */ + @Override public TreeItem addItem(SafeHtml itemHtml) { return root.addItem(itemHtml); } @@ -358,6 +365,7 @@ * * @param item the item to be added */ + @Override public void addItem(TreeItem item) { root.addItem(item); } @@ -367,6 +375,7 @@ * * @param isItem the wrapper of item to be added */ + @Override public void addItem(IsTreeItem isItem) { root.addItem(isItem); } @@ -377,6 +386,7 @@ * @param widget the widget to be added * @return the new item */ + @Override public TreeItem addItem(Widget widget) { return root.addItem(widget); } @@ -386,6 +396,7 @@ * * @see #addItem(Widget) */ + @Override public TreeItem addItem(IsWidget w) { return this.addItem(asWidgetOrNull(w)); } @@ -394,23 +405,28 @@ * @deprecated Use {@link #addKeyDownHandler}, {@link #addKeyUpHandler} and * {@link #addKeyPressHandler} instead */ + @Override @Deprecated public void addKeyboardListener(KeyboardListener listener) { ListenerWrapper.WrappedKeyboardListener.add(this, listener); } + @Override public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) { return addDomHandler(handler, KeyDownEvent.getType()); } + @Override public HandlerRegistration addKeyPressHandler(KeyPressHandler handler) { return addDomHandler(handler, KeyPressEvent.getType()); } + @Override public HandlerRegistration addKeyUpHandler(KeyUpHandler handler) { return addDomHandler(handler, KeyUpEvent.getType()); } + @Override public HandlerRegistration addMouseDownHandler(MouseDownHandler handler) { return addHandler(handler, MouseDownEvent.getType()); } @@ -420,35 +436,43 @@ * {@link #addMouseDownHandler}, {@link #addMouseUpHandler} and * {@link #addMouseOutHandler} instead */ + @Override @Deprecated public void addMouseListener(MouseListener listener) { ListenerWrapper.WrappedMouseListener.add(this, listener); } + @Override public HandlerRegistration addMouseMoveHandler(MouseMoveHandler handler) { return addDomHandler(handler, MouseMoveEvent.getType()); } + @Override public HandlerRegistration addMouseOutHandler(MouseOutHandler handler) { return addDomHandler(handler, MouseOutEvent.getType()); } + @Override public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) { return addDomHandler(handler, MouseOverEvent.getType()); } + @Override public HandlerRegistration addMouseUpHandler(MouseUpHandler handler) { return addDomHandler(handler, MouseUpEvent.getType()); } + @Override public HandlerRegistration addMouseWheelHandler(MouseWheelHandler handler) { return addDomHandler(handler, MouseWheelEvent.getType());
[gwt-contrib] Re: Integrating r3302 from GWT 1.5 back into trunk. The change fixes a bug in Tree where opening a ... (issue1467813)
committed as r10425 http://gwt-code-reviews.appspot.com/1467813/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)
http://gwt-code-reviews.appspot.com/1466809/diff/3020/user/src/com/google/gwt/uibinder/client/AbstractUiRenderer.java File user/src/com/google/gwt/uibinder/client/AbstractUiRenderer.java (right): http://gwt-code-reviews.appspot.com/1466809/diff/3020/user/src/com/google/gwt/uibinder/client/AbstractUiRenderer.java#newcode38 user/src/com/google/gwt/uibinder/client/AbstractUiRenderer.java:38: public boolean isParentOrRenderer(Element parent) { Can this use UiRendererUtilsImpl#findRootElement()? Seems like the code is very similar. http://gwt-code-reviews.appspot.com/1466809/diff/3020/user/src/com/google/gwt/uibinder/client/UiRendererUtilsImpl.java File user/src/com/google/gwt/uibinder/client/UiRendererUtilsImpl.java (right): http://gwt-code-reviews.appspot.com/1466809/diff/3020/user/src/com/google/gwt/uibinder/client/UiRendererUtilsImpl.java#newcode155 user/src/com/google/gwt/uibinder/client/UiRendererUtilsImpl.java:155: int endOfFirstTag = html.indexOf(); This still needs to handle self closing (ends in /) Strings: div id=placeholder / You can copy the code from RenderableStamper.stamp(): if (html.charAt(endOfFirstTag - 1) == '/') { endOfFirstTag--; } http://gwt-code-reviews.appspot.com/1466809/diff/3020/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java File user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java (right): http://gwt-code-reviews.appspot.com/1466809/diff/3020/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java#newcode1441 user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java:1441: jMethod.getParameterTypes().length = 1 You should also handle the case where render() is declared without any parameters. This conditional would skip over the no-arg case without throwing an error. http://gwt-code-reviews.appspot.com/1466809/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] [google-web-toolkit] r10427 committed - Update bootstrap requestfactory-apt.jar to r10426.
Revision: 10427 Author: gwt.mirror...@gmail.com Date: Fri Jul 8 07:03:55 2011 Log: Update bootstrap requestfactory-apt.jar to r10426. http://code.google.com/p/google-web-toolkit/source/detail?r=10427 Modified: /tools/lib/requestfactory/requestfactory-apt.jar === --- /tools/lib/requestfactory/requestfactory-apt.jar Fri Jul 1 12:22:05 2011 +++ /tools/lib/requestfactory/requestfactory-apt.jar Fri Jul 8 07:03:55 2011 Binary file, no diff available. -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)
http://gwt-code-reviews.appspot.com/1466809/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Use erasure to handle wildcard types in RfValidator. (issue1467814)
Reviewers: pquitslund, Description: Use erasure to handle wildcard types in RfValidator. Restore FindRequest to 2.4 parameterization. Patch by: bobv Review by: pquitslund Please review this at http://gwt-code-reviews.appspot.com/1467814/ Affected files: M user/src/com/google/web/bindery/requestfactory/apt/ClientToDomainMapper.java M user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java M user/src/com/google/web/bindery/requestfactory/apt/TypeSimplifier.java M user/src/com/google/web/bindery/requestfactory/shared/impl/FindRequest.java Index: user/src/com/google/web/bindery/requestfactory/apt/ClientToDomainMapper.java === --- user/src/com/google/web/bindery/requestfactory/apt/ClientToDomainMapper.java (revision 10426) +++ user/src/com/google/web/bindery/requestfactory/apt/ClientToDomainMapper.java (working copy) @@ -62,6 +62,12 @@ if (state.types.isAssignable(x, state.entityProxyType) || state.types.isAssignable(x, state.valueProxyType)) { // FooProxy - FooDomain + /* + * TODO(bobv): This if statement should be widened to baseProxy to support + * heterogenous collections of any proxy type. The BaseProxy interface + * would also need to be annotated with an @ProxyFor mapping. This can be + * done once RFIV is removed, since it only allows homogenous collections. + */ TypeElement domainType = state.getClientToDomainMap().get(state.types.asElement(x)); if (domainType == null) { return defaultAction(x, state); @@ -120,10 +126,7 @@ @Override public TypeMirror visitWildcard(WildcardType x, State state) { // Convert ? extends FooProxy to FooDomain -if (x.getExtendsBound() != null) { - return x.getExtendsBound().accept(this, state); -} -return defaultAction(x, state); +return state.types.erasure(x).accept(this, state); } /** Index: user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java === --- user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java (revision 10426) +++ user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java (working copy) @@ -105,7 +105,7 @@ @Override public Boolean visitWildcard(WildcardType t, State state) { // Allow List? extends FooProxy -return t.getExtendsBound() != null t.getExtendsBound().accept(this, state); +return state.types.erasure(t).accept(this, state); } @Override Index: user/src/com/google/web/bindery/requestfactory/apt/TypeSimplifier.java === --- user/src/com/google/web/bindery/requestfactory/apt/TypeSimplifier.java (revision 10426) +++ user/src/com/google/web/bindery/requestfactory/apt/TypeSimplifier.java (working copy) @@ -102,10 +102,7 @@ @Override public TypeMirror visitWildcard(WildcardType x, State state) { -if (x.getExtendsBound() != null) { - return x.getExtendsBound().accept(this, state); -} -return state.objectType; +return state.types.erasure(x).accept(this, state); } @Override Index: user/src/com/google/web/bindery/requestfactory/shared/impl/FindRequest.java === --- user/src/com/google/web/bindery/requestfactory/shared/impl/FindRequest.java (revision 10426) +++ user/src/com/google/web/bindery/requestfactory/shared/impl/FindRequest.java (working copy) @@ -31,5 +31,5 @@ /** * Use the implicit lookup in passing EntityProxy types to service methods. */ - RequestEntityProxy find(EntityProxyId? extends EntityProxy proxy); + RequestEntityProxy find(EntityProxyId? proxy); } \ No newline at end of file -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)
LGTM http://gwt-code-reviews.appspot.com/1466809/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: Use erasure to handle wildcard types in RfValidator. (issue1467814)
On 2011/07/08 15:40:34, bobv wrote: LGTM http://gwt-code-reviews.appspot.com/1467814/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)
http://gwt-code-reviews.appspot.com/1466809/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: Fix JsInliner, to properly handle name scope tracking after multi-level inlining. Was causing l... (issue1472803)
lgtm http://gwt-code-reviews.appspot.com/1472803/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
Re: [gwt-contrib] Re: RR: Retiring Safari 3 in a future release of GWT
Any other sentiments? On Tue, Jul 5, 2011 at 10:04 AM, Jeff Larsen larse...@gmail.com wrote: Good riddance. I wish it was possible to do the same with IE versions 9. -- http://groups.google.com/group/Google-Web-Toolkit-Contributors -- Eric Ayers | Software Engineer | zun...@google.com | +1 404 487 9229 -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Bypass RfValidatorTest when no JDK is available. (issue1465810)
Reviewers: rchandia, Description: Bypass RfValidatorTest when no JDK is available. Patch by: bobv Review by: rchandia Please review this at http://gwt-code-reviews.appspot.com/1465810/ Affected files: M user/test/com/google/web/bindery/requestfactory/apt/RfValidatorTest.java Index: user/test/com/google/web/bindery/requestfactory/apt/RfValidatorTest.java === --- user/test/com/google/web/bindery/requestfactory/apt/RfValidatorTest.java (revision 10426) +++ user/test/com/google/web/bindery/requestfactory/apt/RfValidatorTest.java (working copy) @@ -131,6 +131,10 @@ */ private void testGeneratedMessages(Class?... classes) { JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); +if (compiler == null) { + // This test is being run without a full JDK + return; +} ListJavaFileObject files = new ArrayListJavaFileObject(classes.length); for (Class? clazz : classes) { -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: Bypass RfValidatorTest when no JDK is available. (issue1465810)
On 2011/07/08 17:35:42, bobv wrote: LGTM http://gwt-code-reviews.appspot.com/1465810/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] [google-web-toolkit] r10428 committed - Use erasure to handle wildcard types in RfValidator....
Revision: 10428 Author: gwt.mirror...@gmail.com Date: Fri Jul 8 07:22:32 2011 Log: Use erasure to handle wildcard types in RfValidator. Restore FindRequest to 2.4 parameterization. Patch by: bobv Review by: rchandia Review at http://gwt-code-reviews.appspot.com/1467814 http://code.google.com/p/google-web-toolkit/source/detail?r=10428 Modified: /trunk/user/src/com/google/web/bindery/requestfactory/apt/ClientToDomainMapper.java /trunk/user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java /trunk/user/src/com/google/web/bindery/requestfactory/apt/TypeSimplifier.java /trunk/user/src/com/google/web/bindery/requestfactory/shared/impl/FindRequest.java === --- /trunk/user/src/com/google/web/bindery/requestfactory/apt/ClientToDomainMapper.java Fri Jul 8 03:40:53 2011 +++ /trunk/user/src/com/google/web/bindery/requestfactory/apt/ClientToDomainMapper.java Fri Jul 8 07:22:32 2011 @@ -62,6 +62,12 @@ if (state.types.isAssignable(x, state.entityProxyType) || state.types.isAssignable(x, state.valueProxyType)) { // FooProxy - FooDomain + /* + * TODO(bobv): This if statement should be widened to baseProxy to support + * heterogenous collections of any proxy type. The BaseProxy interface + * would also need to be annotated with an @ProxyFor mapping. This can be + * done once RFIV is removed, since it only allows homogenous collections. + */ TypeElement domainType = state.getClientToDomainMap().get(state.types.asElement(x)); if (domainType == null) { return defaultAction(x, state); @@ -120,10 +126,7 @@ @Override public TypeMirror visitWildcard(WildcardType x, State state) { // Convert ? extends FooProxy to FooDomain -if (x.getExtendsBound() != null) { - return x.getExtendsBound().accept(this, state); -} -return defaultAction(x, state); +return state.types.erasure(x).accept(this, state); } /** === --- /trunk/user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java Fri Jul 8 03:40:53 2011 +++ /trunk/user/src/com/google/web/bindery/requestfactory/apt/TransportableTypeVisitor.java Fri Jul 8 07:22:32 2011 @@ -105,7 +105,7 @@ @Override public Boolean visitWildcard(WildcardType t, State state) { // Allow List? extends FooProxy -return t.getExtendsBound() != null t.getExtendsBound().accept(this, state); +return state.types.erasure(t).accept(this, state); } @Override === --- /trunk/user/src/com/google/web/bindery/requestfactory/apt/TypeSimplifier.java Fri Jul 1 09:12:59 2011 +++ /trunk/user/src/com/google/web/bindery/requestfactory/apt/TypeSimplifier.java Fri Jul 8 07:22:32 2011 @@ -102,10 +102,7 @@ @Override public TypeMirror visitWildcard(WildcardType x, State state) { -if (x.getExtendsBound() != null) { - return x.getExtendsBound().accept(this, state); -} -return state.objectType; +return state.types.erasure(x).accept(this, state); } @Override === --- /trunk/user/src/com/google/web/bindery/requestfactory/shared/impl/FindRequest.java Fri Jul 1 09:12:59 2011 +++ /trunk/user/src/com/google/web/bindery/requestfactory/shared/impl/FindRequest.java Fri Jul 8 07:22:32 2011 @@ -31,5 +31,5 @@ /** * Use the implicit lookup in passing EntityProxy types to service methods. */ - RequestEntityProxy find(EntityProxyId? extends EntityProxy proxy); -} + RequestEntityProxy find(EntityProxyId? proxy); +} -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] [google-web-toolkit] r10429 committed - Update bootstrap requestfactory-apt.jar to r10428.
Revision: 10429 Author: gwt.mirror...@gmail.com Date: Fri Jul 8 10:51:57 2011 Log: Update bootstrap requestfactory-apt.jar to r10428. http://code.google.com/p/google-web-toolkit/source/detail?r=10429 Modified: /tools/lib/requestfactory/requestfactory-apt.jar === --- /tools/lib/requestfactory/requestfactory-apt.jar Fri Jul 8 07:03:55 2011 +++ /tools/lib/requestfactory/requestfactory-apt.jar Fri Jul 8 10:51:57 2011 Binary file, no diff available. -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] [google-web-toolkit] r10430 committed - Update 2.4 branch with selective build fixes from trunk....
Revision: 10430 Author: b...@google.com Date: Fri Jul 8 07:56:17 2011 Log: Update 2.4 branch with selective build fixes from trunk. Review by: mrruss...@google.com http://code.google.com/p/google-web-toolkit/source/detail?r=10430 Modified: /releases/2.4/user/src/com/google/web/bindery/requestfactory/shared/SkipInterfaceValidation.java /releases/2.4/user/test/com/google/web/bindery/requestfactory/server/BoxesAndPrimitivesJreTest.java /releases/2.4/user/test/com/google/web/bindery/requestfactory/server/RequestFactoryInterfaceValidatorTest.java === --- /releases/2.4/user/src/com/google/web/bindery/requestfactory/shared/SkipInterfaceValidation.java Tue Apr 19 06:04:28 2011 +++ /releases/2.4/user/src/com/google/web/bindery/requestfactory/shared/SkipInterfaceValidation.java Fri Jul 8 07:56:17 2011 @@ -30,6 +30,6 @@ */ @Documented @Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.METHOD) +@Target({ElementType.METHOD, ElementType.TYPE}) public @interface SkipInterfaceValidation { } === --- /releases/2.4/user/test/com/google/web/bindery/requestfactory/server/BoxesAndPrimitivesJreTest.java Mon Apr 18 16:25:25 2011 +++ /releases/2.4/user/test/com/google/web/bindery/requestfactory/server/BoxesAndPrimitivesJreTest.java Fri Jul 8 07:56:17 2011 @@ -24,6 +24,7 @@ import com.google.web.bindery.requestfactory.shared.Request; import com.google.web.bindery.requestfactory.shared.RequestContext; import com.google.web.bindery.requestfactory.shared.Service; +import com.google.web.bindery.requestfactory.shared.SkipInterfaceValidation; import java.util.Arrays; import java.util.logging.Logger; @@ -32,6 +33,7 @@ * A JRE version of {@link BoxesAndPrimitivesTest} with additional validation * tests. */ +@SkipInterfaceValidation public class BoxesAndPrimitivesJreTest extends BoxesAndPrimitivesTest { @Service(ServiceImpl.class) === --- /releases/2.4/user/test/com/google/web/bindery/requestfactory/server/RequestFactoryInterfaceValidatorTest.java Sat Jun 11 03:17:07 2011 +++ /releases/2.4/user/test/com/google/web/bindery/requestfactory/server/RequestFactoryInterfaceValidatorTest.java Fri Jul 8 07:56:17 2011 @@ -42,6 +42,7 @@ /** * JRE tests for {@link RequestFactoryInterfaceValidator}. */ +@SkipInterfaceValidation public class RequestFactoryInterfaceValidatorTest extends TestCase { static class ClinitEntity { static ClinitEntity findClinitEntity(@SuppressWarnings(unused) String key) { -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] RFC: Breaking change to CellTable
If you do not use Cell Widgets, you can ignore this email. * We recently introduced a new ElementBuilder APIhttp://code.google.com/p/google-web-toolkit/source/detail?r=10412 for building elements using either DOM manipulation or string concatenation with innerHTML. It allows us to optimize for different browsers, and it even opens the door for server side rendering. We've found that on some browsers, DOM manipulation is getting faster than innerHTML (due to the cost of actually building the HTML string). * So, we want to integrate ElementBuilder into CellTable/DataGrid/CellList. The problem is that Cell Widgets currently assume that their contents will be built using a SafeHtmlBuilder, which isn't compatible with the ElementBuilder API. In the current flow, we call *renderRowValues()* to build a SafeHtml string, then call one of * replaceAllChildren/replaceChildren()* to render the SafeHtml string into the CellTable. I plan to replace *renderRowValues()* with a new CellTableBuilder (name to be determined) interface that lets you build zero or more rows for each row value using the ElementBuilder API, allowing the use of colspans and rowspans. This provides a lot of flexibility to create customized CellTables. Below is my proposal, which reduces this to a a couple of breaking changes that should not affect many people: - renderRowValues() will be deprecated and will throw an UnsupportedOperationException if called. However, CellTable will still call the code and catch the UnsupportedOperationException. If we DO NOT catch the UnsupportedOperationException, then we proceed through the legacy stack, calling replaceAllChildren/replaceChildren with the generated HTML string. This handles the case where user code overrides renderRowValues() and DOES NOT call super.renderRowValues(). - replaceAllChildren/replaceChildren(ListR values, SafeHtml html) will be repurposed to mean build and replace. By default, we pass null as the value of the SafeHtml string and note in the JavaDoc that it is a dead variable, and only there for legacy reasons to prevent API changes. replaceAllChildren/replaceChildren will use the CellTableBuilder to build the table rows, then it will replace the rows. - However, if renderRowValues() does not throw an UnsupportedOperationException, then the HTML is passed in and we use the existing implementation. This allows existing subclasses of AbstractHasData to continue working normally. In fact, CellList will use this exact process. This leaves two potential breaking situations. First, if you currently override renderRowValues() and call super.renderRowValues(), you'll trigger an UnsupportedOperationException, which is ignored. As a temporary workaround, we'll introduce a deprecated final protected method renderRowValuesLegacy(). Subclasses can override renderRowValues() and call super.renderRowValues(). I expect that this is a very rare usecase, but renderRowValuesLegacy will be dead-code eliminated by the compiler anyway. The other breaking situation is if you override replaceAllChildren/replaceChildren and try to operate on the SafeHtml argument, which is now null. In this case, you will have to update your code accordingly (or override renderRowValues). This is a bit hacky, but I prefer it over other options it because it does not require any actual API changes, and the affected methods are protected and I don't think a lot of people will override them. John LaBanca | GWT Software Engineer | jlaba...@google.com -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: Adding all supported element builders to the ElementBuilder API. This is a follow-on change for... (issue1463812)
On 2011/07/07 19:40:35, jlabanca wrote: LGTM. Did not check *all* methods and classes, though. http://gwt-code-reviews.appspot.com/1463812/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: This patch substantially reduces the overhead of Java types in the output by minimizing vtable s... (issue1447821)
http://gwt-code-reviews.appspot.com/1447821/diff/6053/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java File dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java (right): http://gwt-code-reviews.appspot.com/1447821/diff/6053/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java#newcode516 dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java:516: } else { On 2011/07/08 11:24:25, jbrosenberg wrote: maybe a little cleaner to break the control flow into: else if (currentClass == program.getIndexedType(Array)) { ... } else { ... } Done. http://gwt-code-reviews.appspot.com/1447821/diff/6053/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java#newcode521 dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java:521: } else { On 2011/07/08 11:24:25, jbrosenberg wrote: comment explaining why? Done. http://gwt-code-reviews.appspot.com/1447821/diff/6053/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java File dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java (right): http://gwt-code-reviews.appspot.com/1447821/diff/6053/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java#newcode2161 dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java:2161: // don't implement, fall through to Object.getClass() On 2011/07/08 11:24:25, jbrosenberg wrote: why do arrays need to be different (add to comment?) Done. http://gwt-code-reviews.appspot.com/1447821/diff/6053/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java#newcode2763 dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java:2763: private static final long AST_VERSION = 2; On 2011/07/08 11:24:25, jbrosenberg wrote: do we need to bump this version, since array classes will now be serialized differently? Done. http://gwt-code-reviews.appspot.com/1447821/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: This patch substantially reduces the overhead of Java types in the output by minimizing vtable s... (issue1447821)
http://gwt-code-reviews.appspot.com/1447821/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: This patch substantially reduces the overhead of Java types in the output by minimizing vtable s... (issue1447821)
LGTM http://gwt-code-reviews.appspot.com/1447821/diff/20001/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java File dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java (right): http://gwt-code-reviews.appspot.com/1447821/diff/20001/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java#newcode516 dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java:516: } else { Heh, I think I was thinking the else above could be changed to an else if, to save a level of parens (no biggy, since this class is likely to go away altogether once we are sure the new GwtAstBuilder will stick, which is looking very likely at present) http://gwt-code-reviews.appspot.com/1447821/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] [google-web-toolkit] r10432 committed - Fix JsInliner, to properly handle name scope tracking after multi-leve...
Revision: 10432 Author: jbrosenb...@google.com Date: Fri Jul 8 10:47:24 2011 Log: Fix JsInliner, to properly handle name scope tracking after multi-level inlining. Was causing local variable name collisions after obfuscation. Fixes issue 5936. Review at http://gwt-code-reviews.appspot.com/1472803 http://code.google.com/p/google-web-toolkit/source/detail?r=10432 Modified: /trunk/dev/core/src/com/google/gwt/dev/js/JsInliner.java /trunk/dev/core/test/com/google/gwt/dev/js/JsInlinerTest.java === --- /trunk/dev/core/src/com/google/gwt/dev/js/JsInliner.java Tue May 31 05:03:27 2011 +++ /trunk/dev/core/src/com/google/gwt/dev/js/JsInliner.java Fri Jul 8 10:47:24 2011 @@ -762,6 +762,47 @@ return v.refersToName(); } } + + /** + * Collect names in a hoisted statement that are local to the original + * scope. These names will need to be copied to the destination scope + * once the statement becomes hoisted. + */ + private static class HoistedNameVisitor extends JsVisitor { +private final JsScope toScope; +private final JsScope fromScope; +private final ListJsName hoistedNames; + +public HoistedNameVisitor(JsScope toScope, JsScope fromScope) { + this.toScope = toScope; + this.fromScope = fromScope; + this.hoistedNames = new ArrayListJsName(); +} + +public ListJsName getHoistedNames() { + return hoistedNames; +} + +/* + * We need to hoist names that are only visible in fromScope, but not in + * toScope (i.e. we don't want to hoist names that are visible to both + * scopes, such as a global). Also, we don't want to hoist names that have a + * staticRef, which indicates a formal parameter, or a function name. + */ +@Override +public boolean visit(JsNameRef nameRef, JsContext ctx) { + JsName name = nameRef.getName(); + JsName fromScopeName = fromScope.findExistingName(name.getIdent()); + JsName toScopeName = toScope.findExistingName(name.getIdent()); + if (name.getStaticRef() == null + name == fromScopeName + name != toScopeName + !hoistedNames.contains(name)) { +hoistedNames.add(name); + } + return true; +} + } /** * Collect all of the idents used in an AST node. The collector can be @@ -1097,10 +1138,11 @@ statements = Collections.emptyList(); } - ListJsExpression hoisted = new ArrayListJsExpression( - statements.size()); + ListJsExpression hoisted = new ArrayListJsExpression(statements.size()); JsExpression thisExpr = ((JsNameRef) x.getQualifier()).getQualifier(); - ListJsName localVariableNames = new ArrayListJsName(); + HoistedNameVisitor hoistedNameVisitor = + new HoistedNameVisitor(callerFunction.getScope(), invokedFunction.getScope()); + boolean sawReturnStatement = false; for (JsStatement statement : statements) { @@ -1128,10 +1170,16 @@ * distinct objects, it would not be possible to substitute different * JsNameRefs at different call sites. */ -JsExpression h = hoistedExpression(statement, localVariableNames); +JsExpression h = hoistedExpression(statement); if (h == null) { return x; } + +/* + * Visit the statement to find names that will be moved to the caller's + * scope from the invoked function. + */ +hoistedNameVisitor.accept(statement); if (isReturnStatement(statement)) { sawReturnStatement = true; @@ -1140,6 +1188,11 @@ hoisted.add(h); } } + + /* + * Get the referenced names that need to be copied to the caller's scope. + */ + ListJsName hoistedNames = hoistedNameVisitor.getHoistedNames(); /* * If the inlined method has no return statement, synthesize an undefined @@ -1179,7 +1232,7 @@ // Perform the name replacement NameRefReplacerVisitor v = new NameRefReplacerVisitor(thisExpr, x.getArguments(), invokedFunction.getParameters()); - for (ListIteratorJsName nameIterator = localVariableNames.listIterator(); nameIterator.hasNext();) { + for (ListIteratorJsName nameIterator = hoistedNames.listIterator(); nameIterator.hasNext();) { JsName name = nameIterator.next(); /* @@ -1210,7 +1263,7 @@ op = v.accept(op); // Normalize any nested comma expressions that we may have generated. - op = (new CommaNormalizer(localVariableNames)).accept(op); + op = (new CommaNormalizer(hoistedNames)).accept(op); /* * Compare the relative complexity of the original invocation versus the @@ -1224,13 +1277,13 @@ return x; } - if (callerFunction == programFunction localVariableNames.size() 0) { + if (callerFunction == programFunction hoistedNames.size()
[gwt-contrib] After an enum is ordinalized, any static methods generated as staticImpl's should no longer be c... (issue1467815)
Reviewers: cromwellian, scottb, zundel, Description: After an enum is ordinalized, any static methods generated as staticImpl's should no longer be considered as such, since there is no longer an instantated instance being passed as the first arg to the method (this instance has been transformed into an ordinal int). This was causing some clinit's not to be generated, since method calls to staticImpl's don't force a clinit, since it is assumed that the passed in instance argument will cause the clinit to be generated. Please review this at http://gwt-code-reviews.appspot.com/1467815/ Affected files: M dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java M dev/core/src/com/google/gwt/dev/jjs/impl/EnumOrdinalizer.java Index: dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java === --- dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java (revision 10425) +++ dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java (working copy) @@ -1017,6 +1017,13 @@ this.typesByQueryId = typesByQueryId; } + public void removeStaticImplMapping(JMethod staticImpl) { +JMethod instanceMethod = staticToInstanceMap.remove(staticImpl); +if (instanceMethod != null) { + instanceToStaticMap.remove(instanceMethod); +} + } + public void setRunAsyncs(ListJRunAsync runAsyncs) { this.runAsyncs = Lists.normalizeUnmodifiable(runAsyncs); } Index: dev/core/src/com/google/gwt/dev/jjs/impl/EnumOrdinalizer.java === --- dev/core/src/com/google/gwt/dev/jjs/impl/EnumOrdinalizer.java (revision 10425) +++ dev/core/src/com/google/gwt/dev/jjs/impl/EnumOrdinalizer.java (working copy) @@ -663,10 +663,24 @@ return false; } - // cleanup clinit method for ordinalizable enums if (canBeOrdinal(x)) { -// method 0 is always the clinit +/* + * Cleanup clinit method for ordinalizable enums. Note, method 0 is + * always the clinit. + */ updateClinit(x.getMethods().get(0)); + +/* + * Remove any static impl mappings for any methods in an ordinal enum + * class. An ordinalized enum will no longer have an instance passed as + * the first argument for a static impl (it will just be an int). This + * is needed to preserve proper assumptions about static impls by other + * optimizers (e.g. we might need to insert a clinit, when it wouldn't + * be needed if a method call still had a static impl target). + */ +for (JMethod method : x.getMethods()) { + program.removeStaticImplMapping(method); +} } return true; } -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: After an enum is ordinalized, any static methods generated as staticImpl's should no longer be c... (issue1467815)
LGTM, needs test? http://gwt-code-reviews.appspot.com/1467815/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
[gwt-contrib] Re: Implements UiBinder rendering for Cells. (issue1466809)
Is it okay to make that public? I think it is OK. We usually publish them in the Wiki, but Docs is getting so good that I wanted to try it this way. Using docs makes sense. Will it eventually be made public? Perhaps copy/pasted over into the wiki for posterity? http://gwt-code-reviews.appspot.com/1466809/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors