Revision: 9625
Author: [email protected]
Date: Wed Jan 26 11:03:00 2011
Log: Cherry picking r9614 and r9620 into releases/2.2 5917 and 5916.
http://code.google.com/p/google-web-toolkit/source/detail?r=9625
Modified:
/releases/2.2/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.java
/releases/2.2/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImpl.java
/releases/2.2/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplTrident.java
/releases/2.2/user/src/com/google/gwt/user/cellview/client/SimplePager.java
=======================================
---
/releases/2.2/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.java
Tue Jan 25 08:46:02 2011
+++
/releases/2.2/samples/dynatablerf/src/com/google/gwt/sample/dynatablerf/client/widgets/SummaryWidget.java
Wed Jan 26 07:58:14 2011
@@ -240,6 +240,10 @@
new Receiver<List<PersonProxy>>() {
@Override
public void onSuccess(List<PersonProxy> response) {
+ if (lastFetch != start) {
+ return;
+ }
+
int responses = response.size();
table.setRowData(start, response);
pager.setPageStart(start);
=======================================
---
/releases/2.2/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImpl.java
Tue Nov 23 05:52:59 2010
+++
/releases/2.2/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImpl.java
Wed Jan 26 07:58:14 2011
@@ -50,7 +50,7 @@
/**
* The set of natively focusable elements.
*/
- private final Set<String> focusableTypes;
+ final Set<String> focusableTypes;
CellBasedWidgetImpl() {
focusableTypes = new HashSet<String>();
=======================================
---
/releases/2.2/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplTrident.java
Wed Sep 22 12:58:01 2010
+++
/releases/2.2/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplTrident.java
Wed Jan 26 07:58:14 2011
@@ -245,6 +245,12 @@
changeEventTriggers.add("mouseup");
changeEventTriggers.add("mousewheel");
}
+
+ @Override
+ public boolean isFocusable(Element elem) {
+ return focusableTypes.contains(elem.getTagName().toLowerCase())
+ || getTabIndexIfSpecified(elem) >= 0;
+ }
@Override
public void onBrowserEvent(final Widget widget, Event event) {
@@ -340,6 +346,16 @@
return super.sinkEvent(widget, typeName);
}
}
+
+ /**
+ * Get the tab index of an element if the tab index is specified.
+ *
+ * @param elem the Element
+ * @return the tab index, or -1 if not specified
+ */
+ private native int getTabIndexIfSpecified(Element elem) /*-{
+ return elem.getAttributeNode('tabIndex').specified ? elem.tabIndex :
-1;
+ }-*/;
/**
* Initialize the focus event listener.
=======================================
---
/releases/2.2/user/src/com/google/gwt/user/cellview/client/SimplePager.java
Wed Oct 6 10:05:51 2010
+++
/releases/2.2/user/src/com/google/gwt/user/cellview/client/SimplePager.java
Wed Jan 26 07:58:14 2011
@@ -1,12 +1,12 @@
/*
* Copyright 2010 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
@@ -24,6 +24,7 @@
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.resources.client.ImageResource.ImageOptions;
import com.google.gwt.uibinder.client.UiConstructor;
+import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
@@ -34,7 +35,7 @@
/**
* A pager for controlling a {@link HasRows} that only supports simple page
* navigation.
- *
+ *
* <p>
* <h3>Example</h3>
* {@example com.google.gwt.examples.cellview.SimplePagerExample}
@@ -141,6 +142,53 @@
public static enum TextLocation {
CENTER, LEFT, RIGHT;
}
+
+ /**
+ * An {@link Image} that acts as a button.
+ */
+ private static class ImageButton extends Image {
+ private boolean disabled;
+ private final ImageResource resDisabled;
+ private final ImageResource resEnabled;
+ private final String styleDisabled;
+
+ public ImageButton(ImageResource resEnabled, ImageResource resDiabled,
+ String disabledStyle) {
+ super(resEnabled);
+ this.resEnabled = resEnabled;
+ this.resDisabled = resDiabled;
+ this.styleDisabled = disabledStyle;
+ }
+
+ public boolean isDisabled() {
+ return disabled;
+ }
+
+ @Override
+ public void onBrowserEvent(Event event) {
+ // Ignore events if disabled.
+ if (disabled) {
+ return;
+ }
+
+ super.onBrowserEvent(event);
+ }
+
+ public void setDisabled(boolean isDisabled) {
+ if (this.disabled == isDisabled) {
+ return;
+ }
+
+ this.disabled = isDisabled;
+ if (disabled) {
+ setResource(resDisabled);
+ getElement().getParentElement().addClassName(styleDisabled);
+ } else {
+ setResource(resEnabled);
+ getElement().getParentElement().removeClassName(styleDisabled);
+ }
+ }
+ }
private static int DEFAULT_FAST_FORWARD_ROWS = 1000;
private static Resources DEFAULT_RESOURCES;
@@ -152,32 +200,20 @@
return DEFAULT_RESOURCES;
}
- private final Image fastForward;
+ private final ImageButton fastForward;
private final int fastForwardRows;
- private final Image firstPage;
+ private final ImageButton firstPage;
/**
* We use an {@link HTML} so we can embed the loading image.
*/
private final HTML label = new HTML();
- private final Image lastPage;
-
- /**
- * Set to true when the next and last buttons are disabled.
- */
- private boolean nextDisabled;
-
- private final Image nextPage;
-
- /**
- * Set to true when the prev and first buttons are disabled.
- */
- private boolean prevDisabled;
-
- private final Image prevPage;
+ private final ImageButton lastPage;
+ private final ImageButton nextPage;
+ private final ImageButton prevPage;
/**
* The {@link Resources} used by this widget.
@@ -198,7 +234,7 @@
/**
* Construct a {@link SimplePager} with the specified text location.
- *
+ *
* @param location the location of the text relative to the buttons
*/
@UiConstructor
@@ -210,7 +246,7 @@
/**
* Construct a {@link SimplePager} with the specified resources.
- *
+ *
* @param location the location of the text relative to the buttons
* @param resources the {@link Resources} to use
* @param showFastForwardButton if true, show a fast-forward button that
@@ -227,26 +263,31 @@
this.style.ensureInjected();
// Create the buttons.
- firstPage = new Image(resources.simplePagerFirstPage());
+ String disabledStyle = style.disabledButton();
+ firstPage = new ImageButton(resources.simplePagerFirstPage(),
+ resources.simplePagerFirstPageDisabled(), disabledStyle);
firstPage.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
firstPage();
}
});
- nextPage = new Image(resources.simplePagerNextPage());
+ nextPage = new ImageButton(resources.simplePagerNextPage(),
+ resources.simplePagerNextPageDisabled(), disabledStyle);
nextPage.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
nextPage();
}
});
- prevPage = new Image(resources.simplePagerPreviousPage());
+ prevPage = new ImageButton(resources.simplePagerPreviousPage(),
+ resources.simplePagerPreviousPageDisabled(), disabledStyle);
prevPage.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
previousPage();
}
});
if (showLastPageButton) {
- lastPage = new Image(resources.simplePagerLastPage());
+ lastPage = new ImageButton(resources.simplePagerLastPage(),
+ resources.simplePagerLastPageDisabled(), disabledStyle);
lastPage.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
lastPage();
@@ -256,7 +297,8 @@
lastPage = null;
}
if (showFastForwardButton) {
- fastForward = new Image(resources.simplePagerFastForward());
+ fastForward = new ImageButton(resources.simplePagerFastForward(),
+ resources.simplePagerFastForwardDisabled(), disabledStyle);
fastForward.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
setPage(getPage() + getFastForwardPages());
@@ -402,7 +444,7 @@
/**
* Get the text to display in the pager that reflects the state of the
pager.
- *
+ *
* @return the text
*/
protected String createText() {
@@ -439,19 +481,19 @@
* Check if the next button is disabled. Visible for testing.
*/
boolean isNextButtonDisabled() {
- return nextDisabled;
+ return nextPage.isDisabled();
}
/**
* Check if the previous button is disabled. Visible for testing.
*/
boolean isPreviousButtonDisabled() {
- return prevDisabled;
+ return prevPage.isDisabled();
}
/**
* Get the number of pages to fast forward based on the current page
size.
- *
+ *
* @return the number of pages to fast forward
*/
private int getFastForwardPages() {
@@ -461,7 +503,7 @@
/**
* Enable or disable the fast forward button.
- *
+ *
* @param disabled true to disable, false to enable
*/
private void setFastForwardDisabled(boolean disabled) {
@@ -481,61 +523,23 @@
/**
* Enable or disable the next page buttons.
- *
+ *
* @param disabled true to disable, false to enable
*/
private void setNextPageButtonsDisabled(boolean disabled) {
- if (disabled == nextDisabled) {
- return;
- }
-
- nextDisabled = disabled;
- if (disabled) {
- nextPage.setResource(resources.simplePagerNextPageDisabled());
- nextPage.getElement().getParentElement().addClassName(
- style.disabledButton());
- if (lastPage != null) {
- lastPage.setResource(resources.simplePagerLastPageDisabled());
- lastPage.getElement().getParentElement().addClassName(
- style.disabledButton());
- }
- } else {
- nextPage.setResource(resources.simplePagerNextPage());
- nextPage.getElement().getParentElement().removeClassName(
- style.disabledButton());
- if (lastPage != null) {
- lastPage.setResource(resources.simplePagerLastPage());
- lastPage.getElement().getParentElement().removeClassName(
- style.disabledButton());
- }
+ nextPage.setDisabled(disabled);
+ if (lastPage != null) {
+ lastPage.setDisabled(disabled);
}
}
/**
* Enable or disable the previous page buttons.
- *
+ *
* @param disabled true to disable, false to enable
*/
private void setPrevPageButtonsDisabled(boolean disabled) {
- if (disabled == prevDisabled) {
- return;
- }
-
- prevDisabled = disabled;
- if (disabled) {
- firstPage.setResource(resources.simplePagerFirstPageDisabled());
- firstPage.getElement().getParentElement().addClassName(
- style.disabledButton());
- prevPage.setResource(resources.simplePagerPreviousPageDisabled());
- prevPage.getElement().getParentElement().addClassName(
- style.disabledButton());
- } else {
- firstPage.setResource(resources.simplePagerFirstPage());
- firstPage.getElement().getParentElement().removeClassName(
- style.disabledButton());
- prevPage.setResource(resources.simplePagerPreviousPage());
- prevPage.getElement().getParentElement().removeClassName(
- style.disabledButton());
- }
+ firstPage.setDisabled(disabled);
+ prevPage.setDisabled(disabled);
}
}
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors