Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

AbstractComponentContainerConnector.java 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. /*
  2. @VaadinApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.terminal.gwt.client.ui;
  5. import java.util.LinkedList;
  6. import java.util.List;
  7. import com.google.gwt.event.shared.HandlerRegistration;
  8. import com.vaadin.terminal.gwt.client.ComponentConnector;
  9. import com.vaadin.terminal.gwt.client.ComponentContainerConnector;
  10. import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent;
  11. import com.vaadin.terminal.gwt.client.ConnectorHierarchyChangeEvent.ConnectorHierarchyChangeHandler;
  12. import com.vaadin.terminal.gwt.client.Util;
  13. import com.vaadin.terminal.gwt.client.VConsole;
  14. public abstract class AbstractComponentContainerConnector extends
  15. AbstractComponentConnector implements ComponentContainerConnector,
  16. ConnectorHierarchyChangeHandler {
  17. List<ComponentConnector> children;
  18. private final boolean debugLogging = false;
  19. /**
  20. * Temporary storage for last enabled state to be able to see if it has
  21. * changed. Can be removed once we are able to listen specifically for
  22. * enabled changes in the state. Widget.isEnabled() cannot be used as all
  23. * Widgets do not implement HasEnabled
  24. */
  25. private boolean lastWidgetEnabledState = true;
  26. /**
  27. * Default constructor
  28. */
  29. public AbstractComponentContainerConnector() {
  30. addConnectorHierarchyChangeHandler(this);
  31. }
  32. /*
  33. * (non-Javadoc)
  34. *
  35. * @see
  36. * com.vaadin.terminal.gwt.client.ComponentContainerConnector#getChildren()
  37. */
  38. public List<ComponentConnector> getChildren() {
  39. if (children == null) {
  40. return new LinkedList<ComponentConnector>();
  41. }
  42. return children;
  43. }
  44. /*
  45. * (non-Javadoc)
  46. *
  47. * @see
  48. * com.vaadin.terminal.gwt.client.ComponentContainerConnector#setChildren
  49. * (java.util.Collection)
  50. */
  51. public void setChildren(List<ComponentConnector> children) {
  52. this.children = children;
  53. }
  54. /*
  55. * (non-Javadoc)
  56. *
  57. * @see com.vaadin.terminal.gwt.client.ComponentContainerConnector#
  58. * connectorHierarchyChanged
  59. * (com.vaadin.terminal.gwt.client.ConnectorHierarchyChangedEvent)
  60. */
  61. public void onConnectorHierarchyChange(ConnectorHierarchyChangeEvent event) {
  62. if (debugLogging) {
  63. VConsole.log("Hierarchy changed for "
  64. + Util.getConnectorString(this));
  65. String oldChildren = "* Old children: ";
  66. for (ComponentConnector child : event.getOldChildren()) {
  67. oldChildren += Util.getConnectorString(child) + " ";
  68. }
  69. VConsole.log(oldChildren);
  70. String newChildren = "* New children: ";
  71. for (ComponentConnector child : getChildren()) {
  72. newChildren += Util.getConnectorString(child) + " ";
  73. }
  74. VConsole.log(newChildren);
  75. }
  76. }
  77. public HandlerRegistration addConnectorHierarchyChangeHandler(
  78. ConnectorHierarchyChangeHandler handler) {
  79. return ensureHandlerManager().addHandler(
  80. ConnectorHierarchyChangeEvent.TYPE, handler);
  81. }
  82. @Override
  83. public void setWidgetEnabled(boolean widgetEnabled) {
  84. if (lastWidgetEnabledState == widgetEnabled) {
  85. return;
  86. }
  87. lastWidgetEnabledState = widgetEnabled;
  88. super.setWidgetEnabled(widgetEnabled);
  89. for (ComponentConnector c : getChildren()) {
  90. // Update children as they might be affected by the enabled state of
  91. // their parent
  92. c.setWidgetEnabled(c.isEnabled());
  93. }
  94. }
  95. }