Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Davis2012-02-24 21:14:17 +0000
committerSam Davis2012-02-24 21:14:17 +0000
commitf20c92219ee68670c51ea757dada00dd9f056c60 (patch)
tree31a2093bb93035a11574baa82a98c50de7fc645b /org.eclipse.mylyn.tasks.ui
parenta4fab89dad56a8dd6f39c1af2d6e0aedf590e2dd (diff)
downloadorg.eclipse.mylyn.tasks-f20c92219ee68670c51ea757dada00dd9f056c60.tar.gz
org.eclipse.mylyn.tasks-f20c92219ee68670c51ea757dada00dd9f056c60.tar.xz
org.eclipse.mylyn.tasks-f20c92219ee68670c51ea757dada00dd9f056c60.zip
NEW - bug 372169: [regression] Can't drag files to task editor from
package explorer to attach them https://bugs.eclipse.org/bugs/show_bug.cgi?id=372169
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui')
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskAttachmentDropListener.java31
1 files changed, 30 insertions, 1 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskAttachmentDropListener.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskAttachmentDropListener.java
index bb69ecf5e..ebe23fa4f 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskAttachmentDropListener.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskAttachmentDropListener.java
@@ -14,11 +14,15 @@
package org.eclipse.mylyn.internal.tasks.ui.editors;
import java.io.File;
+import java.util.ArrayList;
import java.util.List;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.mylyn.internal.tasks.core.data.FileTaskAttachmentSource;
import org.eclipse.mylyn.internal.tasks.core.data.TextTaskAttachmentSource;
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
@@ -100,6 +104,8 @@ public class TaskAttachmentDropListener implements DropTargetListener {
if (!tasksToMove.isEmpty()) {
TasksUiInternal.getTaskDropHandler().fireTaskDropped(tasksToMove, page.getTask(),
Operation.DROP_ON_TASK_EDITOR);
+ } else {
+ attachFirstFile(getFilesFromSelection(selection));
}
}
if (TextTransfer.getInstance().isSupportedType(event.currentDataType)) {
@@ -108,7 +114,12 @@ public class TaskAttachmentDropListener implements DropTargetListener {
}
if (FileTransfer.getInstance().isSupportedType(event.currentDataType)) {
String[] files = (String[]) event.data;
- if (files != null && files.length > 0) {
+ attachFirstFile(files);
+ }
+ }
+
+ protected void attachFirstFile(String[] files) {
+ if (files != null && files.length > 0) {
File file = new File(files[0]);
NewAttachmentWizardDialog dialog = EditorUtil.openNewAttachmentWizard(page, null,
new FileTaskAttachmentSource(file));
@@ -119,6 +130,24 @@ public class TaskAttachmentDropListener implements DropTargetListener {
}
}
}
+
+ public static String[] getFilesFromSelection(ISelection selection) {
+ List<String> files = new ArrayList<String>();
+ if (selection instanceof IStructuredSelection) {
+ for (Object element : ((IStructuredSelection) selection).toList()) {
+ IResource resource = null;
+ if (element instanceof IResource) {
+ resource = (IResource) element;
+ } else if (element instanceof IAdaptable) {
+ IAdaptable adaptable = (IAdaptable) element;
+ resource = (IResource) adaptable.getAdapter(IResource.class);
+ }
+ if (resource != null && resource.getRawLocation() != null) {
+ files.add(resource.getRawLocation().toOSString());
+ }
+ }
+ }
+ return files.toArray(new String[files.size()]);
}
}

Back to the top