Implemented multiple files properties general dialog
authorChristos Stathis <chstath@ebs.gr>
Fri, 15 Jul 2011 12:59:11 +0000 (15:59 +0300)
committerChristos Stathis <chstath@ebs.gr>
Fri, 15 Jul 2011 12:59:11 +0000 (15:59 +0300)
web_client/src/gr/grnet/pithos/web/client/FilesPropertiesDialog.java
web_client/src/gr/grnet/pithos/web/client/commands/PropertiesCommand.java

index 74c421e..80954f6 100644 (file)
@@ -35,6 +35,8 @@
 package gr.grnet.pithos.web.client;\r
 \r
 import gr.grnet.pithos.web.client.components.TristateCheckBox;\r
+import gr.grnet.pithos.web.client.foldertree.File;\r
+import gr.grnet.pithos.web.client.foldertree.Folder;\r
 import gr.grnet.pithos.web.client.rest.MultiplePostCommand;\r
 import gr.grnet.pithos.web.client.rest.RestException;\r
 import gr.grnet.pithos.web.client.rest.resource.FileResource;\r
@@ -71,9 +73,9 @@ import com.google.gwt.user.client.ui.VerticalPanel;
  */\r
 public class FilesPropertiesDialog extends AbstractPropertiesDialog {\r
 \r
-       private final TristateCheckBox versionedCheck;\r
+//     private final TristateCheckBox versionedCheck;\r
 \r
-       private final List<FileResource> files;\r
+       private final List<File> files;\r
 \r
        private Boolean initialVersioned;\r
 \r
@@ -83,18 +85,21 @@ public class FilesPropertiesDialog extends AbstractPropertiesDialog {
         *\r
         * @param _files\r
         */\r
-       public FilesPropertiesDialog(final List<FileResource> _files) {\r
+       public FilesPropertiesDialog(GSS _app, final List<File> _files) {\r
                super();\r
 \r
                files = _files;\r
-               int versionedNum = 0;\r
-               for (FileResource fr : files)\r
-                       if (fr.isVersioned()) versionedNum++;\r
-               Boolean versioned = null;\r
-               if (versionedNum==0) versioned = false;\r
-               if (versionedNum==files.size()) versioned = true;\r
-               initialVersioned = versioned;\r
-               versionedCheck = new TristateCheckBox(versioned);\r
+//             int versionedNum = 0;\r
+//             for (File fr : files)\r
+//                     if (fr.isVersioned()) versionedNum++;\r
+//             Boolean versioned = null;\r
+//             if (versionedNum == 0)\r
+//            versioned = false;\r
+//             if (versionedNum == files.size())\r
+//            versioned = true;\r
+\r
+//             initialVersioned = versioned;\r
+//             versionedCheck = new TristateCheckBox(versioned);\r
 \r
                // Set the dialog's caption.\r
                setText("Files properties");\r
@@ -105,69 +110,24 @@ public class FilesPropertiesDialog extends AbstractPropertiesDialog {
                // Inner contains generalPanel and permPanel.\r
                inner = new DecoratedTabPanel();\r
                inner.setAnimationEnabled(true);\r
-               final VerticalPanel generalPanel = new VerticalPanel();\r
-               final HorizontalPanel buttons = new HorizontalPanel();\r
-               final VerticalPanel verPanel = new VerticalPanel();\r
-               final HorizontalPanel vPanel = new HorizontalPanel();\r
 \r
-               inner.add(generalPanel, "General");\r
-               inner.add(verPanel, "Versions");\r
-               inner.selectTab(0);\r
+               inner.add(createGeneralPanel(), "General");\r
 \r
-               final FlexTable generalTable = new FlexTable();\r
-               generalTable.setText(0, 0, String.valueOf(files.size())+" files selected");\r
-               generalTable.setText(1, 0, "Folder");\r
-               generalTable.setText(2, 0, "Tags");\r
-               FileResource firstFile = files.get(0);\r
-               if(firstFile.getFolderName() != null)\r
-                       generalTable.setText(1, 1, firstFile.getFolderName());\r
-               else\r
-                       generalTable.setText(1, 1, "-");\r
+        final VerticalPanel verPanel = new VerticalPanel();\r
 \r
-               // Find if tags are identical\r
-               List<String> tagsList = files.get(0).getTags();\r
-               List<String> tagss;\r
-               for (int i=1; i<files.size(); i++) {\r
-                       tagss = files.get(i).getTags();\r
-                       if (tagsList.size() != tagss.size() || !tagsList.containsAll(tagss)) {\r
-                               tagsList = null;\r
-                               break;\r
-                       }\r
-               }\r
-               // Get the tags.\r
-               StringBuffer tagsBuffer = new StringBuffer();\r
-               if (tagsList==null)\r
-                       tagsBuffer.append(MULTIPLE_VALUES_TEXT);\r
-               else {\r
-                       Iterator i = tagsList.iterator();\r
-                       while (i.hasNext()) {\r
-                               String tag = (String) i.next();\r
-                               tagsBuffer.append(tag).append(", ");\r
-                       }\r
-                       if (tagsBuffer.length() > 1)\r
-                               tagsBuffer.delete(tagsBuffer.length() - 2, tagsBuffer.length() - 1);\r
-               }\r
-               initialTagText = tagsBuffer.toString();\r
-               tags.setText(initialTagText);\r
-               tags.addFocusHandler(new FocusHandler() {\r
-                       @Override\r
-                       public void onFocus(FocusEvent event) {\r
-                               if (MULTIPLE_VALUES_TEXT.equals(tags.getText()))\r
-                                       tags.setText("");\r
-                       }\r
-               }\r
-               );\r
+//        final HorizontalPanel vPanel = new HorizontalPanel();\r
+//        vPanel.setSpacing(8);\r
+//        vPanel.addStyleName("pithos-TabPanelBottom");\r
+//        vPanel.add(new Label("Versioned"));\r
+//        vPanel.add(versionedCheck);\r
+//\r
+//        verPanel.add(vPanel);\r
 \r
-               generalTable.setWidget(2, 1, tags);\r
-               generalTable.getFlexCellFormatter().setStyleName(0, 0, "props-labels");\r
-               generalTable.getFlexCellFormatter().setColSpan(0, 0, 2);\r
-               generalTable.getFlexCellFormatter().setStyleName(1, 0, "props-labels");\r
-               generalTable.getFlexCellFormatter().setStyleName(2, 0, "props-labels");\r
-               generalTable.getFlexCellFormatter().setStyleName(0, 1, "props-values");\r
-               generalTable.getFlexCellFormatter().setStyleName(1, 1, "props-values");\r
-               generalTable.getFlexCellFormatter().setStyleName(2, 1, "props-values");\r
-               generalTable.setCellSpacing(4);\r
+               inner.add(verPanel, "Versions");\r
+               inner.selectTab(0);\r
+        outer.add(inner);\r
 \r
+        final HorizontalPanel buttons = new HorizontalPanel();\r
                // Create the 'OK' button, along with a listener that hides the dialog\r
                // when the button is clicked.\r
                final Button ok = new Button("OK", new ClickHandler() {\r
@@ -191,17 +151,81 @@ public class FilesPropertiesDialog extends AbstractPropertiesDialog {
                buttons.setCellHorizontalAlignment(cancel, HasHorizontalAlignment.ALIGN_CENTER);\r
                buttons.setSpacing(8);\r
                buttons.addStyleName("pithos-TabPanelBottom");\r
+               outer.add(buttons);\r
+               outer.setCellHorizontalAlignment(buttons, HasHorizontalAlignment.ALIGN_CENTER);\r
+               outer.addStyleName("pithos-TabPanelBottom");\r
 \r
-               generalPanel.add(generalTable);\r
+               focusPanel.setFocus(true);\r
+               setWidget(outer);\r
+       }\r
 \r
-               // Asynchronously retrieve the tags defined by this user.\r
-               DeferredCommand.addCommand(new Command() {\r
+    private VerticalPanel createGeneralPanel() {\r
+        VerticalPanel generalPanel = new VerticalPanel();\r
 \r
-                       @Override\r
-                       public void execute() {\r
-                               updateTags();\r
-                       }\r
-               });\r
+        final FlexTable generalTable = new FlexTable();\r
+        generalTable.setText(0, 0, String.valueOf(files.size())+" files selected");\r
+        generalTable.setText(1, 0, "Folder");\r
+        generalTable.setText(2, 0, "Tags");\r
+        Folder parent = files.get(0).getParent();\r
+        if(parent != null)\r
+            generalTable.setText(1, 1, parent.getName());\r
+        else\r
+            generalTable.setText(1, 1, "-");\r
+\r
+               // Find if tags are identical\r
+//             List<String> tagsList = files.get(0).getTags();\r
+//             List<String> tagss;\r
+//             for (int i=1; i<files.size(); i++) {\r
+//                     tagss = files.get(i).getTags();\r
+//                     if (tagsList.size() != tagss.size() || !tagsList.containsAll(tagss)) {\r
+//                             tagsList = null;\r
+//                             break;\r
+//                     }\r
+//             }\r
+//             // Get the tags.\r
+//             StringBuffer tagsBuffer = new StringBuffer();\r
+//             if (tagsList==null)\r
+//                     tagsBuffer.append(MULTIPLE_VALUES_TEXT);\r
+//             else {\r
+//                     Iterator i = tagsList.iterator();\r
+//                     while (i.hasNext()) {\r
+//                             String tag = (String) i.next();\r
+//                             tagsBuffer.append(tag).append(", ");\r
+//                     }\r
+//                     if (tagsBuffer.length() > 1)\r
+//                             tagsBuffer.delete(tagsBuffer.length() - 2, tagsBuffer.length() - 1);\r
+//             }\r
+//             initialTagText = tagsBuffer.toString();\r
+//             tags.setText(initialTagText);\r
+//             tags.addFocusHandler(new FocusHandler() {\r
+//                     @Override\r
+//                     public void onFocus(FocusEvent event) {\r
+//                             if (MULTIPLE_VALUES_TEXT.equals(tags.getText()))\r
+//                                     tags.setText("");\r
+//                     }\r
+//             }\r
+//             );\r
+//\r
+//             generalTable.setWidget(2, 1, tags);\r
+               generalTable.getFlexCellFormatter().setStyleName(0, 0, "props-labels");\r
+               generalTable.getFlexCellFormatter().setColSpan(0, 0, 2);\r
+               generalTable.getFlexCellFormatter().setStyleName(1, 0, "props-labels");\r
+               generalTable.getFlexCellFormatter().setStyleName(2, 0, "props-labels");\r
+               generalTable.getFlexCellFormatter().setStyleName(0, 1, "props-values");\r
+               generalTable.getFlexCellFormatter().setStyleName(1, 1, "props-values");\r
+               generalTable.getFlexCellFormatter().setStyleName(2, 1, "props-values");\r
+               generalTable.setCellSpacing(4);\r
+\r
+        generalPanel.add(generalTable);\r
+\r
+               // Asynchronously retrieve the tags defined by this user.\r
+//             DeferredCommand.addCommand(new Command() {\r
+//\r
+//                     @Override\r
+//                     public void execute() {\r
+//                             updateTags();\r
+//                     }\r
+//             });\r
 \r
                DisclosurePanel allTags = new DisclosurePanel("All tags");\r
                allTagsContent = new FlowPanel();\r
@@ -209,23 +233,8 @@ public class FilesPropertiesDialog extends AbstractPropertiesDialog {
                generalPanel.add(allTags);\r
                generalPanel.setSpacing(4);\r
 \r
-\r
-               vPanel.setCellHorizontalAlignment(cancel, HasHorizontalAlignment.ALIGN_CENTER);\r
-               vPanel.setSpacing(8);\r
-               vPanel.addStyleName("pithos-TabPanelBottom");\r
-               vPanel.add(new Label("Versioned"));\r
-\r
-               vPanel.add(versionedCheck);\r
-               verPanel.add(vPanel);\r
-               outer.add(inner);\r
-               outer.add(buttons);\r
-               outer.setCellHorizontalAlignment(buttons, HasHorizontalAlignment.ALIGN_CENTER);\r
-               outer.addStyleName("pithos-TabPanelBottom");\r
-\r
-               focusPanel.setFocus(true);\r
-               setWidget(outer);\r
-       }\r
-\r
+        return generalPanel;\r
+    }\r
 \r
        /**\r
         * Accepts any change and updates the file\r
@@ -233,59 +242,57 @@ public class FilesPropertiesDialog extends AbstractPropertiesDialog {
         */\r
        @Override\r
        protected void accept() {\r
-               JSONObject json = new JSONObject();\r
-               if ( versionedCheck.getState()!=null && !versionedCheck.getState().equals(initialVersioned) )\r
-                               json.put("versioned", JSONBoolean.getInstance(versionedCheck.getState()));\r
-\r
-               JSONArray taga = new JSONArray();\r
-               int i = 0;\r
-               String tagText = tags.getText();\r
-               if (!MULTIPLE_VALUES_TEXT.equals(tagText) && !initialTagText.equals(tagText)) {\r
-                       String[] tagset = tagText.split(",");\r
-                       for (String t : tagset) {\r
-                               JSONString to = new JSONString(t);\r
-                               taga.set(i, to);\r
-                               i++;\r
-                       }\r
-                       json.put("tags", taga);\r
-               }\r
-               String jsonString = json.toString();\r
-               if(jsonString.equals("{}")){\r
-                       GWT.log("NO CHANGES", null);\r
-                       return;\r
-               }\r
-               final List<String> fileIds = new ArrayList<String>();\r
-               for(FileResource f : files)\r
-                       fileIds.add(f.getUri()+"?update=");\r
-               MultiplePostCommand rt = new MultiplePostCommand(fileIds.toArray(new String[0]), jsonString, 200){\r
-\r
-                       @Override\r
-                       public void onComplete() {\r
-                               GSS.get().getTreeView().refreshCurrentNode(false);\r
-                       }\r
-\r
-                       @Override\r
-                       public void onError(String p, Throwable t) {\r
-                               GWT.log("", t);\r
-                               if(t instanceof RestException){\r
-                                       int statusCode = ((RestException)t).getHttpStatusCode();\r
-                                       if(statusCode == 405)\r
-                                               GSS.get().displayError("You don't have the necessary permissions");\r
-                                       else if(statusCode == 404)\r
-                                               GSS.get().displayError("File does not exist");\r
-                                       else if(statusCode == 409)\r
-                                               GSS.get().displayError("A file with the same name already exists");\r
-                                       else if(statusCode == 413)\r
-                                               GSS.get().displayError("Your quota has been exceeded");\r
-                                       else\r
-                                               GSS.get().displayError("Unable to modify file::"+((RestException)t).getHttpStatusText());\r
-                               }\r
-                               else\r
-                                       GSS.get().displayError("System error modifying file:"+t.getMessage());\r
-                       }\r
-               };\r
-               DeferredCommand.addCommand(rt);\r
+//             JSONObject json = new JSONObject();\r
+//             if ( versionedCheck.getState()!=null && !versionedCheck.getState().equals(initialVersioned) )\r
+//                             json.put("versioned", JSONBoolean.getInstance(versionedCheck.getState()));\r
+//\r
+//             JSONArray taga = new JSONArray();\r
+//             int i = 0;\r
+//             String tagText = tags.getText();\r
+//             if (!MULTIPLE_VALUES_TEXT.equals(tagText) && !initialTagText.equals(tagText)) {\r
+//                     String[] tagset = tagText.split(",");\r
+//                     for (String t : tagset) {\r
+//                             JSONString to = new JSONString(t);\r
+//                             taga.set(i, to);\r
+//                             i++;\r
+//                     }\r
+//                     json.put("tags", taga);\r
+//             }\r
+//             String jsonString = json.toString();\r
+//             if(jsonString.equals("{}")){\r
+//                     GWT.log("NO CHANGES", null);\r
+//                     return;\r
+//             }\r
+//             final List<String> fileIds = new ArrayList<String>();\r
+//             for(FileResource f : files)\r
+//                     fileIds.add(f.getUri()+"?update=");\r
+//             MultiplePostCommand rt = new MultiplePostCommand(fileIds.toArray(new String[0]), jsonString, 200){\r
+//\r
+//                     @Override\r
+//                     public void onComplete() {\r
+//                             GSS.get().getTreeView().refreshCurrentNode(false);\r
+//                     }\r
+//\r
+//                     @Override\r
+//                     public void onError(String p, Throwable t) {\r
+//                             GWT.log("", t);\r
+//                             if(t instanceof RestException){\r
+//                                     int statusCode = ((RestException)t).getHttpStatusCode();\r
+//                                     if(statusCode == 405)\r
+//                                             GSS.get().displayError("You don't have the necessary permissions");\r
+//                                     else if(statusCode == 404)\r
+//                                             GSS.get().displayError("File does not exist");\r
+//                                     else if(statusCode == 409)\r
+//                                             GSS.get().displayError("A file with the same name already exists");\r
+//                                     else if(statusCode == 413)\r
+//                                             GSS.get().displayError("Your quota has been exceeded");\r
+//                                     else\r
+//                                             GSS.get().displayError("Unable to modify file::"+((RestException)t).getHttpStatusText());\r
+//                             }\r
+//                             else\r
+//                                     GSS.get().displayError("System error modifying file:"+t.getMessage());\r
+//                     }\r
+//             };\r
+//             DeferredCommand.addCommand(rt);\r
        }\r
-\r
-\r
 }\r
index bada046..9849f61 100644 (file)
@@ -114,9 +114,9 @@ public class PropertiesCommand implements Command {
         else if (resource instanceof List) {
             List<File> files = (List<File>) resource;
             if (files.size() > 1) {
-//                FilesPropertiesDialog dlg = new FilesPropertiesDialog(files);
-//                dlg.selectTab(tabToShow);
-//                dlg.center();
+                FilesPropertiesDialog dlg = new FilesPropertiesDialog(app, files);
+                dlg.selectTab(tabToShow);
+                dlg.center();
             }
             else {
                 FilePropertiesDialog dlg = new FilePropertiesDialog(app, files.get(0));