Author: [EMAIL PROTECTED]
Date: Tue Oct 7 09:17:27 2008
New Revision: 3725
Added:
trunk/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/Issue2855.java
(contents, props changed)
Modified:
trunk/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/DefaultMuseum.java
trunk/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/Issue1169.java
trunk/user/src/com/google/gwt/user/client/ui/PopupPanel.java
trunk/user/test/com/google/gwt/user/client/ui/PopupTest.java
Log:
Added getters/setters to PopupPanel for autoHide and modal variables.
Patch by: jlabanca
Review by: rjrjr
Issue: 2855
Modified:
trunk/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/DefaultMuseum.java
==============================================================================
---
trunk/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/DefaultMuseum.java
(original)
+++
trunk/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/DefaultMuseum.java
Tue Oct 7 09:17:27 2008
@@ -41,8 +41,8 @@
addIssue(new Issue2392());
addIssue(new Issue2443());
addIssue(new Issue2553());
+ addIssue(new Issue2855());
addIssue(new TreeVisuals());
addIssue(new TestFireEvents());
-
}
}
Modified:
trunk/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/Issue1169.java
==============================================================================
---
trunk/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/Issue1169.java
(original)
+++
trunk/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/Issue1169.java
Tue Oct 7 09:17:27 2008
@@ -18,13 +18,12 @@
import com.google.gwt.museum.client.common.AbstractIssue;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.MenuBar;
-import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.Widget;
/**
- * The [EMAIL PROTECTED] PopupPanel} used to display sub menus in a [EMAIL
PROTECTED] MenuBar}
is not
- * accessible, nor is it under the [EMAIL PROTECTED] MenuBar MenuBar's} DOM
structure, so
- * it cannot be uniquely styled.
+ * The [EMAIL PROTECTED] com.google.gwt.user.client.ui.PopupPanel} used to
display sub
+ * menus in a [EMAIL PROTECTED] MenuBar} is not accessible, nor is it under the
+ * [EMAIL PROTECTED] MenuBar MenuBar's} DOM structure, so it cannot be
uniquely
styled.
*/
public class Issue1169 extends AbstractIssue {
/**
Added:
trunk/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/Issue2855.java
==============================================================================
--- (empty file)
+++
trunk/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/Issue2855.java
Tue Oct 7 09:17:27 2008
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2008 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may
not
+ * use this file except in compliance with the License. You may obtain a
copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
under
+ * the License.
+ */
+package com.google.gwt.museum.client.defaultmuseum;
+
+import com.google.gwt.museum.client.common.AbstractIssue;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * <h1>PopupPanel.setAutoHideEnabled() and setModel()</h1>
+ *
+ * <p>
+ * Verify that all states of the [EMAIL PROTECTED] PopupPanel} (combinations
of modal
and
+ * autoHide) work and can be change seemlessly.
+ * </p>
+ */
+public class Issue2855 extends AbstractIssue {
+
+ @Override
+ public Widget createIssue() {
+ // Create the popup panel
+ final PopupPanel popup = new PopupPanel();
+
+ // Add buttons to call getters and setters
+ Button toggleAutoHide = new Button("4. Toggle AutoHide",
+ new ClickListener() {
+ public void onClick(Widget sender) {
+ popup.setAutoHideEnabled(!popup.isAutoHideEnabled());
+ }
+ });
+ Button toggleModal = new Button("3. Toggle Modal", new ClickListener()
{
+ public void onClick(Widget sender) {
+ popup.setModal(!popup.isModal());
+ }
+ });
+ Button isAutoHide = new Button("isAutoHide?", new ClickListener() {
+ public void onClick(Widget sender) {
+ Window.alert("AutoHide: " + popup.isAutoHideEnabled());
+ }
+ });
+ Button isModal = new Button("isModal?", new ClickListener() {
+ public void onClick(Widget sender) {
+ Window.alert("Modal: " + popup.isModal());
+ }
+ });
+ Button closeButton = new Button("Close", new ClickListener() {
+ public void onClick(Widget sender) {
+ popup.hide();
+ }
+ });
+ VerticalPanel vPanel = new VerticalPanel();
+ vPanel.add(toggleModal);
+ vPanel.add(toggleAutoHide);
+ vPanel.add(isModal);
+ vPanel.add(isAutoHide);
+ vPanel.add(closeButton);
+ popup.setWidget(vPanel);
+
+ // Add control buttons
+ Button showPopup = new Button("1. Show Popup", new ClickListener() {
+ public void onClick(Widget sender) {
+ popup.center();
+ }
+ });
+ Button clickable = new Button("2/4. Click Me", new ClickListener() {
+ public void onClick(Widget sender) {
+ Window.alert("You got me!");
+ }
+ });
+ VerticalPanel layout = new VerticalPanel();
+ layout.add(showPopup);
+ layout.add(clickable);
+ return layout;
+ }
+
+ @Override
+ public String getInstructions() {
+ String text = "Perform the following steps:<br>"
+ + "1. Show the popup<br>"
+ + "2. Click the 'Click Me' button and verify an alert box
appears<br>"
+ + "3. Click the 'Toggle Modal' button<br>"
+ + "4. Click the 'Click Me' button and verify an alert box doesn't
appear<br>"
+ + "5. Click the 'Toggle AutoHide' button<br>"
+ + "6. Click on the screen and verify that the popup closes";
+ return text;
+ }
+
+ @Override
+ public String getSummary() {
+ return "PopupPanel.setAutoHideEnabled() and setModel() tests";
+ }
+
+ @Override
+ public boolean hasCSS() {
+ return false;
+ }
+}
Modified: trunk/user/src/com/google/gwt/user/client/ui/PopupPanel.java
==============================================================================
--- trunk/user/src/com/google/gwt/user/client/ui/PopupPanel.java
(original)
+++ trunk/user/src/com/google/gwt/user/client/ui/PopupPanel.java Tue Oct
7
09:17:27 2008
@@ -435,6 +435,26 @@
return isAnimationEnabled;
}
+ /**
+ * Returns <code>true</code> if the popup should be automatically hidden
when
+ * the user clicks outside of it.
+ *
+ * @return true if autoHide is enabled, false if disabled
+ */
+ public boolean isAutoHideEnabled() {
+ return autoHide;
+ }
+
+ /**
+ * Returns <code>true</code> if keyboard or mouse events that do not
target
+ * the PopupPanel or its children should be ignored.
+ *
+ * @return true if popup is modal, false if not
+ */
+ public boolean isModal() {
+ return modal;
+ }
+
public boolean onEventPreview(Event event) {
Element target = DOM.eventGetTarget(event);
@@ -542,6 +562,16 @@
}
/**
+ * Enable or disable the autoHide feature. When enabled, the popup will
be
+ * automatically hidden when the user clicks outside of it.
+ *
+ * @param autoHide true to enable autoHide, false to disable
+ */
+ public void setAutoHideEnabled(boolean autoHide) {
+ this.autoHide = autoHide;
+ }
+
+ /**
* Sets the height of the panel's child widget. If the panel's child
widget
* has not been set, the height passed in will be cached and used to set
the
* height immediately after the child widget is set.
@@ -563,6 +593,16 @@
if (height.length() == 0) {
desiredHeight = null;
}
+ }
+
+ /**
+ * When the popup is modal, keyboard or mouse events that do not target
the
+ * PopupPanel or its children will be ignored.
+ *
+ * @param modal true to make the popup modal
+ */
+ public void setModal(boolean modal) {
+ this.modal = modal;
}
/**
Modified: trunk/user/test/com/google/gwt/user/client/ui/PopupTest.java
==============================================================================
--- trunk/user/test/com/google/gwt/user/client/ui/PopupTest.java
(original)
+++ trunk/user/test/com/google/gwt/user/client/ui/PopupTest.java Tue Oct
7
09:17:27 2008
@@ -50,6 +50,18 @@
assertFalse(popup.isAnimationEnabled());
popup.setAnimationEnabled(true);
assertTrue(popup.isAnimationEnabled());
+
+ // Modal
+ popup.setModal(true);
+ assertTrue(popup.isModal());
+ popup.setModal(false);
+ assertFalse(popup.isModal());
+
+ // AutoHide enabled
+ popup.setAutoHideEnabled(true);
+ assertTrue(popup.isAutoHideEnabled());
+ popup.setAutoHideEnabled(false);
+ assertFalse(popup.isAutoHideEnabled());
}
/**
--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---