Statistics
| Branch: | Tag: | Revision:

root / src / gr / grnet / pithos / web / client / FileShareDialog.java @ bc982727

History | View | Annotate | Download (22.8 kB)

1 64d3b76b Christos KK Loverdos
/*
2 64d3b76b Christos KK Loverdos
 * Copyright 2011-2013 GRNET S.A. All rights reserved.
3 64d3b76b Christos KK Loverdos
 *
4 64d3b76b Christos KK Loverdos
 * Redistribution and use in source and binary forms, with or
5 64d3b76b Christos KK Loverdos
 * without modification, are permitted provided that the following
6 64d3b76b Christos KK Loverdos
 * conditions are met:
7 64d3b76b Christos KK Loverdos
 *
8 64d3b76b Christos KK Loverdos
 *   1. Redistributions of source code must retain the above
9 64d3b76b Christos KK Loverdos
 *      copyright notice, this list of conditions and the following
10 64d3b76b Christos KK Loverdos
 *      disclaimer.
11 64d3b76b Christos KK Loverdos
 *
12 64d3b76b Christos KK Loverdos
 *   2. Redistributions in binary form must reproduce the above
13 64d3b76b Christos KK Loverdos
 *      copyright notice, this list of conditions and the following
14 64d3b76b Christos KK Loverdos
 *      disclaimer in the documentation and/or other materials
15 64d3b76b Christos KK Loverdos
 *      provided with the distribution.
16 64d3b76b Christos KK Loverdos
 *
17 64d3b76b Christos KK Loverdos
 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18 64d3b76b Christos KK Loverdos
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 64d3b76b Christos KK Loverdos
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 64d3b76b Christos KK Loverdos
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21 64d3b76b Christos KK Loverdos
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 64d3b76b Christos KK Loverdos
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 64d3b76b Christos KK Loverdos
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 64d3b76b Christos KK Loverdos
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25 64d3b76b Christos KK Loverdos
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 64d3b76b Christos KK Loverdos
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 64d3b76b Christos KK Loverdos
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 64d3b76b Christos KK Loverdos
 * POSSIBILITY OF SUCH DAMAGE.
29 64d3b76b Christos KK Loverdos
 *
30 64d3b76b Christos KK Loverdos
 * The views and conclusions contained in the software and
31 64d3b76b Christos KK Loverdos
 * documentation are those of the authors and should not be
32 64d3b76b Christos KK Loverdos
 * interpreted as representing official policies, either expressed
33 64d3b76b Christos KK Loverdos
 * or implied, of GRNET S.A.
34 64d3b76b Christos KK Loverdos
 */
35 64d3b76b Christos KK Loverdos
package gr.grnet.pithos.web.client;
36 64d3b76b Christos KK Loverdos
37 64d3b76b Christos KK Loverdos
import com.google.gwt.http.client.URL;
38 64d3b76b Christos KK Loverdos
import com.google.gwt.user.client.ui.*;
39 64d3b76b Christos KK Loverdos
import gr.grnet.pithos.web.client.foldertree.File;
40 64d3b76b Christos KK Loverdos
import gr.grnet.pithos.web.client.rest.HeadRequest;
41 64d3b76b Christos KK Loverdos
import gr.grnet.pithos.web.client.rest.PostRequest;
42 64d3b76b Christos KK Loverdos
43 64d3b76b Christos KK Loverdos
import com.google.gwt.core.client.GWT;
44 64d3b76b Christos KK Loverdos
import com.google.gwt.core.client.Scheduler;
45 64d3b76b Christos KK Loverdos
import com.google.gwt.dom.client.NativeEvent;
46 c963be61 Christos KK Loverdos
import com.google.gwt.event.dom.client.ClickEvent;
47 c963be61 Christos KK Loverdos
import com.google.gwt.event.dom.client.ClickHandler;
48 c963be61 Christos KK Loverdos
import com.google.gwt.event.dom.client.KeyCodes;
49 64d3b76b Christos KK Loverdos
import com.google.gwt.http.client.Response;
50 64d3b76b Christos KK Loverdos
import com.google.gwt.http.client.UrlBuilder;
51 64d3b76b Christos KK Loverdos
import com.google.gwt.resources.client.ImageResource;
52 64d3b76b Christos KK Loverdos
import com.google.gwt.user.client.Command;
53 64d3b76b Christos KK Loverdos
import com.google.gwt.user.client.Window;
54 64d3b76b Christos KK Loverdos
import com.google.gwt.user.client.Event.NativePreviewEvent;
55 64d3b76b Christos KK Loverdos
56 64d3b76b Christos KK Loverdos
import java.util.Map;
57 64d3b76b Christos KK Loverdos
58 64d3b76b Christos KK Loverdos
/**
59 64d3b76b Christos KK Loverdos
 * UI for the "Share" command.
60 64d3b76b Christos KK Loverdos
 */
