fix class cast exception when trying to drag and drop files
authorGiannis Koutsoubos <koutsoub@gmail.com>
Wed, 10 Mar 2010 12:36:12 +0000 (14:36 +0200)
committerGiannis Koutsoubos <koutsoub@gmail.com>
Wed, 10 Mar 2010 12:36:12 +0000 (14:36 +0200)
src/gr/ebs/gss/client/GSS.java
src/gr/ebs/gss/client/dnd/DnDDropController.java

index 7d2a596..b52b71c 100644 (file)
@@ -20,6 +20,7 @@ package gr.ebs.gss.client;
 
 import gr.ebs.gss.client.clipboard.Clipboard;
 import gr.ebs.gss.client.dnd.DnDFocusPanel;
+import gr.ebs.gss.client.dnd.DnDSimpleFocusPanel;
 import gr.ebs.gss.client.rest.GetCommand;
 import gr.ebs.gss.client.rest.RestException;
 import gr.ebs.gss.client.rest.resource.FileResource;
@@ -218,17 +219,24 @@ public class GSS implements EntryPoint, ResizeHandler {
                            if (context.selectedWidgets.isEmpty())
                                        throw new VetoDragException();
 
-                           if(context.draggable != null){
-                                       DnDFocusPanel toDrop = (DnDFocusPanel) context.draggable;
-                                       //prevent drag and drop for trashed files and for unselected tree items
-                                       if(toDrop.getFiles() != null && folders.isTrashItem(folders.getCurrent()))
-                                               throw new VetoDragException();
-                                       else if(toDrop.getItem() != null && !toDrop.getItem().equals(folders.getCurrent()))
-                                               throw new VetoDragException();
-                                       else if(toDrop.getItem() != null && !toDrop.getItem().isDraggable())
-                                               throw new VetoDragException();
-
-                           }
+                           if(context.draggable != null)
+                                       if(context.draggable instanceof DnDFocusPanel){
+                                               DnDFocusPanel toDrop = (DnDFocusPanel) context.draggable;
+                                               //prevent drag and drop for trashed files and for unselected tree items
+                                               if(toDrop.getFiles() != null && folders.isTrashItem(folders.getCurrent()))
+                                                       throw new VetoDragException();
+                                               else if(toDrop.getItem() != null && !toDrop.getItem().equals(folders.getCurrent()))
+                                                       throw new VetoDragException();
+                                               else if(toDrop.getItem() != null && !toDrop.getItem().isDraggable())
+                                                       throw new VetoDragException();
+
+                                   }
+                               else if(context.draggable instanceof DnDSimpleFocusPanel){
+                                       DnDSimpleFocusPanel toDrop = (DnDSimpleFocusPanel) context.draggable;
+                                               //prevent drag and drop for trashed files and for unselected tree items
+                                               if(toDrop.getFiles() != null && folders.isTrashItem(folders.getCurrent()))
+                                                       throw new VetoDragException();
+                               }
                          }
 
                        @Override
