aboutsummaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorAnastasia Smirnova <anasmi@utu.fi>2018-12-14 13:06:00 +0200
committerSun Zhe <31067185+ZheSun88@users.noreply.github.com>2018-12-14 13:06:00 +0200
commit7ecd44cfb6a2d08d67f72e38cadaba8fab04962d (patch)
treeb524ed84a8d3af04e4500ff2053fa5b2a68a4853 /client
parent891bb534de30ed39e463af88f67e7f5bbf94e3f1 (diff)
downloadvaadin-framework-7ecd44cfb6a2d08d67f72e38cadaba8fab04962d.tar.gz
vaadin-framework-7ecd44cfb6a2d08d67f72e38cadaba8fab04962d.zip
Move onClick logic to the Connector (#11367)
* Move onClick logic to the Connector Move onClick event handling from 'VNativeButton' to NativeButtonConnector. Now works as for regular button. Also, adding propagation of the `enabled` value to the state on disableOnClick being true Fixes https://github.com/vaadin/framework/issues/11188
Diffstat (limited to 'client')
-rw-r--r--client/src/main/java/com/vaadin/client/ui/VNativeButton.java22
-rw-r--r--client/src/main/java/com/vaadin/client/ui/nativebutton/NativeButtonConnector.java27
2 files changed, 25 insertions, 24 deletions
diff --git a/client/src/main/java/com/vaadin/client/ui/VNativeButton.java b/client/src/main/java/com/vaadin/client/ui/VNativeButton.java
index ac0f728ffe..3df97eb762 100644
--- a/client/src/main/java/com/vaadin/client/ui/VNativeButton.java
+++ b/client/src/main/java/com/vaadin/client/ui/VNativeButton.java
@@ -24,11 +24,8 @@ import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.Button;
import com.vaadin.client.ApplicationConnection;
import com.vaadin.client.BrowserInfo;
-import com.vaadin.client.MouseEventDetailsBuilder;
-import com.vaadin.client.StyleConstants;
import com.vaadin.client.Util;
import com.vaadin.client.WidgetUtil.ErrorUtil;
-import com.vaadin.shared.MouseEventDetails;
import com.vaadin.shared.ui.button.ButtonServerRpc;
public class VNativeButton extends Button
@@ -59,13 +56,10 @@ public class VNativeButton extends Button
* mouse while clicking it. In this case mouse leaves the button without
* moving.
*/
- private boolean clickPending;
+ public boolean clickPending;
private boolean cancelNextClick = false;
- /** For internal use only. May be removed or replaced in the future. */
- public boolean disableOnClick = false;
-
public VNativeButton() {
setStyleName(CLASSNAME);
@@ -145,20 +139,6 @@ public class VNativeButton extends Button
// (#11854)
setFocus(true);
}
- if (disableOnClick) {
- setEnabled(false);
- // FIXME: This should be moved to NativeButtonConnector along with
- // buttonRpcProxy
- addStyleName(StyleConstants.DISABLED);
- buttonRpcProxy.disableOnClick();
- }
-
- // Add mouse details
- MouseEventDetails details = MouseEventDetailsBuilder
- .buildMouseEventDetails(event.getNativeEvent(), getElement());
- buttonRpcProxy.click(details);
-
- clickPending = false;
}
@Override
diff --git a/client/src/main/java/com/vaadin/client/ui/nativebutton/NativeButtonConnector.java b/client/src/main/java/com/vaadin/client/ui/nativebutton/NativeButtonConnector.java
index 2bf1829ad8..6616dc2d5f 100644
--- a/client/src/main/java/com/vaadin/client/ui/nativebutton/NativeButtonConnector.java
+++ b/client/src/main/java/com/vaadin/client/ui/nativebutton/NativeButtonConnector.java
@@ -15,19 +15,24 @@
*/
package com.vaadin.client.ui.nativebutton;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.vaadin.client.MouseEventDetailsBuilder;
import com.vaadin.client.VCaption;
import com.vaadin.client.communication.StateChangeEvent;
import com.vaadin.client.ui.AbstractComponentConnector;
import com.vaadin.client.ui.ConnectorFocusAndBlurHandler;
import com.vaadin.client.ui.Icon;
import com.vaadin.client.ui.VNativeButton;
+import com.vaadin.shared.MouseEventDetails;
import com.vaadin.shared.ui.Connect;
import com.vaadin.shared.ui.button.ButtonServerRpc;
import com.vaadin.shared.ui.button.NativeButtonState;
import com.vaadin.ui.NativeButton;
@Connect(NativeButton.class)
-public class NativeButtonConnector extends AbstractComponentConnector {
+public class NativeButtonConnector extends AbstractComponentConnector
+ implements ClickHandler {
@Override
public void init() {
@@ -37,6 +42,7 @@ public class NativeButtonConnector extends AbstractComponentConnector {
getWidget().client = getConnection();
getWidget().paintableId = getConnectorId();
+ getWidget().addClickHandler(this);
ConnectorFocusAndBlurHandler.addHandlers(this);
}
@@ -49,8 +55,6 @@ public class NativeButtonConnector extends AbstractComponentConnector {
public void onStateChanged(StateChangeEvent stateChangeEvent) {
super.onStateChanged(stateChangeEvent);
- getWidget().disableOnClick = getState().disableOnClick;
-
// Set text
VCaption.setCaptionText(getWidget(), getState());
@@ -77,4 +81,21 @@ public class NativeButtonConnector extends AbstractComponentConnector {
public NativeButtonState getState() {
return (NativeButtonState) super.getState();
}
+
+ @Override
+ public void onClick(ClickEvent event) {
+ if (getState().disableOnClick) {
+ getState().enabled = false;
+ super.updateEnabledState(false);
+ getRpcProxy(ButtonServerRpc.class).disableOnClick();
+ }
+
+ // Add mouse details
+ MouseEventDetails details = MouseEventDetailsBuilder
+ .buildMouseEventDetails(event.getNativeEvent(),
+ getWidget().getElement());
+ getRpcProxy(ButtonServerRpc.class).click(details);
+
+ getWidget().clickPending = false;
+ }
}