Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Merkli2015-06-16 13:24:35 +0000
committerStephan Merkli2015-06-16 14:33:17 +0000
commit6eac96dac5402b6e9c3db0b98346067ef0ef7deb (patch)
treedd6b3ba3279ddc9d9f024fe92846ca9c85854a15
parent4ad76ca9f5077db156791b8bc14db09d71b43aad (diff)
downloadorg.eclipse.scout.rt-6eac96dac5402b6e9c3db0b98346067ef0ef7deb.tar.gz
org.eclipse.scout.rt-6eac96dac5402b6e9c3db0b98346067ef0ef7deb.tar.xz
org.eclipse.scout.rt-6eac96dac5402b6e9c3db0b98346067ef0ef7deb.zip
Drag & Drop: FileListTransferObject using BinaryResource instead of File
Removed unnecessary boolean methods on TransferObject Renamed FileListTransferObject to ResourceListTransferObject Swing: transforming file to binary resource (and visa versa) for dnd support
-rw-r--r--org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/FileListTransferObject.java63
-rw-r--r--org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/ImageTransferObject.java8
-rw-r--r--org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/JavaTransferObject.java5
-rw-r--r--org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/ResourceListTransferObject.java42
-rw-r--r--org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/TextTransferObject.java5
-rw-r--r--org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/TransferObject.java19
-rw-r--r--org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/IDNDSupport.java4
-rw-r--r--org.eclipse.scout.rt.testing.ui.swing/src/main/java/org/eclipse/scout/rt/testing/ui/swing/SwingMock.java2
-rw-r--r--org.eclipse.scout.rt.ui.swing/src/main/java/org/eclipse/scout/rt/ui/swing/SwingUtility.java29
-rw-r--r--org.eclipse.scout.rt.ui.swing/src/main/java/org/eclipse/scout/rt/ui/swing/services/common/clipboard/SwingScoutClipboardService.java14
10 files changed, 82 insertions, 109 deletions
diff --git a/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/FileListTransferObject.java b/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/FileListTransferObject.java
deleted file mode 100644
index 32ef5dc9f6..0000000000
--- a/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/FileListTransferObject.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 BSI Business Systems Integration AG.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * BSI Business Systems Integration AG - initial API and implementation
- ******************************************************************************/
-package org.eclipse.scout.commons.dnd;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.scout.commons.CollectionUtility;
-
-/**
- * @since Build 202
- */
-
-public class FileListTransferObject extends TransferObject {
- private List<File> m_files;
-
- public FileListTransferObject(File... files) {
- this(CollectionUtility.<File> arrayList(files));
- }
-
- public FileListTransferObject(Collection<? extends File> files) {
- m_files = CollectionUtility.<File> arrayListWithoutNullElements(files);
- }
-
- @Override
- public boolean isFileList() {
- return true;
- }
-
- public List<File> getFiles() {
- return CollectionUtility.arrayList(m_files);
- }
-
- public List<String> getFilenames() {
- return getFilenameList();
- }
-
- public List<String> getFilenameList() {
- List<String> fileNames = new ArrayList<String>();
- if (m_files != null) {
- for (File f : m_files) {
- fileNames.add(f.getAbsolutePath());
- }
- }
- return fileNames;
- }
-
- @Override
- public String toString() {
- return "FileListTransferObject[files=" + CollectionUtility.format(m_files) + "]";
- }
-
-}
diff --git a/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/ImageTransferObject.java b/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/ImageTransferObject.java
index 52e0a09908..9982fa7335 100644
--- a/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/ImageTransferObject.java
+++ b/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/ImageTransferObject.java
@@ -4,7 +4,7 @@
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* BSI Business Systems Integration AG - initial API and implementation
******************************************************************************/
@@ -21,11 +21,6 @@ public class ImageTransferObject extends TransferObject {
m_img = img;
}
- @Override
- public boolean isImage() {
- return true;
- }
-
public Object getImage() {
return m_img;
}
@@ -34,5 +29,4 @@ public class ImageTransferObject extends TransferObject {
public String toString() {
return "ImageTransferObject[image=" + m_img + "]";
}
-
}
diff --git a/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/JavaTransferObject.java b/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/JavaTransferObject.java
index 1c9d6f9a06..362ec8c936 100644
--- a/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/JavaTransferObject.java
+++ b/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/JavaTransferObject.java
@@ -29,11 +29,6 @@ public class JavaTransferObject extends TransferObject {
m_localObject = bean;
}
- @Override
- public boolean isLocalObject() {
- return true;
- }
-
public Object getLocalObject() {
return m_localObject;
}
diff --git a/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/ResourceListTransferObject.java b/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/ResourceListTransferObject.java
new file mode 100644
index 0000000000..21a6a71411
--- /dev/null
+++ b/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/ResourceListTransferObject.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2010 BSI Business Systems Integration AG.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.commons.dnd;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.scout.commons.CollectionUtility;
+import org.eclipse.scout.commons.resource.BinaryResource;
+
+/**
+ * @since Build 202
+ */
+
+public class ResourceListTransferObject extends TransferObject {
+ private List<BinaryResource> m_resources;
+
+ public ResourceListTransferObject(BinaryResource... resources) {
+ this(Arrays.asList(resources));
+ }
+
+ public ResourceListTransferObject(List<BinaryResource> resources) {
+ m_resources = CollectionUtility.arrayListWithoutNullElements(resources);
+ }
+
+ public List<BinaryResource> getResources() {
+ return CollectionUtility.arrayList(m_resources);
+ }
+
+ @Override
+ public String toString() {
+ return ResourceListTransferObject.class.getSimpleName() + "[resources=" + CollectionUtility.format(m_resources) + "]";
+ }
+}
diff --git a/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/TextTransferObject.java b/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/TextTransferObject.java
index a5bc45bd94..0667041cf2 100644
--- a/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/TextTransferObject.java
+++ b/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/TextTransferObject.java
@@ -21,11 +21,6 @@ public class TextTransferObject extends TransferObject {
m_plainText = plainText;
}
- @Override
- public boolean isText() {
- return true;
- }
-
public String getPlainText() {
return m_plainText;
}
diff --git a/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/TransferObject.java b/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/TransferObject.java
index 2aed1c9c3c..1701444cc5 100644
--- a/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/TransferObject.java
+++ b/org.eclipse.scout.commons/src/main/java/org/eclipse/scout/commons/dnd/TransferObject.java
@@ -4,7 +4,7 @@
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* BSI Business Systems Integration AG - initial API and implementation
******************************************************************************/
@@ -24,21 +24,4 @@ public class TransferObject {
public void setMimeType(String mimeType) {
m_mimeType = mimeType;
}
-
- public boolean isText() {
- return false;
- }
-
- public boolean isFileList() {
- return false;
- }
-
- public boolean isImage() {
- return false;
- }
-
- public boolean isLocalObject() {
- return false;
- }
-
}
diff --git a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/IDNDSupport.java b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/IDNDSupport.java
index 4c1c8cf7b8..b449addd49 100644
--- a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/IDNDSupport.java
+++ b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/IDNDSupport.java
@@ -10,7 +10,7 @@
******************************************************************************/
package org.eclipse.scout.rt.client.ui;
-import org.eclipse.scout.commons.dnd.FileListTransferObject;
+import org.eclipse.scout.commons.dnd.ResourceListTransferObject;
import org.eclipse.scout.commons.dnd.ImageTransferObject;
import org.eclipse.scout.commons.dnd.JavaTransferObject;
import org.eclipse.scout.commons.dnd.TextTransferObject;
@@ -22,7 +22,7 @@ import org.eclipse.scout.commons.dnd.TextTransferObject;
* @see TextTransferObject
* @see JavaTransferObject
* @see ImageTransferObject
- * @see FileListTransferObject
+ * @see ResourceListTransferObject
*/
public interface IDNDSupport {
/*
diff --git a/org.eclipse.scout.rt.testing.ui.swing/src/main/java/org/eclipse/scout/rt/testing/ui/swing/SwingMock.java b/org.eclipse.scout.rt.testing.ui.swing/src/main/java/org/eclipse/scout/rt/testing/ui/swing/SwingMock.java
index 8b273bd73b..19995700bb 100644
--- a/org.eclipse.scout.rt.testing.ui.swing/src/main/java/org/eclipse/scout/rt/testing/ui/swing/SwingMock.java
+++ b/org.eclipse.scout.rt.testing.ui.swing/src/main/java/org/eclipse/scout/rt/testing/ui/swing/SwingMock.java
@@ -704,7 +704,7 @@ public class SwingMock extends AbstractGuiMock {
waitForIdle();
Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
TransferObject o = SwingUtility.createScoutTransferable(t);
- if (o != null && o.isText()) {
+ if (o instanceof TextTransferObject) {
return ((TextTransferObject) o).getPlainText();
}
return null;
diff --git a/org.eclipse.scout.rt.ui.swing/src/main/java/org/eclipse/scout/rt/ui/swing/SwingUtility.java b/org.eclipse.scout.rt.ui.swing/src/main/java/org/eclipse/scout/rt/ui/swing/SwingUtility.java
index 99a3b8cf6a..b7a35ca77a 100644
--- a/org.eclipse.scout.rt.ui.swing/src/main/java/org/eclipse/scout/rt/ui/swing/SwingUtility.java
+++ b/org.eclipse.scout.rt.ui.swing/src/main/java/org/eclipse/scout/rt/ui/swing/SwingUtility.java
@@ -65,14 +65,17 @@ import javax.swing.plaf.basic.BasicHTML;
import org.eclipse.scout.commons.CompareUtility;
import org.eclipse.scout.commons.ConfigUtility;
+import org.eclipse.scout.commons.IOUtility;
import org.eclipse.scout.commons.StringUtility;
-import org.eclipse.scout.commons.dnd.FileListTransferObject;
+import org.eclipse.scout.commons.dnd.ResourceListTransferObject;
import org.eclipse.scout.commons.dnd.ImageTransferObject;
import org.eclipse.scout.commons.dnd.JavaTransferObject;
import org.eclipse.scout.commons.dnd.TextTransferObject;
import org.eclipse.scout.commons.dnd.TransferObject;
+import org.eclipse.scout.commons.exception.ProcessingException;
import org.eclipse.scout.commons.logger.IScoutLogger;
import org.eclipse.scout.commons.logger.ScoutLogManager;
+import org.eclipse.scout.commons.resource.BinaryResource;
import org.eclipse.scout.rt.client.ui.IDNDSupport;
import org.eclipse.scout.rt.client.ui.MouseButton;
import org.eclipse.scout.rt.client.ui.action.keystroke.IKeyStroke;
@@ -447,8 +450,19 @@ public final class SwingUtility {
if (scoutT == null) {
return null;
}
- if (scoutT instanceof FileListTransferObject) {
- return new FileListTransferable(((FileListTransferObject) scoutT).getFiles());
+ if (scoutT instanceof ResourceListTransferObject) {
+ // create temporary files for Swing drag
+ List<BinaryResource> resources = ((ResourceListTransferObject) scoutT).getResources();
+ List<File> files = new ArrayList<File>();
+ for (BinaryResource resource : resources) {
+ try {
+ files.add(IOUtility.createTempFile(resource.getFilename(), resource.getContent()));
+ }
+ catch (ProcessingException e) {
+ LOG.warn("Failed to create temporary file for binary resource " + resource, e);
+ }
+ }
+ return new FileListTransferable(files);
}
else if (scoutT instanceof TextTransferObject) {
TextTransferObject textTransferObject = (TextTransferObject) scoutT;
@@ -528,7 +542,7 @@ public final class SwingUtility {
}
DataFlavor[] flavors = swingT.getTransferDataFlavors();
Exception ex = null;
- FileListTransferObject fileTransferObject = null;
+ ResourceListTransferObject fileTransferObject = null;
TextTransferObject textTransferObject = null;
ImageTransferObject imageTransferObject = null;
TextTransferObject serializedTransferObject = null;
@@ -538,8 +552,13 @@ public final class SwingUtility {
try {
ArrayList<File> fileList = new ArrayList<File>();
fileList.addAll((List) swingT.getTransferData(flavors[i]));
+ List<BinaryResource> resources = new ArrayList<BinaryResource>();
+ for (File file : fileList) {
+ resources.add(new BinaryResource(file.getName(), IOUtility.getContent(file)));
+ }
+
if (fileTransferObject == null) {
- fileTransferObject = new FileListTransferObject(fileList);
+ fileTransferObject = new ResourceListTransferObject(resources);
}
}
catch (Exception e) {
diff --git a/org.eclipse.scout.rt.ui.swing/src/main/java/org/eclipse/scout/rt/ui/swing/services/common/clipboard/SwingScoutClipboardService.java b/org.eclipse.scout.rt.ui.swing/src/main/java/org/eclipse/scout/rt/ui/swing/services/common/clipboard/SwingScoutClipboardService.java
index ab5e15e191..1e4e5d456c 100644
--- a/org.eclipse.scout.rt.ui.swing/src/main/java/org/eclipse/scout/rt/ui/swing/services/common/clipboard/SwingScoutClipboardService.java
+++ b/org.eclipse.scout.rt.ui.swing/src/main/java/org/eclipse/scout/rt/ui/swing/services/common/clipboard/SwingScoutClipboardService.java
@@ -26,7 +26,7 @@ import org.eclipse.scout.commons.CollectionUtility;
import org.eclipse.scout.commons.IOUtility;
import org.eclipse.scout.commons.IRunnable;
import org.eclipse.scout.commons.StringUtility;
-import org.eclipse.scout.commons.dnd.FileListTransferObject;
+import org.eclipse.scout.commons.dnd.ResourceListTransferObject;
import org.eclipse.scout.commons.dnd.ImageTransferObject;
import org.eclipse.scout.commons.dnd.TextTransferObject;
import org.eclipse.scout.commons.dnd.TransferObject;
@@ -34,6 +34,7 @@ import org.eclipse.scout.commons.dnd.TransferObjectRequest;
import org.eclipse.scout.commons.exception.ProcessingException;
import org.eclipse.scout.commons.logger.IScoutLogger;
import org.eclipse.scout.commons.logger.ScoutLogManager;
+import org.eclipse.scout.commons.resource.BinaryResource;
import org.eclipse.scout.rt.client.Client;
import org.eclipse.scout.rt.client.IClientSession;
import org.eclipse.scout.rt.client.context.ClientRunContexts;
@@ -160,10 +161,17 @@ public class SwingScoutClipboardService extends AbstractService implements IClip
result.setMimeType(DataFlavor.imageFlavor.getMimeType());
return result;
}
- else if (FileListTransferObject.class.equals(request.getTransferObjectType())) {
+ else if (ResourceListTransferObject.class.equals(request.getTransferObjectType())) {
ArrayList<File> fileList = new ArrayList<File>();
CollectionUtility.appendAllList(fileList, (List) contents.getTransferData(DataFlavor.javaFileListFlavor));
- FileListTransferObject result = new FileListTransferObject(fileList);
+
+ // create binary resource list from file list
+ List<BinaryResource> resources = new ArrayList<BinaryResource>();
+ for (File file : fileList) {
+ resources.add(new BinaryResource(file.getName(), IOUtility.getContent(file)));
+ }
+
+ ResourceListTransferObject result = new ResourceListTransferObject(resources);
result.setMimeType(DataFlavor.javaFileListFlavor.getMimeType());
return result;
}

Back to the top