Updated licence in code files. Removed some unused methods
[pithos] / web_client / src / gr / grnet / pithos / web / client / commands / NewFolderCommand.java
1 /*
2  * Copyright 2011 GRNET S.A. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or
5  * without modification, are permitted provided that the following
6  * conditions are met:
7  *
8  *   1. Redistributions of source code must retain the above
9  *      copyright notice, this list of conditions and the following
10  *      disclaimer.
11  *
12  *   2. Redistributions in binary form must reproduce the above
13  *      copyright notice, this list of conditions and the following
14  *      disclaimer in the documentation and/or other materials
15  *      provided with the distribution.
16  *
17  * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  * POSSIBILITY OF SUCH DAMAGE.
29  *
30  * The views and conclusions contained in the software and
31  * documentation are those of the authors and should not be
32  * interpreted as representing official policies, either expressed
33  * or implied, of GRNET S.A.
34  */
35 package gr.grnet.pithos.web.client.commands;
36
37 import gr.grnet.pithos.web.client.FileMenu.Images;
38 import gr.grnet.pithos.web.client.FolderPropertiesDialog;
39 import gr.grnet.pithos.web.client.GSS;
40 import gr.grnet.pithos.web.client.rest.GetCommand;
41 import gr.grnet.pithos.web.client.rest.MultipleGetCommand;
42 import gr.grnet.pithos.web.client.rest.resource.GroupResource;
43 import gr.grnet.pithos.web.client.rest.resource.GroupsResource;
44 import gr.grnet.pithos.web.client.rest.resource.RestResource;
45
46 import java.util.ArrayList;
47 import java.util.List;
48
49 import com.google.gwt.core.client.GWT;
50 import com.google.gwt.user.client.Command;
51 import com.google.gwt.user.client.DeferredCommand;
52 import com.google.gwt.user.client.IncrementalCommand;
53 import com.google.gwt.user.client.ui.PopupPanel;
54
55 /**
56  * Display the 'new folder' dialog for creating a new folder.
57  *
58  */
59 public class NewFolderCommand implements Command{
60         private PopupPanel containerPanel;
61         final Images images;
62
63         private List<GroupResource> groups = null;
64
65         /**
66          * @param aContainerPanel
67          * @param newImages the images of the new folder dialog
68          */
69         public NewFolderCommand(PopupPanel aContainerPanel, final Images newImages){
70                 containerPanel = aContainerPanel;
71                 images=newImages;
72         }
73
74         @Override
75         public void execute() {
76                 containerPanel.hide();
77                 getGroups();
78                 DeferredCommand.addCommand(new IncrementalCommand() {
79
80                         @Override
81                         public boolean execute() {
82                                 boolean res = canContinue();
83                                 if (res) {
84                                         displayNewFolder();
85                                         return false;
86                                 }
87                                 return true;
88                         }
89
90                 });
91         }
92
93         private boolean canContinue() {
94                 if (groups == null)
95                         return false;
96                 return true;
97         }
98
99         void displayNewFolder() {
100                 RestResource currentFolder = GSS.get().getTreeView().getSelection();
101                 if (currentFolder == null) {
102                         GSS.get().displayError("You have to select the parent folder first");
103                         return;
104                 }
105                 FolderPropertiesDialog dlg = new FolderPropertiesDialog(images, true,  groups);
106                 dlg.center();
107         }
108
109         private void getGroups() {
110                 GetCommand<GroupsResource> gg = new GetCommand<GroupsResource>(GroupsResource.class, GSS.get().getCurrentUserResource().getGroupsPath(), null){
111
112                         @Override
113                         public void onComplete() {
114                                 GroupsResource res = getResult();
115                                 MultipleGetCommand<GroupResource> ga = new MultipleGetCommand<GroupResource>(GroupResource.class, res.getGroupPaths().toArray(new String[]{}), null){
116
117                                         @Override
118                                         public void onComplete() {
119                                                 List<GroupResource> groupList = getResult();
120                                                 groups = groupList;
121                                         }
122
123                                         @Override
124                                         public void onError(Throwable t) {
125                                                 GWT.log("", t);
126                                                 GSS.get().displayError("Unable to fetch groups");
127                                                 groups = new ArrayList<GroupResource>();
128                                         }
129
130                                         @Override
131                                         public void onError(String p, Throwable throwable) {
132                                                 GWT.log("Path:"+p, throwable);
133                                         }
134                                 };
135                                 DeferredCommand.addCommand(ga);
136                         }
137
138                         @Override
139                         public void onError(Throwable t) {
140                                 GWT.log("", t);
141                                 GSS.get().displayError("Unable to fetch groups");
142                                 groups = new ArrayList<GroupResource>();
143                         }
144                 };
145                 DeferredCommand.addCommand(gg);
146         }
147
148 }