61 64d3b76b Christos KK Loverdos
public class FileShareDialog extends AbstractPropertiesDialog {
62 77424c81 Christos KK Loverdos
    private static final class PermissionsUncheckWarning extends AbstractPropertiesDialog {
63 77424c81 Christos KK Loverdos
        private PermissionsUncheckWarning(Pithos app) {
64 b12da07a Christos KK Loverdos
            super(app);
65 b12da07a Christos KK Loverdos
            final Anchor close = new Anchor("close");
66 b12da07a Christos KK Loverdos
            close.addStyleName("close");
67 b12da07a Christos KK Loverdos
            close.addClickHandler(new ClickHandler() {
68 b12da07a Christos KK Loverdos
                @Override
69 b12da07a Christos KK Loverdos
                public void onClick(ClickEvent event) {
70 b12da07a Christos KK Loverdos
                    hide();
71 b12da07a Christos KK Loverdos
                }
72 b12da07a Christos KK Loverdos
            });
73 b12da07a Christos KK Loverdos
            final String dialogText = "Info";
74 b12da07a Christos KK Loverdos
            setText(dialogText);
75 b12da07a Christos KK Loverdos
            setStyleName("pithos-DialogBox");
76 b12da07a Christos KK Loverdos
77 b12da07a Christos KK Loverdos
            final VerticalPanel panel = new VerticalPanel();
78 b12da07a Christos KK Loverdos
            panel.add(close);
79 b12da07a Christos KK Loverdos
80 b12da07a Christos KK Loverdos
            VerticalPanel inner = new VerticalPanel();
81 b12da07a Christos KK Loverdos
            inner.addStyleName("inner");
82 b12da07a Christos KK Loverdos
83 b12da07a Christos KK Loverdos
            inner.add(
84 b12da07a Christos KK Loverdos
                new InlineHTML(
85 b12da07a Christos KK Loverdos
                    "It seems you are already sharing this file with some users." +
86 b12da07a Christos KK Loverdos
                    "<br>" +
87 b12da07a Christos KK Loverdos
                    "Please remove all users from the sharing list, to be able to uncheck this option."
88 b12da07a Christos KK Loverdos
                )
89 b12da07a Christos KK Loverdos
            );
90 b12da07a Christos KK Loverdos
91 b12da07a Christos KK Loverdos
            final Button ok = new Button("OK", new ClickHandler() {
92 b12da07a Christos KK Loverdos
                @Override
93 b12da07a Christos KK Loverdos
                public void onClick(ClickEvent event) {
94 b12da07a Christos KK Loverdos
                    hide();
95 b12da07a Christos KK Loverdos
                }
96 b12da07a Christos KK Loverdos
            });
97 b12da07a Christos KK Loverdos
98 b12da07a Christos KK Loverdos
            ok.addStyleName("button");
99 b12da07a Christos KK Loverdos
            inner.add(ok);
100 b12da07a Christos KK Loverdos
101 b12da07a Christos KK Loverdos
            panel.add(inner);
102 b12da07a Christos KK Loverdos
            panel.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER);
103 b12da07a Christos KK Loverdos
104 b12da07a Christos KK Loverdos
            setWidget(panel);
105 b12da07a Christos KK Loverdos
        }
106 b12da07a Christos KK Loverdos
107 b12da07a Christos KK Loverdos
        @Override
108 b12da07a Christos KK Loverdos
        protected boolean accept() {
109 b12da07a Christos KK Loverdos
            return true;
110 b12da07a Christos KK Loverdos
        }
111 b12da07a Christos KK Loverdos
    }
112 b12da07a Christos KK Loverdos
113 64d3b76b Christos KK Loverdos
    // For public sharing
114 64d3b76b Christos KK Loverdos
        private final HorizontalPanel publicPathPanel = new HorizontalPanel();
115 c963be61 Christos KK Loverdos
        private final TextBox publicPathText = new TextBox();
116 64d3b76b Christos KK Loverdos
117 64d3b76b Christos KK Loverdos
    // For private sharing
118 64d3b76b Christos KK Loverdos
    private final HorizontalPanel privatePathPanel = new HorizontalPanel();
119 c963be61 Christos KK Loverdos
    private final TextBox privatePathText = new TextBox();
120 64d3b76b Christos KK Loverdos
    private PermissionsList permList;
121 bc982727 Christos KK Loverdos
122 64d3b76b Christos KK Loverdos
    public interface PrivateSharingImages extends MessagePanel.Images {
123 64d3b76b Christos KK Loverdos
124 64d3b76b Christos KK Loverdos
        @Source("gr/grnet/pithos/resources/edit_user.png")
125 64d3b76b Christos KK Loverdos
        ImageResource permUser();
126 64d3b76b Christos KK Loverdos
127 64d3b76b Christos KK Loverdos
        @Source("gr/grnet/pithos/resources/groups22.png")
128 64d3b76b Christos KK Loverdos
        ImageResource permGroup();
129 64d3b76b Christos KK Loverdos
130 64d3b76b Christos KK Loverdos
        @Source("gr/grnet/pithos/resources/delete.gif")
131 64d3b76b Christos KK Loverdos
        ImageResource delete();
132 64d3b76b Christos KK Loverdos
    }
133 64d3b76b Christos KK Loverdos
134 64d3b76b Christos KK Loverdos
    private final File file;
135 64d3b76b Christos KK Loverdos
136 64d3b76b Christos KK Loverdos
    private final PrivateSharingImages privateSharingImages = GWT.create(PrivateSharingImages.class);
137 64d3b76b Christos KK Loverdos
138 64d3b76b Christos KK Loverdos
        /**
139 64d3b76b Christos KK Loverdos
         * The widget's constructor.
140 64d3b76b Christos KK Loverdos
         */
141 ed2b76a4 Christos KK Loverdos
        public FileShareDialog(Pithos app, File file) {
142 ed2b76a4 Christos KK Loverdos
        super(app);
143 ed2b76a4 Christos KK Loverdos
        this.file = file;
144 64d3b76b Christos KK Loverdos
145 64d3b76b Christos KK Loverdos
                Anchor close = new Anchor("close");
146 64d3b76b Christos KK Loverdos
                close.addStyleName("close");
147 64d3b76b Christos KK Loverdos
                close.addClickHandler(new ClickHandler() {
148 64d3b76b Christos KK Loverdos
                        
149 64d3b76b Christos KK Loverdos
                        @Override
150 64d3b76b Christos KK Loverdos
                        public void onClick(ClickEvent event) {
151 64d3b76b Christos KK Loverdos
                                hide();
152 64d3b76b Christos KK Loverdos
                        }
153 64d3b76b Christos KK Loverdos
                });
154 64d3b76b Christos KK Loverdos
                // Set the dialog's caption.
155 d1609e26 Christos KK Loverdos
                setText(Const.TXT_SHARE_FILE);
156 64d3b76b Christos KK Loverdos
                setGlassEnabled(true);
157 64d3b76b Christos KK Loverdos
                setStyleName("pithos-DialogBox");
158 64d3b76b Christos KK Loverdos
159 64d3b76b Christos KK Loverdos
                // Outer contains inner and buttons.
160 64d3b76b Christos KK Loverdos
                final VerticalPanel outer = new VerticalPanel();
161 64d3b76b Christos KK Loverdos
                outer.add(close);
162 64d3b76b Christos KK Loverdos
                final FocusPanel focusPanel = new FocusPanel(outer);
163 64d3b76b Christos KK Loverdos
                // Inner contains generalPanel and permPanel.
164 64d3b76b Christos KK Loverdos
                inner = new VerticalPanel();
165 64d3b76b Christos KK Loverdos
                inner.addStyleName("inner");
166 64d3b76b Christos KK Loverdos
167 64d3b76b Christos KK Loverdos
        inner.add(createMainPanel());
168 64d3b76b Christos KK Loverdos
169 64d3b76b Christos KK Loverdos
        outer.add(inner);
170 64d3b76b Christos KK Loverdos
171 64d3b76b Christos KK Loverdos
                final Button ok = new Button("OK", new ClickHandler() {
172 64d3b76b Christos KK Loverdos
                        @Override
173 64d3b76b Christos KK Loverdos
                        public void onClick(ClickEvent event) {
174 64d3b76b Christos KK Loverdos
                                closeDialog();
175 64d3b76b Christos KK Loverdos
                        }
176 64d3b76b Christos KK Loverdos
                });
177 64d3b76b Christos KK Loverdos
                ok.addStyleName("button");
178 64d3b76b Christos KK Loverdos
179 64d3b76b Christos KK Loverdos
        outer.add(ok);
180 64d3b76b Christos KK Loverdos
        outer.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER);
