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;
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";
private final Label loading = new Label();
private boolean popupShowInProgress;
+ private boolean enabled = true;
/**
* loading constructor
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));
+ }
}
});
}
}-*/;
+ /**
+ * 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
--- /dev/null
+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;
+ }
+}
--- /dev/null
+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