You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by tv...@apache.org on 2009/10/19 17:03:20 UTC
svn commit: r826696 - in /incubator/pivot/trunk:
tutorials/src/org/apache/pivot/tutorials/dragdrop/dragdrop.js
wtk/src/org/apache/pivot/wtk/LocalManifest.java
wtk/src/org/apache/pivot/wtk/RemoteManifest.java
Author: tvolkert
Date: Mon Oct 19 15:03:19 2009
New Revision: 826696
URL: http://svn.apache.org/viewvc?rev=826696&view=rev
Log:
PIVOT-329 :: Added automatic translation between text/uri-list data flavor and javaFileList data flavor; removed trailing white space from dragdrop.js
Modified:
incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/dragdrop/dragdrop.js
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/LocalManifest.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/RemoteManifest.java
Modified: incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/dragdrop/dragdrop.js
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/dragdrop/dragdrop.js?rev=826696&r1=826695&r2=826696&view=diff
==============================================================================
--- incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/dragdrop/dragdrop.js (original)
+++ incubator/pivot/trunk/tutorials/src/org/apache/pivot/tutorials/dragdrop/dragdrop.js Mon Oct 19 15:03:19 2009
@@ -19,42 +19,42 @@
var dragSoure = new DragSource() {
beginDrag: function(component, x, y) {
return true;
- },
-
+ },
+
endDrag: function(component, dropAction) {
// No-op
},
-
+
getContent: function() {
var content = new LocalManifest();
content.putImage(imageView.getImage());
-
+
return content;
},
-
+
getOffset: function() {
// No-op; not used for native drags
return null;
- },
-
+ },
+
getRepresentation: function() {
// No-op; not used for native drags
return null;
},
-
+
getSupportedDropActions: function() {
return DropAction.COPY.getMask();
},
-
+
isNative: function() {
return true;
- }
+ }
};
var dropTarget = new DropTarget() {
dragEnter: function(component, dragContent, supportedDropActions, userDropAction) {
return (dragContent.containsImage()) ? DropAction.COPY : null;
- },
+ },
dragExit: function(component) {
// No-op
@@ -64,7 +64,7 @@
return (dragContent.containsImage()) ? DropAction.COPY : null;
},
- userDropActionChange: function(component, dragContent, supportedDropActions,
+ userDropActionChange: function(component, dragContent, supportedDropActions,
x, y, userDropAction) {
return (dragContent.containsImage()) ? DropAction.COPY : null;
},
@@ -76,7 +76,7 @@
imageView.setImage(dragContent.getImage());
dropAction = DropAction.COPY;
}
-
+
return dropAction;
}
-};
+};
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/LocalManifest.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/LocalManifest.java?rev=826696&r1=826695&r2=826696&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/LocalManifest.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/LocalManifest.java Mon Oct 19 15:03:19 2009
@@ -19,6 +19,7 @@
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
+import java.io.File;
import java.net.URL;
import org.apache.pivot.collections.ArrayList;
@@ -27,7 +28,6 @@
import org.apache.pivot.wtk.media.Image;
import org.apache.pivot.wtk.media.Picture;
-
/**
* Manifest class that serves as data source for a clipboard or drag/drop
* operation.
@@ -130,6 +130,8 @@
private LocalManifest localManifest;
private ArrayList<DataFlavor> transferDataFlavors = new ArrayList<DataFlavor>();
+ private static final String URI_LIST_MIME_TYPE = "text/uri-list; class=java.lang.String";
+
public LocalManifestAdapter(LocalManifest localManifest) {
this.localManifest = localManifest;
@@ -143,6 +145,12 @@
if (localManifest.containsFileList()) {
transferDataFlavors.add(DataFlavor.javaFileListFlavor);
+
+ try {
+ transferDataFlavors.add(new DataFlavor(URI_LIST_MIME_TYPE));
+ } catch (ClassNotFoundException exception) {
+ // No-op
+ }
}
if (localManifest.containsURL()) {
@@ -168,6 +176,15 @@
} else if (dataFlavor.equals(DataFlavor.javaFileListFlavor)) {
FileList fileList = localManifest.getFileList();
transferData = fileList.getList();
+ } else if (dataFlavor.getMimeType().equals(URI_LIST_MIME_TYPE)) {
+ FileList fileList = localManifest.getFileList();
+
+ StringBuilder buf = new StringBuilder();
+ for (File file : fileList) {
+ buf.append(file.toURI().toString()).append("\r\n");
+ }
+
+ transferData = buf.toString();
} else if (dataFlavor.getRepresentationClass() == URL.class) {
transferData = localManifest.getURL();
} else if (dataFlavor.isRepresentationClassByteBuffer()) {
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/RemoteManifest.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/RemoteManifest.java?rev=826696&r1=826695&r2=826696&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/RemoteManifest.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/RemoteManifest.java Mon Oct 19 15:03:19 2009
@@ -22,6 +22,10 @@
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
+import java.io.LineNumberReader;
+import java.io.StringReader;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.net.URL;
import org.apache.pivot.io.FileList;
@@ -38,8 +42,12 @@
private DataFlavor textDataFlavor = null;
private DataFlavor imageDataFlavor = null;
private DataFlavor fileListDataFlavor = null;
+ private DataFlavor uriListDataFlavor = null;
private DataFlavor urlDataFlavor = null;
+ private static final String URI_LIST_MIME_TYPE = "text/uri-list";
+ private static final String FILE_URI_SCHEME = "file";
+
RemoteManifest(Transferable transferable) {
assert(transferable != null);
this.transferable = transferable;
@@ -55,6 +63,9 @@
imageDataFlavor = dataFlavor;
} else if (dataFlavor.equals(DataFlavor.javaFileListFlavor)) {
fileListDataFlavor = dataFlavor;
+ } else if (dataFlavor.getMimeType().startsWith(URI_LIST_MIME_TYPE)
+ && dataFlavor.getRepresentationClass() == String.class) {
+ uriListDataFlavor = dataFlavor;
} else if (dataFlavor.getRepresentationClass() == URL.class) {
urlDataFlavor = dataFlavor;
} else if (dataFlavor.isRepresentationClassByteBuffer()) {
@@ -73,7 +84,7 @@
String text = null;
try {
text = (String)transferable.getTransferData(textDataFlavor);
- } catch(UnsupportedFlavorException exception) {
+ } catch (UnsupportedFlavorException exception) {
// No-op
}
@@ -90,7 +101,7 @@
Image image = null;
try {
image = new Picture((BufferedImage)transferable.getTransferData(imageDataFlavor));
- } catch(UnsupportedFlavorException exception) {
+ } catch (UnsupportedFlavorException exception) {
// No-op
}
@@ -106,9 +117,36 @@
@SuppressWarnings("unchecked")
public FileList getFileList() throws IOException {
FileList fileList = null;
+
try {
- fileList = new FileList((java.util.List<File>)transferable.getTransferData(fileListDataFlavor));
- } catch(UnsupportedFlavorException exception) {
+ if (fileListDataFlavor != null) {
+ fileList = new FileList((java.util.List<File>)
+ transferable.getTransferData(fileListDataFlavor));
+ } else if (uriListDataFlavor != null) {
+ fileList = new FileList();
+
+ String uriList = (String)transferable.getTransferData(uriListDataFlavor);
+ LineNumberReader reader = new LineNumberReader(new StringReader(uriList));
+
+ try {
+ String line = reader.readLine();
+ while (line != null) {
+ URI uri = new URI(line);
+ String scheme = uri.getScheme();
+
+ if (scheme != null
+ && scheme.equalsIgnoreCase(FILE_URI_SCHEME)) {
+ File file = new File(uri);
+ fileList.add(file);
+ }
+
+ line = reader.readLine();
+ }
+ } catch (URISyntaxException exception) {
+ // No-op
+ }
+ }
+ } catch (UnsupportedFlavorException exception) {
// No-op
}
@@ -117,7 +155,8 @@
@Override
public boolean containsFileList() {
- return (fileListDataFlavor != null);
+ return (fileListDataFlavor != null
+ || uriListDataFlavor != null);
}
@Override
@@ -125,7 +164,7 @@
URL url = null;
try {
url = (URL)transferable.getTransferData(urlDataFlavor);
- } catch(UnsupportedFlavorException exception) {
+ } catch (UnsupportedFlavorException exception) {
// No-op
}