View | Details | Raw Unified | Return to bug 210686 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java (-6 / +72 lines)
Lines 8-13 Link Here
8
8
9
package org.eclipse.mylyn.tasks.ui.editors;
9
package org.eclipse.mylyn.tasks.ui.editors;
10
10
11
import java.io.File;
12
import java.io.IOException;
13
import java.io.UnsupportedEncodingException;
14
import java.net.URLEncoder;
11
import java.util.ArrayList;
15
import java.util.ArrayList;
12
import java.util.Collections;
16
import java.util.Collections;
13
import java.util.Comparator;
17
import java.util.Comparator;
Lines 21-26 Link Here
21
import org.eclipse.jface.viewers.ISelection;
25
import org.eclipse.jface.viewers.ISelection;
22
import org.eclipse.jface.viewers.StructuredSelection;
26
import org.eclipse.jface.viewers.StructuredSelection;
23
import org.eclipse.mylyn.internal.tasks.core.LocalTask;
27
import org.eclipse.mylyn.internal.tasks.core.LocalTask;
28
import org.eclipse.mylyn.internal.tasks.ui.ITasksUiConstants;
24
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
29
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
25
import org.eclipse.mylyn.internal.tasks.ui.editors.EditorBusyIndicator;
30
import org.eclipse.mylyn.internal.tasks.ui.editors.EditorBusyIndicator;
26
import org.eclipse.mylyn.internal.tasks.ui.editors.IBusyEditor;
31
import org.eclipse.mylyn.internal.tasks.ui.editors.IBusyEditor;
Lines 31-36 Link Here
31
import org.eclipse.mylyn.tasks.core.RepositoryTaskData;
36
import org.eclipse.mylyn.tasks.core.RepositoryTaskData;
32
import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi;
37
import org.eclipse.mylyn.tasks.ui.AbstractRepositoryConnectorUi;
33
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
38
import org.eclipse.mylyn.tasks.ui.TasksUiPlugin;
39
import org.eclipse.swt.dnd.DND;
40
import org.eclipse.swt.dnd.DragSourceAdapter;
41
import org.eclipse.swt.dnd.DragSourceEvent;
42
import org.eclipse.swt.dnd.FileTransfer;
43
import org.eclipse.swt.dnd.TextTransfer;
44
import org.eclipse.swt.dnd.Transfer;
34
import org.eclipse.swt.graphics.Image;
45
import org.eclipse.swt.graphics.Image;
35
import org.eclipse.swt.widgets.Menu;
46
import org.eclipse.swt.widgets.Menu;
36
import org.eclipse.ui.IEditorInput;
47
import org.eclipse.ui.IEditorInput;
Lines 330-336 Link Here
330
				}
341
				}
331
			} else if (getEditorInput() instanceof AbstractRepositoryTaskEditorInput) {
342
			} else if (getEditorInput() instanceof AbstractRepositoryTaskEditorInput) {
332
				this.setTitleImage(TasksUiImages.getImage(TasksUiImages.TASK_REMOTE));
343
				this.setTitleImage(TasksUiImages.getImage(TasksUiImages.TASK_REMOTE));
333
			} else { 
344
			} else {
334
				setTitleImage(TasksUiImages.getImage(TasksUiImages.TASK));
345
				setTitleImage(TasksUiImages.getImage(TasksUiImages.TASK));
335
			}
346
			}
336
347
Lines 388-416 Link Here
388
399
389
	@Override
400
	@Override
