Author: dward
Date: 2007-09-26 20:38:56 +0200 (Wed, 26 Sep 2007)
New Revision: 5100

Added:
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/history/
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/history/ClientState.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/history/KeepsState.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/history/SearcherHistory.java
   
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Activity.gif
   
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Book.gif
   
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Curriculum.gif
   
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Multiple.gif
   
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Other.gif
   
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Resource.gif
Removed:
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/SelectionCollection.java
   
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Activity.png
   
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Book.png
   
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Curriculum.png
   
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Multiple.png
   
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Other.png
   
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Resource.png
Modified:
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/Constants.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/Searcher.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/columns/ContributorColumn.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/columns/InstructionalTypeColumn.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/columns/TitleColumn.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/PaginationPanel.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/ResultsPanel.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SearcherPanel.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorFilterPanel.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorMainPanel.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorPanel.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorTogglePanel.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/queries/DocumentSearcher.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/queries/DoesSearch.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/queries/LuceneQuery.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/DropdownSelector.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/Selectable.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/TermSelector.java
   
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/TextInputSelector.java
Log:
- CURRIKI-882
 - Make sure that the title column has a value
 - Move to using GIF ICT Icons for better transparency around IE6 bug
 - Add state holding class
 - Add history functionality
 - Fixup creator column values

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/Constants.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/Constants.java
        2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/Constants.java
        2007-09-26 18:38:56 UTC (rev 5100)
@@ -29,7 +29,7 @@
     public static final String TRANSLATION_PAGE = 
"XWiki.CurrikiGWTTranslation";
 
     public static final String CURRIKI_SERVICE = "/xwiki/gwt/CurrikiService";
-    public static final String USER_URL_PREFIX = "/xwiki/bin/view/XWiki/";
+    public static final String USER_URL_PREFIX = 
"/xwiki/bin/view/XWiki/XWiki/";
 
     public static final String SKIN_PATH = "/xwiki/skins/curriki8/";
     public static final String MIMETYPE_PATH = SKIN_PATH+"mimetypes/";
@@ -214,4 +214,8 @@
     public static final String CURRIKI_REVIEW_RATING_PROPERTY = "rating";
     public static final String CURRIKI_REVIEW_DATE_PROPERTY = "date";
     public static final String CURRIKI_REVIEW_COMMENT_PROPERTY = "comment";
+
+    public static final String HISTORY_FIELD_SORTBY = "__sortBy";
+    public static final String HISTORY_FIELD_ATITEM = "__atItem";
+    public static final String HISTORY_FIELD_ADV_TOGGLE = "__advShow"; 
 }

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/Searcher.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/Searcher.java
  2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/Searcher.java
  2007-09-26 18:38:56 UTC (rev 5100)
@@ -25,22 +25,23 @@
 import com.google.gwt.user.client.History;
 import com.google.gwt.user.client.ui.RootPanel;
 import org.curriki.gwt.client.search.panels.SearcherPanel;
+import org.curriki.gwt.client.search.history.ClientState;
+import org.curriki.gwt.client.search.history.SearcherHistory;
 
 public class Searcher
 {
-    private org.curriki.gwt.client.search.SearcherHistory history;
+    private SearcherHistory history;
+    private ClientState state;
 
     public void init()
     {
-        history = new org.curriki.gwt.client.search.SearcherHistory();
+        history = new SearcherHistory();
+        History.addHistoryListener(history);
+        state = new ClientState();
+        history.addState(state);
 
         String initToken = History.getToken();
-        boolean doSearch = false;
-        if (initToken.length() == 0){
-            /* An empty token can be a state -- just "search page" */
-            //initToken = "_";
-            doSearch = true;
-        }
+        state.InitFromToken(initToken);
 
         // History needs to track search parameters and what page we are on 
for results
         
@@ -58,21 +59,18 @@
         //  Have buttons "Previous" 11 12 13 ... 19 20 "Next"
 
         SearcherPanel main = new SearcherPanel();
+        main.addHistory(history);
         history.addSearcher(main.getSearcher());
+        history.addSelector(main.getSelector());
+        history.addPaginator(main.getPaginator());
 
-        // Sets up defaults based on history
-        history.onHistoryChanged(initToken);
-
         if (RootPanel.get("searchElement") != null){
             RootPanel.get("searchElement").add(main);
         } else {
             RootPanel.get().add(main);
         }
 
-        History.addHistoryListener(history);
-
-        if (doSearch){
-            main.getSearcher().doSearch();
-        }
+        // Sets up defaults based on history
+        history.onHistoryChanged(initToken);
     }
 }

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/columns/ContributorColumn.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/columns/ContributorColumn.java
 2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/columns/ContributorColumn.java
 2007-09-26 18:38:56 UTC (rev 5100)
