aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/src/com/vaadin/client/ui/VPopupView.java40
-rw-r--r--uitest/src/com/vaadin/tests/components/popupview/DisabledPopupView.java23
-rw-r--r--uitest/src/com/vaadin/tests/components/popupview/DisabledPopupViewTest.java20
3 files changed, 71 insertions, 12 deletions
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<Widget>,
+public class VPopupView extends HTML implements HasEnabled, Iterable<Widget>,
DeferredWorker {
public static final String CLASSNAME = "v-popupview";
@@ -78,6 +72,7 @@ public class VPopupView extends HTML implements Iterable<Widget>,
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<Widget>,
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));
+ }
}
});
@@ -197,6 +194,25 @@ public class VPopupView extends HTML implements Iterable<Widget>,
}-*/;
/**
+ * Returns true if the popup is enabled, false if not.
+ */
+ @Override
+ public boolean isEnabled() {
+ return enabled;
+ }
+
+ /**
+ * Sets whether this popup is enabled.
+ *
+ * @param enabled <code>true</code> to enable the popup, <code>false</code>
+ * 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
* (other than it being a VOverlay) is to be considered private and
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