From 8ecf9ecc332f396e5356b2d98dcfbd9b93cac3fd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sauli=20T=C3=A4hk=C3=A4p=C3=A4=C3=A4?= Date: Thu, 2 Oct 2014 22:19:05 +0300 Subject: [PATCH] Implement HasEnabled in VPopupView. (#14797) Change-Id: I7384fb6312a921330d8b57193e53c235213dcf00 --- .../src/com/vaadin/client/ui/VPopupView.java | 40 +++++++++++++------ .../popupview/DisabledPopupView.java | 23 +++++++++++ .../popupview/DisabledPopupViewTest.java | 20 ++++++++++ 3 files changed, 71 insertions(+), 12 deletions(-) create mode 100644 uitest/src/com/vaadin/tests/components/popupview/DisabledPopupView.java create mode 100644 uitest/src/com/vaadin/tests/components/popupview/DisabledPopupViewTest.java diff --git a/client/src/com/vaadin/client/ui/VPopupView.java b/client/src/com/vaadin/client/ui/VPopupView.java index 1a59501d38..7d98110446 100644 --- a/client/src/com/vaadin/client/ui/VPopupView.java +++ b/client/src/com/vaadin/client/ui/VPopupView.java @@ -33,13 +33,7 @@ import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Event; -import com.google.gwt.user.client.ui.Focusable; -import com.google.gwt.user.client.ui.HTML; -import com.google.gwt.user.client.ui.HasWidgets; -import com.google.gwt.user.client.ui.Label; -import com.google.gwt.user.client.ui.PopupPanel; -import com.google.gwt.user.client.ui.RootPanel; -import com.google.gwt.user.client.ui.Widget; +import com.google.gwt.user.client.ui.*; import com.vaadin.client.ApplicationConnection; import com.vaadin.client.ComponentConnector; import com.vaadin.client.DeferredWorker; @@ -51,7 +45,7 @@ import com.vaadin.client.ui.ShortcutActionHandler.ShortcutActionHandlerOwner; import com.vaadin.client.ui.popupview.VisibilityChangeEvent; import com.vaadin.client.ui.popupview.VisibilityChangeHandler; -public class VPopupView extends HTML implements Iterable, +public class VPopupView extends HTML implements HasEnabled, Iterable, DeferredWorker { public static final String CLASSNAME = "v-popupview"; @@ -78,6 +72,7 @@ public class VPopupView extends HTML implements Iterable, private final Label loading = new Label(); private boolean popupShowInProgress; + private boolean enabled = true; /** * loading constructor @@ -97,10 +92,12 @@ public class VPopupView extends HTML implements Iterable, addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { - preparePopup(popup); - showPopup(popup); - center(); - fireEvent(new VisibilityChangeEvent(true)); + if(isEnabled()) { + preparePopup(popup); + showPopup(popup); + center(); + fireEvent(new VisibilityChangeEvent(true)); + } } }); @@ -196,6 +193,25 @@ public class VPopupView extends HTML implements Iterable, } }-*/; + /** + * Returns true if the popup is enabled, false if not. + */ + @Override + public boolean isEnabled() { + return enabled; + } + + /** + * Sets whether this popup is enabled. + * + * @param enabled true to enable the popup, false + * to disable it + */ + @Override + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } + /** * This class is only public to enable overriding showPopup, and is * currently not intended to be extended or otherwise used directly. Its API diff --git a/uitest/src/com/vaadin/tests/components/popupview/DisabledPopupView.java b/uitest/src/com/vaadin/tests/components/popupview/DisabledPopupView.java new file mode 100644 index 0000000000..ecce1781a5 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/popupview/DisabledPopupView.java @@ -0,0 +1,23 @@ +package com.vaadin.tests.components.popupview; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Button; +import com.vaadin.ui.PopupView; + +public class DisabledPopupView extends AbstractTestUI { + + @Override + protected void setup(VaadinRequest request) { + PopupView popupView = new PopupView("Disabled Popup", new Button("Hi!")); + + popupView.setEnabled(false); + + addComponent(popupView); + } + + @Override + protected Integer getTicketNumber() { + return 14797; + } +} diff --git a/uitest/src/com/vaadin/tests/components/popupview/DisabledPopupViewTest.java b/uitest/src/com/vaadin/tests/components/popupview/DisabledPopupViewTest.java new file mode 100644 index 0000000000..be9345d588 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/popupview/DisabledPopupViewTest.java @@ -0,0 +1,20 @@ +package com.vaadin.tests.components.popupview; + +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.testbench.elements.PopupViewElement; +import com.vaadin.tests.tb3.MultiBrowserTest; +import org.junit.Test; + +import static org.junit.Assert.assertFalse; + +public class DisabledPopupViewTest extends MultiBrowserTest { + + @Test + public void disabledPopupDoesNotOpen() { + openTestURL(); + + $(PopupViewElement.class).first().click(); + + assertFalse($(ButtonElement.class).exists()); + } +} \ No newline at end of file -- 2.39.5