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 @ 41634
History | View | Annotate | Download (3.89 KB)
1 |
|
---|---|
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 |
pluginManager.addStartupTask("RegisterDropFilesOnTheView", this, true, 1000); |
50 |
} |
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 |
} |