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) { |