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.

VAccordionPaintable.java 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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.UIDL;
  10. import com.vaadin.terminal.gwt.client.ComponentConnector;
  11. import com.vaadin.terminal.gwt.client.ui.VAccordion.StackItem;
  12. public class VAccordionPaintable extends VTabsheetBasePaintable 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(
  28. getWidget().selectedUIDLItemIndex);
  29. selectedItem.setContent(selectedTabUIDL);
  30. } else if (isRealUpdate(uidl)
  31. && getWidget().openTab != null) {
  32. getWidget().close(getWidget().openTab);
  33. }
  34. getWidget().iLayout();
  35. // finally render possible hidden tabs
  36. if (getWidget().lazyUpdateMap.size() > 0) {
  37. for (Iterator iterator = getWidget().lazyUpdateMap
  38. .keySet().iterator(); iterator.hasNext();) {
  39. StackItem item = (StackItem) iterator.next();
  40. item.setContent(getWidget().lazyUpdateMap.get(item));
  41. }
  42. getWidget().lazyUpdateMap.clear();
  43. }
  44. getWidget().renderInformation
  45. .updateSize(getWidget().getElement());
  46. }
  47. @Override
  48. public VAccordion getWidget() {
  49. return (VAccordion) super.getWidget();
  50. }
  51. @Override
  52. protected Widget createWidget() {
  53. return GWT.create(VAccordion.class);
  54. }
  55. public void updateCaption(ComponentConnector component, UIDL uidl) {
  56. /* Accordion does not render its children's captions */
  57. }
  58. public void layout() {
  59. VAccordion accordion = getWidget();
  60. accordion.updateOpenTabSize();
  61. if (isUndefinedHeight()) {
  62. accordion.openTab.setHeightFromWidget();
  63. }
  64. accordion.iLayout();
  65. }
  66. }