Only show results of the current search query.
http://gwt-code-reviews.appspot.com/270801/show
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7788 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/client/StockQueryWidget.java b/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/client/StockQueryWidget.java
index 552f692..1a6ef7a 100644
--- a/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/client/StockQueryWidget.java
+++ b/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/client/StockQueryWidget.java
@@ -25,6 +25,7 @@
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiFactory;
import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
@@ -59,10 +60,17 @@
queryField.setText("G");
// Add a handler to send the name to the server
+ final Timer requestTimer = new Timer() {
+ @Override
+ public void run() {
+ updater.update();
+ }
+ };
queryField.addKeyUpHandler(new KeyUpHandler() {
public void onKeyUp(KeyUpEvent event) {
Columns.nameCell.setHighlightRegex(getSearchQuery());
- updater.update();
+ // Delay the request until the user stops typing.
+ requestTimer.schedule(250);
}
});
}
diff --git a/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/client/StockSample.java b/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/client/StockSample.java
index 30d76ef..2aad2f7 100644
--- a/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/client/StockSample.java
+++ b/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/client/StockSample.java
@@ -177,11 +177,14 @@
* @param response the stock response
*/
public void processStockResponse(StockResponse response) {
- // Update the search list.
+ // Update the search list if the query has not changed.
StockQuoteList searchResults = response.getSearchResults();
- searchListModel.updateDataSize(response.getNumSearchResults(), true);
- searchListModel.updateViewData(searchResults.getStartIndex(),
- searchResults.size(), searchResults);
+ String searchQuery = queryWidget.getSearchQuery();
+ if (searchQuery != null && searchQuery.equals(response.getSearchQuery())) {
+ searchListModel.updateDataSize(response.getNumSearchResults(), true);
+ searchListModel.updateViewData(searchResults.getStartIndex(),
+ searchResults.size(), searchResults);
+ }
// Update the favorites list.
updateFavorites(response);
diff --git a/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/server/StockServiceImpl.java b/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/server/StockServiceImpl.java
index 6af69bb..ccaed91 100644
--- a/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/server/StockServiceImpl.java
+++ b/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/server/StockServiceImpl.java
@@ -158,8 +158,9 @@
PlayerStatus player = ensurePlayer();
player.addFavorite(ticker);
Result favorites = queryFavorites(favoritesRange);
- player.addStatus(player.getDisplayName() + " added " + ticker + " to favorites");
- return createStockResponse(player, null, favorites, null, null);
+ player.addStatus(player.getDisplayName() + " added " + ticker
+ + " to favorites");
+ return createStockResponse(player, null, null, favorites, null, null);
}
public Result getSectorQuotes(String sector, Range sectorRange) {
@@ -187,19 +188,20 @@
Result searchResults = getSearchQuotes(query, searchRange);
Result favorites = queryFavorites(favoritesRange);
String sectorName = request.getSector();
- Result sector = sectorRange != null ?
- getSectorQuotes(sectorName, sectorRange) : null;
+ Result sector = sectorRange != null ? getSectorQuotes(sectorName,
+ sectorRange) : null;
- return createStockResponse(player, searchResults, favorites, sectorName,
- sector);
+ return createStockResponse(player, request.getSearchQuery(), searchResults,
+ favorites, sectorName, sector);
}
public StockResponse removeFavorite(String ticker, Range favoritesRange) {
PlayerStatus player = ensurePlayer();
player.removeFavorite(ticker);
Result favorites = queryFavorites(favoritesRange);
- player.addStatus(player.getDisplayName() + " removed " + ticker + " from favorites");
- return createStockResponse(player, null, favorites, null, null);
+ player.addStatus(player.getDisplayName() + " removed " + ticker
+ + " from favorites");
+ return createStockResponse(player, null, null, favorites, null, null);
}
public Transaction transact(Transaction transaction)
@@ -238,6 +240,7 @@
* Create a stock response, updating the current user's net worth.
*
* @param player the player info
+ * @param searchQuery the original search query
* @param searchResults the search results
* @param favorites the users favorites
* @param sectorName the name of the sector
@@ -245,8 +248,8 @@
* @return a {@link StockResponse}
*/
private StockResponse createStockResponse(PlayerStatus player,
- Result searchResults, Result favorites, String sectorName,
- Result sectorResults) {
+ String searchQuery, Result searchResults, Result favorites,
+ String sectorName, Result sectorResults) {
// Default to no search results.
if (searchResults == null) {
searchResults = new Result(null, 0);
@@ -271,7 +274,7 @@
return o2.getNetWorth() - o1.getNetWorth();
}
});
- StockResponse response = new StockResponse(player.copy(),
+ StockResponse response = new StockResponse(player.copy(), searchQuery,
searchResults.quotes, favorites.quotes, sectorName != null ? sectorName
: null, sectorResults.quotes, searchResults.numRows,
favorites.numRows, sectorResults.numRows, playerInfo);
diff --git a/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/shared/StockResponse.java b/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/shared/StockResponse.java
index 56db23e..7f940fa 100644
--- a/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/shared/StockResponse.java
+++ b/bikeshed/src/com/google/gwt/sample/bikeshed/stocks/shared/StockResponse.java
@@ -26,6 +26,7 @@
/**
* The amount of available cash in pennies.
*/
+ private String searchQuery;
private StockQuoteList favorites;
private int numFavorites;
private int numSearchResults;
@@ -36,11 +37,12 @@
private PlayerInfo player;
private List<PlayerInfo> playerInfo;
- public StockResponse(PlayerInfo player, StockQuoteList searchResults,
- StockQuoteList favorites, String sectorName, StockQuoteList sector,
- int numSearchResults, int numFavorites, int numSector,
- List<PlayerInfo> playerInfo) {
+ public StockResponse(PlayerInfo player, String searchQuery,
+ StockQuoteList searchResults, StockQuoteList favorites,
+ String sectorName, StockQuoteList sector, int numSearchResults,
+ int numFavorites, int numSector, List<PlayerInfo> playerInfo) {
this.player = player;
+ this.searchQuery = searchQuery;
this.searchResults = searchResults;
this.favorites = favorites;
this.sectorName = sectorName;
@@ -93,6 +95,10 @@
return playerInfo;
}
+ public String getSearchQuery() {
+ return searchQuery;
+ }
+
public StockQuoteList getSearchResults() {
return searchResults;
}