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.

OptionGroupBaseConnector.java 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /*
  2. @VaadinApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.terminal.gwt.client.ui;
  5. import com.vaadin.terminal.gwt.client.ApplicationConnection;
  6. import com.vaadin.terminal.gwt.client.Paintable;
  7. import com.vaadin.terminal.gwt.client.UIDL;
  8. public abstract class OptionGroupBaseConnector extends AbstractFieldConnector
  9. implements Paintable {
  10. public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
  11. // Save details
  12. getWidget().client = client;
  13. getWidget().paintableId = uidl.getId();
  14. if (!isRealUpdate(uidl)) {
  15. return;
  16. }
  17. getWidget().selectedKeys = uidl.getStringArrayVariableAsSet("selected");
  18. getWidget().readonly = isReadOnly();
  19. getWidget().disabled = !isEnabled();
  20. getWidget().multiselect = "multi".equals(uidl
  21. .getStringAttribute("selectmode"));
  22. getWidget().immediate = getState().isImmediate();
  23. getWidget().nullSelectionAllowed = uidl
  24. .getBooleanAttribute("nullselect");
  25. getWidget().nullSelectionItemAvailable = uidl
  26. .getBooleanAttribute("nullselectitem");
  27. if (uidl.hasAttribute("cols")) {
  28. getWidget().cols = uidl.getIntAttribute("cols");
  29. }
  30. if (uidl.hasAttribute("rows")) {
  31. getWidget().rows = uidl.getIntAttribute("rows");
  32. }
  33. final UIDL ops = uidl.getChildUIDL(0);
  34. if (getWidget().getColumns() > 0) {
  35. getWidget().container.setWidth(getWidget().getColumns() + "em");
  36. if (getWidget().container != getWidget().optionsContainer) {
  37. getWidget().optionsContainer.setWidth("100%");
  38. }
  39. }
  40. getWidget().buildOptions(ops);
  41. if (uidl.getBooleanAttribute("allownewitem")) {
  42. if (getWidget().newItemField == null) {
  43. getWidget().newItemButton = new VNativeButton();
  44. getWidget().newItemButton.setText("+");
  45. getWidget().newItemButton.addClickHandler(getWidget());
  46. getWidget().newItemField = new VTextField();
  47. getWidget().newItemField.addKeyPressHandler(getWidget());
  48. }
  49. getWidget().newItemField.setEnabled(!getWidget().disabled
  50. && !getWidget().readonly);
  51. getWidget().newItemButton.setEnabled(!getWidget().disabled
  52. && !getWidget().readonly);
  53. if (getWidget().newItemField == null
  54. || getWidget().newItemField.getParent() != getWidget().container) {
  55. getWidget().container.add(getWidget().newItemField);
  56. getWidget().container.add(getWidget().newItemButton);
  57. final int w = getWidget().container.getOffsetWidth()
  58. - getWidget().newItemButton.getOffsetWidth();
  59. getWidget().newItemField.setWidth(Math.max(w, 0) + "px");
  60. }
  61. } else if (getWidget().newItemField != null) {
  62. getWidget().container.remove(getWidget().newItemField);
  63. getWidget().container.remove(getWidget().newItemButton);
  64. }
  65. getWidget().setTabIndex(
  66. uidl.hasAttribute("tabindex") ? uidl
  67. .getIntAttribute("tabindex") : 0);
  68. }
  69. @Override
  70. public VOptionGroupBase getWidget() {
  71. return (VOptionGroupBase) super.getWidget();
  72. }
  73. }