@@ -236,9 +244,16 @@ public class GSS implements EntryPoint, ResizeHandler {
                                AbsolutePanel container = new AbsolutePanel();
                                DOM.setStyleAttribute(container.getElement(), "overflow", "visible");
                                for (Iterator iterator = aContext.selectedWidgets.iterator(); iterator.hasNext();) {
+                                       HTML html = null;
                                        Widget widget = (Widget) iterator.next();
-                                       DnDFocusPanel book = (DnDFocusPanel) widget;
-                                       HTML html = book.cloneHTML();
+                                       if(widget instanceof DnDFocusPanel){
+                                               DnDFocusPanel book = (DnDFocusPanel) widget;
+                                               html = book.cloneHTML();
+                                       }
+                                       else if(widget instanceof DnDSimpleFocusPanel){
+                                               DnDSimpleFocusPanel book = (DnDSimpleFocusPanel) widget;
+                                               html = book.cloneHTML();
+                                       }
                                        if(html == null)
                                                container.add(new Label("Drag ME"));
                                        else
@@ -730,6 +745,4 @@ public class GSS implements EntryPoint, ResizeHandler {
                Cookies.setCookie(cookie, "", null, domain, path, false);
        }
 
-
-
 }
index 8114a62..c8ab320 100644 (file)
@@ -42,12 +42,31 @@ public class DnDDropController extends SimpleDropController {
        @Override
        public void onDrop(DragContext context) {
                super.onDrop(context);
-               DnDFocusPanel toDrop = (DnDFocusPanel) context.draggable;
-               if (toDrop.getItem() != null) {
-                       if (toDrop.getItem().getUserObject() != null && toDrop.getItem().getUserObject() instanceof FolderResource) {
-                               FolderResource folderToDrop = (FolderResource) toDrop.getItem().getUserObject();
+               if(context.draggable instanceof DnDFocusPanel){
+                       DnDFocusPanel toDrop = (DnDFocusPanel) context.draggable;
+                       if (toDrop.getItem() != null)
+                               if (toDrop.getItem().getUserObject() != null && toDrop.getItem().getUserObject() instanceof FolderResource) {
+                                       FolderResource folderToDrop = (FolderResource) toDrop.getItem().getUserObject();
+                                       FolderResource initialFolder = null;
+                                       if (nodeHolder.getItem().getUserObject() instanceof FolderResource)
+                                               initialFolder = (FolderResource) nodeHolder.getItem().getUserObject();
+                                       boolean othersShared = false;
+                                       if (GSS.get().getFolders().isOthersSharedItem(nodeHolder.getItem()))
+                                               othersShared = true;
+                                       DnDFolderPopupMenu popup = new DnDFolderPopupMenu(GSS.get().getFolders().getImages(), initialFolder, folderToDrop, othersShared);
+                                       int left = nodeHolder.getItem().getAbsoluteLeft() + 40;
+                                       int top = nodeHolder.getItem().getAbsoluteTop() + 20;
+                                       popup.setPopupPosition(left, top);
+                                       popup.show();
+                               }
+               }
+               else if(context.draggable instanceof DnDSimpleFocusPanel){
+                       DnDSimpleFocusPanel toDrop = (DnDSimpleFocusPanel) context.draggable;
+                       if (toDrop.getFiles() != null) {
+                               List<FileResource> folderToDrop = toDrop.getFiles();
                                FolderResource initialFolder = null;
-                               if (nodeHolder.getItem().getUserObject() instanceof FolderResource)
+                               if (GSS.get().getFolders().isTrash(nodeHolder.getItem())) {
+                               } else if (nodeHolder.getItem().getUserObject() instanceof FolderResource)
                                        initialFolder = (FolderResource) nodeHolder.getItem().getUserObject();
                                boolean othersShared = false;
                                if (GSS.get().getFolders().isOthersSharedItem(nodeHolder.getItem()))
@@ -58,20 +77,6 @@ public class DnDDropController extends SimpleDropController {
                                popup.setPopupPosition(left, top);
                                popup.show();
                        }
-               } else if (toDrop.getFiles() != null) {
-                       List<FileResource> folderToDrop = toDrop.getFiles();
-                       FolderResource initialFolder = null;
-                       if (GSS.get().getFolders().isTrash(nodeHolder.getItem())) {
-                       } else if (nodeHolder.getItem().getUserObject() instanceof FolderResource)
-                               initialFolder = (FolderResource) nodeHolder.getItem().getUserObject();
-                       boolean othersShared = false;
-                       if (GSS.get().getFolders().isOthersSharedItem(nodeHolder.getItem()))
-                               othersShared = true;
-                       DnDFolderPopupMenu popup = new DnDFolderPopupMenu(GSS.get().getFolders().getImages(), initialFolder, folderToDrop, othersShared);
-                       int left = nodeHolder.getItem().getAbsoluteLeft() + 40;
-                       int top = nodeHolder.getItem().getAbsoluteTop() + 20;
-                       popup.setPopupPosition(left, top);
-                       popup.show();
                }
        }