@@ -55,10 +55,12 @@
     {
         HTML nameCol = new HTML();
         String name = getDisplayString(value);
-        String url = Constants.USER_URL_PREFIX+name;
+        if (name.length() > 0){
+            name = name.replaceFirst("XWiki.", "");
+            String url = Constants.USER_URL_PREFIX+name;
+            nameCol.setHTML("<a href=\""+url+"\">"+name+"</a>");
+        }
 
-        nameCol.setHTML("<a href=\""+url+"\">"+name+"</a>");
-
         return nameCol;
     }
 }

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/columns/InstructionalTypeColumn.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/columns/InstructionalTypeColumn.java
   2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/columns/InstructionalTypeColumn.java
   2007-09-26 18:38:56 UTC (rev 5100)
@@ -71,7 +71,7 @@
             String icon = name.replaceAll(":.*", "");
             name = name.replaceFirst(icon+":", "");
             if (icon.length() > 0) {
-                Image img = new 
Image(Constants.ICON_PATH+"ICTIcon-"+icon+".png");
+                Image img = new 
Image(Constants.ICON_PATH+"ICTIcon-"+icon+".gif");
                 img.setTitle(icon);
                 ret.add(img);
             }

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/columns/TitleColumn.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/columns/TitleColumn.java
       2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/columns/TitleColumn.java
       2007-09-26 18:38:56 UTC (rev 5100)
@@ -79,9 +79,14 @@
         if (value.getObject(Constants.ASSET_CLASS) != null){
             value.use(Constants.ASSET_CLASS);
             if (value.get(Constants.ASSET_TITLE_PROPERTY) != null){
-                name = value.get(Constants.ASSET_TITLE_PROPERTY);
-                if (name.length() > maxLength){
-                    name = name.substring(0, (maxLength-1))+"...";
+                String title = value.get(Constants.ASSET_TITLE_PROPERTY);
+                title = title.replaceAll("^ *", "");
+                title = title.replaceAll(" *$", "");
+                if (title.length() > 0){
+                    name = title;
+                    if (name.length() > maxLength){
+                        name = name.substring(0, (maxLength-1))+"...";
+                    }
                 }
             }
 
@@ -90,6 +95,10 @@
             }
         }
 
