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