181 64d3b76b Christos KK Loverdos
182 64d3b76b Christos KK Loverdos
        focusPanel.setFocus(true);
183 64d3b76b Christos KK Loverdos
        setWidget(outer);
184 64d3b76b Christos KK Loverdos
        }
185 64d3b76b Christos KK Loverdos
186 64d3b76b Christos KK Loverdos
    private boolean IamOwner() {
187 64d3b76b Christos KK Loverdos
        return file.getOwnerID().equals(app.getUserID());
188 64d3b76b Christos KK Loverdos
    }
189 64d3b76b Christos KK Loverdos
190 64d3b76b Christos KK Loverdos
    private void populatePublicSharingPanel(VerticalPanel publicSharingPanel) {
191 64d3b76b Christos KK Loverdos
        if(IamOwner()) {
192 64d3b76b Christos KK Loverdos
            final HorizontalPanel publicCheckPanel = new HorizontalPanel();
193 64d3b76b Christos KK Loverdos
            publicCheckPanel.setSpacing(8);
194 64d3b76b Christos KK Loverdos
195 64d3b76b Christos KK Loverdos
            // Check box header
196 64d3b76b Christos KK Loverdos
            final CheckBox publicCheckBox = new CheckBox();
197 64d3b76b Christos KK Loverdos
            Label publicCheckTitle = new InlineHTML("<b>Public on the Internet</b>");
198 64d3b76b Christos KK Loverdos
            Label publicCheckInfo = new Label("Anyone who has the public link can access. No sign-in required.", true);
199 64d3b76b Christos KK Loverdos
200 64d3b76b Christos KK Loverdos
            publicCheckBox.setValue(isFilePubliclyShared());
201 64d3b76b Christos KK Loverdos
            publicCheckBox.addClickHandler(new ClickHandler() {
202 64d3b76b Christos KK Loverdos
                @Override
203 64d3b76b Christos KK Loverdos
                public void onClick(ClickEvent event) {
204 64d3b76b Christos KK Loverdos
                    final Boolean published;
205 64d3b76b Christos KK Loverdos
                    if(publicCheckBox.getValue() != file.isPublished() && IamOwner()) {
206 64d3b76b Christos KK Loverdos
                        published = publicCheckBox.getValue();
207 64d3b76b Christos KK Loverdos
                    }
208 64d3b76b Christos KK Loverdos
                    else {
209 64d3b76b Christos KK Loverdos
                        published = Boolean.FALSE;
210 64d3b76b Christos KK Loverdos
                    }
211 64d3b76b Christos KK Loverdos
212 64d3b76b Christos KK Loverdos
                    updateMetaDataForPublicSharing(published);
213 64d3b76b Christos KK Loverdos
                }
214 64d3b76b Christos KK Loverdos
            });
215 64d3b76b Christos KK Loverdos
216 64d3b76b Christos KK Loverdos
            publicCheckPanel.add(publicCheckBox);
217 64d3b76b Christos KK Loverdos
            publicCheckPanel.add(publicCheckTitle);
218 64d3b76b Christos KK Loverdos
            publicCheckPanel.add(publicCheckInfo);
219 64d3b76b Christos KK Loverdos
220 64d3b76b Christos KK Loverdos
            // Public Link
221 64d3b76b Christos KK Loverdos
            publicPathPanel.setVisible(false);
222 64d3b76b Christos KK Loverdos
            publicPathPanel.setWidth(Const.PERCENT_100);
223 64d3b76b Christos KK Loverdos
            publicPathPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
224 b551f85b Christos KK Loverdos
            publicPathPanel.add(new Label(Const.TXT_PUBLIC_LINK));
225 64d3b76b Christos KK Loverdos
            publicPathPanel.setSpacing(8);
226 64d3b76b Christos KK Loverdos
            publicPathPanel.addStyleName("pithos-TabPanelBottom");
227 64d3b76b Christos KK Loverdos
228 64d3b76b Christos KK Loverdos
            publicPathText.setWidth(Const.PERCENT_100);
229 64d3b76b Christos KK Loverdos
            publicPathText.addClickHandler(new ClickHandler() {
230 64d3b76b Christos KK Loverdos
                @Override
231 64d3b76b Christos KK Loverdos
                public void onClick(ClickEvent event) {
232 64d3b76b Christos KK Loverdos
                    Pithos.enableIESelection();
233 64d3b76b Christos KK Loverdos
                    ((TextBox) event.getSource()).selectAll();
234 64d3b76b Christos KK Loverdos
                    Pithos.preventIESelection();
235 64d3b76b Christos KK Loverdos
                }
236 64d3b76b Christos KK Loverdos
            });
237 bc982727 Christos KK Loverdos
            publicPathText.setText(file.getPublicUri());
238 64d3b76b Christos KK Loverdos
            publicPathText.setTitle("Use this link for sharing the file via e-mail, IM, etc. (crtl-C/cmd-C to copy to system clipboard)");
239 64d3b76b Christos KK Loverdos
            publicPathText.setReadOnly(true);
240 64d3b76b Christos KK Loverdos
            publicPathPanel.add(publicPathText);
241 64d3b76b Christos KK Loverdos
242 64d3b76b Christos KK Loverdos
            publicSharingPanel.add(publicCheckPanel);
243 64d3b76b Christos KK Loverdos
            publicSharingPanel.add(publicPathPanel);
244 64d3b76b Christos KK Loverdos
245 64d3b76b Christos KK Loverdos
            Scheduler.get().scheduleDeferred(new Command() {
246 64d3b76b Christos KK Loverdos
                @Override
247 64d3b76b Christos KK Loverdos
                public void execute() {
248 64d3b76b Christos KK Loverdos
                    showLinkForPublicSharing();
249 64d3b76b Christos KK Loverdos
                }
250 64d3b76b Christos KK Loverdos
            });
251 64d3b76b Christos KK Loverdos
        }
252 64d3b76b Christos KK Loverdos
    }
