Do not allow folder names that contain /
authorChristos Stathis <chstath@ebs.gr>
Fri, 18 Nov 2011 15:30:56 +0000 (17:30 +0200)
committerChristos Stathis <chstath@ebs.gr>
Fri, 18 Nov 2011 15:30:56 +0000 (17:30 +0200)
src/gr/grnet/pithos/web/client/FolderPropertiesDialog.java

index f03390c..8035bff 100644 (file)
@@ -46,6 +46,8 @@ import gr.grnet.pithos.web.client.rest.RestException;
 \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
@@ -59,6 +61,7 @@ import com.google.gwt.user.client.ui.DialogBox;
 import com.google.gwt.user.client.ui.FlexTable;\r
 import com.google.gwt.user.client.ui.HasHorizontalAlignment;\r
 import com.google.gwt.user.client.ui.HorizontalPanel;\r
+import com.google.gwt.user.client.ui.Label;\r
 import com.google.gwt.user.client.ui.TabPanel;\r
 import com.google.gwt.user.client.ui.TextBox;\r
 import com.google.gwt.user.client.ui.VerticalPanel;\r
@@ -75,7 +78,7 @@ public class FolderPropertiesDialog extends DialogBox {
        /**\r
         * The widget that holds the folderName of the folder.\r
         */\r
-       private TextBox folderName = new TextBox();\r
+       TextBox folderName = new TextBox();\r
 \r
        /**\r
         * A flag that denotes whether the dialog will be used to create or modify a\r
@@ -136,10 +139,16 @@ public class FolderPropertiesDialog extends DialogBox {
         generalTable.setText(1, 0, "Parent");\r
         generalTable.setText(2, 0, "Creator");\r
         generalTable.setText(3, 0, "Last modified");\r
-        folderName.setText(create ? "" : folder.getName());\r
+\r
+               folderName.setText(create ? "" : folder.getName());\r
         folderName.setReadOnly(folder.isContainer() && !create);\r
         generalTable.setWidget(0, 1, folderName);\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
+               generalTable.setWidget(0, 2, folderNameNote);\r
+               \r
         if (create)\r
             generalTable.setText(1, 1, folder.getName());\r
         else\r
@@ -206,7 +215,7 @@ public class FolderPropertiesDialog extends DialogBox {
                        okLabel = "Create";\r
                else\r
                        okLabel = "Update";\r
-               Button ok = new Button(okLabel, new ClickHandler() {\r
+               final Button ok = new Button(okLabel, new ClickHandler() {\r
                        @Override\r
                        public void onClick(@SuppressWarnings("unused") ClickEvent event) {\r
                                createOrUpdateFolder();\r
@@ -217,6 +226,21 @@ public class FolderPropertiesDialog extends DialogBox {
                outer.add(ok);\r
         outer.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER);\r
 \r
+        folderName.addChangeHandler(new ChangeHandler() {\r
+                       \r
+                       @Override\r
+                       public void onChange(@SuppressWarnings("unused") ChangeEvent event) {\r
+                               if(folderName.getText().contains("/")) {\r
+                                       folderNameNote.setVisible(true);\r
+                                       ok.setEnabled(false);\r
+                               }\r
+                               else {\r
+                                       folderNameNote.setVisible(false);\r
+                                       ok.setEnabled(true);\r
+                               }\r
+                       }\r
+               });\r
+\r
         setWidget(outer);\r
        }\r
 \r
@@ -259,7 +283,7 @@ public class FolderPropertiesDialog extends DialogBox {
         * Generate an RPC request to create a new folder.\r
         */\r
        private void createFolder() {\r
-               String name = folderName.getText();\r
+               String name = folderName.getText().trim();\r
         String path = folder.getUri() + "/" + name;\r
         PutRequest createFolder = new PutRequest(app.getApiPath(), folder.getOwner(), path) {\r
             @Override\r