diff --git a/resetbutton-vaadin8-addon/src/main/java/org/vaadin/addons/ResetButtonForTextField.java b/resetbutton-vaadin8-addon/src/main/java/org/vaadin/addons/ResetButtonForTextField.java index 47f3335..d2d3e28 100644 --- a/resetbutton-vaadin8-addon/src/main/java/org/vaadin/addons/ResetButtonForTextField.java +++ b/resetbutton-vaadin8-addon/src/main/java/org/vaadin/addons/ResetButtonForTextField.java @@ -3,9 +3,11 @@ import com.vaadin.server.AbstractClientConnector; import com.vaadin.server.AbstractExtension; import com.vaadin.shared.Registration; +import com.vaadin.shared.communication.SharedState; import com.vaadin.ui.TextField; import org.vaadin.addons.client.ResetButtonClickRpc; +import org.vaadin.addons.client.ResetButtonForTextFieldState; import java.util.ArrayList; import java.util.List; @@ -33,4 +35,17 @@ public Registration addResetButtonClickedListener(ResetButtonClickListener liste return () -> listeners.remove(listener); } -} + + @Override + protected ResetButtonForTextFieldState getState() { + return (ResetButtonForTextFieldState) super.getState(); + } + + public void setShowForReadOnly(boolean pValue) { + getState().showForReadOnly = pValue; + } + + public boolean isShowForReadOnly() { + return getState().showForReadOnly; + } +} \ No newline at end of file diff --git a/resetbutton-vaadin8-addon/src/main/java/org/vaadin/addons/client/ResetButtonForTextFieldConnector.java b/resetbutton-vaadin8-addon/src/main/java/org/vaadin/addons/client/ResetButtonForTextFieldConnector.java index dd579db..d0e4c9f 100644 --- a/resetbutton-vaadin8-addon/src/main/java/org/vaadin/addons/client/ResetButtonForTextFieldConnector.java +++ b/resetbutton-vaadin8-addon/src/main/java/org/vaadin/addons/client/ResetButtonForTextFieldConnector.java @@ -15,6 +15,7 @@ import com.vaadin.client.communication.StateChangeEvent; import com.vaadin.client.extensions.AbstractExtensionConnector; import com.vaadin.client.ui.VTextField; +import com.vaadin.shared.communication.SharedState; import com.vaadin.shared.ui.Connect; import org.vaadin.addons.ResetButtonForTextField; @@ -93,7 +94,7 @@ public void onKeyUp(KeyUpEvent event) { } private void updateResetButtonVisibility() { - if (textField.getValue().isEmpty() || textField.isReadOnly() + if (textField.getValue().isEmpty() || (!getState().showForReadOnly && textField.isReadOnly()) || !textField.isEnabled() || textField.getStyleName().contains("v-textfield-prompt")) { resetButtonElement.getStyle().setDisplay(Display.NONE); @@ -107,4 +108,9 @@ private void clearTextField() { updateResetButtonVisibility(); textField.getElement().focus(); } + + @Override + public ResetButtonForTextFieldState getState() { + return (ResetButtonForTextFieldState) super.getState(); + } } diff --git a/resetbutton-vaadin8-addon/src/main/java/org/vaadin/addons/client/ResetButtonForTextFieldState.java b/resetbutton-vaadin8-addon/src/main/java/org/vaadin/addons/client/ResetButtonForTextFieldState.java new file mode 100644 index 0000000..8f751aa --- /dev/null +++ b/resetbutton-vaadin8-addon/src/main/java/org/vaadin/addons/client/ResetButtonForTextFieldState.java @@ -0,0 +1,7 @@ +package org.vaadin.addons.client; + +import com.vaadin.shared.communication.SharedState; + +public class ResetButtonForTextFieldState extends SharedState{ + public boolean showForReadOnly = false; +}