Bring Folder/Share dialog onpar with File/Share dialog
authorChristos KK Loverdos <loverdos@gmail.com>
Fri, 19 Apr 2013 10:48:28 +0000 (13:48 +0300)
committerChristos KK Loverdos <loverdos@gmail.com>
Fri, 19 Apr 2013 10:48:28 +0000 (13:48 +0300)
Refs #3575

src/gr/grnet/pithos/web/client/FolderPermissionsDialog.java

index 4eef837..ecb5765 100644 (file)
@@ -71,10 +71,6 @@ public class FolderPermissionsDialog extends DialogBox {
 \r
     final VerticalPanel inner;\r
 \r
-    final Button updateButton;\r
-\r
-    private boolean _initialPermissionCheck = true;\r
-\r
     /**\r
      * The widget's constructor.\r
      */\r
@@ -98,7 +94,7 @@ public class FolderPermissionsDialog extends DialogBox {
 \r
         folder = selected;\r
 \r
-        setText("Folder permissions");\r
+        setText(Const.TXT_SHARE_FOLDER);\r
 \r
         // Outer contains inner and buttons\r
         VerticalPanel outer = new VerticalPanel();\r
@@ -107,12 +103,26 @@ public class FolderPermissionsDialog extends DialogBox {
         inner = new VerticalPanel();\r
         inner.addStyleName("inner");\r
 \r
-\r
         folderName.setText(folder.getName());\r
 \r
+        final HorizontalPanel privateInfoPanel = new HorizontalPanel();\r
+        privateInfoPanel.setSpacing(8);\r
+        final Label privateInfoTitle = new  InlineHTML("<b>Private sharing</b>");\r
+        final Label privateInfoText = new Label("Only people explicitly granted permission can access. Sign-in required.", true);\r
+        privateInfoPanel.add(privateInfoTitle);\r
+        privateInfoPanel.add(privateInfoText);\r
+        inner.add(privateInfoPanel);\r
+\r
         VerticalPanel permPanel = new VerticalPanel();\r
         FileShareDialog.PrivateSharingImages images = GWT.create(FileShareDialog.PrivateSharingImages.class);\r
-        permList = new PermissionsList(app, images, folder.getPermissions(), folder.getOwnerID(), false, null);\r
+\r
+        permList = new PermissionsList(app, images, folder.getPermissions(), folder.getOwnerID(), false, new Command() {\r
+            @Override\r
+            public void execute() {\r
+                updateMetadataForPrivateSharing();\r
+            }\r
+        });\r
+\r
         permPanel.add(permList);\r
 \r
         HorizontalPanel permButtons = new HorizontalPanel();\r
@@ -121,39 +131,27 @@ public class FolderPermissionsDialog extends DialogBox {
             public void onClick(ClickEvent event) {\r
                 PermissionsAddDialog dlg = new PermissionsAddDialog(app, app.getAccount().getGroups(), permList, true);\r
                 dlg.center();\r
-                checkUpdateButtonVisibility();\r
+                permList.updatePermissionTable();\r
             }\r
         });\r
         addUser.addStyleName("button");\r
         permButtons.add(addUser);\r
         permButtons.setCellHorizontalAlignment(addUser, HasHorizontalAlignment.ALIGN_CENTER);\r
 \r
-        Button add = new Button("Add Group", new ClickHandler() {\r
-            @Override\r
-            public void onClick(ClickEvent event) {\r
-                if(app.getAccount().getGroups().isEmpty()) {\r
-                    new GroupCreateDialog(app, new Command() {\r
-                        @Override\r
-                        public void execute() {\r
-                            if(app.getAccount().getGroups().isEmpty()) {\r
-                                return;\r
-                            }\r
-                            PermissionsAddDialog dlg = new PermissionsAddDialog(app, app.getAccount().getGroups(), permList, false);\r
-                            dlg.center();\r
-                            checkUpdateButtonVisibility();\r
-                        }\r
-                    }).center();\r
-                }\r
-                else {\r
+        final boolean haveGroups = app.getAccount().getGroups().size() > 0;\r
+        if(haveGroups) {\r
+            Button addGroup = new Button("Add Group", new ClickHandler() {\r
+                @Override\r
+                public void onClick(ClickEvent event) {\r
                     PermissionsAddDialog dlg = new PermissionsAddDialog(app, app.getAccount().getGroups(), permList, false);\r
                     dlg.center();\r
-                    checkUpdateButtonVisibility();\r
+                    permList.updatePermissionTable();\r
                 }\r
-            }\r
-        });\r
-        add.addStyleName("button");\r
-        permButtons.add(add);\r
-        permButtons.setCellHorizontalAlignment(add, HasHorizontalAlignment.ALIGN_CENTER);\r
+            });\r
+            addGroup.addStyleName("button");\r
+            permButtons.add(addGroup);\r
+            permButtons.setCellHorizontalAlignment(addGroup, HasHorizontalAlignment.ALIGN_CENTER);\r
+        }\r
 \r
         permButtons.setSpacing(8);\r
         permPanel.add(permButtons);\r
@@ -162,35 +160,20 @@ public class FolderPermissionsDialog extends DialogBox {
 \r
         outer.add(inner);\r
 \r
-        // Create the 'Create/Update' button, along with a listener that hides the dialog\r
-        // when the button is clicked and quits the application.\r
-        final String okLabel = "Update";\r
-        updateButton = new Button(okLabel, new ClickHandler() {\r
+        final Button ok = new Button("OK", new ClickHandler() {\r
             @Override\r
             public void onClick(ClickEvent event) {\r
-                updateFolder();\r
                 closeDialog();\r
             }\r
         });\r
-        updateButton.addStyleName("button");\r
-        checkUpdateButtonVisibility();\r
-        outer.add(updateButton);\r
+        ok.addStyleName("button");\r
+\r
+        outer.add(ok);\r
         outer.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER);\r
 \r
         setWidget(outer);\r
     }\r
 \r
-    private void checkUpdateButtonVisibility() {\r
-        if(!this._initialPermissionCheck) {\r
-            updateButton.setVisible(true);\r
-            return;\r
-        }\r
-\r
-        updateButton.setVisible(permList.hasPermissions());\r
-\r
-        this._initialPermissionCheck = false;\r
-    }\r
-\r
     @Override\r
     protected void onPreviewNativeEvent(NativePreviewEvent preview) {\r
         super.onPreviewNativeEvent(preview);\r
@@ -202,7 +185,7 @@ public class FolderPermissionsDialog extends DialogBox {
         {\r
             switch(evt.getKeyCode()) {\r
                 case KeyCodes.KEY_ENTER:\r
-                    updateFolder();\r
+                    updateMetadataForPrivateSharing();\r
                     closeDialog();\r
                     break;\r
                 case KeyCodes.KEY_ESCAPE:\r
@@ -221,15 +204,15 @@ public class FolderPermissionsDialog extends DialogBox {
         hide();\r
     }\r
 \r
-    void updateFolder() {\r
+    private void updateMetadataForPrivateSharing() {\r
         final Map<String, Boolean[]> perms = (permList.hasChanges() ? permList.getPermissions() : null);\r
-        updateMetadata(\r
+        updateMetadataForPrivateSharing(\r
             folder.getUri() + Const.QUESTION_MARK_UPDATE_EQ,\r
             perms\r
         );\r
     }\r
 \r
-    protected void updateMetadata(final String path, final Map<String, Boolean[]> newPermissions) {\r
+    private void updateMetadataForPrivateSharing(final String path, final Map<String, Boolean[]> newPermissions) {\r
         if(newPermissions != null) {\r
             PostRequest updateFolder = new PostRequest(app.getApiPath(), folder.getOwnerID(), path) {\r
                 @Override\r
@@ -251,7 +234,7 @@ public class FolderPermissionsDialog extends DialogBox {
                             PutRequest newFolder = new PutRequest(app.getApiPath(), folder.getOwnerID(), path1) {\r
                                 @Override\r
                                 public void onSuccess(Resource result) {\r
-                                    updateMetadata(path, newPermissions);\r
+                                    updateMetadataForPrivateSharing(path, newPermissions);\r
                                 }\r
 \r
                                 @Override\r