+        if (name.length() < 1){
+            name = Main.getTranslation("search.unknown_title");
+        }
+        
         nameCol.setHTML("<a href=\""+url+"\">"+name+"</a>");
         if (desc.length() > 0){
             addTooltip(nameCol, "<b>Description:</b><br>"+desc);

Added: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/history/ClientState.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/history/ClientState.java
       2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/history/ClientState.java
       2007-09-26 18:38:56 UTC (rev 5100)
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2007, The Global Education and Learning Community,
+ * and individual contributors as indicated by the contributors.txt.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ *
+ * @author dward
+ *
+ */
+package org.curriki.gwt.client.search.history;
+
+import java.util.HashMap;
+
+/***
+ * Class, that transform currect history token into state (hashmap)
+ */
+public class ClientState
+{
+    private HashMap paramsMap = new HashMap();
+
+    /**
+     * Constucts new state from specified token
+     */
+    public ClientState(String historyToken)
+    {
+        InitFromToken(historyToken);
+    }
+
+    /**
+     * Constructs new empty state
+     */
+    public ClientState()
+    {
+    }
+
+    /**
+     * Initialize state from token
+     */
+    public void InitFromToken(String historyToken)
+    {
+        paramsMap.clear();
+        if (historyToken != null && historyToken.length() > 1) {
+            String[] kvPairs = historyToken.split("&");
+            for (int i = 0; i < kvPairs.length; i++) {
+                String[] kv = kvPairs[i].split("=");
+                if (kv.length > 1) {
+                    paramsMap.put(kv[0], kv[1]);
+                } else {
+                    paramsMap.put(kv[0], "");
+                }
+            }
+        }
+    }
+
+    /**
+     * Returns state's value with specified key
+     *
+     * @return state's value
+     */
+    public String getValue(String key)
+    {
+        if (paramsMap.containsKey(key))
+            return (String) paramsMap.get(key);
+        else return "";
+    }
+
+    /**
+     * Set state's value with specified key
+     */
+    public void setValue(String key, String value)
+    {
+        paramsMap.put(key, value);
+    }
+
+    /**
+     * Constructs token using current state
+     *
+     * @return History Token
+     */
+    public String getHistoryToken()
+    {
+        String result = "";
+        Object[] keys = paramsMap.keySet().toArray();
+        for (int c = 0; c < keys.length; c++) {
+            String key = (String) keys[c];
+            if (result != "") result += "&";
+            result += key + "=" + (String) paramsMap.get(key);
+        }
+        return result;
+    }
+}
\ No newline at end of file

Added: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/history/KeepsState.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/history/KeepsState.java
        2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/history/KeepsState.java
        2007-09-26 18:38:56 UTC (rev 5100)
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2007, The Global Education and Learning Community,
+ * and individual contributors as indicated by the contributors.txt.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ *
+ * @author dward
+ *
+ */
+package org.curriki.gwt.client.search.history;
+
+public interface KeepsState
+{
+    public void loadState(ClientState state);
+    public void saveState(ClientState state);
+}

Copied: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/history/SearcherHistory.java
 (from rev 5080, 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/SearcherHistory.java)
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/SearcherHistory.java
   2007-09-24 13:44:42 UTC (rev 5080)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/history/SearcherHistory.java
   2007-09-26 18:38:56 UTC (rev 5100)
@@ -0,0 +1,107 @@
+/*
+ * See the NOTICE file distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ *
+ * @author dward
+ *
+ */
+package org.curriki.gwt.client.search.history;
+
+import com.google.gwt.user.client.HistoryListener;
+import org.curriki.gwt.client.search.queries.DoesSearch;
+import org.curriki.gwt.client.search.queries.Paginator;
+import org.curriki.gwt.client.search.selectors.Selectable;
+
+public class SearcherHistory implements HistoryListener
+{
+    protected DoesSearch searcher;
+    protected Selectable selector;
+    protected Paginator paginator;
+    protected ClientState state;
+    protected boolean ignoreNextChange = false;
+
+    public boolean isIgnoreNextChange()
+    {
+        return ignoreNextChange;
+    }
+
+    public void setIgnoreNextChange(boolean ignoreNextChange)
+    {
+        this.ignoreNextChange = ignoreNextChange;
+    }
+
+    public void onHistoryChanged(String token)
+    {
+        if (!isIgnoreNextChange()){
+            state.InitFromToken(token);
+            loadState();
+            searcher.doSearchFromHistory();
+        } else {
+            setIgnoreNextChange(false);
+        }
+    }
+
+    public String createToken(){
+        saveState();
+        return state.getHistoryToken();
+    }
+
+    public void addSearcher(DoesSearch searcher)
+    {
+        this.searcher = searcher;
+    }
+
+    public void addSelector(Selectable selector)
+    {
+        this.selector = selector;
+    }
+
+    public void addPaginator(Paginator paginator)
+    {
+        this.paginator = paginator;
+    }
+
+    public void addState(ClientState state)
+    {
+        this.state = state;
+    }
+
+    public void saveState(){
+        if (searcher instanceof KeepsState){
+            ((KeepsState) searcher).saveState(state);
+        }
+        if (selector instanceof KeepsState){
+            ((KeepsState) selector).saveState(state);
+        }
+        if (paginator instanceof KeepsState){
+            ((KeepsState) paginator).saveState(state);
+        }
+    }
+
+    public void loadState(){
+        if (searcher instanceof KeepsState){
+            ((KeepsState) searcher).loadState(state);
+        }
+        if (selector instanceof KeepsState){
+            ((KeepsState) selector).loadState(state);
+        }
+        if (paginator instanceof KeepsState){
+            ((KeepsState) paginator).loadState(state);
+        }
+    }
+}

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/PaginationPanel.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/PaginationPanel.java
    2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/PaginationPanel.java
    2007-09-26 18:38:56 UTC (rev 5100)
@@ -33,8 +33,10 @@
 import org.curriki.gwt.client.Main;
 import org.curriki.gwt.client.search.queries.DoesSearch;
 import org.curriki.gwt.client.search.queries.Paginator;
+import org.curriki.gwt.client.search.history.KeepsState;
+import org.curriki.gwt.client.search.history.ClientState;
 
-public class PaginationPanel extends VerticalPanel implements Paginator
+public class PaginationPanel extends VerticalPanel implements Paginator, 
KeepsState
 {
     protected Hyperlink prev = new Hyperlink();
     protected Hyperlink next = new Hyperlink();
@@ -266,4 +268,20 @@
     {
         this.searcher = searcher;
     }
+
+    public void loadState(ClientState state)
+    {
+        try {
+            Integer i = 
Integer.valueOf(state.getValue(Constants.HISTORY_FIELD_ATITEM));
+            start = i.intValue();
+        } catch (Exception e){
+            // Ignore
+            start = 1;
+        }
+    }
+
+    public void saveState(ClientState state)
+    {
+        state.setValue(Constants.HISTORY_FIELD_ATITEM, 
Integer.toString(start));
+    }
 }

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/ResultsPanel.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/ResultsPanel.java
       2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/ResultsPanel.java
       2007-09-26 18:38:56 UTC (rev 5100)
@@ -27,9 +27,13 @@
 import com.google.gwt.user.client.ui.SourcesTableEvents;
 import com.google.gwt.user.client.ui.TableListener;
 import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.History;
 import com.xpn.xwiki.gwt.api.client.Document;
 import org.curriki.gwt.client.Constants;
 import org.curriki.gwt.client.search.Results;
+import org.curriki.gwt.client.search.history.SearcherHistory;
+import org.curriki.gwt.client.search.history.KeepsState;
+import org.curriki.gwt.client.search.history.ClientState;
 import org.curriki.gwt.client.search.columns.ActionColumn;
 import org.curriki.gwt.client.search.columns.ContributorColumn;
 import org.curriki.gwt.client.search.columns.InstructionalTypeColumn;
@@ -42,8 +46,10 @@
 import org.curriki.gwt.client.search.queries.Paginator;
 import org.curriki.gwt.client.search.selectors.Selectable;
 
-public class ResultsPanel extends FlowPanel implements DoesSearch, 
ResultsRenderer, TableListener
+public class ResultsPanel extends FlowPanel implements DoesSearch, 
ResultsRenderer, TableListener,
+    KeepsState
 {
+    protected SearcherHistory history;
     protected Results results;
     protected LuceneAssetQuery query;
     protected Paginator paginator;
@@ -82,11 +88,21 @@
         add(g);
     }
 
-    public void doSearch()
-    {
-        int start = 1;
-        int count = Constants.DIALOG_FIND_FETCH_COUNT;
+    public void addHistory(SearcherHistory history){
+        this.history = history;
+    }
 
+    public void doSearch() {
+        history.setIgnoreNextChange(true);
+        History.newItem(history.createToken());
+        doRealSearch();
+    }
+
+    public void doSearchFromHistory(){
+        doRealSearch();
+    }
+
+    public void doRealSearch(){
         if (results != null) {
             query = new LuceneAssetQuery();
             query.setReceiver(results);
@@ -101,10 +117,8 @@
                 query.setPaginator(paginator);
                 query.doSearch();
             } else {
-                query.doSearch(start, count);
+                query.doSearch(1, Constants.DIALOG_FIND_FETCH_COUNT);
             }
-            
-            //TODO: Add to history
         }
     }
 
@@ -160,6 +174,24 @@
         return sortBy;
     }
 
