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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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.ButtonClientToServerRpc;
  13. public class NativeButtonConnector 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.updateFocusHandler(
  35. this, client, getWidget().focusHandlerRegistration);
  36. getWidget().blurHandlerRegistration = EventHelper.updateBlurHandler(
  37. this, client, getWidget().blurHandlerRegistration);
  38. // Save details
  39. getWidget().client = client;
  40. getWidget().paintableId = uidl.getId();
  41. // Set text
  42. getWidget().setText(getState().getCaption());
  43. // handle error
  44. if (uidl.hasAttribute("error")) {
  45. if (getWidget().errorIndicatorElement == null) {
  46. getWidget().errorIndicatorElement = DOM.createSpan();
  47. getWidget().errorIndicatorElement
  48. .setClassName("v-errorindicator");
  49. }
  50. getWidget().getElement().insertBefore(
  51. getWidget().errorIndicatorElement,
  52. getWidget().captionElement);
  53. } else if (getWidget().errorIndicatorElement != null) {
  54. getWidget().getElement().removeChild(
  55. getWidget().errorIndicatorElement);
  56. getWidget().errorIndicatorElement = null;
  57. }
  58. if (uidl.hasAttribute(ATTRIBUTE_ICON)) {
  59. if (getWidget().icon == null) {
  60. getWidget().icon = new Icon(client);
  61. getWidget().getElement().insertBefore(
  62. getWidget().icon.getElement(),
  63. getWidget().captionElement);
  64. }
  65. getWidget().icon.setUri(uidl.getStringAttribute(ATTRIBUTE_ICON));
  66. } else {
  67. if (getWidget().icon != null) {
  68. getWidget().getElement().removeChild(
  69. getWidget().icon.getElement());
  70. getWidget().icon = null;
  71. }
  72. }
  73. }
  74. @Override
  75. protected Widget createWidget() {
  76. return GWT.create(VNativeButton.class);
  77. }
  78. @Override
  79. public VNativeButton getWidget() {
  80. return (VNativeButton) super.getWidget();
  81. }
  82. @Override
  83. public ButtonState getState() {
  84. return (ButtonState) super.getState();
  85. }
  86. @Override
  87. protected ComponentState createState() {
  88. return GWT.create(ButtonState.class);
  89. }
  90. }