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.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. import com.vaadin.terminal.gwt.client.ui.VButtonPaintable.ButtonClientToServerRpc;
  13. public class VNativeButtonPaintable extends AbstractComponentConnector {
  14. @Override
  15. public void init() {
  16. super.init();
  17. ButtonClientToServerRpc rpcProxy = GWT
  18. .create(ButtonClientToServerRpc.class);
  19. getWidget().buttonRpcProxy = initRPC(rpcProxy);
  20. }
  21. @Override
  22. protected boolean delegateCaptionHandling() {
  23. return false;
  24. }
  25. @Override
  26. public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
  27. // Ensure correct implementation,
  28. // but don't let container manage caption etc.
  29. super.updateFromUIDL(uidl, client);
  30. if (!isRealUpdate(uidl)) {
  31. return;
  32. }
  33. getWidget().disableOnClick = getState().isDisableOnClick();
  34. getWidget().focusHandlerRegistration = EventHelper
  35. .updateFocusHandler(this, client,
  36. getWidget().focusHandlerRegistration);
  37. getWidget().blurHandlerRegistration = EventHelper
  38. .updateBlurHandler(this, client,
  39. getWidget().blurHandlerRegistration);
  40. // Save details
  41. getWidget().client = client;
  42. getWidget().paintableId = uidl.getId();
  43. // Set text
  44. getWidget().setText(getState().getCaption());
  45. // handle error
  46. if (uidl.hasAttribute("error")) {
  47. if (getWidget().errorIndicatorElement == null) {
  48. getWidget().errorIndicatorElement = DOM
  49. .createSpan();
  50. getWidget().errorIndicatorElement
  51. .setClassName("v-errorindicator");
  52. }
  53. getWidget().getElement().insertBefore(
  54. getWidget().errorIndicatorElement,
  55. getWidget().captionElement);
  56. } else if (getWidget().errorIndicatorElement != null) {
  57. getWidget().getElement().removeChild(
  58. getWidget().errorIndicatorElement);
  59. getWidget().errorIndicatorElement = null;
  60. }
  61. if (uidl.hasAttribute(ATTRIBUTE_ICON)) {
  62. if (getWidget().icon == null) {
  63. getWidget().icon = new Icon(client);
  64. getWidget().getElement().insertBefore(
  65. getWidget().icon.getElement(),
  66. getWidget().captionElement);
  67. }
  68. getWidget().icon.setUri(uidl
  69. .getStringAttribute(ATTRIBUTE_ICON));
  70. } else {
  71. if (getWidget().icon != null) {
  72. getWidget().getElement().removeChild(
  73. getWidget().icon.getElement());
  74. getWidget().icon = null;
  75. }
  76. }
  77. }
  78. @Override
  79. protected Widget createWidget() {
  80. return GWT.create(VNativeButton.class);
  81. }
  82. @Override
  83. public VNativeButton getWidget() {
  84. return (VNativeButton) super.getWidget();
  85. }
  86. @Override
  87. public ButtonState getState() {
  88. return (ButtonState) super.getState();
  89. }
  90. @Override
  91. protected ComponentState createState() {
  92. return GWT.create(ButtonState.class);
  93. }
  94. }