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.

VNativeButtonPaintable.java 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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.EventHelper;
  10. import com.vaadin.terminal.gwt.client.UIDL;
  11. public class VNativeButtonPaintable extends VAbstractPaintableWidget {
  12. @Override
  13. protected boolean delegateCaptionHandling() {
  14. return false;
  15. }
  16. @Override
  17. public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
  18. // Ensure correct implementation,
  19. // but don't let container manage caption etc.
  20. super.updateFromUIDL(uidl, client);
  21. if (!isRealUpdate(uidl)) {
  22. return;
  23. }
  24. getWidgetForPaintable().disableOnClick = uidl
  25. .hasAttribute(VButton.ATTR_DISABLE_ON_CLICK);
  26. getWidgetForPaintable().focusHandlerRegistration = EventHelper
  27. .updateFocusHandler(this, client,
  28. getWidgetForPaintable().focusHandlerRegistration);
  29. getWidgetForPaintable().blurHandlerRegistration = EventHelper
  30. .updateBlurHandler(this, client,
  31. getWidgetForPaintable().blurHandlerRegistration);
  32. // Save details
  33. getWidgetForPaintable().client = client;
  34. getWidgetForPaintable().paintableId = uidl.getId();
  35. // Set text
  36. getWidgetForPaintable().setText(uidl.getStringAttribute("caption"));
  37. // handle error
  38. if (uidl.hasAttribute("error")) {
  39. if (getWidgetForPaintable().errorIndicatorElement == null) {
  40. getWidgetForPaintable().errorIndicatorElement = DOM
  41. .createSpan();
  42. getWidgetForPaintable().errorIndicatorElement
  43. .setClassName("v-errorindicator");
  44. }
  45. getWidgetForPaintable().getElement().insertBefore(
  46. getWidgetForPaintable().errorIndicatorElement,
  47. getWidgetForPaintable().captionElement);
  48. } else if (getWidgetForPaintable().errorIndicatorElement != null) {
  49. getWidgetForPaintable().getElement().removeChild(
  50. getWidgetForPaintable().errorIndicatorElement);
  51. getWidgetForPaintable().errorIndicatorElement = null;
  52. }
  53. if (uidl.hasAttribute("icon")) {
  54. if (getWidgetForPaintable().icon == null) {
  55. getWidgetForPaintable().icon = new Icon(client);
  56. getWidgetForPaintable().getElement().insertBefore(
  57. getWidgetForPaintable().icon.getElement(),
  58. getWidgetForPaintable().captionElement);
  59. }
  60. getWidgetForPaintable().icon
  61. .setUri(uidl.getStringAttribute("icon"));
  62. } else {
  63. if (getWidgetForPaintable().icon != null) {
  64. getWidgetForPaintable().getElement().removeChild(
  65. getWidgetForPaintable().icon.getElement());
  66. getWidgetForPaintable().icon = null;
  67. }
  68. }
  69. }
  70. @Override
  71. protected Widget createWidget() {
  72. return GWT.create(VNativeButton.class);
  73. }
  74. @Override
  75. public VNativeButton getWidgetForPaintable() {
  76. return (VNativeButton) super.getWidgetForPaintable();
  77. }
  78. }