import gr.ebs.gss.client.rest.resource.TrashResource;
import gr.ebs.gss.client.rest.resource.UserResource;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import com.allen_sauer.gwt.dnd.client.DragContext;
import com.allen_sauer.gwt.dnd.client.PickupDragController;
import com.google.gwt.event.logical.shared.ResizeHandler;
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.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.Command;
private String token;
/**
+ * A map that stores a set of String URI and the corresponding object
+ * in order history functionality to be implemented.
+ */
+ private Map<String, Object> map = new HashMap<String, Object>();
+
+ /**
* The WebDAV password of the current user
*/
private String webDAVPassword;
@Override
public void onSelection(SelectionEvent<Integer> event) {
int tabIndex = event.getSelectedItem();
+ TreeItem treeItem = GSS.get().getFolders().getCurrent();
switch (tabIndex) {
case 0:
+// Files tab selected
fileList.clearSelectedRows();
fileList.updateCurrentlyShowingStats();
- History.newItem("Files");
break;
case 1:
+// Groups tab selected
groups.updateCurrentlyShowingStats();
- History.newItem("Groups");
+ updateHistory("Groups", treeItem);
break;
case 2:
+// Search tab selected
searchResults.clearSelectedRows();
searchResults.updateCurrentlyShowingStats();
- History.newItem("Search");
+ updateHistory("Search", treeItem);
break;
}
}
});
+// If the application starts with no history token, redirect to a new "Files" state
+ String initToken = History.getToken();
+ if(initToken.length() == 0)
+ History.newItem("Files");
+
+// Add history listener to handle any history events
+ History.addValueChangeHandler(new ValueChangeHandler<String>() {
+ public void onValueChange(ValueChangeEvent<String> event) {
+ String historyToken = event.getValue();
+ try {
+ if(historyToken.equals("Search"))
+ inner.selectTab(2);
+ else if(historyToken.equals("Groups"))
+ inner.selectTab(1);
+ else if(historyToken.equals("Files")|| historyToken.length()==0)
+ inner.selectTab(0);
+ else
+ SelectionEvent.fire(GSS.get().getFolders().getPopupTree(), (TreeItem) getHistoryItem(historyToken));
+ } catch (IndexOutOfBoundsException e) {
+ inner.selectTab(0);
+ }
+ }
+ });
// Add the left and right panels to the split panel.
splitPanel.setLeftWidget(folders);
int sepIndex = auth.indexOf(conf.cookieSeparator());
if (sepIndex == -1)
authenticateUser();
- token = auth.substring(sepIndex + 1, auth.length());
+ token = auth.substring(sepIndex + 1);
final String username = auth.substring(0, sepIndex);
if (username == null)
authenticateUser();
webDAVPassword = Cookies.getCookie(cookie);
Cookies.setCookie(cookie, "", null, domain, path, false);
}
+ /**
+ * @param key
+ * @return Object of the corresponding String URI which is stored in the history map
+ */
+ public Object getHistoryItem(String key){
+ return map.get(key);
+ }
+ /**
+ * Replaces any whitespace in the given string to "+"
+ * Sets a pair of key - object in the History (using a map)
+ * and adds a new browser history entry
+ * @param key
+ * @param obj
+ */
+ public void updateHistory(String key, Object obj){
+// Replace any whitespace of the initial string to "+"
+ String result = key.replaceAll("\\s","+");
+// Add a new pair key - object in the History map.
+ map.put(result, obj);
+// Add a new browser history entry.
+ History.newItem(result);
+ }
}