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.

VButtonPaintable.java 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /*
  2. @VaadinApache2LicenseForJavaFiles@
  3. */
  4. package com.vaadin.terminal.gwt.client.ui;
  5. import com.google.gwt.core.client.GWT;
  6. import com.google.gwt.user.client.DOM;
  7. import com.google.gwt.user.client.ui.Widget;
  8. import com.vaadin.terminal.gwt.client.ApplicationConnection;
  9. import com.vaadin.terminal.gwt.client.ComponentState;
  10. import com.vaadin.terminal.gwt.client.EventHelper;
  11. import com.vaadin.terminal.gwt.client.UIDL;
  12. public class VButtonPaintable extends VAbstractPaintableWidget {
  13. @Override
  14. protected boolean delegateCaptionHandling() {
  15. return false;
  16. }
  17. @Override
  18. public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
  19. // Ensure correct implementation,
  20. // but don't let container manage caption etc.
  21. super.updateFromUIDL(uidl, client);
  22. if (!isRealUpdate(uidl)) {
  23. return;
  24. }
  25. getWidgetForPaintable().focusHandlerRegistration = EventHelper
  26. .updateFocusHandler(this, client,
  27. getWidgetForPaintable().focusHandlerRegistration);
  28. getWidgetForPaintable().blurHandlerRegistration = EventHelper
  29. .updateBlurHandler(this, client,
  30. getWidgetForPaintable().blurHandlerRegistration);
  31. // Save details
  32. getWidgetForPaintable().client = client;
  33. getWidgetForPaintable().paintableId = uidl.getId();
  34. // Set text
  35. getWidgetForPaintable().setText(
  36. uidl.getStringAttribute(ATTRIBUTE_CAPTION));
  37. getWidgetForPaintable().disableOnClick = getState().isDisableOnClick();
  38. // handle error
  39. if (uidl.hasAttribute("error")) {
  40. if (getWidgetForPaintable().errorIndicatorElement == null) {
  41. getWidgetForPaintable().errorIndicatorElement = DOM
  42. .createSpan();
  43. getWidgetForPaintable().errorIndicatorElement
  44. .setClassName("v-errorindicator");
  45. }
  46. getWidgetForPaintable().wrapper.insertBefore(
  47. getWidgetForPaintable().errorIndicatorElement,
  48. getWidgetForPaintable().captionElement);
  49. } else if (getWidgetForPaintable().errorIndicatorElement != null) {
  50. getWidgetForPaintable().wrapper
  51. .removeChild(getWidgetForPaintable().errorIndicatorElement);
  52. getWidgetForPaintable().errorIndicatorElement = null;
  53. }
  54. if (uidl.hasAttribute(ATTRIBUTE_ICON)) {
  55. if (getWidgetForPaintable().icon == null) {
  56. getWidgetForPaintable().icon = new Icon(client);
  57. getWidgetForPaintable().wrapper.insertBefore(
  58. getWidgetForPaintable().icon.getElement(),
  59. getWidgetForPaintable().captionElement);
  60. }
  61. getWidgetForPaintable().icon.setUri(uidl
  62. .getStringAttribute(ATTRIBUTE_ICON));
  63. } else {
  64. if (getWidgetForPaintable().icon != null) {
  65. getWidgetForPaintable().wrapper
  66. .removeChild(getWidgetForPaintable().icon.getElement());
  67. getWidgetForPaintable().icon = null;
  68. }
  69. }
  70. getWidgetForPaintable().clickShortcut = getState()
  71. .getClickShortcutKeyCode();
  72. }
  73. @Override
  74. protected Widget createWidget() {
  75. return GWT.create(VButton.class);
  76. }
  77. @Override
  78. public VButton getWidgetForPaintable() {
  79. return (VButton) super.getWidgetForPaintable();
  80. }
  81. @Override
  82. public VButtonState getState() {
  83. return (VButtonState) super.getState();
  84. }
  85. @Override
  86. protected ComponentState createState() {
  87. return GWT.create(VButtonState.class);
  88. }
  89. }