390
	protected void createHeaderContents(IManagedForm headerForm) {
401
	protected void createHeaderContents(IManagedForm headerForm) {
391
		getToolkit().decorateFormHeading(headerForm.getForm().getForm());
402
		Form form = headerForm.getForm().getForm();
403
		getToolkit().decorateFormHeading(form);
392
		headerForm.getForm().setImage(TasksUiImages.getImage(TasksUiImages.TASK));
404
		headerForm.getForm().setImage(TasksUiImages.getImage(TasksUiImages.TASK));
393
		updateFormTitle();
405
		updateFormTitle();
406
407
	}
408
409
	private void installTitleDrag(Form form) {
410
		Transfer[] transferTypes;
411
		if (null == task) {
412
			transferTypes = new Transfer[] { TextTransfer.getInstance() };
413
		} else {
414
			transferTypes = new Transfer[] { TextTransfer.getInstance(), FileTransfer.getInstance() };
415
		}
416
		form.addTitleDragSupport(DND.DROP_COPY | DND.DROP_LINK, transferTypes, new DragSourceAdapter() {
417
418
			@Override
419
			public void dragSetData(DragSourceEvent event) {
420
				if (FileTransfer.getInstance().isSupportedType(event.dataType)) {
421
					// similar code is in TaskListDragSourceListener, maybe move to an utility class
422
					if (task != null) {
423
						String encodedName = "task-" + task.getTaskKey();
424
						try {
425
							encodedName = URLEncoder.encode(task.getHandleIdentifier(),
426
									ITasksUiConstants.FILENAME_ENCODING);
427
						} catch (UnsupportedEncodingException e) {
428
							StatusHandler.fail(e, "Could not determine path for context", false);
429
						}
430
431
						File tempDir = new File(TasksUiPlugin.getDefault().getDataDirectory() + File.separator + "temp");
432
						if (!tempDir.exists()) {
433
							tempDir.mkdir();
434
						}
435
436
						File taskTempFile;
437
						try {
438
							taskTempFile = File.createTempFile(encodedName, ITasksUiConstants.FILE_EXTENSION, tempDir);
439
							taskTempFile.deleteOnExit();
440
							TasksUiPlugin.getTaskListManager().getTaskListWriter().writeTask(task, taskTempFile);
441
							event.data = new String[] { taskTempFile.getAbsolutePath() };
442
						} catch (IOException e) {
443
							StatusHandler.fail(e, "Cannot create a temp query file for Drag&Drop", true);
444
						}
445
					}
446
				}
447
				if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
448
					if (task != null) {
449
						event.data = task.getUrl(); // goes wrong with LocalTask
450
						return;
451
					} else if (getEditorInput() instanceof RepositoryTaskEditorInput
452
							&& ((RepositoryTaskEditorInput) getEditorInput()).getUrl() != null) {
453
						event.data = ((RepositoryTaskEditorInput) getEditorInput()).getUrl();
454
						return;
455
					}
456
				}
457
			}
458
		});
394
	}
459
	}
395
460
396
	protected void updateFormTitle() {
461
	protected void updateFormTitle() {
397
		IEditorInput input = getEditorInput();
462
		IEditorInput input = getEditorInput();
398
		if (input instanceof TaskEditorInput) {
463
		if (input instanceof TaskEditorInput) {
399
			AbstractTask task = ((TaskEditorInput) input).getTask();
464
			/* AbstractTask */task = ((TaskEditorInput) input).getTask();
400
			if (task instanceof LocalTask) {
465
			if (task instanceof LocalTask) {
401
				getHeaderForm().getForm().setText("Task: " + task.getSummary());
466
				getHeaderForm().getForm().setText("Task: " + task.getSummary());
402
			} else {
467
			} else {
403
				setFormHeaderImage(task.getConnectorKind());
468
				setFormHeaderImage(task.getConnectorKind());
404
				setFormHeaderLabel(task);
469
				setFormHeaderLabel(task);
405
				return;
470
//				return;
406
			}
471
			}
407
		} else if (input instanceof RepositoryTaskEditorInput) {
472
		} else if (input instanceof RepositoryTaskEditorInput) {
408
			AbstractTask task = ((RepositoryTaskEditorInput) input).getRepositoryTask();
473
			/* AbstractTask */task = ((RepositoryTaskEditorInput) input).getRepositoryTask();
409
			RepositoryTaskData data = ((RepositoryTaskEditorInput) input).getTaskData();
474
			RepositoryTaskData data = ((RepositoryTaskEditorInput) input).getTaskData();
410
			if (task != null && data != null && !data.isNew()) {
475
			if (task != null && data != null && !data.isNew()) {
411
				setFormHeaderImage(task.getConnectorKind());
476
				setFormHeaderImage(task.getConnectorKind());
412
				setFormHeaderLabel(task);
477
				setFormHeaderLabel(task);
413
				return;
478
//				return;
414
			} else {
479
			} else {
415
				if (data != null) {
480
				if (data != null) {
416
					setFormHeaderImage(data.getRepositoryKind());
481
					setFormHeaderImage(data.getRepositoryKind());
Lines 418-423 Link Here
418
				}
483
				}
419
			}
484
			}
420
		}
485
		}
486
		installTitleDrag(getHeaderForm().getForm().getForm());
421
	}
487
	}
422
488
423
	private void setFormHeaderImage(String repositoryKind) {
489
	private void setFormHeaderImage(String repositoryKind) {

Return to bug 210686