Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.app / org.gvsig.app.mainplugin / src / main / java / org / gvsig / app / extension / AddLayerDropingFile.java @ 44259

History | View | Annotate | Download (3.88 KB)

1 41634 jjdelcerro
2
package org.gvsig.app.extension;
3
4
import java.awt.datatransfer.DataFlavor;
5
import java.awt.datatransfer.Transferable;
6
import java.awt.dnd.DropTarget;
7
import java.awt.dnd.DropTargetDragEvent;
8
import java.awt.dnd.DropTargetDropEvent;
9
import java.awt.dnd.DropTargetEvent;
10
import java.awt.dnd.DropTargetListener;
11
import java.io.File;
12
import java.util.List;
13
import javax.swing.TransferHandler;
14
import org.gvsig.andami.PluginsLocator;
15
import org.gvsig.andami.PluginsManager;
16
import org.gvsig.andami.actioninfo.ActionInfo;
17
import org.gvsig.andami.actioninfo.ActionInfoManager;
18
import org.gvsig.andami.plugins.Extension;
19
import org.gvsig.app.ApplicationLocator;
20
import org.gvsig.app.ApplicationManager;
21
import org.gvsig.app.project.ProjectManager;
22
import org.gvsig.app.project.documents.DocumentManager;
23
import org.gvsig.app.project.documents.view.ViewManager;
24
import org.gvsig.app.project.documents.view.gui.IView;
25
import org.gvsig.app.project.documents.view.toc.DnDJTree;
26
import org.gvsig.app.project.documents.view.toc.TocItemBranch;
27
import org.gvsig.app.project.documents.view.toc.gui.TOC;
28
import org.gvsig.tools.observer.Notification;
29
import org.gvsig.tools.observer.Observable;
30
import org.gvsig.tools.observer.Observer;
31
import org.slf4j.Logger;
32
import org.slf4j.LoggerFactory;
33
34
35
public class AddLayerDropingFile extends Extension implements Runnable, Observer, DropTargetListener  {
36
37
    private static final Logger logger = LoggerFactory.getLogger(AddLayerDropingFile.class);
38
39
    private ActionInfo addLayerAction = null;
40
41
    public void initialize() {
42
    }
43
44
    public void execute(String actionCommand) {
45
    }
46
47
    public void postInitialize() {
48
        PluginsManager pluginManager = PluginsLocator.getManager();
49 43942 jjdelcerro
        pluginManager.addStartupTask("RegisterDropFilesOnTheView", this, true, 800);
50 41634 jjdelcerro
    }
51
52
53
    public boolean isEnabled() {
54
        return false;
55
    }
56
57
    public boolean isVisible() {
58
        return false;
59
    }
60
61
    public void run() {
62
        ActionInfoManager actionManager = PluginsLocator.getActionInfoManager();
63
        addLayerAction = actionManager.getAction("view-layer-add");
64
        if( addLayerAction==null ) {
65
            logger.warn("can't locate addLayer action, don't enable drop of files in the view.");
66
            return;
67
        }
68
        ApplicationManager application = ApplicationLocator.getManager();
69
        ProjectManager pm = application.getProjectManager();
70
        ViewManager viewManager = (ViewManager) pm.getDocumentManager(ViewManager.TYPENAME);
71
        viewManager.addObserver(this);
72
73
    }
74
75
    public void update(Observable observable, Object notificationArg) {
76
        Notification notification = (Notification)notificationArg;
77
        if( notification.isOfType(DocumentManager.NOTIFY_AFTER_GETMAINWINDOW) ) {
78
            enableDragInView((IView) notification.getValue());
79
        }
80
    }
81
82
    private void enableDragInView(IView view) {
83
        DropTarget dt = new DropTarget(view.getMapControl(),this);
84
    }
85
86
    public void dragEnter(DropTargetDragEvent dtde) {
87
    }
88
89
    public void dragOver(DropTargetDragEvent dtde) {
90
    }
91
92
    public void dropActionChanged(DropTargetDragEvent dtde) {
93
    }
94
95
    public void dragExit(DropTargetEvent dte) {
96
    }
97
98
    public void drop(DropTargetDropEvent dtde) {
99
        Transferable tr = dtde.getTransferable();
100
        if (!tr.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
101
                dtde.rejectDrop();
102
                return;
103
        }
104
        dtde.acceptDrop(dtde.getDropAction());
105
        List<File> fileNames;
106
        try {
107
            fileNames = (List<File>)tr.getTransferData(DataFlavor.javaFileListFlavor);
108
        } catch (Exception e) {
109
            try {
110
                dtde.rejectDrop();
111
            } catch(Exception ex) {
112
113
            }
114
            logger.warn("Can't retrieve droped files.",e);
115
            return;
116
        }
117
        dtde.dropComplete(true);
118
        addLayerAction.execute(fileNames);
119
    }
120
}