diff options
author | Stephan Merkli | 2015-06-16 13:24:35 +0000 |
---|---|---|
committer | Stephan Merkli | 2015-06-16 14:33:17 +0000 |
commit | 6eac96dac5402b6e9c3db0b98346067ef0ef7deb (patch) | |
tree | dd6b3ba3279ddc9d9f024fe92846ca9c85854a15 | |
parent | 4ad76ca9f5077db156791b8bc14db09d71b43aad (diff) | |
download | org.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
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; } |