Statistics
| Branch: | Tag: | Revision:

root / src / gr / ebs / gss / client / commands / UploadFileCommand.java @ 62f168b2

History | View | Annotate | Download (2.7 kB)

1
/*
2
 * Copyright 2008, 2009 Electronic Business Systems Ltd.
3
 *
4
 * This file is part of GSS.
5
 *
6
 * GSS is free software: you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation, either version 3 of the License, or
9
 * (at your option) any later version.
10
 *
11
 * GSS is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with GSS.  If not, see <http://www.gnu.org/licenses/>.
18
 */
19
package gr.ebs.gss.client.commands;
20

    
21
import gr.ebs.gss.client.FileUploadDialog;
22
import gr.ebs.gss.client.GSS;
23
import gr.ebs.gss.client.rest.GetCommand;
24
import gr.ebs.gss.client.rest.resource.FileResource;
25
import gr.ebs.gss.client.rest.resource.FolderResource;
26

    
27
import java.util.ArrayList;
28
import java.util.List;
29

    
30
import com.google.gwt.core.client.GWT;
31
import com.google.gwt.user.client.Command;
32
import com.google.gwt.user.client.DeferredCommand;
33
import com.google.gwt.user.client.IncrementalCommand;
34
import com.google.gwt.user.client.ui.PopupPanel;
35
import com.google.gwt.user.client.ui.TreeItem;
36

    
37
/**
38
 * Upload a file command
39
 *
40
 * @author kman
41
 */
42
public class UploadFileCommand implements Command {
43

    
44
        private PopupPanel containerPanel;
45
        private List<FileResource> files;
46

    
47
        public UploadFileCommand(PopupPanel _containerPanel) {
48
                containerPanel = _containerPanel;
49
        }
50

    
51
        public void execute() {
52
                containerPanel.hide();
53
                displayNewFile();
54
        }
55

    
56
        /**
57
         * Display the 'new file' dialog for uploading a new file to the system.
58
         */
59
        private void displayNewFile() {
60
                TreeItem currentFolder = GSS.get().getFolders().getCurrent();
61
                if (currentFolder == null) {
62
                        GSS.get().displayError("You have to select the parent folder first");
63
                        return;
64
                }
65
                getFileList();
66
                DeferredCommand.addCommand(new IncrementalCommand() {
67

    
68
                        public boolean execute() {
69
                                boolean res = canContinue();
70
                                if (res) {
71
                                        FileUploadDialog dlg = GWT.create(FileUploadDialog.class);
72
                                        dlg.setFiles(files);
73
                                        dlg.center();
74
                                        return false;
75
                                }
76
                                return true;
77
                        }
78

    
79
                });
80
        }
81

    
82
        private boolean canContinue() {
83
                if (files != null )
84
                        return true;
85
                return false;
86
        }
87

    
88
        private void getFileList() {
89
                GetCommand<FolderResource> eg = new GetCommand<FolderResource>(FolderResource.class,((FolderResource)GSS.get().getFolders().getCurrent().getUserObject()).getUri(), null){
90

    
91
                        @Override
92
                        public void onComplete() {
93
                                files = getResult().getFiles();
94
                        }
95

    
96
                        @Override
97
                        public void onError(Throwable t) {
98
                                files = new ArrayList<FileResource>();
99
                        }
100

    
101
                };
102
                DeferredCommand.addCommand(eg);
103
        }
104

    
105
}