fixing 'All tags' display version 2 - add a new css class named 'gss-tag'
[pithos] / src / gr / ebs / gss / client / GSS.java
index 36a23c1..af95cac 100644 (file)
@@ -28,6 +28,7 @@ import gr.ebs.gss.client.rest.resource.FolderResource;
 import gr.ebs.gss.client.rest.resource.TrashResource;
 import gr.ebs.gss.client.rest.resource.UserResource;
 
+import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
 
@@ -202,6 +203,7 @@ public class GSS implements EntryPoint, ResizeHandler {
 
        private PickupDragController dragController;
 
+       @Override
        public void onModuleLoad() {
                // Initialize the singleton before calling the constructors of the
                // various widgets that might call GSS.get().
@@ -320,29 +322,29 @@ public class GSS implements EntryPoint, ResizeHandler {
                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 {
-                                                       PopupTree popupTree = GSS.get().getFolders().getPopupTree();
-                                                       TreeItem treeObj = GSS.get().getFolders().getPopupTree().getTreeItem(historyToken);
-                                                       SelectionEvent.fire(popupTree, treeObj);
+               History.addValueChangeHandler(new ValueChangeHandler<String>() {
+                       @Override
+                       public void onValueChange(ValueChangeEvent<String> event) {
+                               String tokenInput = event.getValue();
+                               String historyToken = handleSpecialFolderNames(tokenInput);
+                               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 {
+                                               PopupTree popupTree = GSS.get().getFolders().getPopupTree();
+                                               TreeItem treeObj = GSS.get().getFolders().getPopupTree().getTreeItem(historyToken);
+                                               SelectionEvent.fire(popupTree, treeObj);
+                                               }
+                                       } catch (IndexOutOfBoundsException e) {
+                                               inner.selectTab(0);
                                                }
-                                               } catch (IndexOutOfBoundsException e) {
-                                               inner.selectTab(0);
-                                               }
-                                       }
-                             });
+                                       }
+                       });
 
                // Add the left and right panels to the split panel.
                splitPanel.setLeftWidget(folders);
@@ -378,6 +380,7 @@ public class GSS implements EntryPoint, ResizeHandler {
                // sizes have been computed by the browser.
                DeferredCommand.addCommand(new Command() {
 
+                       @Override
                        public void execute() {
                                onWindowResized(Window.getClientHeight());
                        }
@@ -400,6 +403,7 @@ public class GSS implements EntryPoint, ResizeHandler {
                                if (announcement != null)
                                        DeferredCommand.addCommand(new Command() {
 
+                                               @Override
                                                public void execute() {
                                                        displayInformation(announcement);
                                                }
@@ -443,6 +447,7 @@ public class GSS implements EntryPoint, ResizeHandler {
 
                DeferredCommand.addCommand(new Command() {
 
+                       @Override
                        public void execute() {
                                fetchUser(username);
                        }
@@ -789,4 +794,31 @@ public class GSS implements EntryPoint, ResizeHandler {
 //             History.newItem(result);
                History.newItem(key);
        }
+
+       /**
+        * This method examines the token input and add a "/" at the end in case it's omitted.
+        * This happens only in Files/trash/, Files/shared/, Files/others.
+        *
+        * @param tokenInput
+        * @return the formated token with a "/" at the end or the same tokenInput parameter
+        */
+
+       private String handleSpecialFolderNames(String tokenInput){
+               List<String> pathsToCheck = Arrays.asList("Files/trash", "Files/shared", "Files/others");
+               if(pathsToCheck.contains(tokenInput))
+                       return tokenInput + "/";
+               return tokenInput;
+
+       }
+
+       /**
+        * Reject illegal resource names, like '.' or '..'.
+        */
+       static boolean isValidResourceName(String name) {
+               if (".".equals(name) || "..".equals(name))
+                       return false;
+               return true;
+       }
+
+
 }