You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

VAbsoluteLayoutPaintable.java 3.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /*
  2. @VaadinApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.terminal.gwt.client.ui;
  5. import java.util.HashSet;
  6. import java.util.Iterator;
  7. import com.google.gwt.core.client.GWT;
  8. import com.google.gwt.event.dom.client.DomEvent.Type;
  9. import com.google.gwt.event.shared.EventHandler;
  10. import com.google.gwt.event.shared.HandlerRegistration;
  11. import com.google.gwt.user.client.Element;
  12. import com.google.gwt.user.client.ui.Widget;
  13. import com.vaadin.terminal.gwt.client.ApplicationConnection;
  14. import com.vaadin.terminal.gwt.client.EventId;
  15. import com.vaadin.terminal.gwt.client.UIDL;
  16. import com.vaadin.terminal.gwt.client.VPaintableWidget;
  17. import com.vaadin.terminal.gwt.client.ui.VAbsoluteLayout.AbsoluteWrapper;
  18. public class VAbsoluteLayoutPaintable extends VAbstractPaintableWidgetContainer {
  19. private LayoutClickEventHandler clickEventHandler = new LayoutClickEventHandler(
  20. this, EventId.LAYOUT_CLICK) {
  21. @Override
  22. protected VPaintableWidget getChildComponent(Element element) {
  23. return getWidgetForPaintable().getComponent(element);
  24. }
  25. @Override
  26. protected <H extends EventHandler> HandlerRegistration registerHandler(
  27. H handler, Type<H> type) {
  28. return getWidgetForPaintable().addDomHandler(handler, type);
  29. }
  30. };
  31. @Override
  32. public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
  33. getWidgetForPaintable().rendering = true;
  34. getWidgetForPaintable().client = client;
  35. // TODO margin handling
  36. super.updateFromUIDL(uidl, client);
  37. if (!isRealUpdate(uidl)) {
  38. getWidgetForPaintable().rendering = false;
  39. return;
  40. }
  41. clickEventHandler.handleEventHandlerRegistration(client);
  42. HashSet<String> unrenderedPids = new HashSet<String>(
  43. getWidgetForPaintable().pidToComponentWrappper.keySet());
  44. for (Iterator<Object> childIterator = uidl.getChildIterator(); childIterator
  45. .hasNext();) {
  46. UIDL cc = (UIDL) childIterator.next();
  47. if (cc.getTag().equals("cc")) {
  48. UIDL componentUIDL = cc.getChildUIDL(0);
  49. unrenderedPids.remove(componentUIDL.getId());
  50. getWidgetForPaintable().getWrapper(client, componentUIDL)
  51. .updateFromUIDL(cc);
  52. }
  53. }
  54. for (String pid : unrenderedPids) {
  55. AbsoluteWrapper absoluteWrapper = getWidgetForPaintable().pidToComponentWrappper
  56. .get(pid);
  57. getWidgetForPaintable().pidToComponentWrappper.remove(pid);
  58. absoluteWrapper.destroy();
  59. }
  60. getWidgetForPaintable().rendering = false;
  61. }
  62. public void updateCaption(VPaintableWidget component, UIDL uidl) {
  63. AbsoluteWrapper parent2 = (AbsoluteWrapper) (component
  64. .getWidgetForPaintable()).getParent();
  65. parent2.updateCaption(uidl);
  66. }
  67. @Override
  68. protected Widget createWidget() {
  69. return GWT.create(VAbsoluteLayout.class);
  70. }
  71. @Override
  72. public VAbsoluteLayout getWidgetForPaintable() {
  73. return (VAbsoluteLayout) super.getWidgetForPaintable();
  74. }
  75. }