[gwt-contrib] Change in gwt[master]: Fix module unloading with multiple modules on a page
Matthew Dempsky has uploaded a new change for review. https://gwt-review.googlesource.com/2941 Change subject: Fix module unloading with multiple modules on a page .. Fix module unloading with multiple modules on a page Currently, the GWT compiler in production compiles will optimize away the instanceof checks in isMyListener() because it assumes getEventListener() is actually returning an EventListener object. However, if there are multiple modules loaded on a page, the __listener property might be for an EventListener from a different module. One way to workaround this (the approach taken by this patch) is to call isMyListener() before getEventListener() returns, so the compiler can't optimize away the instanceof checks. Change-Id: I25d9471c1e14756196a11223eadb765ed303a3b4 --- M user/src/com/google/gwt/user/client/impl/DOMImpl.java 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/user/src/com/google/gwt/user/client/impl/DOMImpl.java b/user/src/com/google/gwt/user/client/impl/DOMImpl.java index c5b8187..eafd332 100644 --- a/user/src/com/google/gwt/user/client/impl/DOMImpl.java +++ b/user/src/com/google/gwt/user/client/impl/DOMImpl.java @@ -50,12 +50,9 @@ for (int i = 0; i < allElements.getLength(); i++) { com.google.gwt.dom.client.Element elem = allElements.getItem(i); Element userElem = (Element) elem; - if (dom.getEventsSunk(userElem) != 0) { -dom.sinkEvents(userElem, 0); - } EventListener listener = dom.getEventListener(userElem); - // nulls out event listener if and only if it was assigned from our module - if (GWT.isScript() && listener != null && isMyListener(listener)) { + if (GWT.isScript() && listener != null) { +dom.sinkEvents(userElem, 0); dom.setEventListener(userElem, null); } // cleans up DOM-style addEventListener registered handlers @@ -154,7 +151,9 @@ public abstract int getChildIndex(Element parent, Element child); public native EventListener getEventListener(Element elem) /*-{ -return elem.__listener; +// Return elem.__listener if and only if it was assigned from our module +var maybeListener = elem.__listener; +return @com.google.gwt.user.client.impl.DOMImpl::isMyListener(Ljava/lang/Object;)(maybeListener) ? maybeListener : null; }-*/; public native int getEventsSunk(Element elem) /*-{ -- To view, visit https://gwt-review.googlesource.com/2941 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I25d9471c1e14756196a11223eadb765ed303a3b4 Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Matthew Dempsky -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds FocusComposite and PanelComposite.
Goktug Gokdogan has posted comments on this change. Change subject: Adds FocusComposite and PanelComposite. .. Patch Set 1: I thought little bit more on this. As we must always call specific addXYZHandler methods expecting specific handler classes, I think it is impossible to avoid boilerplate without codegen. The minimal boilerplate that I found is my previous proposal of updating the source of the event (we can put a helper in composite for source override). Anybody who wants to be good citizen can choose to do that. If we do code generation, we can simplify it a lot and everybody can use it: interface FocusForwardingHandlers extends HasXHandlers, HasYHandlers, ForwardingHandler; FocusForwardingHandlers helper; protected void initWidget(Widget widget, T delegate) { super.initWidget(widget, delegate); helper = GWT.create(FocusForwardingHandlers.class); helper.init(this, delegate); }; public HandlerRegistration addFocusHandler(FocusHandler handler) { return helper.addHandler(handler); } but writing the codegen is also a lot of work. I'm not sure if it will worth for just fixing the source of event. -- To view, visit https://gwt-review.googlesource.com/2940 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I372f9c4942c11b799eeb57870163dd999ad095cb Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Introduces generic Composite widgets.
Goktug Gokdogan has posted comments on this change. Change subject: Introduces generic Composite widgets. .. Patch Set 5: We are really going in circles. The delegate is part of Composite because of the same reason why somebody cannot safely introduce generics by extending this class. There is really nothing complicated about the basic use case and I don't think it will cause confusion. People don't need to know the delegate concept until they need to know about it. -- To view, visit https://gwt-review.googlesource.com/2582 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Gerrit-PatchSet: 5 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Introduces generic Composite widgets.
Jens Nehlmeier has posted comments on this change. Change subject: Introduces generic Composite widgets. .. Patch Set 5: So if the delegate feature sounds nice but has the potential to create confusion, why should it be added to GWT? Making getWidget()/initWidget() typed would also solve the issues that this CL references. A developer that wants that delegation feature can still have it by extending an "ordinary" typed composite and introduce the code that Goktug has introduced to support a delegate. After this discussion I dont really see the point of adding a delegation feature to Composite. I am willing to give a +1 if anyone can convince me that its worth it to have the delegate concept in GWT proper, so it can be used by everyone, although we now know it can cause confusions. Otherwise I will probably vote -1. -- To view, visit https://gwt-review.googlesource.com/2582 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Gerrit-PatchSet: 5 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Fixes most issues with the SoyC reports. Applied an unsubmit...
Brian Slesinsky has posted comments on this change. Change subject: Fixes most issues with the SoyC reports. Applied an unsubmitted patch (http://gwt-code-reviews.appspot.com/1726803/) by Alan and added a few fixes. This is a somewhat ugly fix. A full refactor wll be done when the new Fragment Merging strategy is impl .. Patch Set 3: Code-Review+2 I don't fully understand this code but it seems reasonable. -- To view, visit https://gwt-review.googlesource.com/1610 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I950ebd7b367671446e3d919a00be24d4cbf3fa88 Gerrit-PatchSet: 3 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Roberto Lublinerman Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Ray Cromwell Gerrit-Reviewer: Roberto Lublinerman Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Introduces generic Composite widgets.
Brian Slesinsky has posted comments on this change. Change subject: Introduces generic Composite widgets. .. Patch Set 5: Code-Review+2 -- To view, visit https://gwt-review.googlesource.com/2582 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Gerrit-PatchSet: 5 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Introduces generic Composite widgets.
Brian Slesinsky has posted comments on this change. Change subject: Introduces generic Composite widgets. .. Patch Set 5: Goktug and I talked about this. I'll try to summarize: - How did this get so complicated? UIBinder requires a zero-argument constructor and also requires you to pass "this" to its methods. So we cannot use constructors for initialization, and that's why we have initWidget() in the first place. - Why not have a separate class that supports delegates? Because that would force PanelComposite and FocusComposite to make a decision on which class to inherit from. We want to defer that decision to the subclass when it calls either the one or two-argument version of initWidget(). - Why not have Composite? Because in the simple case we only want one type variable for the wrapped widget. It looks a little weird and it's a bit hard to explain, but examples make sense. - Can we make delegation transparent for parent-child relationships, similar to web components? Probably not because lots of things would break. (Maybe we should update the documentation on HasWidgets to say that it adds its argument as a descendant.) - Can we make delegation of event handlers transparent? Probably not a good idea, because it adds complexity and relatively few event handlers check the source. (Maybe update the addFocusHandler/addBlurHandler javadoc to say that the source may be a descendant?) -- To view, visit https://gwt-review.googlesource.com/2582 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Gerrit-PatchSet: 5 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Introduces generic Composite widgets.
Goktug Gokdogan has posted comments on this change. Change subject: Introduces generic Composite widgets. .. Patch Set 3: (1 comment) File user/src/com/google/gwt/user/client/ui/FocusComposite.java Line 127: return getDelegate().addDoubleClickHandler(handler); Hmm, I thought they were in the same package. Your suggestion is not keeping track of previous addHandler calls. So it will be causing dublicate events for each addXXX calls. Also we don't need GwtEventForwardingHelper as calling fireEvent will do the trick. Am I missing anything? (Whatever we do, it would be great to encapsulate it as helper for composite to make it straightforward for other subclasses.) -- To view, visit https://gwt-review.googlesource.com/2582 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Gerrit-PatchSet: 3 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: Yes -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Fixes most issues with the SoyC reports. Applied an unsubmit...
Roberto Lublinerman has posted comments on this change. Change subject: Fixes most issues with the SoyC reports. Applied an unsubmitted patch (http://gwt-code-reviews.appspot.com/1726803/) by Alan and added a few fixes. This is a somewhat ugly fix. A full refactor wll be done when the new Fragment Merging strategy is impl .. Patch Set 3: Ping. This patch has been stale for a while. It makes the html reports work with the fragment merger but it does not account for the latest fixup by cromwellian. -- To view, visit https://gwt-review.googlesource.com/1610 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I950ebd7b367671446e3d919a00be24d4cbf3fa88 Gerrit-PatchSet: 3 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Roberto Lublinerman Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Ray Cromwell Gerrit-Reviewer: Roberto Lublinerman Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Fixes ISSUE 7079 - Add support for the newer bindery Handler...
Goktug Gokdogan has posted comments on this change. Change subject: Fixes ISSUE 7079 - Add support for the newer bindery HandlerRegistration .. Patch Set 2: Code-Review+1 It is weird but I don't think it is a big deal as it is technically correct to return the super type of HandlerRegistration from your addXXXHandler method. -- To view, visit https://gwt-review.googlesource.com/1350 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I80f23b094f55e40d2b2223e9f018c98c4e41a850 Gerrit-PatchSet: 2 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Julien Dramaix Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Julien Dramaix Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Manuel Carrasco Moñino Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Introduces generic Composite widgets.
Goktug Gokdogan has posted comments on this change. Change subject: Introduces generic Composite widgets. .. Patch Set 5: (1 comment) To be clear, nobody needs to do any migration, this change is backward compatible. File user/src/com/google/gwt/user/client/ui/ResizeComposite.java Line 25: public abstract class ResizeCompositeRequiresResize> I may have not understood your question correctly but a subclass looking for different semantics can extend from Composite directly and enforce its own semantics. -- To view, visit https://gwt-review.googlesource.com/2582 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Gerrit-PatchSet: 5 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: Yes -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Fixes ISSUE 7079 - Add support for the newer bindery Handler...
Julien Dramaix has posted comments on this change. Change subject: Fixes ISSUE 7079 - Add support for the newer bindery HandlerRegistration .. Patch Set 2: @Thomas I agree with your option #2 but we should create an issue for that and fix it in another change. The goal of the issue 7079 is to support new HandlerRegistration class What do you think ? -- To view, visit https://gwt-review.googlesource.com/1350 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I80f23b094f55e40d2b2223e9f018c98c4e41a850 Gerrit-PatchSet: 2 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Julien Dramaix Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Julien Dramaix Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Manuel Carrasco Moñino Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Introduces generic Composite widgets.
Brian Slesinsky has posted comments on this change. Change subject: Introduces generic Composite widgets. .. Patch Set 5: (1 comment) File user/src/com/google/gwt/user/client/ui/ResizeComposite.java Line 25: public abstract class ResizeCompositeRequiresResize> Looking at this example, the main advantages I see are that (a) you don't need to define a constructor in this class to enforce its constraints, and (b) we're restricting the type on the one-argument version of initWidget(), so subclassing is a bit less error-prone. But this will be an internal detail of the class that gets constructed. But what if the subclass wants a delegate and RequiresResize at the same time? Then we're enforcing a constraint on the delegate, not the widget. -- To view, visit https://gwt-review.googlesource.com/2582 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Gerrit-PatchSet: 5 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: Yes -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Introduces generic Composite widgets.
Brian Slesinsky has posted comments on this change. Change subject: Introduces generic Composite widgets. .. Patch Set 5: re: "We cannot get rid of the mass by ignoring it - and not taking an action is exactly that." Well, not taking action does have the advantage that nobody needs to migrate any code. But I agree with fixing things; I just want to make sure that any change we make works well and isn't a partially-working thing that people need to learn. We should understand it well enough that we can easily explain to other people why they should use it and it won't be "it seemed like a good idea at the time but I don't fully understand it." -- To view, visit https://gwt-review.googlesource.com/2582 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Gerrit-PatchSet: 5 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Introduces generic Composite widgets.
Jens Nehlmeier has posted comments on this change. Change subject: Introduces generic Composite widgets. .. Patch Set 4: @Brian: You can use UiBinder to define a custom Panel easily, the only downside is that you can not use GWT widgets in the UiBinder as the UiBinder root element must be a DOM Element, so you can call setElement(). Rough example: SlidingPanel Headline SlidingPanel extends ComplexPanel { @UiField DivElement childContainer; public SlidingPanel() { setElement(uiBinder.createAndBindUi(this)); } @Override pubic void add(Widget w) { add(w, childContainer.cast()); //protected method of ComplexPanel } } So if you want to add some interaction controls like buttons you must do it using the low level Element API. Thats why you probably always choose Composite in combination with UiBinder because then you can choose HTMLPanel as UiBinder root which allows you to add DOM elements as well as widgets. The delegate concept of this patch pretty much replicates the protected ComplexPanel.add(Widget w, Element childContainer) method. But the delegate concept in this patch can break Widget.getParent() because it operates on widget level while ComplexPanel.add(Widget w, Element childContainer) does not as it uses a DOM element as target container. -- To view, visit https://gwt-review.googlesource.com/2582 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Gerrit-PatchSet: 4 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds FocusComposite and PanelComposite.
Goktug Gokdogan has posted comments on this change. Change subject: Adds FocusComposite and PanelComposite. .. Patch Set 1: Bringing the discussion to its own patch. Will looking into alternatives for event source correction. -- To view, visit https://gwt-review.googlesource.com/2940 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I372f9c4942c11b799eeb57870163dd999ad095cb Gerrit-PatchSet: 1 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Goktug Gokdogan Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Adds FocusComposite and PanelComposite.
Goktug Gokdogan has uploaded a new change for review. https://gwt-review.googlesource.com/2940 Change subject: Adds FocusComposite and PanelComposite. .. Adds FocusComposite and PanelComposite. Change-Id: I372f9c4942c11b799eeb57870163dd999ad095cb --- A user/src/com/google/gwt/user/client/ui/FocusComposite.java A user/src/com/google/gwt/user/client/ui/PanelComposite.java 2 files changed, 301 insertions(+), 0 deletions(-) diff --git a/user/src/com/google/gwt/user/client/ui/FocusComposite.java b/user/src/com/google/gwt/user/client/ui/FocusComposite.java new file mode 100644 index 000..0173bb0 --- /dev/null +++ b/user/src/com/google/gwt/user/client/ui/FocusComposite.java @@ -0,0 +1,229 @@ +/* + * Copyright 2013 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.google.gwt.user.client.ui; + +import com.google.gwt.event.dom.client.BlurHandler; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.DoubleClickHandler; +import com.google.gwt.event.dom.client.DragEndHandler; +import com.google.gwt.event.dom.client.DragEnterHandler; +import com.google.gwt.event.dom.client.DragHandler; +import com.google.gwt.event.dom.client.DragLeaveHandler; +import com.google.gwt.event.dom.client.DragOverHandler; +import com.google.gwt.event.dom.client.DragStartHandler; +import com.google.gwt.event.dom.client.DropHandler; +import com.google.gwt.event.dom.client.FocusHandler; +import com.google.gwt.event.dom.client.GestureChangeHandler; +import com.google.gwt.event.dom.client.GestureEndHandler; +import com.google.gwt.event.dom.client.GestureStartHandler; +import com.google.gwt.event.dom.client.HasAllDragAndDropHandlers; +import com.google.gwt.event.dom.client.HasAllFocusHandlers; +import com.google.gwt.event.dom.client.HasAllGestureHandlers; +import com.google.gwt.event.dom.client.HasAllKeyHandlers; +import com.google.gwt.event.dom.client.HasAllMouseHandlers; +import com.google.gwt.event.dom.client.HasAllTouchHandlers; +import com.google.gwt.event.dom.client.HasClickHandlers; +import com.google.gwt.event.dom.client.HasDoubleClickHandlers; +import com.google.gwt.event.dom.client.KeyDownHandler; +import com.google.gwt.event.dom.client.KeyPressHandler; +import com.google.gwt.event.dom.client.KeyUpHandler; +import com.google.gwt.event.dom.client.MouseDownHandler; +import com.google.gwt.event.dom.client.MouseMoveHandler; +import com.google.gwt.event.dom.client.MouseOutHandler; +import com.google.gwt.event.dom.client.MouseOverHandler; +import com.google.gwt.event.dom.client.MouseUpHandler; +import com.google.gwt.event.dom.client.MouseWheelHandler; +import com.google.gwt.event.dom.client.TouchCancelHandler; +import com.google.gwt.event.dom.client.TouchEndHandler; +import com.google.gwt.event.dom.client.TouchMoveHandler; +import com.google.gwt.event.dom.client.TouchStartHandler; +import com.google.gwt.event.shared.HandlerRegistration; + +/** + * A {@link Composite} that wraps a {@link Focusable} widget. + * + * @param type of the widget wrapped + */ +public class FocusComposite extends Composite +implements Focusable, HasEnabled, HasAllFocusHandlers, HasAllKeyHandlers, HasClickHandlers, +HasDoubleClickHandlers, HasAllMouseHandlers, HasAllDragAndDropHandlers, HasAllGestureHandlers, +HasAllTouchHandlers { + + @Override + public int getTabIndex() { +return getDelegate().getTabIndex(); + } + + @Override + public void setAccessKey(char key) { +getDelegate().setAccessKey(key); + } + + @Override + public void setFocus(boolean focused) { +getDelegate().setFocus(focused); + } + + @Override + public void setTabIndex(int index) { +getDelegate().setTabIndex(index); + } + + @Override + public HandlerRegistration addFocusHandler(FocusHandler handler) { +return getDelegate().addFocusHandler(handler); + } + + @Override + public HandlerRegistration addBlurHandler(BlurHandler handler) { +return getDelegate().addBlurHandler(handler); + } + + @Override + public void setEnabled(boolean enabled) { +getDelegate().setEnabled(enabled); + } + + @Override + public boolean isEnabled() { +return getDelegate().isEnabled(); + } + + @Override + public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) { +return getDelegate().addKeyDownHandler(handler); + } + + @Override + public HandlerRegistration addKeyPressHa
[gwt-contrib] Change in gwt[master]: Introduces generic Composite widgets.
Hello Matthew Dempsky, Thomas Broyer, Leeroy Jenkins, I'd like you to reexamine a change. Please visit https://gwt-review.googlesource.com/2582 to look at the new patch set (#5). Change subject: Introduces generic Composite widgets. .. Introduces generic Composite widgets. Composite can now be 'safely' extended to add delegation to methods for more specific types. Improves error messaging for incorrect use. Fixes issue 4665, issue 6997. Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Review-Link: https://gwt-review.googlesource.com/#/c/2582/ --- M user/src/com/google/gwt/user/client/ui/Composite.java M user/src/com/google/gwt/user/client/ui/ResizeComposite.java 2 files changed, 83 insertions(+), 32 deletions(-) -- To view, visit https://gwt-review.googlesource.com/2582 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Gerrit-PatchSet: 5 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Remove early optimization from Precompile.
Manuel Carrasco Moñino has posted comments on this change. Change subject: Remove early optimization from Precompile. .. Patch Set 2: Code-Review+1 I have tested the patch with a couple of large projects and the time difference is not appreciable: 2:35.148s -> 2:29.584s 1:56.687s -> 1:54.328s Maybe because I'm compiling 2 permutations for these projects. Time is the entire maven process (package) without tests. The patch does not break anything. -- To view, visit https://gwt-review.googlesource.com/2280 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I26bad5f14735a9283021b53edadc5bde1a659c45 Gerrit-PatchSet: 2 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Roberto Lublinerman Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Manuel Carrasco Moñino Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Ray Cromwell Gerrit-Reviewer: Roberto Lublinerman Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Introduces generic Composite widgets.
Goktug Gokdogan has posted comments on this change. Change subject: Introduces generic Composite widgets. .. Patch Set 4: In the end, I tend to think that composites shouldn't expose low-level events from their wrapped widgets, and shouldn't be containers. For events, either you only use high-level events such as SelectionEvent for SuggestBox, ValueChangeEvent for ValueListBox or ValuePicker, or OpenEvent and CloseEvent for DisclosurePanel. This is mostly true, composite will usually only need to expose logical events but I don't think it is always practical. Why an interface / functionality for ValueListBox should be any different than ListBox? If somebody needs focus events for ListBox and then it means they also need it for ValueListBox, this is true for any composite that does single encapsulation. For panels, you'd rather extend Panel, or not make a Composite and instead simply implement IsWidget and HasWidgets.ForIsWidget. Note that we have precedents of composites that are panel and violate the principle of least surprise for getParent(): DisclosurePanel, TabBar and TabPanel are such widgets. Our existing widgets that delegate events however are either broken or have deprecated/removed the delegation. Yes exactly. We are already broken in many places and there is a huge mess. As our own code is broken that means everybody else's code is also broken. We cannot get rid of the mass by ignoring it - and not taking an action is exactly that. There are parts that are fixable (event source) and also there are other parts that is not much practical to fix with current design (getParent symmetry). Parent symmetry also probably broken for any other widget system that uses composition for reuse. But use case is unavoidable as can be seen from our very own SDK (and based on my previos experience with Swing). If we don't provide the right tools then people are causing even more mess like extending a panel instead of composite and only forward one or two methods and missing the rest (like removals or other 'add' methods). What I'm trying to do here is to provide a way for both our own code and user code to do this in less messy way and I think even in it current state it is already an improvement. -- To view, visit https://gwt-review.googlesource.com/2582 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Gerrit-PatchSet: 4 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Introduces generic Composite widgets.
Brian Slesinsky has posted comments on this change. Change subject: Introduces generic Composite widgets. .. Patch Set 4: Since we already have ResizeComposite, I'm not sure that's a good example of how this change is an improvement? It seems like we should have another example. For custom panels, how well does extending Panel work? Suppose you want a fancy panel that's based on a UIBinder template and can be used in a UIBinder template, with a hole where the children should go and some extra widgets that are encapsulated and aren't exposed as children in the panel API. How hard is that to do? What's the best way to make that easy? -- To view, visit https://gwt-review.googlesource.com/2582 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Gerrit-PatchSet: 4 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Removes api-checker reference JARs from the source tree.
Matthew Dempsky has posted comments on this change. Change subject: Removes api-checker reference JARs from the source tree. .. Patch Set 5: Code-Review+2 -- To view, visit https://gwt-review.googlesource.com/2500 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I3d5a585fb57cfd959504109df35279b3c9c56879 Gerrit-PatchSet: 5 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Thomas Broyer Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: John A. Tamplin Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Ray Cromwell Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Fixes ISSUE 7079 - Add support for the newer bindery Handler...
Manuel Carrasco Moñino has posted comments on this change. Change subject: Fixes ISSUE 7079 - Add support for the newer bindery HandlerRegistration .. Patch Set 2: Code-Review+1 @Julien LGTM @Thomas, I think #2 could be a good option -- To view, visit https://gwt-review.googlesource.com/1350 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I80f23b094f55e40d2b2223e9f018c98c4e41a850 Gerrit-PatchSet: 2 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Julien Dramaix Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Julien Dramaix Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Manuel Carrasco Moñino Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Fixes ISSUE 7079 - Add support for the newer bindery Handler...
Thomas Broyer has posted comments on this change. Change subject: Fixes ISSUE 7079 - Add support for the newer bindery HandlerRegistration .. Patch Set 2: Code-Review+1 Hmm, so, UiBinder only supports event handlers that extend EventHandler, and the error message in this case points to GwtEvent (so we can say UiBinder is tailored for GwtEvent and not the more generic Event), but this change wants to make it legal for an addXxxHandler(SomeGwtEvent) method to return a bindery HandlerRegistration (i.e. mixing c.g.g.event and c.g.web.bindery.event types in the same method). That sounds weird. I wonder if it wouldn't be better to either: * put an error message when we detect c.g.web.bindery.event.shared.HandlerRegistration saying "did you mean com.google.gwt.event.shared.HandlerRegistration" * or fully support c.g.web.bindery.event: mandate "assignable to c.g.w.b.event.shared.Event", don't look for EventHandler (only "is interface"), and thus accept any HandlerRegistration. -- To view, visit https://gwt-review.googlesource.com/1350 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I80f23b094f55e40d2b2223e9f018c98c4e41a850 Gerrit-PatchSet: 2 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Julien Dramaix Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Julien Dramaix Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Manuel Carrasco Moñino Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: No -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Fixes ISSUE 7079 - Add support for the newer bindery Handler...
Hello Matthew Dempsky, I'd like you to reexamine a change. Please visit https://gwt-review.googlesource.com/1350 to look at the new patch set (#2). Change subject: Fixes ISSUE 7079 - Add support for the newer bindery HandlerRegistration .. Fixes ISSUE 7079 - Add support for the newer bindery HandlerRegistration Change-Id: I80f23b094f55e40d2b2223e9f018c98c4e41a850 --- M user/src/com/google/gwt/uibinder/rebind/HandlerEvaluator.java M user/test/com/google/gwt/uibinder/rebind/HandlerEvaluatorTest.java 2 files changed, 4 insertions(+), 3 deletions(-) -- To view, visit https://gwt-review.googlesource.com/1350 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I80f23b094f55e40d2b2223e9f018c98c4e41a850 Gerrit-PatchSet: 2 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Julien Dramaix Gerrit-Reviewer: Daniel Kurka Gerrit-Reviewer: Julien Dramaix Gerrit-Reviewer: Manuel Carrasco Moñino Gerrit-Reviewer: Matthew Dempsky -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: [gwt-contrib] Integration Testing Idea
Ok so having put everything together I think I have a plan. I'm thinking that the best approach would be to have a script that runs a "cleanDB" class before it runs each test (I can just "java" the test class to run it right?). It's not an ideal solution since this means I will only be able to have 1 test a class but it does allow the DB to be cleaned between tests and the tests to be run order independent. This is what I've been looking for. I'm considering using reflection to manually run all tests in a class and call the clean function in between each. Any thoughts? Thanks On Tuesday, May 21, 2013 11:02:19 AM UTC-4, Jens wrote: > > > That actually sounds promising. This may be a dumb question but can anyone >> think of a way to slave the WebDriver and JUNIT together? > > > Take a look at: > http://nadimsaker.blogspot.de/2011/10/how-to-run-selenium-webdriver-code-with.html > > Before setting up WebDriver in the setUp() method you should be able add > code to install a database fixture for testing. > > -- J. > -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Removes api-checker reference JARs from the source tree.
Hello Matthew Dempsky, Leeroy Jenkins, I'd like you to reexamine a change. Please visit https://gwt-review.googlesource.com/2500 to look at the new patch set (#5). Change subject: Removes api-checker reference JARs from the source tree. .. Removes api-checker reference JARs from the source tree. Now expects them in GWT_TOOLS. Bug: issue 8031 Change-Id: I3d5a585fb57cfd959504109df35279b3c9c56879 --- M build.xml D tools/api-checker/reference/README D tools/api-checker/reference/createApiCheckerReferenceJars.sh D tools/api-checker/reference/gwt-dev-modified.jar D tools/api-checker/reference/gwt-user-modified.jar 5 files changed, 3 insertions(+), 46 deletions(-) -- To view, visit https://gwt-review.googlesource.com/2500 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I3d5a585fb57cfd959504109df35279b3c9c56879 Gerrit-PatchSet: 5 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Thomas Broyer Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: John A. Tamplin Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Ray Cromwell Gerrit-Reviewer: Thomas Broyer -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
[gwt-contrib] Change in gwt[master]: Introduces generic Composite widgets.
Thomas Broyer has posted comments on this change. Change subject: Introduces generic Composite widgets. .. Patch Set 3: (1 comment) Note that SuggestBox's event forwarding was deprecated in favor of exposing the internal TextBox, so you should do suggestBox.getTextBox().addFocusHandler(handler) instead of suggestBox.addFocusHandler(handler). It breaks encapsulation but I believe there are cases where it's impractical and causes more harm than good. PanelComposite is a good example too: panels shouldn't be composites as it breaks the add(child) vs. getParent() symmetry, and fixing it would require too much work. In the end, I tend to think that composites shouldn't expose low-level events from their wrapped widgets, and shouldn't be containers. For events, either you only use high-level events such as SelectionEvent for SuggestBox, ValueChangeEvent for ValueListBox or ValuePicker, or OpenEvent and CloseEvent for DisclosurePanel. For panels, you'd rather extend Panel, or not make a Composite and instead simply implement IsWidget and HasWidgets.ForIsWidget. Note that we have precedents of composites that are panel and violate the principle of least surprise for getParent(): DisclosurePanel, TabBar and TabPanel are such widgets. Our existing widgets that delegate events however are either broken or have deprecated/removed the delegation. Conclusion: it's a real mess, do whatever you think is best, but I'd rather go with only genericized Composite and ResizeComposite, possibly introducing the 'delegate' concept, and without FocusComposite and PanelComposite. File user/src/com/google/gwt/user/client/ui/FocusComposite.java Line 127: return getDelegate().addDoubleClickHandler(handler); That'd mean making overrideSource public, which I don't think is something we want to do. An alternative would be to add some generic helper in com.google.gwt.event.shared that would internally do the overrideSource and GwtEvent#dispatch, and then use: private GwtEventForwardingHelper helper = new GwtEventForwardingHelper(this); public HandlerRegistration addDoubleClickHandler(final DoubleClickHandler handler) { return getDelegate().addDoubleClickHandler(new DoubleClickHandler() { @Override public void onDoubleClick(DoubleClickEvent event) { helper.dispatch(event, handler); } }); } Actually, it wouldn't even need to be in com.google.gwt.event and reusable: we could make a local/inner class extending EventBus so it could call setSourceOfEvent and dispatchEvent: // extends SimpleEventBus, all we want is accessing 'protected static' methods from EventBus private static class GwtEventForwardingHelper extends SimpleEventBus { public static void dispatch(Composite source, GwtEvent event, H handler) { Object oldSource = event.getSource(); setSourceOfEvent(event, source); try { dispatchEvent(event, handler); } finally { setSourceOfEvent(event, oldSource); } } } // helper method for Composite subclasses protected void dispatchEvent(GwtEvent event, H handler) { GwtEventForwardingHelper.dispatch(this, event, handler); } public HandlerRegistration addDoubleClickHandler(final DoubleClickHandler handler) { return getDelegate().addDoubleClickHandler(new DoubleClickHandler() { @Override public void onDoubleClick(DoubleClickEvent event) { dispatchEvent(event, handler); } }); } -- To view, visit https://gwt-review.googlesource.com/2582 To unsubscribe, visit https://gwt-review.googlesource.com/settings Gerrit-MessageType: comment Gerrit-Change-Id: I41e5c07e978d442db7d8402c57605cec1b3ea09e Gerrit-PatchSet: 3 Gerrit-Project: gwt Gerrit-Branch: master Gerrit-Owner: Goktug Gokdogan Gerrit-Reviewer: Brian Slesinsky Gerrit-Reviewer: Goktug Gokdogan Gerrit-Reviewer: Jens Nehlmeier Gerrit-Reviewer: Leeroy Jenkins Gerrit-Reviewer: Matthew Dempsky Gerrit-Reviewer: Thomas Broyer Gerrit-HasComments: Yes -- http://groups.google.com/group/Google-Web-Toolkit-Contributors --- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit-contributors+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.