253 64d3b76b Christos KK Loverdos
254 64d3b76b Christos KK Loverdos
    private void populatePrivateSharingPanel(VerticalPanel privateSharingPanel) {
255 64d3b76b Christos KK Loverdos
        final HorizontalPanel privateCheckPanel = new HorizontalPanel();
256 64d3b76b Christos KK Loverdos
        final VerticalPanel privatePermPanel = new VerticalPanel();
257 64d3b76b Christos KK Loverdos
        final HorizontalPanel permButtons = new HorizontalPanel();
258 64d3b76b Christos KK Loverdos
259 64d3b76b Christos KK Loverdos
        privateCheckPanel.setSpacing(8);
260 64d3b76b Christos KK Loverdos
        privatePermPanel.setVisible(isFilePrivatelyShared());
261 64d3b76b Christos KK Loverdos
        permButtons.setSpacing(8);
262 64d3b76b Christos KK Loverdos
263 64d3b76b Christos KK Loverdos
        // Check box header
264 64d3b76b Christos KK Loverdos
        final CheckBox privateCheckBox = new CheckBox();
265 64d3b76b Christos KK Loverdos
        final Label privateCheckTitle = new  InlineHTML("<b>Private sharing</b>");
266 64d3b76b Christos KK Loverdos
        final Label privateCheckInfo = new Label("Only people explicitly granted permission can access. Sign-in required.", true);
267 64d3b76b Christos KK Loverdos
268 64d3b76b Christos KK Loverdos
        privateCheckBox.setValue(isFilePrivatelyShared());
269 64d3b76b Christos KK Loverdos
        privateCheckBox.addClickHandler(new ClickHandler() {
270 64d3b76b Christos KK Loverdos
            @Override
271 64d3b76b Christos KK Loverdos
            public void onClick(ClickEvent event) {
272 b12da07a Christos KK Loverdos
                // This is the value *after* the click is applied :)
273 b12da07a Christos KK Loverdos
                boolean userCheckedIt = privateCheckBox.getValue();
274 b12da07a Christos KK Loverdos
                boolean userUncheckedIt = !userCheckedIt;
275 b12da07a Christos KK Loverdos
276 64d3b76b Christos KK Loverdos
                if(isFilePrivatelyShared()) {
277 64d3b76b Christos KK Loverdos
                    // ignore the click, set it always to "checked"
278 64d3b76b Christos KK Loverdos
                    privateCheckBox.setValue(true);
279 64d3b76b Christos KK Loverdos
                    // show permissions
280 64d3b76b Christos KK Loverdos
                    privatePermPanel.setVisible(true);
281 b12da07a Christos KK Loverdos
282 b12da07a Christos KK Loverdos
                    // Refs #3593
283 b12da07a Christos KK Loverdos
                    if(userUncheckedIt) {
284 77424c81 Christos KK Loverdos
                        new PermissionsUncheckWarning(app).center();
285 b12da07a Christos KK Loverdos
                    }
286 64d3b76b Christos KK Loverdos
                }
287 64d3b76b Christos KK Loverdos
                else {
288 b12da07a Christos KK Loverdos
                    privatePermPanel.setVisible(userCheckedIt);
289 64d3b76b Christos KK Loverdos
                }
290 64d3b76b Christos KK Loverdos
            }
291 64d3b76b Christos KK Loverdos
        });
292 64d3b76b Christos KK Loverdos
293 64d3b76b Christos KK Loverdos
        privateCheckPanel.add(privateCheckBox);
294 64d3b76b Christos KK Loverdos
        privateCheckPanel.add(privateCheckTitle);
295 64d3b76b Christos KK Loverdos
        privateCheckPanel.add(privateCheckInfo);
296 64d3b76b Christos KK Loverdos
297 64d3b76b Christos KK Loverdos
        // Permission list
298 64d3b76b Christos KK Loverdos
        permList = new PermissionsList(app, privateSharingImages, file.getPermissions(), file.getOwnerID(), false, new Command() {
299 64d3b76b Christos KK Loverdos
            @Override
300 64d3b76b Christos KK Loverdos
            public void execute() {
301 64d3b76b Christos KK Loverdos
                updateMetaDataForPrivateSharing();
302 64d3b76b Christos KK Loverdos
            }
303 64d3b76b Christos KK Loverdos
        });
304 64d3b76b Christos KK Loverdos
305 64d3b76b Christos KK Loverdos
        // Permission Add buttons
306 64d3b76b Christos KK Loverdos
        Button addUser = new Button("Add User", new ClickHandler() {
307 64d3b76b Christos KK Loverdos
            @Override
308 64d3b76b Christos KK Loverdos
            public void onClick(ClickEvent event) {
309 64d3b76b Christos KK Loverdos
                PermissionsAddDialog dlg = new PermissionsAddDialog(app, app.getAccount().getGroups(), permList, true);
310 64d3b76b Christos KK Loverdos
                dlg.center();
311 64d3b76b Christos KK Loverdos
                permList.updatePermissionTable();
312 64d3b76b Christos KK Loverdos
            }
313 64d3b76b Christos KK Loverdos
        });
314 64d3b76b Christos KK Loverdos
        addUser.addStyleName("button");
315 64d3b76b Christos KK Loverdos
        permButtons.add(addUser);
316 64d3b76b Christos KK Loverdos
317 da9e51db Christos KK Loverdos
        final boolean haveGroups = app.getAccount().getGroups().size() > 0;
318 49a8183f Christos KK Loverdos
319 49a8183f Christos KK Loverdos
        if(haveGroups) {
320 49a8183f Christos KK Loverdos
            Button addGroup = new Button("Add Group", new ClickHandler() {
321 49a8183f Christos KK Loverdos
                @Override
322 49a8183f Christos KK Loverdos
                public void onClick(ClickEvent event) {
323 49a8183f Christos KK Loverdos
                    PermissionsAddDialog dlg = new PermissionsAddDialog(app, app.getAccount().getGroups(), permList, false);
324 49a8183f Christos KK Loverdos
                    dlg.center();
325 49a8183f Christos KK Loverdos
                    permList.updatePermissionTable();
326 49a8183f Christos KK Loverdos
                }
327 49a8183f Christos KK Loverdos
            });
328 49a8183f Christos KK Loverdos
            addGroup.addStyleName("button");
329 49a8183f Christos KK Loverdos
330 49a8183f Christos KK Loverdos
            permButtons.add(addGroup);
331 49a8183f Christos KK Loverdos
            permButtons.setCellHorizontalAlignment(addGroup, HasHorizontalAlignment.ALIGN_CENTER);
332 da9e51db Christos KK Loverdos
        }
333 64d3b76b Christos KK Loverdos
334 49a8183f Christos KK Loverdos
        final Button addEverybody = new Button("Add everybody", new ClickHandler() {
335 34cd9aff Christos KK Loverdos
            @Override
336 34cd9aff Christos KK Loverdos
            public void onClick(ClickEvent event) {
337 34cd9aff Christos KK Loverdos
                Pithos.LOG("Adding to Everybody");
338 34cd9aff Christos KK Loverdos
                Pithos.LOG("");
339 34cd9aff Christos KK Loverdos
                permList.addPermission("*", true, false);
340 34cd9aff Christos KK Loverdos
                permList.updatePermissionTable();
341 34cd9aff Christos KK Loverdos
            }
342 34cd9aff Christos KK Loverdos
        });
343 34cd9aff Christos KK Loverdos
        addEverybody.addStyleName("button");
344 34cd9aff Christos KK Loverdos
        permButtons.add(addEverybody);
345 34cd9aff Christos KK Loverdos
346 64d3b76b Christos KK Loverdos
        privatePermPanel.add(permList);
347 64d3b76b Christos KK Loverdos
        privatePermPanel.add(permButtons);
348 64d3b76b Christos KK Loverdos
349 64d3b76b Christos KK Loverdos
        // Private Link
350 64d3b76b Christos KK Loverdos
        privatePathPanel.setVisible(false);
351 64d3b76b Christos KK Loverdos
        privatePathPanel.setWidth(Const.PERCENT_100);
352 64d3b76b Christos KK Loverdos
        privatePathPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
353 b551f85b Christos KK Loverdos
        privatePathPanel.add(new Label(Const.TXT_PRIVATE_LINK));
354 64d3b76b Christos KK Loverdos
        privatePathPanel.setSpacing(8);
355 64d3b76b Christos KK Loverdos
        privatePathPanel.addStyleName("pithos-TabPanelBottom");
356 64d3b76b Christos KK Loverdos
357 64d3b76b Christos KK Loverdos
        privatePathText.setWidth(Const.PERCENT_100);
358 64d3b76b Christos KK Loverdos
        privatePathText.addClickHandler(new ClickHandler() {
359 64d3b76b Christos KK Loverdos
            @Override
360 64d3b76b Christos KK Loverdos
            public void onClick(ClickEvent event) {
361 64d3b76b Christos KK Loverdos
                Pithos.enableIESelection();
362 64d3b76b Christos KK Loverdos
                ((TextBox) event.getSource()).selectAll();
363 64d3b76b Christos KK Loverdos
                Pithos.preventIESelection();
364 64d3b76b Christos KK Loverdos
            }
365 64d3b76b Christos KK Loverdos
        });
366 64d3b76b Christos KK Loverdos
        privatePathText.setText(Window.Location.getHost() + file.getPublicUri());
367 64d3b76b Christos KK Loverdos
        privatePathText.setTitle("Use this link for sharing the file via e-mail, IM, etc. (crtl-C/cmd-C to copy to system clipboard)");
368 64d3b76b Christos KK Loverdos
        privatePathText.setWidth(Const.PERCENT_100);
369 64d3b76b Christos KK Loverdos
        privatePathText.setReadOnly(true);
370 64d3b76b Christos KK Loverdos
        privatePathPanel.add(privatePathText);
371 64d3b76b Christos KK Loverdos
372 64d3b76b Christos KK Loverdos
        Scheduler.get().scheduleDeferred(new Command() {
373 64d3b76b Christos KK Loverdos
            @Override
374 64d3b76b Christos KK Loverdos
            public void execute() {
375 64d3b76b Christos KK Loverdos
                showLinkForPrivateSharing();
376 64d3b76b Christos KK Loverdos
            }
377 64d3b76b Christos KK Loverdos
        });
378 64d3b76b Christos KK Loverdos
379 64d3b76b Christos KK Loverdos
        privateSharingPanel.add(privateCheckPanel);
380 64d3b76b Christos KK Loverdos
        privateSharingPanel.add(privatePermPanel);
381 64d3b76b Christos KK Loverdos
        privateSharingPanel.add(privatePathPanel);
382 64d3b76b Christos KK Loverdos
    }