+    public void loadState(ClientState state)
+    {
+        if (state.getValue(Constants.HISTORY_FIELD_SORTBY).length() > 0){
+            sortBy = state.getValue(Constants.HISTORY_FIELD_SORTBY);
+        } else {
+            sortBy = "";
+        }
+    }
+
+    public void saveState(ClientState state)
+    {
+        if (sortBy.length() > 0){
+            state.setValue(Constants.HISTORY_FIELD_SORTBY, sortBy);
+        } else {
+            state.setValue(Constants.HISTORY_FIELD_SORTBY, "");
+        }
+    }
+
     public void onCellClicked(SourcesTableEvents sourcesTableEvents, int row, 
int cell)
     {
         if (row == 0){ // Only accept clicks on headings

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SearcherPanel.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SearcherPanel.java
      2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SearcherPanel.java
      2007-09-26 18:38:56 UTC (rev 5100)
@@ -28,6 +28,9 @@
 import com.google.gwt.user.client.ui.Widget;
 import org.curriki.gwt.client.Main;
 import org.curriki.gwt.client.search.queries.DoesSearch;
+import org.curriki.gwt.client.search.queries.Paginator;
+import org.curriki.gwt.client.search.selectors.Selectable;
+import org.curriki.gwt.client.search.history.SearcherHistory;
 
 public class SearcherPanel extends VerticalPanel implements ClickListener
 {
@@ -61,11 +64,23 @@
         add(pagination);
     }
 
+    public void addHistory(SearcherHistory history){
+        results.addHistory(history);
+    }
+
     public DoesSearch getSearcher()
     {
         return results;
     }
 
+    public Selectable getSelector(){
+        return selector;
+    }
+
+    public Paginator getPaginator(){
+        return pagination;
+    }
+
     public void onClick(Widget widget)
     {
         if (widget instanceof SelectorPanel){

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorFilterPanel.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorFilterPanel.java
        2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorFilterPanel.java
        2007-09-26 18:38:56 UTC (rev 5100)
@@ -28,11 +28,12 @@
 import com.google.gwt.user.client.ui.SourcesChangeEvents;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
+import org.curriki.gwt.client.search.history.ClientState;
+import org.curriki.gwt.client.search.history.KeepsState;
 import org.curriki.gwt.client.search.selectors.EducationalLevelSelector;
 import org.curriki.gwt.client.search.selectors.FileTypeSelector;
 import org.curriki.gwt.client.search.selectors.InstructionalTypeSelector;
 import org.curriki.gwt.client.search.selectors.Selectable;
-import org.curriki.gwt.client.search.selectors.SelectionCollection;
 import org.curriki.gwt.client.search.selectors.SelectorCollection;
 import org.curriki.gwt.client.search.selectors.SpecialFilterSelector;
 import org.curriki.gwt.client.search.selectors.SubjectSelector;
@@ -40,7 +41,7 @@
 import java.util.Iterator;
 
 public class SelectorFilterPanel extends VerticalPanel implements 
ChangeListener, Selectable,
-    SourcesChangeEvents
+    SourcesChangeEvents, KeepsState
 {
     protected SelectorCollection selectors = new SelectorCollection();
     protected String fieldName;
@@ -133,27 +134,25 @@
         return filter;
     }
 
-    public SelectionCollection getSelected()
+    public void loadState(ClientState state)
     {
-        SelectionCollection selected = new SelectionCollection();
         Iterator i = selectors.iterator();
         while (i.hasNext()){
-            Selectable s = (Selectable) i.next();
-            Iterator j = s.getSelected().keySet().iterator();
-            while (j.hasNext()){
-                String key = (String) j.next();
-                selected.put(key, s.getSelected().get(key));
+            Object s = i.next();
+            if (s instanceof KeepsState){
+                ((KeepsState) s).loadState(state);
             }
         }
-
-        return selected;
     }
 
-    public void setSelected(SelectionCollection selection)
+    public void saveState(ClientState state)
     {
         Iterator i = selectors.iterator();
         while (i.hasNext()){
-            ((Selectable) i.next()).setSelected(selection);
+            Object s = i.next();
+            if (s instanceof KeepsState){
+                ((KeepsState) s).saveState(state);
+            }
         }
     }
 

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorMainPanel.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorMainPanel.java
  2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorMainPanel.java
  2007-09-26 18:38:56 UTC (rev 5100)
@@ -28,13 +28,16 @@
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.ClickListenerCollection;
 import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.KeyboardListenerAdapter;
 import com.google.gwt.user.client.ui.SourcesChangeEvents;
 import com.google.gwt.user.client.ui.SourcesClickEvents;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.KeyboardListener;
 import org.curriki.gwt.client.Main;
+import org.curriki.gwt.client.search.history.ClientState;
+import org.curriki.gwt.client.search.history.KeepsState;
 import org.curriki.gwt.client.search.selectors.Selectable;
-import org.curriki.gwt.client.search.selectors.SelectionCollection;
 import org.curriki.gwt.client.search.selectors.SelectorCollection;
 import org.curriki.gwt.client.search.selectors.TermSelector;
 import org.curriki.gwt.client.search.selectors.TextInputSelector;
@@ -42,7 +45,7 @@
 import java.util.Iterator;
 
 public class SelectorMainPanel extends HorizontalPanel implements 
ChangeListener, ClickListener,
-    Selectable, SourcesChangeEvents, SourcesClickEvents
+    Selectable, SourcesChangeEvents, SourcesClickEvents, KeepsState
 {
     protected TextInputSelector terms;
     protected Button search;
@@ -55,6 +58,13 @@
         terms = new TermSelector();
         terms.setFieldName("");
         terms.addChangeListener(this);
+        terms.addKeyboardListener(new KeyboardListenerAdapter() {
+            public void onKeyDown(Widget sender, char keyCode, int modifiers){
+                if (keyCode == KeyboardListener.KEY_ENTER){
+                    onClick(sender);
+                }
+            }
+        });
         selectors.add(terms);
 
         VerticalPanel pTerms = new VerticalPanel();
@@ -112,30 +122,6 @@
         return filter;
     }
 
-    public SelectionCollection getSelected()
-    {
-        SelectionCollection selected = new SelectionCollection();
-        Iterator i = selectors.iterator();
-        while (i.hasNext()){
-            Selectable s = (Selectable) i.next();
-            Iterator j = s.getSelected().keySet().iterator();
-            while (j.hasNext()){
-                String key = (String) j.next();
-                selected.put(key, s.getSelected().get(key));
-            }
-        }
-
-        return selected;
-    }
-
-    public void setSelected(SelectionCollection selection)
-    {
-        Iterator i = selectors.iterator();
-        while (i.hasNext()){
-            ((Selectable) i.next()).setSelected(selection);
-        }
-    }
-
     public void onChange(Widget widget)
     {
         if (widget instanceof Selectable) {
@@ -181,4 +167,26 @@
             clickListeners.remove(clickListener);
         }
     }
+
+    public void loadState(ClientState state)
+    {
+        Iterator i = selectors.iterator();
+        while (i.hasNext()){
+            Object s = i.next();
+            if (s instanceof KeepsState){
+                ((KeepsState) s).loadState(state);
+            }
+        }
+    }
+
+    public void saveState(ClientState state)
+    {
+        Iterator i = selectors.iterator();
+        while (i.hasNext()){
+            Object s = i.next();
+            if (s instanceof KeepsState){
+                ((KeepsState) s).saveState(state);
+            }
+        }
+    }
 }

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorPanel.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorPanel.java
      2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorPanel.java
      2007-09-26 18:38:56 UTC (rev 5100)
@@ -28,14 +28,15 @@
 import com.google.gwt.user.client.ui.SourcesClickEvents;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
+import org.curriki.gwt.client.search.history.ClientState;
+import org.curriki.gwt.client.search.history.KeepsState;
 import org.curriki.gwt.client.search.selectors.Selectable;
-import org.curriki.gwt.client.search.selectors.SelectionCollection;
 import org.curriki.gwt.client.search.selectors.SelectorCollection;
 
 import java.util.Iterator;
 
 public class SelectorPanel extends VerticalPanel implements ChangeListener, 
ClickListener,
-    Selectable, SourcesClickEvents
+    Selectable, SourcesClickEvents, KeepsState
 {
     protected SelectorMainPanel main;
     protected SelectorFilterPanel filters;
@@ -109,30 +110,30 @@
         return filter;
     }
 
-    public SelectionCollection getSelected()
+    public void loadState(ClientState state)
     {
-        SelectionCollection selected = new SelectionCollection();
         Iterator i = selectors.iterator();
         while (i.hasNext()){
-            Selectable s = (Selectable) i.next();
-            Iterator j = s.getSelected().keySet().iterator();
-            while (j.hasNext()){
-                String key = (String) j.next();
-                selected.put(key, s.getSelected().get(key));
+            Object s = i.next();
+            if (s instanceof KeepsState){
+                ((KeepsState) s).loadState(state);
             }
         }
-
-        return selected;
+        bottom.loadState(state);
     }
 
-    public void setSelected(SelectionCollection selection)
+    public void saveState(ClientState state)
     {
         Iterator i = selectors.iterator();
         while (i.hasNext()){
-            ((Selectable) i.next()).setSelected(selection);
+            Object s = i.next();
+            if (s instanceof KeepsState){
+                ((KeepsState) s).saveState(state);
+            }
         }
+        bottom.saveState(state);
     }
-    
+
     public void onChange(Widget widget)
     {
         //TODO: Get changed values

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorTogglePanel.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorTogglePanel.java
        2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/panels/SelectorTogglePanel.java
        2007-09-26 18:38:56 UTC (rev 5100)
@@ -27,8 +27,11 @@
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.Widget;
 import org.curriki.gwt.client.Main;
+import org.curriki.gwt.client.Constants;
+import org.curriki.gwt.client.search.history.KeepsState;
+import org.curriki.gwt.client.search.history.ClientState;
 
-public class SelectorTogglePanel extends VerticalPanel implements ClickListener
+public class SelectorTogglePanel extends VerticalPanel implements 
ClickListener, KeepsState
 {
     protected SelectorFilterPanel filters;
     protected HTML toggleWidget;
@@ -75,8 +78,27 @@
         }
     }
 
+    public void setToggleValue(boolean show){
+        if (filters == null){
+            return;
+        }
+
+        filters.setVisible(show);
+        doSetToggleWidget();
+    }
+
     public void onClick(Widget widget)
     {
         doToggle();
     }
+
+    public void loadState(ClientState state){
+        if (state.getValue(Constants.HISTORY_FIELD_ADV_TOGGLE).length() > 0){
+            
setToggleValue(state.getValue(Constants.HISTORY_FIELD_ADV_TOGGLE).equals("1"));
+        }
+    }
+
+    public void saveState(ClientState state){
+        state.setValue(Constants.HISTORY_FIELD_ADV_TOGGLE, 
(filters.isVisible()?"1":"0"));
+    }
 }

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/queries/DocumentSearcher.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/queries/DocumentSearcher.java
  2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/queries/DocumentSearcher.java
  2007-09-26 18:38:56 UTC (rev 5100)
@@ -22,14 +22,12 @@
  */
 package org.curriki.gwt.client.search.queries;
 
-import org.curriki.gwt.client.search.selectors.SelectionCollection;
-
 import java.util.List;
 
 public interface DocumentSearcher
 {
     public void setLimit(int limit);
-    public void setCriteria(SelectionCollection criteria);
+    public void setCriteria(String criteria);
     public void setReceiver(ResultsReceiver receiver);
     public void doSearch(int start, int count);
     public int getHitcount();

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/queries/DoesSearch.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/queries/DoesSearch.java
        2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/queries/DoesSearch.java
        2007-09-26 18:38:56 UTC (rev 5100)
@@ -25,5 +25,6 @@
 public interface DoesSearch
 {
     public void doSearch();
+    public void doSearchFromHistory();
     public void setPaginator(Paginator paginator);
 }

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/queries/LuceneQuery.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/queries/LuceneQuery.java
       2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/queries/LuceneQuery.java
       2007-09-26 18:38:56 UTC (rev 5100)
@@ -26,7 +26,6 @@
 import org.curriki.gwt.client.Constants;
 import org.curriki.gwt.client.CurrikiAsyncCallback;
 import org.curriki.gwt.client.CurrikiService;
-import org.curriki.gwt.client.search.selectors.SelectionCollection;
 
 import java.util.Iterator;
 import java.util.List;
@@ -50,24 +49,6 @@
         this.limit = limit;
     }
 
-    public void setCriteria(SelectionCollection criteria)
-    {
-        searchTerms = "";
-        Iterator i = criteria.keySet().iterator();
-        while (i.hasNext()){
-            String key = (String) i.next();
-            String value = criteria.get(key);
-
-            if (value.length() > 0){
-                if (key.length() > 0){
-                    searchTerms += " AND "+key+":"+value;
-                } else {
-                    searchTerms += " AND "+value;
-                }
-            }
-        }
-    }
-
     public void setCriteria(String criteria)
     {
         searchTerms = criteria;
@@ -93,7 +74,7 @@
     
     public void doSearch(int start, int count)
     {
-        if (sortBy == null){
+        if ((sortBy == null) || (sortBy.length() == 0)){
             sortBy = "name";
         }
         CurrikiService.App.getInstance().luceneSearch(searchTerms, start, 
limit, sortBy, new LuceneQuery.populateResultsCallback());

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/DropdownSelector.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/DropdownSelector.java
        2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/DropdownSelector.java
        2007-09-26 18:38:56 UTC (rev 5100)
@@ -31,12 +31,14 @@
 import com.google.gwt.user.client.ui.Widget;
 import org.curriki.gwt.client.Constants;
 import org.curriki.gwt.client.Main;
+import org.curriki.gwt.client.search.history.KeepsState;
+import org.curriki.gwt.client.search.history.ClientState;
 import org.curriki.gwt.client.widgets.metadata.TooltipMouseListener;
 
 import java.util.HashMap;
 import java.util.Map;
 
-abstract public class DropdownSelector extends ListBox implements Selectable
+abstract public class DropdownSelector extends ListBox implements Selectable, 
KeepsState
 {
     protected Element selectbox;
     protected Map groups = new HashMap();
@@ -106,6 +108,17 @@
         return elem.options[index].selected;
     }-*/;
 
+    /**
+     * Override setSelectedIndex() so that we get the n'th item in the options 
array instead of the n'th child
+     */
+    public void setSelectedIndex(int index){
+        setItemSelected(this.getElement(), index, true);
+    }
+
+    public native void setItemSelected(Element elem, int index, boolean 
selected) /*-{
+        elem.options[index].selected = selected;
+    }-*/;
+
     public void setFieldName(String name)
     {
         this.fieldName = name;
@@ -142,25 +155,6 @@
         return filter;
     }
 
-    public SelectionCollection getSelected()
-    {
-        SelectionCollection s = new SelectionCollection();
-
-        String value = getValue(getSelectedIndex());
-        if (value.length() > 0){
-            s.put(getFieldName(), value);
-        } else {
-            s.remove(getFieldName());
-        }
-
-        return s;
-    }
-
-    public void setSelected(SelectionCollection selection)
-    {
-        //TODO: set selected items
-    }
-
     protected Widget getTooltip(String name) {
         String txt = Main.getTranslation("search.selector." + name + 
"_tooltip");
         Image image = new Image(Constants.ICON_PATH+"exclamation.png");
@@ -171,4 +165,44 @@
         image.addMouseListener(new TooltipMouseListener(popup));
         return image;
     }
+
+    public native int getOptionCount(Element element) /*-{
+        return elem.options.length;
+    }-*/;
+
+    public void saveState(ClientState state)
+    {
+        if (getFieldName().length() > 0){
+            String value = getValue(getSelectedIndex());
+            if (value.length() > 0){
+                state.setValue(getFieldName(), value);
+            } else {
+                state.setValue(getFieldName(), "");
+            }
+        }
+    }
+
+    public void loadState(ClientState state)
+    {
+        if (getFieldName().length() > 0){
+            String value = state.getValue(getFieldName());
+            if (value.length() > 0){
+                String curValue = getValue(getSelectedIndex());
+                if (!value.equals(curValue)){
+                    Element e = this.getElement();
+                    int children = getOptionCount(e);
+                    for (int i=0; i<children; i++){
+                        String opt = getValue(i);
+                        if (opt.equals(value)){
+                            // Set selected
+                            setItemSelected(e, i, true);
+                        } else {
+                            // Set not selected
+                            setItemSelected(e, i, false);
+                        }
+                    }
+                }
+            }
+        }
+    }
 }

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/Selectable.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/Selectable.java
      2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/Selectable.java
      2007-09-26 18:38:56 UTC (rev 5100)
@@ -30,6 +30,4 @@
     public void setFieldName(String name);
     public String getFieldName();
     public String getFilter();
-    public SelectionCollection getSelected();
-    public void setSelected(SelectionCollection selection);
 }

Deleted: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/SelectionCollection.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/SelectionCollection.java
     2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/SelectionCollection.java
     2007-09-26 18:38:56 UTC (rev 5100)
@@ -1,36 +0,0 @@
-/*
- * See the NOTICE file distributed with this work for additional
- * information regarding copyright ownership.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- *
- * @author dward
- *
- */
-package org.curriki.gwt.client.search.selectors;
-
-import java.util.HashMap;
-
-public class SelectionCollection extends HashMap
-{
-    public void put(String id, String value){
-        super.put(id, value);
-    }
-
-    public String get(String id){
-        return (String) super.get(id);
-    }
-}

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/TermSelector.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/TermSelector.java
    2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/TermSelector.java
    2007-09-26 18:38:56 UTC (rev 5100)
@@ -30,10 +30,11 @@
 public class TermSelector extends TextInputSelector
 {
     protected int selectorSize = 30;
-    protected String selector_id = "terms";
+    protected String selector_id = "__terms";
 
     public TermSelector() {
         super();
+        setName(selector_id);
         setVisibleLength(selectorSize);
     }
 
@@ -50,8 +51,8 @@
     public Widget getLabel()
     {
         HorizontalPanel p = new HorizontalPanel();
-        p.add(new Label(Main.getTranslation("search.selector."+selector_id)));
-        p.add(getTooltip(selector_id));
+        p.add(new Label(Main.getTranslation("search.selector.terms")));
+        p.add(getTooltip("terms"));
         return p;
     }
 }

Modified: 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/TextInputSelector.java
===================================================================
--- 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/TextInputSelector.java
       2007-09-26 15:46:50 UTC (rev 5099)
+++ 
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/search/selectors/TextInputSelector.java
       2007-09-26 18:38:56 UTC (rev 5100)
@@ -29,9 +29,11 @@
 import com.google.gwt.user.client.ui.HTML;
 import org.curriki.gwt.client.Constants;
 import org.curriki.gwt.client.Main;
+import org.curriki.gwt.client.search.history.KeepsState;
+import org.curriki.gwt.client.search.history.ClientState;
 import org.curriki.gwt.client.widgets.metadata.TooltipMouseListener;
 
-abstract public class TextInputSelector extends TextBox implements Selectable
+abstract public class TextInputSelector extends TextBox implements Selectable, 
KeepsState
 {
     protected String fieldName;
 
@@ -84,16 +86,17 @@
         return filter;
     }
 
-    public SelectionCollection getSelected(){
-        SelectionCollection s = new SelectionCollection();
-        s.put(getName(), getText());
-
-        return s;
+    public void loadState(ClientState state)
+    {
+        if (getName().length() > 0){
+            setText(state.getValue(getName()));
+        }
     }
 
-    public void setSelected(SelectionCollection selection){
-        if (selection.containsKey(getName())){
-            setText(selection.get(getName()));
+    public void saveState(ClientState state)
+    {
+        if (getName().length() > 0){
+            state.setValue(getName(), getText());
         }
     }
 

Added: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Activity.gif
===================================================================
(Binary files differ)


Property changes on: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Activity.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Deleted: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Activity.png
===================================================================
(Binary files differ)

Added: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Book.gif
===================================================================
(Binary files differ)


Property changes on: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Book.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Deleted: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Book.png
===================================================================
(Binary files differ)

Added: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Curriculum.gif
===================================================================
(Binary files differ)


Property changes on: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Curriculum.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Deleted: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Curriculum.png
===================================================================
(Binary files differ)

Added: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Multiple.gif
===================================================================
(Binary files differ)


Property changes on: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Multiple.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Deleted: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Multiple.png
===================================================================
(Binary files differ)

Added: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Other.gif
===================================================================
(Binary files differ)


Property changes on: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Other.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Deleted: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Other.png
===================================================================
(Binary files differ)

Added: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Resource.gif
===================================================================
(Binary files differ)


Property changes on: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Resource.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Deleted: 
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/icons/ICTIcon-Resource.png
===================================================================
(Binary files differ)

_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to