Fixes after code review, these solve Issue 60.
[pithos] / src / gr / ebs / gss / client / FolderPropertiesDialog.java
index eb6da0f..d127227 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * Copyright 2007, 2008, 2009 Electronic Business Systems Ltd.\r
+ * Copyright 2007, 2008, 2009, 2010 Electronic Business Systems Ltd.\r
  *\r
  * This file is part of GSS.\r
  *\r
@@ -31,9 +31,13 @@ import java.util.Set;
 \r
 import com.google.gwt.core.client.GWT;\r
 import com.google.gwt.dom.client.NativeEvent;\r
+import com.google.gwt.event.dom.client.ChangeEvent;\r
+import com.google.gwt.event.dom.client.ChangeHandler;\r
 import com.google.gwt.event.dom.client.ClickEvent;\r
 import com.google.gwt.event.dom.client.ClickHandler;\r
 import com.google.gwt.event.dom.client.KeyCodes;\r
+import com.google.gwt.event.dom.client.KeyDownEvent;\r
+import com.google.gwt.event.dom.client.KeyDownHandler;\r
 import com.google.gwt.http.client.URL;\r
 import com.google.gwt.i18n.client.DateTimeFormat;\r
 import com.google.gwt.json.client.JSONArray;\r
@@ -123,6 +127,10 @@ public class FolderPropertiesDialog extends DialogBox {
                        inner.add(permPanel, "Sharing");\r
                inner.selectTab(0);\r
 \r
+               final Label folderNameNote = new Label("Please note that slashes ('/') are not allowed in folder names.", true);\r
+               folderNameNote.setVisible(false);\r
+               folderNameNote.setStylePrimaryName("gss-readForAllNote");\r
+\r
                FlexTable generalTable = new FlexTable();\r
                generalTable.setText(0, 0, "Name");\r
                generalTable.setText(1, 0, "Parent");\r
@@ -130,12 +138,26 @@ public class FolderPropertiesDialog extends DialogBox {
                generalTable.setText(3, 0, "Last modified");\r
                folderName.setText(create ? "" : folder.getName());\r
                generalTable.setWidget(0, 1, folderName);\r
+               folderName.addChangeHandler(new ChangeHandler() {\r
+                       \r
+                       @Override\r
+                       public void onChange(ChangeEvent event) {\r
+                               if(folderName.getText().contains("/"))\r
+                                       folderNameNote.setVisible(true);\r
+                               else\r
+                                       folderNameNote.setVisible(false);                               \r
+                               \r
+                       }\r
+               });\r
+\r
+\r
                if (create)\r
                        generalTable.setText(1, 1, folder.getName());\r
                else if(folder.getParentName() == null)\r
                        generalTable.setText(1, 1, "-");\r
                else\r
                        generalTable.setText(1, 1, folder.getParentName());\r
+               generalTable.setWidget(0, 2, folderNameNote);\r
                generalTable.setText(2, 1, folder.getOwner());\r
                DateTimeFormat formatter = DateTimeFormat.getFormat("d/M/yyyy h:mm a");\r
                if(folder.getModificationDate() != null)\r
@@ -159,13 +181,17 @@ public class FolderPropertiesDialog extends DialogBox {
                        okLabel = "Update";\r
                Button ok = new Button(okLabel, new ClickHandler() {\r
                        @Override\r
-                       public void onClick(ClickEvent event) {\r
-\r
-                               createOrUpdateFolder();\r
+                       public void onClick(ClickEvent event) {                         \r
+                               if(folderName.getText().contains("/"))\r
+                                       folderNameNote.setVisible(true);\r
+                               else {\r
+                                       folderNameNote.setVisible(false);\r
+                                       createOrUpdateFolder();\r
+                                       closeDialog();\r
+                               }\r
 \r
-                               closeDialog();\r
                        }\r
-               });\r
+               });             \r
                buttons.add(ok);\r
                buttons.setCellHorizontalAlignment(ok, HasHorizontalAlignment.ALIGN_CENTER);\r
                // Create the 'Cancel' button, along with a listener that hides the\r
@@ -314,8 +340,13 @@ public class FolderPropertiesDialog extends DialogBox {
         * @param _folderName the name of the folder to create\r
         */\r
        private void createFolder() {\r
+               String name = folderName.getText();\r
+               if (!GSS.isValidResourceName(name)) {\r
+                       GSS.get().displayError("The folder name '" + name + "' is invalid");\r
+                       return;\r
+               }\r
                PostCommand ep = new PostCommand(folder.getUri() + "?new=" +\r
-                               URL.encodeComponent(folderName.getText()), "", 201) {\r
+                               URL.encodeComponent(name), "", 201) {\r
 \r
                        @Override\r
                        public void onComplete() {\r