383 64d3b76b Christos KK Loverdos
384 64d3b76b Christos KK Loverdos
    private Panel createMainPanel() {
385 64d3b76b Christos KK Loverdos
        VerticalPanel panelAll = new VerticalPanel();
386 64d3b76b Christos KK Loverdos
        VerticalPanel panelPublic = new VerticalPanel();
387 64d3b76b Christos KK Loverdos
        VerticalPanel panelPrivate = new VerticalPanel();
388 64d3b76b Christos KK Loverdos
389 64d3b76b Christos KK Loverdos
        populatePrivateSharingPanel(panelPrivate);
390 64d3b76b Christos KK Loverdos
        populatePublicSharingPanel(panelPublic);
391 64d3b76b Christos KK Loverdos
392 cfdb1476 Christos KK Loverdos
        panelAll.add(panelPrivate);
393 cfdb1476 Christos KK Loverdos
        panelAll.add(new InlineHTML("<hr/>"));
394 cfdb1476 Christos KK Loverdos
        panelAll.add(panelPublic);
395 64d3b76b Christos KK Loverdos
396 64d3b76b Christos KK Loverdos
        return panelAll;
397 64d3b76b Christos KK Loverdos
    }
398 64d3b76b Christos KK Loverdos
399 64d3b76b Christos KK Loverdos
    private boolean isFilePubliclyShared() {
400 64d3b76b Christos KK Loverdos
        return file.isPublished();
401 64d3b76b Christos KK Loverdos
    }
