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.

AccordionConnector.java 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. @VaadinApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.terminal.gwt.client.ui;
  5. import java.util.Iterator;
  6. import com.google.gwt.core.client.GWT;
  7. import com.google.gwt.user.client.ui.Widget;
  8. import com.vaadin.terminal.gwt.client.ApplicationConnection;
  9. import com.vaadin.terminal.gwt.client.ComponentConnector;
  10. import com.vaadin.terminal.gwt.client.UIDL;
  11. import com.vaadin.terminal.gwt.client.ui.VAccordion.StackItem;
  12. public class AccordionConnector extends TabsheetBaseConnector implements
  13. SimpleManagedLayout {
  14. @Override
  15. public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
  16. getWidget().selectedUIDLItemIndex = -1;
  17. super.updateFromUIDL(uidl, client);
  18. /*
  19. * Render content after all tabs have been created and we know how large
  20. * the content area is
  21. */
  22. if (getWidget().selectedUIDLItemIndex >= 0) {
  23. StackItem selectedItem = getWidget().getStackItem(
  24. getWidget().selectedUIDLItemIndex);
  25. UIDL selectedTabUIDL = getWidget().lazyUpdateMap
  26. .remove(selectedItem);
  27. getWidget().open(getWidget().selectedUIDLItemIndex);
  28. selectedItem.setContent(selectedTabUIDL);
  29. } else if (isRealUpdate(uidl) && getWidget().openTab != null) {
  30. getWidget().close(getWidget().openTab);
  31. }
  32. getWidget().iLayout();
  33. // finally render possible hidden tabs
  34. if (getWidget().lazyUpdateMap.size() > 0) {
  35. for (Iterator iterator = getWidget().lazyUpdateMap.keySet()
  36. .iterator(); iterator.hasNext();) {
  37. StackItem item = (StackItem) iterator.next();
  38. item.setContent(getWidget().lazyUpdateMap.get(item));
  39. }
  40. getWidget().lazyUpdateMap.clear();
  41. }
  42. getWidget().renderInformation.updateSize(getWidget().getElement());
  43. }
  44. @Override
  45. public VAccordion getWidget() {
  46. return (VAccordion) super.getWidget();
  47. }
  48. @Override
  49. protected Widget createWidget() {
  50. return GWT.create(VAccordion.class);
  51. }
  52. public void updateCaption(ComponentConnector component, UIDL uidl) {
  53. /* Accordion does not render its children's captions */
  54. }
  55. public void layout() {
  56. VAccordion accordion = getWidget();
  57. accordion.updateOpenTabSize();
  58. if (isUndefinedHeight()) {
  59. accordion.openTab.setHeightFromWidget();
  60. }
  61. accordion.iLayout();
  62. }
  63. }