Revision 4bcf5e39 web_client/src/gr/grnet/pithos/web/client/DeleteFolderDialog.java
b/web_client/src/gr/grnet/pithos/web/client/DeleteFolderDialog.java | ||
---|---|---|
34 | 34 |
*/ |
35 | 35 |
package gr.grnet.pithos.web.client; |
36 | 36 |
|
37 |
import com.google.gwt.core.client.Scheduler; |
|
38 |
import com.google.gwt.event.dom.client.KeyDownEvent; |
|
39 |
import com.google.gwt.user.client.Event; |
|
37 | 40 |
import gr.grnet.pithos.web.client.MessagePanel.Images; |
41 |
import gr.grnet.pithos.web.client.foldertree.Folder; |
|
42 |
import gr.grnet.pithos.web.client.foldertree.Resource; |
|
38 | 43 |
import gr.grnet.pithos.web.client.rest.DeleteCommand; |
44 |
import gr.grnet.pithos.web.client.rest.DeleteRequest; |
|
39 | 45 |
import gr.grnet.pithos.web.client.rest.RestException; |
40 | 46 |
import gr.grnet.pithos.web.client.rest.resource.FolderResource; |
41 | 47 |
import gr.grnet.pithos.web.client.rest.resource.RestResource; |
... | ... | |
62 | 68 |
*/ |
63 | 69 |
public class DeleteFolderDialog extends DialogBox { |
64 | 70 |
|
71 |
private GSS app; |
|
72 |
private Folder folder; |
|
73 |
|
|
65 | 74 |
/** |
66 | 75 |
* The widget's constructor. |
67 | 76 |
* @param images the supplied images |
68 | 77 |
*/ |
69 |
public DeleteFolderDialog(Images images) { |
|
78 |
public DeleteFolderDialog(GSS app, Images images, Folder folder) { |
|
79 |
this.app = app; |
|
80 |
this.folder = folder; |
|
70 | 81 |
// Set the dialog's caption. |
71 | 82 |
setText("Confirmation"); |
72 | 83 |
setAnimationEnabled(true); |
73 |
FolderResource folder = ((RestResourceWrapper) GSS.get().getTreeView().getSelection()).getResource(); |
|
74 | 84 |
// Create a VerticalPanel to contain the HTML label and the buttons. |
75 | 85 |
VerticalPanel outer = new VerticalPanel(); |
76 | 86 |
HorizontalPanel buttons = new HorizontalPanel(); |
... | ... | |
90 | 100 |
hide(); |
91 | 101 |
} |
92 | 102 |
}); |
93 |
ok.getElement().setId("confirmation.ok"); |
|
94 | 103 |
buttons.add(ok); |
95 | 104 |
buttons.setCellHorizontalAlignment(ok, HasHorizontalAlignment.ALIGN_CENTER); |
96 | 105 |
// Create the 'Cancel' button, along with a listener that hides the |
... | ... | |
101 | 110 |
hide(); |
102 | 111 |
} |
103 | 112 |
}); |
104 |
cancel.getElement().setId("confirmation.cancel"); |
|
105 | 113 |
buttons.add(cancel); |
106 | 114 |
buttons.setCellHorizontalAlignment(cancel, HasHorizontalAlignment.ALIGN_CENTER); |
107 | 115 |
buttons.setSpacing(8); |
... | ... | |
116 | 124 |
/** |
117 | 125 |
* Generate an RPC request to delete a folder. |
118 | 126 |
* |
119 |
* @param userId the ID of the current user |
|
120 | 127 |
*/ |
121 | 128 |
private void deleteFolder() { |
122 |
RestResource folder = GSS.get().getTreeView().getSelection(); |
|
123 |
if (folder == null) { |
|
124 |
GSS.get().displayError("No folder was selected"); |
|
125 |
return; |
|
126 |
} |
|
127 |
if(!(folder instanceof RestResourceWrapper)) |
|
128 |
return; |
|
129 |
String prefix = folder.getPrefix(); |
|
130 |
String path = app.getApiPath() + app.getUsername() + "/" + folder.getContainer() + (prefix.length() == 0 ? "" : "/" + prefix); |
|
131 |
DeleteRequest deleteFolder = new DeleteRequest(path) { |
|
132 |
@Override |
|
133 |
public void onSuccess(Resource result) { |
|
129 | 134 |
|
130 |
DeleteCommand df = new DeleteCommand(folder.getUri()){
|
|
135 |
}
|
|
131 | 136 |
|
132 |
@Override |
|
133 |
public void onComplete() { |
|
134 |
FolderResource fres = ((RestResourceWrapper) GSS.get().getTreeView().getSelection()).getResource(); |
|
135 |
if((RestResourceWrapper) GSS.get().getTreeView().getSelection() instanceof TrashFolderResource) |
|
136 |
GSS.get().getTreeView().updateTrashNode(); |
|
137 |
else |
|
138 |
GSS.get().getTreeView().updateNodeChildrenForRemove(fres.getParentURI()); |
|
139 |
GSS.get().getTreeView().clearSelection(); |
|
140 |
GSS.get().showFileList(true); |
|
141 |
|
|
142 |
GSS.get().getStatusPanel().updateStats(); |
|
143 |
} |
|
144 |
|
|
145 |
@Override |
|
146 |
public void onError(Throwable t) { |
|
147 |
GWT.log("", t); |
|
148 |
if(t instanceof RestException){ |
|
149 |
int statusCode = ((RestException)t).getHttpStatusCode(); |
|
150 |
if(statusCode == 405) |
|
151 |
GSS.get().displayError("You don't have the necessary permissions"); |
|
152 |
else if(statusCode == 404) |
|
153 |
GSS.get().displayError("Folder not found"); |
|
154 |
else |
|
155 |
GSS.get().displayError("Unable to delete folder: "+((RestException)t).getHttpStatusText()); |
|
156 |
} |
|
157 |
else |
|
158 |
GSS.get().displayError("System error unable to delete folder: "+t.getMessage()); |
|
159 |
} |
|
160 |
}; |
|
161 |
|
|
162 |
DeferredCommand.addCommand(df); |
|
137 |
@Override |
|
138 |
public void onError(Throwable t) { |
|
139 |
GWT.log("", t); |
|
140 |
if (t instanceof RestException) { |
|
141 |
int statusCode = ((RestException)t).getHttpStatusCode(); |
|
142 |
app.displayError("Unable to delete folder: "+((RestException) t).getHttpStatusText()); |
|
143 |
} |
|
144 |
else |
|
145 |
GSS.get().displayError("System error unable to delete folder: " + t.getMessage()); |
|
146 |
} |
|
147 |
}; |
|
148 |
deleteFolder.setHeader("X-Auth-Token", app.getToken()); |
|
149 |
Scheduler.get().scheduleDeferred(deleteFolder); |
|
163 | 150 |
} |
164 | 151 |
|
165 | 152 |
@Override |
... | ... | |
167 | 154 |
super.onPreviewNativeEvent(preview); |
168 | 155 |
|
169 | 156 |
NativeEvent evt = preview.getNativeEvent(); |
170 |
if (evt.getType().equals("keydown"))
|
|
157 |
if (evt.getType().equals(KeyDownEvent.getType().getName()))
|
|
171 | 158 |
// Use the popup's key preview hooks to close the dialog when either |
172 | 159 |
// enter or escape is pressed. |
173 | 160 |
switch (evt.getKeyCode()) { |
Also available in: Unified diff