402 64d3b76b Christos KK Loverdos
403 64d3b76b Christos KK Loverdos
    private boolean isFilePrivatelyShared() {
404 64d3b76b Christos KK Loverdos
        return file.isShared();
405 64d3b76b Christos KK Loverdos
    }
406 64d3b76b Christos KK Loverdos
407 64d3b76b Christos KK Loverdos
    private void showLinkForPublicSharing() {
408 64d3b76b Christos KK Loverdos
                if (isFilePubliclyShared()) {
409 64d3b76b Christos KK Loverdos
                        UrlBuilder b = Window.Location.createUrlBuilder();
410 64d3b76b Christos KK Loverdos
                        b.setPath(file.getPublicUri());
411 64d3b76b Christos KK Loverdos
                        publicPathText.setText(b.buildString());
412 64d3b76b Christos KK Loverdos
                publicPathPanel.setVisible(true);
413 64d3b76b Christos KK Loverdos
                }
414 64d3b76b Christos KK Loverdos
                else {
415 64d3b76b Christos KK Loverdos
                        publicPathPanel.setVisible(false);
416 64d3b76b Christos KK Loverdos
                }
417 64d3b76b Christos KK Loverdos
    }
418 64d3b76b Christos KK Loverdos
419 64d3b76b Christos KK Loverdos
    private void showLinkForPrivateSharing() {
420 64d3b76b Christos KK Loverdos
        if (isFilePrivatelyShared()) {
421 64d3b76b Christos KK Loverdos
            UrlBuilder b = Window.Location.createUrlBuilder();
422 28e270f9 Christos KK Loverdos
            b.setPath(Pithos.getStorageAPIURL() + file.getOwnerID() + file.getUri());
423 64d3b76b Christos KK Loverdos
            String href = Window.Location.getHref();
424 64d3b76b Christos KK Loverdos
            boolean hasParameters = href.contains(Const.QUESTION_MARK);
425 64d3b76b Christos KK Loverdos
            privatePathText.setText(href + (hasParameters ? Const.AMPERSAND : Const.QUESTION_MARK) + Const.GOTO_EQ + b.buildString());
426 64d3b76b Christos KK Loverdos
            privatePathPanel.setVisible(true);
427 64d3b76b Christos KK Loverdos
        }
428 64d3b76b Christos KK Loverdos
        else {
429 64d3b76b Christos KK Loverdos
            privatePathPanel.setVisible(false);
430 64d3b76b Christos KK Loverdos
        }
431 64d3b76b Christos KK Loverdos
    }
432 64d3b76b Christos KK Loverdos
433 64d3b76b Christos KK Loverdos
        protected void updateMetaDataForPublicSharing(String api, String owner, final String path, final Boolean published) {
434 64d3b76b Christos KK Loverdos
        if (published != null) {
435 64d3b76b Christos KK Loverdos
            PostRequest updateFile = new PostRequest(api, owner, path) {
436 64d3b76b Christos KK Loverdos
                @Override
437 64d3b76b Christos KK Loverdos
                public void onSuccess(Resource result) {
438 28e270f9 Christos KK Loverdos
                        HeadRequest<File> headFile = new HeadRequest<File>(File.class, Pithos.getStorageAPIURL(), file.getOwnerID(), path, file) {
439 64d3b76b Christos KK Loverdos
440 64d3b76b Christos KK Loverdos
                                                @Override
441 64d3b76b Christos KK Loverdos
                                                public void onSuccess(File _result) {
442 64d3b76b Christos KK Loverdos
                                                        showLinkForPublicSharing();
443 64d3b76b Christos KK Loverdos
                                                        if (!app.isMySharedSelected()) {
444 64d3b76b Christos KK Loverdos
                                            app.updateFolder(file.getParent(), true, new Command() {
445 64d3b76b Christos KK Loverdos
                                                                        
446 64d3b76b Christos KK Loverdos
                                                                        @Override
447 64d3b76b Christos KK Loverdos
                                                                        public void execute() {
448 64d3b76b Christos KK Loverdos
                                                                                app.updateMySharedRoot();
449 64d3b76b Christos KK Loverdos
                                                                        }
450 64d3b76b Christos KK Loverdos
                                                                }, true);
451 64d3b76b Christos KK Loverdos
                            }
452 64d3b76b Christos KK Loverdos
                                                        else {
453 64d3b76b Christos KK Loverdos
                                                                app.updateSharedFolder(file.getParent(), true);
454 64d3b76b Christos KK Loverdos
                            }
455 64d3b76b Christos KK Loverdos
                                                }
456 64d3b76b Christos KK Loverdos
457 64d3b76b Christos KK Loverdos
                                                @Override
458 64d3b76b Christos KK Loverdos
                                                public void onError(Throwable t) {
459 64d3b76b Christos KK Loverdos
                                                        app.setError(t);
460 64d3b76b Christos KK Loverdos
                                    app.displayError("System error modifying file:" + t.getMessage());
461 64d3b76b Christos KK Loverdos
                                                }
462 64d3b76b Christos KK Loverdos
463 64d3b76b Christos KK Loverdos
                                                @Override
464 64d3b76b Christos KK Loverdos
                                                protected void onUnauthorized(Response response) {
465 64d3b76b Christos KK Loverdos
                                                        app.sessionExpired();
466 64d3b76b Christos KK Loverdos
                                                }
467 64d3b76b Christos KK Loverdos
                                        };
468 64d3b76b Christos KK Loverdos
                                        headFile.setHeader(Const.X_AUTH_TOKEN, app.getUserToken());
469 64d3b76b Christos KK Loverdos
                                        Scheduler.get().scheduleDeferred(headFile);
470 64d3b76b Christos KK Loverdos
                }
471 64d3b76b Christos KK Loverdos
472 64d3b76b Christos KK Loverdos
                @Override
473 64d3b76b Christos KK Loverdos
                public void onError(Throwable t) {
474 64d3b76b Christos KK Loverdos
                                        app.setError(t);
475 64d3b76b Christos KK Loverdos
                    app.displayError("System error modifying file:" + t.getMessage());
476 64d3b76b Christos KK Loverdos
                }
477 64d3b76b Christos KK Loverdos
478 64d3b76b Christos KK Loverdos
                                @Override
479 64d3b76b Christos KK Loverdos
                                protected void onUnauthorized(Response response) {
480 64d3b76b Christos KK Loverdos
                                        app.sessionExpired();
481 64d3b76b Christos KK Loverdos
                                }
482 64d3b76b Christos KK Loverdos
            };
483 64d3b76b Christos KK Loverdos
            updateFile.setHeader(Const.X_AUTH_TOKEN, app.getUserToken());
484 64d3b76b Christos KK Loverdos
            updateFile.setHeader(Const.X_OBJECT_PUBLIC, published.toString());
485 64d3b76b Christos KK Loverdos
            Scheduler.get().scheduleDeferred(updateFile);
486 64d3b76b Christos KK Loverdos
        }
487 64d3b76b Christos KK Loverdos
        else if (!app.isMySharedSelected())
488 64d3b76b Christos KK Loverdos
            app.updateFolder(file.getParent(), true, new Command() {
489 64d3b76b Christos KK Loverdos
                                @Override
490 64d3b76b Christos KK Loverdos
                                public void execute() {
491 64d3b76b Christos KK Loverdos
                                        if (file.isSharedOrPublished()) {
492 64d3b76b Christos KK Loverdos
                        app.updateMySharedRoot();
493 64d3b76b Christos KK Loverdos
                    }
494 64d3b76b Christos KK Loverdos
                                }
495 64d3b76b Christos KK Loverdos
                        }, true);
496 64d3b76b Christos KK Loverdos
        else
497 64d3b76b Christos KK Loverdos
                app.updateSharedFolder(file.getParent(), true);
498 64d3b76b Christos KK Loverdos
    }
