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.

NativeButtonConnector.java 3.4KB

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