Formating commit. Comments fixed after code review. 1. Added a 2010 entry in copyrigh...
[pithos] / src / gr / ebs / gss / client / dnd / DnDDropController.java
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.dnd;
20
21 import gr.ebs.gss.client.GSS;
22 import gr.ebs.gss.client.rest.resource.FileResource;
23 import gr.ebs.gss.client.rest.resource.FolderResource;
24
25 import java.util.List;
26
27 import com.allen_sauer.gwt.dnd.client.DragContext;
28 import com.allen_sauer.gwt.dnd.client.drop.SimpleDropController;
29
30 /**
31  * @author kman
32  */
33 public class DnDDropController extends SimpleDropController {
34
35         DnDFocusPanel nodeHolder;
36
37         public DnDDropController(DnDFocusPanel widget) {
38                 super(widget);
39                 nodeHolder = widget;
40         }
41
42         @Override
43         public void onDrop(DragContext context) {
44                 super.onDrop(context);
45                 if(context.draggable instanceof DnDFocusPanel){
46                         DnDFocusPanel toDrop = (DnDFocusPanel) context.draggable;
47                         if (toDrop.getItem() != null)
48                                 if (toDrop.getItem().getUserObject() != null && toDrop.getItem().getUserObject() instanceof FolderResource) {
49                                         FolderResource folderToDrop = (FolderResource) toDrop.getItem().getUserObject();
50                                         FolderResource initialFolder = null;
51                                         if (nodeHolder.getItem().getUserObject() instanceof FolderResource)
52                                                 initialFolder = (FolderResource) nodeHolder.getItem().getUserObject();
53                                         boolean othersShared = false;
54                                         if (GSS.get().getFolders().isOthersSharedItem(nodeHolder.getItem()))
55                                                 othersShared = true;
56                                         DnDFolderPopupMenu popup = new DnDFolderPopupMenu(GSS.get().getFolders().getImages(), initialFolder, folderToDrop, othersShared);
57                                         int left = nodeHolder.getItem().getAbsoluteLeft() + 40;
58                                         int top = nodeHolder.getItem().getAbsoluteTop() + 20;
59                                         popup.setPopupPosition(left, top);
60                                         popup.show();
61                                 }
62                 }
63                 else if(context.draggable instanceof DnDSimpleFocusPanel){
64                         DnDSimpleFocusPanel toDrop = (DnDSimpleFocusPanel) context.draggable;
65                         if (toDrop.getFiles() != null) {
66                                 List<FileResource> folderToDrop = toDrop.getFiles();
67                                 FolderResource initialFolder = null;
68                                 if (GSS.get().getFolders().isTrash(nodeHolder.getItem())) {
69                                 } else if (nodeHolder.getItem().getUserObject() instanceof FolderResource)
70                                         initialFolder = (FolderResource) nodeHolder.getItem().getUserObject();
71                                 boolean othersShared = false;
72                                 if (GSS.get().getFolders().isOthersSharedItem(nodeHolder.getItem()))
73                                         othersShared = true;
74                                 DnDFolderPopupMenu popup = new DnDFolderPopupMenu(GSS.get().getFolders().getImages(), initialFolder, folderToDrop, othersShared);
75                                 int left = nodeHolder.getItem().getAbsoluteLeft() + 40;
76                                 int top = nodeHolder.getItem().getAbsoluteTop() + 20;
77                                 popup.setPopupPosition(left, top);
78                                 popup.show();
79                         }
80                 }
81         }
82
83         @Override
84         public void onEnter(DragContext context) {
85                 super.onEnter(context);
86                 nodeHolder.getItem().getWidget().addStyleName("gss-SelectedRow");
87                 nodeHolder.getItem().setState(true);
88                 GSS.get().getDragController().resetCache();
89         }
90
91         @Override
92         public void onLeave(DragContext context) {
93                 if(!nodeHolder.getItem().equals(GSS.get().getFolders().getCurrent()))
94                         nodeHolder.getItem().getWidget().removeStyleName("gss-SelectedRow");
95                 super.onLeave(context);
96         }
97
98 }