499 64d3b76b Christos KK Loverdos
    protected void updateMetaDataForPublicSharing(Boolean published) {
500 64d3b76b Christos KK Loverdos
        updateMetaDataForPublicSharing(
501 28e270f9 Christos KK Loverdos
            Pithos.getStorageAPIURL(),
502 64d3b76b Christos KK Loverdos
            app.getUserID(),
503 64d3b76b Christos KK Loverdos
            file.getUri() + Const.QUESTION_MARK_UPDATE_EQ,
504 64d3b76b Christos KK Loverdos
            published
505 64d3b76b Christos KK Loverdos
        );
506 64d3b76b Christos KK Loverdos
    }
507 64d3b76b Christos KK Loverdos
508 64d3b76b Christos KK Loverdos
    protected void updateMetaDataForPrivateSharing(String api, String owner, final String path, final Map<String, Boolean[]> newPermissions) {
509 64d3b76b Christos KK Loverdos
        if (newPermissions != null) {
510 64d3b76b Christos KK Loverdos
            PostRequest updateFile = new PostRequest(api, owner, path) {
511 64d3b76b Christos KK Loverdos
                @Override
512 64d3b76b Christos KK Loverdos
                public void onSuccess(Resource result) {
513 28e270f9 Christos KK Loverdos
                    HeadRequest<File> headFile = new HeadRequest<File>(File.class, Pithos.getStorageAPIURL(), file.getOwnerID(), path, file) {
514 64d3b76b Christos KK Loverdos
515 64d3b76b Christos KK Loverdos
                        @Override
516 64d3b76b Christos KK Loverdos
                        public void onSuccess(File _result) {
517 64d3b76b Christos KK Loverdos
                            showLinkForPrivateSharing();
518 64d3b76b Christos KK Loverdos
                            if (!app.isMySharedSelected())
519 64d3b76b Christos KK Loverdos
                                app.updateFolder(file.getParent(), true, new Command() {
520 64d3b76b Christos KK Loverdos
521 64d3b76b Christos KK Loverdos
                                    @Override
522 64d3b76b Christos KK Loverdos
                                    public void execute() {
523 64d3b76b Christos KK Loverdos
                                        app.updateMySharedRoot();
524 64d3b76b Christos KK Loverdos
                                    }
525 64d3b76b Christos KK Loverdos
                                }, true);
526 64d3b76b Christos KK Loverdos
                            else
527 64d3b76b Christos KK Loverdos
                                app.updateSharedFolder(file.getParent(), true);
528 64d3b76b Christos KK Loverdos
                        }
529 64d3b76b Christos KK Loverdos
530 64d3b76b Christos KK Loverdos
                        @Override
531 64d3b76b Christos KK Loverdos
                        public void onError(Throwable t) {
532 64d3b76b Christos KK Loverdos
                            app.setError(t);
533 64d3b76b Christos KK Loverdos
                            app.displayError("System error modifying file:" + t.getMessage());
534 64d3b76b Christos KK Loverdos
                        }
535 64d3b76b Christos KK Loverdos
536 64d3b76b Christos KK Loverdos
                        @Override
537 64d3b76b Christos KK Loverdos
                        protected void onUnauthorized(Response response) {
538 64d3b76b Christos KK Loverdos
                            app.sessionExpired();
539 64d3b76b Christos KK Loverdos
                        }
540 64d3b76b Christos KK Loverdos
                    };
541 64d3b76b Christos KK Loverdos
                    headFile.setHeader(Const.X_AUTH_TOKEN, app.getUserToken());
542 64d3b76b Christos KK Loverdos
                    Scheduler.get().scheduleDeferred(headFile);
543 64d3b76b Christos KK Loverdos
                }
544 64d3b76b Christos KK Loverdos
545 64d3b76b Christos KK Loverdos
                @Override
546 64d3b76b Christos KK Loverdos
                public void onError(Throwable t) {
547 64d3b76b Christos KK Loverdos
                    app.setError(t);
548 64d3b76b Christos KK Loverdos
                    app.displayError("System error modifying file:" + t.getMessage());
549 64d3b76b Christos KK Loverdos
                }
550 64d3b76b Christos KK Loverdos
551 64d3b76b Christos KK Loverdos
                @Override
552 64d3b76b Christos KK Loverdos
                protected void onUnauthorized(Response response) {
553 64d3b76b Christos KK Loverdos
                    app.sessionExpired();
554 64d3b76b Christos KK Loverdos
                }
555 64d3b76b Christos KK Loverdos
            };
556 64d3b76b Christos KK Loverdos
            updateFile.setHeader(Const.X_AUTH_TOKEN, app.getUserToken());
557 64d3b76b Christos KK Loverdos
558 64d3b76b Christos KK Loverdos
            String readPermHeader = Const.READ_EQ;
559 64d3b76b Christos KK Loverdos
            String writePermHeader = Const.WRITE_EQ;
560 64d3b76b Christos KK Loverdos
            for (String u : newPermissions.keySet()) {
561 64d3b76b Christos KK Loverdos
                Boolean[] p = newPermissions.get(u);
562 64d3b76b Christos KK Loverdos
                if (p[0] != null && p[0]) {
563 64d3b76b Christos KK Loverdos
                    readPermHeader += u + Const.COMMA;
564 64d3b76b Christos KK Loverdos
                }
565 64d3b76b Christos KK Loverdos
                if (p[1] != null && p[1]) {
566 64d3b76b Christos KK Loverdos
                    writePermHeader += u + Const.COMMA;
567 64d3b76b Christos KK Loverdos
                }
568 64d3b76b Christos KK Loverdos
            }
569 64d3b76b Christos KK Loverdos
            if (readPermHeader.endsWith(Const.EQ)) {
570 64d3b76b Christos KK Loverdos
                readPermHeader = "";
571 64d3b76b Christos KK Loverdos
            }
572 64d3b76b Christos KK Loverdos
            else if (readPermHeader.endsWith(Const.COMMA)) {
573 64d3b76b Christos KK Loverdos
                readPermHeader = readPermHeader.substring(0, readPermHeader.length() - 1);
574 64d3b76b Christos KK Loverdos
            }
575 64d3b76b Christos KK Loverdos
            if (writePermHeader.endsWith(Const.EQ)) {
576 64d3b76b Christos KK Loverdos
                writePermHeader = "";
577 64d3b76b Christos KK Loverdos
            }
578 64d3b76b Christos KK Loverdos
            else if (writePermHeader.endsWith(Const.COMMA)) {
579 64d3b76b Christos KK Loverdos
                writePermHeader = writePermHeader.substring(0, writePermHeader.length() - 1);
580 64d3b76b Christos KK Loverdos
            }
581 64d3b76b Christos KK Loverdos
            String permHeader = readPermHeader +
582 64d3b76b Christos KK Loverdos
                ((readPermHeader.length()  > 0 && writePermHeader.length() > 0) ?  Const.SEMI : "") + writePermHeader;
583 64d3b76b Christos KK Loverdos
            if (permHeader.length() == 0) {
584 64d3b76b Christos KK Loverdos
                permHeader=Const.TILDE;
585 64d3b76b Christos KK Loverdos
            }
586 64d3b76b Christos KK Loverdos
            else {
587 64d3b76b Christos KK Loverdos
                permHeader = URL.encodePathSegment(permHeader);
588 64d3b76b Christos KK Loverdos
            }
589 64d3b76b Christos KK Loverdos
            updateFile.setHeader(Const.X_OBJECT_SHARING, permHeader);
590 64d3b76b Christos KK Loverdos
            Scheduler.get().scheduleDeferred(updateFile);
591 64d3b76b Christos KK Loverdos
        }
592 64d3b76b Christos KK Loverdos
        else if (!app.isMySharedSelected()) {
593 64d3b76b Christos KK Loverdos
            app.updateFolder(file.getParent(), true, new Command() {
594 64d3b76b Christos KK Loverdos
                @Override
595 64d3b76b Christos KK Loverdos
                public void execute() {
596 64d3b76b Christos KK Loverdos
                    if (file.isSharedOrPublished())
597 64d3b76b Christos KK Loverdos
                        app.updateMySharedRoot();
598 64d3b76b Christos KK Loverdos
                }
599 64d3b76b Christos KK Loverdos
            }, true);
600 64d3b76b Christos KK Loverdos
        }
601 64d3b76b Christos KK Loverdos
        else {
602 64d3b76b Christos KK Loverdos
            app.updateSharedFolder(file.getParent(), true);
603 64d3b76b Christos KK Loverdos
        }
604 64d3b76b Christos KK Loverdos
    }
