Refactoring out a SimpleLogger for use by code museum.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4453 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/reference/code-museum/src/com/google/gwt/museum/DefaultMuseum.gwt.xml b/reference/code-museum/src/com/google/gwt/museum/DefaultMuseum.gwt.xml
index 21d12fd..cee0aa1 100644
--- a/reference/code-museum/src/com/google/gwt/museum/DefaultMuseum.gwt.xml
+++ b/reference/code-museum/src/com/google/gwt/museum/DefaultMuseum.gwt.xml
@@ -3,5 +3,6 @@
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.museum.Museum'/>
<source path="client/defaultmuseum"/>
- <entry-point class="com.google.gwt.museum.client.defaultmuseum.DefaultMuseum"/>
-</module>
+ <!-- Specify the app entry point class. -->
+ <entry-point class='com.google.gwt.museum.client.defaultmuseum.Issue3190'/>
+ </module>
diff --git a/reference/code-museum/src/com/google/gwt/museum/client/common/EventReporter.java b/reference/code-museum/src/com/google/gwt/museum/client/common/EventReporter.java
index c7e674a..9790aad 100644
--- a/reference/code-museum/src/com/google/gwt/museum/client/common/EventReporter.java
+++ b/reference/code-museum/src/com/google/gwt/museum/client/common/EventReporter.java
@@ -16,7 +16,6 @@
package com.google.gwt.museum.client.common;
-import com.google.gwt.event.dom.client.HandlesAllKeyEvents;
import com.google.gwt.event.dom.client.BlurEvent;
import com.google.gwt.event.dom.client.BlurHandler;
import com.google.gwt.event.dom.client.ChangeEvent;
@@ -26,15 +25,17 @@
import com.google.gwt.event.dom.client.FocusEvent;
import com.google.gwt.event.dom.client.FocusHandler;
import com.google.gwt.event.dom.client.KeyDownEvent;
+import com.google.gwt.event.dom.client.KeyDownHandler;
import com.google.gwt.event.dom.client.KeyPressEvent;
+import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.event.dom.client.KeyUpEvent;
+import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
-import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.ClickListener;
@@ -42,13 +43,11 @@
import com.google.gwt.user.client.ui.HasHTML;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.KeyboardListener;
-import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.MouseListener;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.SuggestionEvent;
import com.google.gwt.user.client.ui.SuggestionHandler;
import com.google.gwt.user.client.ui.UIObject;
-import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.SuggestOracle.Suggestion;
@@ -59,11 +58,12 @@
* @param <T> target type
*/
@SuppressWarnings("deprecation")
-public class EventReporter<V, T> extends HandlesAllKeyEvents implements
+public class EventReporter<V, T> extends SimpleLogger implements
ChangeListener, FocusListener, ValueChangeHandler<V>,
SelectionHandler<Suggestion>, SuggestionHandler, KeyboardListener,
ChangeHandler, BlurHandler, FocusHandler, ClickHandler, ClickListener,
- CloseHandler<T>, MouseListener {
+ CloseHandler<T>, MouseListener, KeyDownHandler, KeyUpHandler,
+ KeyPressHandler {
/**
* Add/remove handlers via check box.
@@ -96,10 +96,8 @@
public abstract void removeHandler();
}
- private VerticalPanel panel = new VerticalPanel();
-
public EventReporter(Panel parent) {
- parent.add(this.panel);
+ parent.add(this);
}
public String getInfo(Object sender) {
@@ -211,17 +209,4 @@
public void onValueChange(ValueChangeEvent<V> event) {
report(event);
}
-
- // will be replaced by logging
- public void report(String s) {
- panel.insert(new Label(s), 0);
- if (panel.getWidgetCount() == 10) {
- panel.remove(9);
- }
- }
-
- private void report(GwtEvent<?> event) {
- report(getInfo(event.getSource()) + " fired " + event.toDebugString());
- }
-
}
diff --git a/reference/code-museum/src/com/google/gwt/museum/client/common/SimpleLogger.java b/reference/code-museum/src/com/google/gwt/museum/client/common/SimpleLogger.java
new file mode 100644
index 0000000..eeba505
--- /dev/null
+++ b/reference/code-museum/src/com/google/gwt/museum/client/common/SimpleLogger.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2009 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.common;
+
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.HasHTML;
+import com.google.gwt.user.client.ui.HasText;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.UIObject;
+import com.google.gwt.user.client.ui.VerticalPanel;
+
+/**
+ * Helper class to create visual tests.
+ *
+ * @param <V> value type
+ * @param <T> target type
+ */
+@SuppressWarnings("deprecation")
+public class SimpleLogger<V, T> extends Composite {
+
+ private VerticalPanel panel = new VerticalPanel();
+
+ public SimpleLogger() {
+ initWidget(panel);
+ }
+
+ public String getInfo(Object sender) {
+ if (sender instanceof HasText) {
+ return ((HasText) sender).getText();
+ } else if (sender instanceof UIObject
+ && ((UIObject) sender).getTitle() != null) {
+ return ((UIObject) sender).getTitle();
+ } else if (sender instanceof HasHTML) {
+ return ((HasHTML) sender).getHTML();
+ } else {
+ return sender.toString();
+ }
+ }
+
+ public void report(String s) {
+ panel.insert(new Label(s), 0);
+ if (panel.getWidgetCount() == 10) {
+ panel.remove(9);
+ }
+ }
+
+ public void report(GwtEvent<?> event) {
+ report(getInfo(event.getSource()) + " fired " + event.toDebugString());
+ }
+
+}
diff --git a/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForCheckBoxAndRadioButtonEvents.java b/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForCheckBoxAndRadioButtonEvents.java
index 468b95a..1afbee1 100644
--- a/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForCheckBoxAndRadioButtonEvents.java
+++ b/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForCheckBoxAndRadioButtonEvents.java
@@ -18,6 +18,7 @@
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.HandlesAllKeyEvents;
import com.google.gwt.museum.client.common.AbstractIssue;
import com.google.gwt.museum.client.common.EventReporter;
import com.google.gwt.user.client.ui.Button;
@@ -49,8 +50,7 @@
}
}));
b.addKeyboardListener(handler);
- handler.addKeyHandlersTo(b);
-
+ HandlesAllKeyEvents.addHandlers(b, handler);
b.addFocusHandler(handler);
b.addBlurHandler(handler);
b.addFocusListener(handler);
@@ -65,7 +65,8 @@
p.add(radio);
handler = new EventReporter<Boolean, Object>(p);
radio.addKeyboardListener(handler);
- handler.addKeyHandlersTo(radio);
+
+ HandlesAllKeyEvents.addHandlers(radio, handler);
radio.addBlurHandler(handler);
radio.addFocusHandler(handler);
radio.addClickHandler(handler);
diff --git a/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForTextEvents.java b/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForTextEvents.java
index 704f83a..76cfe4a 100644
--- a/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForTextEvents.java
+++ b/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForTextEvents.java
@@ -18,6 +18,7 @@
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.HandlesAllKeyEvents;
import com.google.gwt.museum.client.common.AbstractIssue;
import com.google.gwt.museum.client.common.EventReporter;
import com.google.gwt.user.client.ui.Button;
@@ -48,7 +49,7 @@
}
}));
b.addKeyboardListener(handler);
- handler.addKeyHandlersTo(b);
+ HandlesAllKeyEvents.addHandlers(b, handler);
b.addChangeListener(handler);
b.addFocusHandler(handler);
b.addBlurHandler(handler);
@@ -61,7 +62,8 @@
p.add(rich);
handler = new EventReporter<String, Object>(p);
rich.addKeyboardListener(handler);
- handler.addKeyHandlersTo(rich);
+ HandlesAllKeyEvents.addHandlers(rich,handler);
+
rich.addBlurHandler(handler);
rich.addFocusHandler(handler);
rich.addClickHandler(handler);
diff --git a/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForTree.java b/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForTree.java
index ca8e319..8a280c1 100644
--- a/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForTree.java
+++ b/reference/code-museum/src/com/google/gwt/museum/client/defaultmuseum/VisualsForTree.java
@@ -18,8 +18,11 @@
import com.google.gwt.museum.client.common.AbstractIssue;
import com.google.gwt.user.client.ui.CheckBox;
+import com.google.gwt.user.client.ui.Focusable;
+import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RadioButton;
+import com.google.gwt.user.client.ui.SimpleCheckBox;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.TreeItem;
@@ -30,8 +33,38 @@
* A simple tree used to quickly exercise tree behavior.
*/
public class VisualsForTree extends AbstractIssue {
+
+ static class DelegatingFocusPanel extends HorizontalPanel implements
+ Focusable {
+
+ public int getTabIndex() {
+ return getFocusable().getTabIndex();
+ }
+
+ public void setAccessKey(char key) {
+ getFocusable().setAccessKey(key);
+ }
+
+ public void setFocus(boolean focused) {
+ getFocusable().setFocus(focused);
+ }
+
+ public void setTabIndex(int index) {
+ getFocusable().setTabIndex(index);
+ }
+
+ private Focusable getFocusable() {
+ for (Widget widget : this.getChildren()) {
+ if (widget instanceof Focusable) {
+ return (Focusable) widget;
+ }
+ }
+ throw new IllegalArgumentException("No focusable children to focus on");
+ }
+ }
+
public static Tree createTree() {
- Tree t = new Tree();
+ Tree tree = new Tree();
TreeItem a = new TreeItem("a");
TreeItem b = new TreeItem(
"b, though this is a very, very long text field in order to trigger text wrapping bugs, if there are any such bugs currently in the tree.");
@@ -47,18 +80,38 @@
panel.setWidget(new Label("There should not be any space above me"));
TreeItem f = new TreeItem(panel);
- t.setSelectedItem(b);
- t.addItem(a);
- t.addItem(b);
- t.addItem(c);
- t.addItem(d);
- t.addItem(e);
- t.addItem(f);
+ tree.setSelectedItem(b);
+ tree.addItem(a);
+ tree.addItem(b);
+ tree.addItem(c);
+ tree.addItem(d);
+ tree.addItem(e);
+ tree.addItem(f);
b.addItem(ba);
b.addItem(bb);
bb.addItem(bba);
b.addItem(bc);
- return t;
+
+ // Focus checks
+ DelegatingFocusPanel focus = new DelegatingFocusPanel();
+ focus.add(new Label("first check box should have focus "));
+ focus.add(new SimpleCheckBox());
+ focus.add(new SimpleCheckBox());
+
+ final DelegatingFocusPanel focus2 = new DelegatingFocusPanel();
+ focus2.add(new Label("second check box should have focus "));
+ focus2.add(new SimpleCheckBox());
+ focus2.add(new SimpleCheckBox());
+
+ TreeItem customFocus = new TreeItem(focus2) {
+ @Override
+ public Focusable getFocusable() {
+ return (Focusable) focus2.getWidget(2);
+ }
+ };
+ tree.addItem(focus);
+ tree.addItem(customFocus);
+ return tree;
}
@Override