605 64d3b76b Christos KK Loverdos
    protected void updateMetaDataForPrivateSharing() {
606 64d3b76b Christos KK Loverdos
        updateMetaDataForPrivateSharing(
607 28e270f9 Christos KK Loverdos
            Pithos.getStorageAPIURL(),
608 64d3b76b Christos KK Loverdos
            app.getUserID(),
609 64d3b76b Christos KK Loverdos
            file.getUri() + Const.QUESTION_MARK_UPDATE_EQ,
610 64d3b76b Christos KK Loverdos
            permList.getPermissions()
611 64d3b76b Christos KK Loverdos
        );
612 64d3b76b Christos KK Loverdos
    }
613 b12da07a Christos KK Loverdos
614 64d3b76b Christos KK Loverdos
    @Override
615 64d3b76b Christos KK Loverdos
        protected void onPreviewNativeEvent(NativePreviewEvent preview) {
616 64d3b76b Christos KK Loverdos
            super.onPreviewNativeEvent(preview);
617 64d3b76b Christos KK Loverdos
618 64d3b76b Christos KK Loverdos
            NativeEvent evt = preview.getNativeEvent();
619 64d3b76b Christos KK Loverdos
            if (evt.getType().equals(Const.EVENT_TYPE_KEYDOWN) &&
620 64d3b76b Christos KK Loverdos
            evt.getKeyCode() == KeyCodes.KEY_ENTER) {
621 64d3b76b Christos KK Loverdos
622 64d3b76b Christos KK Loverdos
            closeDialog();
623 64d3b76b Christos KK Loverdos
        }
624 64d3b76b Christos KK Loverdos
        }
625 64d3b76b Christos KK Loverdos
626 64d3b76b Christos KK Loverdos
    @Override
627 64d3b76b Christos KK Loverdos
    protected boolean accept() {
628 64d3b76b Christos KK Loverdos
        return true;
629 64d3b76b Christos KK Loverdos
    }
630 64d3b76b Christos KK Loverdos
}