Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorspingel2008-04-30 07:56:37 +0000
committerspingel2008-04-30 07:56:37 +0000
commitc0aa373c167edecdf41cf1e95d9d28c0ac668393 (patch)
treeaa5b7f86d579e775782d936644fdc95cda1347a2 /org.eclipse.mylyn.tasks.ui
parent44e0192aa29ef8fafcd81e2f4b01d04b176aba8c (diff)
downloadorg.eclipse.mylyn.tasks-c0aa373c167edecdf41cf1e95d9d28c0ac668393.tar.gz
org.eclipse.mylyn.tasks-c0aa373c167edecdf41cf1e95d9d28c0ac668393.tar.xz
org.eclipse.mylyn.tasks-c0aa373c167edecdf41cf1e95d9d28c0ac668393.zip
NEW - bug 212700: [api] support refreshing of attributes for new tasks
https://bugs.eclipse.org/bugs/show_bug.cgi?id=212700
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui')
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksJobFactory.java35
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorAttributePart.java74
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java125
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUi.java33
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorPage.java45
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java669
6 files changed, 556 insertions, 425 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksJobFactory.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksJobFactory.java
index 275dbfa0b..6ce4e7e5e 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksJobFactory.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksJobFactory.java
@@ -34,6 +34,7 @@ import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.eclipse.mylyn.tasks.core.sync.SubmitJob;
import org.eclipse.mylyn.tasks.core.sync.SynchronizationJob;
+import org.eclipse.mylyn.tasks.core.sync.TaskJob;
import org.eclipse.ui.progress.IProgressConstants;
/**
@@ -103,4 +104,38 @@ public class TasksJobFactory implements ITaskJobFactory {
return job;
}
+ public TaskJob createUpdateRepositoryConfigurationJob(final AbstractRepositoryConnector connector,
+ final TaskRepository taskRepository) {
+ TaskJob updateJob = new TaskJob("Refreshing repository configuration") {
+ private IStatus error;
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ monitor.beginTask("Receiving configuration", IProgressMonitor.UNKNOWN);
+ try {
+ try {
+ connector.updateRepositoryConfiguration(taskRepository, monitor);
+ } catch (CoreException e) {
+ error = e.getStatus();
+ }
+ } finally {
+ monitor.done();
+ }
+ return Status.OK_STATUS;
+ }
+
+ @Override
+ public boolean belongsTo(Object family) {
+ return family == taskRepository;
+ }
+
+ @Override
+ public IStatus getError() {
+ return error;
+ }
+ };
+ updateJob.setPriority(Job.INTERACTIVE);
+ return updateJob;
+ }
+
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorAttributePart.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorAttributePart.java
index ca0a97c38..570c6058a 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorAttributePart.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/editors/TaskEditorAttributePart.java
@@ -14,19 +14,18 @@ import java.util.Comparator;
import java.util.List;
import java.util.Map;
-import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
import org.eclipse.mylyn.internal.tasks.ui.views.UpdateRepositoryConfigurationAction;
-import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
-import org.eclipse.mylyn.tasks.core.AbstractTask;
-import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.data.TaskAttribute;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeProperties;
+import org.eclipse.mylyn.tasks.core.sync.TaskJob;
import org.eclipse.mylyn.tasks.ui.TasksUi;
import org.eclipse.mylyn.tasks.ui.editors.AbstractAttributeEditor;
import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPart;
@@ -162,28 +161,55 @@ public class TaskEditorAttributePart extends AbstractTaskEditorPart {
protected void fillToolBar(ToolBarManager toolBar) {
UpdateRepositoryConfigurationAction repositoryConfigRefresh = new UpdateRepositoryConfigurationAction() {
@Override
- public void performUpdate(TaskRepository repository, AbstractRepositoryConnector connector,
- IProgressMonitor monitor) {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- getTaskEditorPage().showEditorBusy(true);
+ public void run() {
+ getTaskEditorPage().showEditorBusy(true);
+ final TaskJob job = TasksUi.getJobFactory().createUpdateRepositoryConfigurationJob(
+ getTaskEditorPage().getConnector(), getTaskEditorPage().getTaskRepository());
+ job.addJobChangeListener(new JobChangeAdapter() {
+ @Override
+ public void done(IJobChangeEvent event) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ getTaskEditorPage().showEditorBusy(false);
+ if (job.getError() != null) {
+ getTaskEditorPage().getTaskEditor().setStatus(
+ "Updating of repository configuration failed", "Update Failed",
+ job.getError());
+ } else {
+ getTaskEditorPage().refreshFormContent();
+ }
+ }
+ });
}
});
- try {
- super.performUpdate(repository, connector, monitor);
- AbstractTask task = getTaskEditorPage().getTask();
- Job job = TasksUi.synchronizeTask(connector, task, true, null);
- job.join();
- } catch (InterruptedException e) {
- // ignore
- } finally {
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- getTaskEditorPage().refreshFormContent();
- }
- });
- }
- }
+ job.setUser(true);
+ job.setPriority(Job.INTERACTIVE);
+ job.schedule();
+ };
+
+// @Override
+// public void performUpdate(TaskRepository repository, AbstractRepositoryConnector connector,
+// IProgressMonitor monitor) {
+// PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+// public void run() {
+// getTaskEditorPage().showEditorBusy(true);
+// }
+// });
+// try {
+// super.performUpdate(repository, connector, monitor);
+// AbstractTask task = getTaskEditorPage().getTask();
+// Job job = TasksUi.synchronizeTask(connector, task, true, null);
+// job.join();
+// } catch (InterruptedException e) {
+// // ignore
+// } finally {
+// PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+// public void run() {
+// getTaskEditorPage().refreshFormContent();
+// }
+// });
+// }
+// }
};
repositoryConfigRefresh.setImageDescriptor(TasksUiImages.REPOSITORY_SYNCHRONIZE);
repositoryConfigRefresh.selectionChanged(new StructuredSelection(getTaskEditorPage().getTaskRepository()));
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java
index fcec15ebb..fa7df072f 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiInternal.java
@@ -11,7 +11,9 @@ package org.eclipse.mylyn.internal.tasks.ui.util;
import java.util.ArrayList;
import java.util.List;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.ProgressMonitorWrapper;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
@@ -46,6 +48,87 @@ import org.eclipse.ui.PlatformUI;
public class TasksUiInternal {
+ public static MultiRepositoryAwareWizard createNewTaskWizard(TaskSelection taskSelection) {
+ return new NewTaskWizard(taskSelection);
+ }
+
+ public static List<TaskEditor> getActiveRepositoryTaskEditors() {
+ List<TaskEditor> repositoryTaskEditors = new ArrayList<TaskEditor>();
+ IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
+ for (IWorkbenchWindow window : windows) {
+ IEditorReference[] editorReferences = window.getActivePage().getEditorReferences();
+ for (IEditorReference editorReference : editorReferences) {
+ try {
+ if (editorReference.getEditorInput() instanceof TaskEditorInput) {
+ TaskEditorInput input = (TaskEditorInput) editorReference.getEditorInput();
+ if (input.getTask() != null) {
+ IEditorPart editorPart = editorReference.getEditor(false);
+ if (editorPart instanceof TaskEditor) {
+ repositoryTaskEditors.add((TaskEditor) editorPart);
+ }
+ }
+ }
+ } catch (PartInitException e) {
+ // ignore
+ }
+ }
+ }
+ return repositoryTaskEditors;
+ }
+
+ public static IProgressMonitor getUiMonitor(IProgressMonitor monitor) {
+ return new ProgressMonitorWrapper(monitor) {
+ @Override
+ public void beginTask(final String name, final int totalWork) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ getWrappedProgressMonitor().beginTask(name, totalWork);
+ }
+ });
+ }
+
+ @Override
+ public void done() {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ getWrappedProgressMonitor().done();
+ }
+ });
+ }
+
+ @Override
+ public void subTask(final String name) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ getWrappedProgressMonitor().subTask(name);
+ }
+ });
+ }
+
+ @Override
+ public void worked(final int work) {
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ getWrappedProgressMonitor().worked(work);
+ }
+ });
+ }
+ };
+ }
+
+ public static void openEditor(TaskCategory category) {
+ final IEditorInput input = new CategoryEditorInput(category);
+ PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ if (window != null) {
+ IWorkbenchPage page = window.getActivePage();
+ TasksUiUtil.openEditor(input, CategoryEditor.ID_EDITOR, page);
+ }
+ }
+ });
+ }
+
// API 3.0 move to internal class?
public static void refreshAndOpenTaskListElement(AbstractTaskContainer element) {
if (element instanceof AbstractTask || element instanceof ScheduledTaskDelegate) {
@@ -106,46 +189,4 @@ public class TasksUiInternal {
connectorUi.openEditQueryDialog(query);
}
}
-
- public static void openEditor(TaskCategory category) {
- final IEditorInput input = new CategoryEditorInput(category);
- PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
- public void run() {
- IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- if (window != null) {
- IWorkbenchPage page = window.getActivePage();
- TasksUiUtil.openEditor(input, CategoryEditor.ID_EDITOR, page);
- }
- }
- });
- }
-
- public static List<TaskEditor> getActiveRepositoryTaskEditors() {
- List<TaskEditor> repositoryTaskEditors = new ArrayList<TaskEditor>();
- IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
- for (IWorkbenchWindow window : windows) {
- IEditorReference[] editorReferences = window.getActivePage().getEditorReferences();
- for (IEditorReference editorReference : editorReferences) {
- try {
- if (editorReference.getEditorInput() instanceof TaskEditorInput) {
- TaskEditorInput input = (TaskEditorInput) editorReference.getEditorInput();
- if (input.getTask() != null) {
- IEditorPart editorPart = editorReference.getEditor(false);
- if (editorPart instanceof TaskEditor) {
- repositoryTaskEditors.add((TaskEditor) editorPart);
- }
- }
- }
- } catch (PartInitException e) {
- // ignore
- }
- }
- }
- return repositoryTaskEditors;
- }
-
- public static MultiRepositoryAwareWizard createNewTaskWizard(TaskSelection taskSelection) {
- return new NewTaskWizard(taskSelection);
- }
-
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUi.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUi.java
index ece8ae230..9d318a3dd 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUi.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/TasksUi.java
@@ -24,13 +24,14 @@ import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
import org.eclipse.mylyn.tasks.core.AbstractRepositoryQuery;
import org.eclipse.mylyn.tasks.core.AbstractTask;
+import org.eclipse.mylyn.tasks.core.ITaskJobFactory;
import org.eclipse.mylyn.tasks.core.ITaskList;
import org.eclipse.mylyn.tasks.core.ITaskListManager;
import org.eclipse.mylyn.tasks.core.ITaskRepositoryManager;
-import org.eclipse.mylyn.tasks.core.ITaskJobFactory;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.data.ITaskDataManager;
import org.eclipse.mylyn.tasks.core.sync.SynchronizationJob;
+import org.eclipse.mylyn.tasks.core.sync.TaskJob;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
@@ -131,7 +132,7 @@ public class TasksUi {
* you should call synchronize(Set<Set<AbstractTask> repositoryTasks, ...)
*
* @param listener
- * can be null
+ * can be null
*/
public static Job synchronizeTask(AbstractRepositoryConnector connector, AbstractTask task, boolean force,
IJobChangeListener listener) {
@@ -140,7 +141,7 @@ public class TasksUi {
/**
* @param listener
- * can be null
+ * can be null
*/
public static Job synchronizeTasks(AbstractRepositoryConnector connector, Set<AbstractTask> tasks, boolean force,
IJobChangeListener listener) {
@@ -180,4 +181,30 @@ public class TasksUi {
return TasksUiPlugin.getRepositoryManager();
}
+ public static TaskJob updateRepositoryConfiguration(final TaskRepository taskRepository) {
+ synchronized (taskRepository) {
+ taskRepository.setUpdating(true);
+ }
+
+ AbstractRepositoryConnector connector = getRepositoryManager().getRepositoryConnector(
+ taskRepository.getConnectorKind());
+ final TaskJob job = getJobFactory().createUpdateRepositoryConfigurationJob(connector, taskRepository);
+ job.addJobChangeListener(new JobChangeAdapter() {
+ @Override
+ public void done(IJobChangeEvent event) {
+ synchronized (taskRepository) {
+ taskRepository.setUpdating(false);
+ }
+ if (job.getError() != null) {
+ Display display = PlatformUI.getWorkbench().getDisplay();
+ if (!display.isDisposed()) {
+ StatusHandler.displayStatus("Configuration Refresh Failed", job.getError());
+ }
+ }
+ }
+ });
+ job.schedule();
+ return job;
+ }
+
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorPage.java
index 12482ae12..4f0e655f1 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorPage.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/AbstractTaskEditorPage.java
@@ -251,7 +251,7 @@ public abstract class AbstractTaskEditorPage extends FormPage {
public void run() {
if (task.getSynchronizationState() == SynchronizationState.INCOMING
|| task.getSynchronizationState() == SynchronizationState.CONFLICT) {
- getParentEditor().setMessage("Task has incoming changes", IMessageProvider.WARNING,
+ getTaskEditor().setMessage("Task has incoming changes", IMessageProvider.WARNING,
new HyperlinkAdapter() {
@Override
public void linkActivated(HyperlinkEvent e) {
@@ -309,8 +309,8 @@ public abstract class AbstractTaskEditorPage extends FormPage {
activeDisplay.asyncExec(new Runnable() {
public void run() {
if (getSite() != null && getSite().getPage() != null && !getManagedForm().getForm().isDisposed()) {
- if (getParentEditor() != null) {
- getSite().getPage().closeEditor(getParentEditor(), false);
+ if (getTaskEditor() != null) {
+ getSite().getPage().closeEditor(getTaskEditor(), false);
} else {
getSite().getPage().closeEditor(AbstractTaskEditorPage.this, false);
}
@@ -370,7 +370,7 @@ public abstract class AbstractTaskEditorPage extends FormPage {
AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(taskRepository.getConnectorKind());
if (connectorUi == null) {
- getParentEditor().setMessage("The editor may not be fully loaded", IMessageProvider.INFORMATION,
+ getTaskEditor().setMessage("The editor may not be fully loaded", IMessageProvider.INFORMATION,
new HyperlinkAdapter() {
@Override
public void linkActivated(HyperlinkEvent e) {
@@ -379,10 +379,10 @@ public abstract class AbstractTaskEditorPage extends FormPage {
});
}
- updateHeaderControls();
if (taskData != null) {
createSections();
}
+ updateHeaderMessage();
} finally {
setReflow(true);
}
@@ -482,7 +482,7 @@ public abstract class AbstractTaskEditorPage extends FormPage {
model.save(monitor);
} catch (final CoreException e) {
StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Error saving task", e));
- getParentEditor().setMessage("Could not save task", IMessageProvider.ERROR, new HyperlinkAdapter() {
+ getTaskEditor().setMessage("Could not save task", IMessageProvider.ERROR, new HyperlinkAdapter() {
@Override
public void linkActivated(HyperlinkEvent event) {
StatusHandler.displayStatus("Save failed", e.getStatus());
@@ -490,8 +490,9 @@ public abstract class AbstractTaskEditorPage extends FormPage {
});
}
+ updateHeaderMessage();
getManagedForm().dirtyStateChanged();
- updateHeaderControls();
+ getTaskEditor().updateHeaderToolBar();
}
@Override
@@ -544,7 +545,7 @@ public abstract class AbstractTaskEditorPage extends FormPage {
if (taskData != null && !taskData.isNew()) {
synchronizeEditorAction = new SynchronizeEditorAction();
- synchronizeEditorAction.selectionChanged(new StructuredSelection(getParentEditor()));
+ synchronizeEditorAction.selectionChanged(new StructuredSelection(getTaskEditor()));
toolBarManager.add(synchronizeEditorAction);
clearOutgoingAction = new ClearOutgoingAction(Collections.singletonList((AbstractTaskContainer) task));
@@ -614,7 +615,7 @@ public abstract class AbstractTaskEditorPage extends FormPage {
return model;
}
- public TaskEditor getParentEditor() {
+ public TaskEditor getTaskEditor() {
return (TaskEditor) getEditor();
}
@@ -647,7 +648,7 @@ public abstract class AbstractTaskEditorPage extends FormPage {
} else {
message = "Submit failed";
}
- getParentEditor().setMessage(message, IMessageProvider.ERROR, new HyperlinkAdapter() {
+ getTaskEditor().setMessage(message, IMessageProvider.ERROR, new HyperlinkAdapter() {
@Override
public void linkActivated(HyperlinkEvent e) {
StatusHandler.displayStatus("Submit failed", status);
@@ -668,12 +669,7 @@ public abstract class AbstractTaskEditorPage extends FormPage {
setModel(createModel(taskEditorInput));
} catch (final CoreException e) {
StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Error opening task", e));
- getParentEditor().setMessage("Could not open task", IMessageProvider.ERROR, new HyperlinkAdapter() {
- @Override
- public void linkActivated(HyperlinkEvent event) {
- StatusHandler.displayStatus("Open failed", e.getStatus());
- }
- });
+ getTaskEditor().setStatus("Error opening task", "Open failed", e.getStatus());
}
TasksUi.getTaskListManager().getTaskList().addChangeListener(taskListChangeListener);
@@ -731,7 +727,6 @@ public abstract class AbstractTaskEditorPage extends FormPage {
doSave(new NullProgressMonitor());
refreshInput();
- updateHeaderControls();
if (taskData != null) {
try {
setReflow(false);
@@ -750,8 +745,8 @@ public abstract class AbstractTaskEditorPage extends FormPage {
createSections();
- getParentEditor().setMessage(null, 0);
- getParentEditor().setActivePage(getId());
+ getTaskEditor().setMessage(null, 0);
+ getTaskEditor().setActivePage(getId());
if (actionPart != null) {
actionPart.setSubmitEnabled(true);
@@ -760,7 +755,10 @@ public abstract class AbstractTaskEditorPage extends FormPage {
setReflow(true);
}
}
+
+ updateHeaderMessage();
getManagedForm().dirtyStateChanged();
+ getTaskEditor().updateHeaderToolBar();
} finally {
showEditorBusy(false);
}
@@ -771,7 +769,7 @@ public abstract class AbstractTaskEditorPage extends FormPage {
try {
model.refresh(null);
} catch (CoreException e) {
- getParentEditor().setMessage("Failed to read task data: " + e.getMessage(), IMessageProvider.ERROR);
+ getTaskEditor().setMessage("Failed to read task data: " + e.getMessage(), IMessageProvider.ERROR);
taskData = null;
return;
}
@@ -893,16 +891,16 @@ public abstract class AbstractTaskEditorPage extends FormPage {
}
public void showEditorBusy(boolean busy) {
- getParentEditor().showBusy(busy);
+ getTaskEditor().showBusy(busy);
}
protected boolean supportsRefreshAttributes() {
return true;
}
- private void updateHeaderControls() {
+ private void updateHeaderMessage() {
if (taskData == null) {
- getParentEditor().setMessage(
+ getTaskEditor().setMessage(
"Task data not available. Press synchronize button (right) to retrieve latest data.",
IMessageProvider.WARNING, new HyperlinkAdapter() {
@Override
@@ -913,7 +911,6 @@ public abstract class AbstractTaskEditorPage extends FormPage {
}
});
}
- getParentEditor().updateHeader();
}
}
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java
index 7db3e4048..aa32e9acf 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/editors/TaskEditor.java
@@ -25,12 +25,14 @@ import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.text.TextViewer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.mylyn.commons.core.StatusHandler;
import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages;
+import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
import org.eclipse.mylyn.internal.tasks.core.LocalTask;
import org.eclipse.mylyn.internal.tasks.ui.TaskTransfer;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiImages;
@@ -58,6 +60,8 @@ import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormPage;
import org.eclipse.ui.forms.editor.IFormPage;
import org.eclipse.ui.forms.editor.SharedHeaderFormEditor;
+import org.eclipse.ui.forms.events.HyperlinkAdapter;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.events.IHyperlinkListener;
import org.eclipse.ui.forms.widgets.Form;
import org.eclipse.ui.part.WorkbenchPart;
@@ -72,202 +76,73 @@ public class TaskEditor extends SharedHeaderFormEditor {
public static final String ID_EDITOR = "org.eclipse.mylyn.tasks.ui.editors.task";
- protected AbstractTask task;
-
- private TaskEditorInput taskEditorInput;
-
- private final List<IEditorPart> editors = new ArrayList<IEditorPart>();
+ private ToggleTaskActivationAction activateAction;
+ @Deprecated
private IEditorPart contentOutlineProvider = null;
- public final Object FAMILY_SUBMIT = new Object();
-
- private MenuManager menuManager = new MenuManager();
-
private EditorBusyIndicator editorBusyIndicator;
- private IHyperlinkListener messageHyperLinkListener;
-
- private TaskDragSourceListener titleDragSourceListener;
+ private MenuManager menuManager;
- private ToggleTaskActivationAction activateAction;
-
- public TaskEditor() {
- }
-
- protected void contextMenuAboutToShow(IMenuManager manager) {
- TaskEditorActionContributor contributor = getActionBarContributor();
- // IFormPage page = getActivePageInstance();
- if (contributor != null) {
- contributor.contextMenuAboutToShow(manager);
- }
- }
+ private IHyperlinkListener messageHyperLinkListener;
- private TaskEditorActionContributor getActionBarContributor() {
- return (TaskEditorActionContributor) getEditorSite().getActionBarContributor();
- }
+ private AbstractTask task;
- /**
- * Configures the standard task editor context menu
- *
- * @Since 2.3
- */
- public void configureContextMenuManager(MenuManager manager, TextViewer textViewer) {
- if (manager == null) {
- return;
- }
- IMenuListener listener = new IMenuListener() {
- public void menuAboutToShow(IMenuManager manager) {
- contextMenuAboutToShow(manager);
- }
- };
- manager.setRemoveAllWhenShown(true);
- manager.addMenuListener(listener);
-
- if (textViewer != null) {
- TaskEditorActionContributor contributor = getActionBarContributor();
- if (contributor != null) {
- contributor.addTextViewer(textViewer);
- }
- }
- }
+ private TaskEditorInput taskEditorInput;
- protected void configureContextMenuManager(MenuManager manager) {
- configureContextMenuManager(manager, null);
- }
+ private TaskDragSourceListener titleDragSourceListener;
- @SuppressWarnings("unchecked")
- @Override
- public Object getAdapter(Class adapter) {
- return getAdapterDelgate(adapter);
+ public TaskEditor() {
}
- public Object getAdapterDelgate(Class<?> adapter) {
- // TODO: consider adding: IContentOutlinePage.class.equals(adapter) &&
- if (contentOutlineProvider != null) {
- return contentOutlineProvider.getAdapter(adapter);
+ @Deprecated
+ private void addPage(AbstractTaskEditorFactory factory) {
+ IEditorInput editorInput;
+ if (taskEditorInput != null && taskEditorInput.getTask() == null) {
+ editorInput = new RepositoryTaskEditorInput(taskEditorInput.getTaskRepository(), taskEditorInput.getTask()
+ .getTaskId(), "");
} else {
- return super.getAdapter(adapter);
- }
- }
-
- @Override
- public void doSave(IProgressMonitor monitor) {
- for (IFormPage page : getPages()) {
- if (page.isDirty()) {
- page.doSave(monitor);
- }
+ editorInput = getEditorInput();
}
+ if (factory.canCreateEditorFor(task) || factory.canCreateEditorFor(editorInput)) {
+ try {
+ IEditorPart editor = factory.createEditor(this, editorInput);
+ IEditorInput input = task != null ? factory.createEditorInput(task) : editorInput;
+ if (editor != null && input != null) {
+ FormPage taskEditor = (FormPage) editor;
+ editor.init(getEditorSite(), input);
+ int index = addPage(taskEditor);
+ if (input.getImageDescriptor() != null) {
+ setPageImage(index, CommonImages.getImage(input.getImageDescriptor()));
+ }
+ if (editor instanceof AbstractRepositoryTaskEditor) {
+ ((AbstractRepositoryTaskEditor) editor).setParentEditor(this);
- editorDirtyStateChanged();
- }
+ if (editorInput instanceof RepositoryTaskEditorInput) {
+ RepositoryTaskEditorInput existingInput = (RepositoryTaskEditorInput) editorInput;
+ setPartName(existingInput.getName());
+ } else if (editorInput instanceof NewTaskEditorInput) {
+ String label = ((NewTaskEditorInput) editorInput).getName();
+ setPartName(label);
+ }
+ setPageText(index, factory.getTitle());
- @SuppressWarnings("unchecked")
- IFormPage[] getPages() {
- ArrayList formPages = new ArrayList();
- if (pages != null) {
- for (int i = 0; i < pages.size(); i++) {
- Object page = pages.get(i);
- if (page instanceof IFormPage) {
- formPages.add(page);
+ // TODO review
+ setActivePage(index);
+ }
}
- }
- }
- return (IFormPage[]) formPages.toArray(new IFormPage[formPages.size()]);
- }
-
- /**
- * Refresh editor with new contents (if any)
- */
- @SuppressWarnings("deprecation")
- public void refreshEditorContents() {
- for (IFormPage page : getPages()) {
- if (page instanceof AbstractRepositoryTaskEditor) {
- AbstractRepositoryTaskEditor editor = (AbstractRepositoryTaskEditor) page;
- editor.refreshEditor();
- }
- }
- }
-
- @Override
- public void doSaveAs() {
- throw new UnsupportedOperationException();
- }
- @Override
- public void init(IEditorSite site, IEditorInput input) throws PartInitException {
- // API REVIEW remove the commented parts
- // if (!(input instanceof TaskEditorInput)) {
-// throw new PartInitException("Invalid editor input \"" + input.getClass() + "\"");
-// }
-
- super.init(site, input);
-
- // API REVIEW remove the instanceof check
- if (input instanceof TaskEditorInput) {
- this.taskEditorInput = (TaskEditorInput) input;
- this.task = taskEditorInput.getTask();
- }
-
- setPartName(input.getName());
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return false;
- }
-
- @Override
- public boolean isDirty() {
- for (IFormPage page : getPages()) {
- if (page.isDirty()) {
- return true;
- }
- }
- return false;
- }
-
- @Deprecated
- public void markDirty() {
- firePropertyChange(PROP_DIRTY);
- }
-
- @Override
- public void setFocus() {
- IFormPage page = getActivePageInstance();
- if (page != null) {
- page.setFocus();
- } else {
- super.setFocus();
- }
- }
-
- @Deprecated
- public void setFocusOfActivePage() {
- if (this.getActivePage() > -1) {
- IFormPage page = this.getPages()[this.getActivePage()];
- if (page != null) {
- page.setFocus();
+ // HACK: overwrites if multiple present
+ if (factory.providesOutline()) {
+ contentOutlineProvider = editor;
+ }
+ } catch (Exception e) {
+ StatusHandler.fail(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN,
+ "Could not create editor via factory: " + factory, e));
}
}
- }
-
- @Override
- public void dispose() {
- if (editorBusyIndicator != null) {
- editorBusyIndicator.stop();
- }
- for (IEditorPart part : editors) {
- part.dispose();
- }
- if (activateAction != null) {
- activateAction.dispose();
- }
- super.dispose();
- }
- public TaskEditorInput getTaskEditorInput() {
- return taskEditorInput;
}
@SuppressWarnings("deprecation")
@@ -344,102 +219,120 @@ public class TaskEditor extends SharedHeaderFormEditor {
}
updateTitleImage();
+ updateHeaderToolBar();
}
- @Deprecated
- private void addPage(AbstractTaskEditorFactory factory) {
- IEditorInput editorInput;
- if (taskEditorInput != null && taskEditorInput.getTask() == null) {
- editorInput = new RepositoryTaskEditorInput(taskEditorInput.getTaskRepository(), taskEditorInput.getTask()
- .getTaskId(), "");
- } else {
- editorInput = getEditorInput();
- }
- if (factory.canCreateEditorFor(task) || factory.canCreateEditorFor(editorInput)) {
- try {
- IEditorPart editor = factory.createEditor(this, editorInput);
- IEditorInput input = task != null ? factory.createEditorInput(task) : editorInput;
- if (editor != null && input != null) {
- FormPage taskEditor = (FormPage) editor;
- editor.init(getEditorSite(), input);
- int index = addPage(taskEditor);
- if (input.getImageDescriptor() != null) {
- setPageImage(index, CommonImages.getImage(input.getImageDescriptor()));
- }
- if (editor instanceof AbstractRepositoryTaskEditor) {
- ((AbstractRepositoryTaskEditor) editor).setParentEditor(this);
-
- if (editorInput instanceof RepositoryTaskEditorInput) {
- RepositoryTaskEditorInput existingInput = (RepositoryTaskEditorInput) editorInput;
- setPartName(existingInput.getName());
- } else if (editorInput instanceof NewTaskEditorInput) {
- String label = ((NewTaskEditorInput) editorInput).getName();
- setPartName(label);
- }
- setPageText(index, factory.getTitle());
+ protected void configureContextMenuManager(MenuManager manager) {
+ configureContextMenuManager(manager, null);
+ }
- // TODO review
- setActivePage(index);
- }
- }
+ /**
+ * Configures the standard task editor context menu
+ *
+ * @Since 2.3
+ */
+ public void configureContextMenuManager(MenuManager manager, TextViewer textViewer) {
+ if (manager == null) {
+ return;
+ }
+ IMenuListener listener = new IMenuListener() {
+ public void menuAboutToShow(IMenuManager manager) {
+ contextMenuAboutToShow(manager);
+ }
+ };
+ manager.setRemoveAllWhenShown(true);
+ manager.addMenuListener(listener);
- // HACK: overwrites if multiple present
- if (factory.providesOutline()) {
- contentOutlineProvider = editor;
- }
- } catch (Exception e) {
- StatusHandler.fail(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN,
- "Could not create editor via factory: " + factory, e));
+ if (textViewer != null) {
+ TaskEditorActionContributor contributor = getActionBarContributor();
+ if (contributor != null) {
+ contributor.addTextViewer(textViewer);
}
}
+ }
+ protected void contextMenuAboutToShow(IMenuManager manager) {
+ TaskEditorActionContributor contributor = getActionBarContributor();
+ // IFormPage page = getActivePageInstance();
+ if (contributor != null) {
+ contributor.contextMenuAboutToShow(manager);
+ }
}
- @SuppressWarnings("deprecation")
- private void updateTitleImage() {
- if (task != null) {
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(task.getConnectorKind());
- if (connectorUi != null) {
- ImageDescriptor overlayDescriptor = connectorUi.getTaskKindOverlay(task);
- setTitleImage(CommonImages.getCompositeTaskImage(TasksUiImages.TASK, overlayDescriptor, false));
- } else {
- setTitleImage(CommonImages.getImage(TasksUiImages.TASK));
+ @Override
+ protected void createHeaderContents(IManagedForm headerForm) {
+ getToolkit().decorateFormHeading(headerForm.getForm().getForm());
+ updateHeader();
+ installTitleDrag(getHeaderForm().getForm().getForm());
+ }
+
+ @Override
+ public void dispose() {
+ if (editorBusyIndicator != null) {
+ editorBusyIndicator.stop();
+ }
+ if (activateAction != null) {
+ activateAction.dispose();
+ }
+ super.dispose();
+ }
+
+ @Override
+ public void doSave(IProgressMonitor monitor) {
+ for (IFormPage page : getPages()) {
+ if (page.isDirty()) {
+ page.doSave(monitor);
}
- } else if (getEditorInput() instanceof AbstractRepositoryTaskEditorInput) {
- this.setTitleImage(CommonImages.getImage(TasksUiImages.TASK_REMOTE));
- } else {
- setTitleImage(CommonImages.getImage(TasksUiImages.TASK));
}
+
+ editorDirtyStateChanged();
}
- /**
- * Update the title of the editor
- */
- @Deprecated
- public void updateTitle(String name) {
- // setContentDescription(name);
- setPartName(name);
- setTitleToolTip(name);
- updateFormTitle();
+ @Override
+ public void doSaveAs() {
+ throw new UnsupportedOperationException();
+ }
+
+ private TaskEditorActionContributor getActionBarContributor() {
+ return (TaskEditorActionContributor) getEditorSite().getActionBarContributor();
}
+ @SuppressWarnings("unchecked")
@Override
- public void showBusy(boolean busy) {
- if (busy) {
- if (TasksUiPlugin.isAnimationsEnabled()) {
- editorBusyIndicator.start();
- }
+ public Object getAdapter(Class adapter) {
+ return getAdapterDelgate(adapter);
+ }
+
+ public Object getAdapterDelgate(Class<?> adapter) {
+ // TODO: consider adding: IContentOutlinePage.class.equals(adapter) &&
+ if (contentOutlineProvider != null) {
+ return contentOutlineProvider.getAdapter(adapter);
} else {
- editorBusyIndicator.stop();
+ return super.getAdapter(adapter);
}
- Form form = getHeaderForm().getForm().getForm();
- EditorUtil.setEnabledState(form.getBody(), !busy);
- for (IFormPage page : getPages()) {
- if (page instanceof WorkbenchPart) {
- WorkbenchPart part = (WorkbenchPart) page;
- part.showBusy(busy);
+ }
+
+ @SuppressWarnings("unchecked")
+ IFormPage[] getPages() {
+ ArrayList formPages = new ArrayList();
+ if (pages != null) {
+ for (int i = 0; i < pages.size(); i++) {
+ Object page = pages.get(i);
+ if (page instanceof IFormPage) {
+ formPages.add(page);
+ }
}
}
+ return (IFormPage[]) formPages.toArray(new IFormPage[formPages.size()]);
+ }
+
+ @Deprecated
+ protected IWorkbenchSiteProgressService getProgressService() {
+ Object siteService = getEditorSite().getAdapter(IWorkbenchSiteProgressService.class);
+ if (siteService != null) {
+ return (IWorkbenchSiteProgressService) siteService;
+ }
+ return null;
}
public ISelection getSelection() {
@@ -450,15 +343,36 @@ public class TaskEditor extends SharedHeaderFormEditor {
}
}
+ public TaskEditorInput getTaskEditorInput() {
+ return taskEditorInput;
+ }
+
+ @Deprecated
+ public Form getTopForm() {
+ return this.getHeaderForm().getForm().getForm();
+ }
+
@Override
- protected void createHeaderContents(IManagedForm headerForm) {
- getToolkit().decorateFormHeading(headerForm.getForm().getForm());
- headerForm.getForm().setImage(CommonImages.getImage(TasksUiImages.TASK));
- updateFormTitle();
+ public void init(IEditorSite site, IEditorInput input) throws PartInitException {
+ // API REVIEW remove the commented parts
+ // if (!(input instanceof TaskEditorInput)) {
+// throw new PartInitException("Invalid editor input \"" + input.getClass() + "\"");
+// }
+
+ super.init(site, input);
+
+ // API REVIEW remove the instanceof check
+ if (input instanceof TaskEditorInput) {
+ this.taskEditorInput = (TaskEditorInput) input;
+ this.task = taskEditorInput.getTask();
+ }
+
+ setPartName(input.getName());
}
- private void installTitleDrag(Form form, final RepositoryTaskData taskData) {
- if (taskData != null && taskData.isNew()) {
+ private void installTitleDrag(Form form) {
+ // API 3.0 remove
+ if (task == null) {
return;
}
@@ -473,55 +387,68 @@ public class TaskEditor extends SharedHeaderFormEditor {
titleDragSourceListener = new TaskDragSourceListener(new SelectionProviderAdapter() {
@Override
public ISelection getSelection() {
- if (task != null) {
- return new StructuredSelection(task);
- } else if (taskData != null && !taskData.isNew()) {
- return new StructuredSelection(taskData);
- }
- return null;
+ return new StructuredSelection(task);
}
});
form.addTitleDragSupport(DND.DROP_MOVE | DND.DROP_LINK, transferTypes, titleDragSourceListener);
}
}
- @SuppressWarnings("deprecation")
- protected void updateFormTitle() {
- RepositoryTaskData taskData = null;
- IEditorInput input = getEditorInput();
- if (input instanceof TaskEditorInput) {
- if (task instanceof LocalTask) {
- getHeaderForm().getForm().setText("Task: " + task.getSummary());
- } else if (task != null) {
- setFormHeaderImage(task.getConnectorKind());
- setFormHeaderLabel(task);
+ @Override
+ public boolean isDirty() {
+ for (IFormPage page : getPages()) {
+ if (page.isDirty()) {
+ return true;
}
- } else if (input instanceof RepositoryTaskEditorInput) {
- taskData = ((RepositoryTaskEditorInput) input).getTaskData();
- if (task != null && taskData != null && !taskData.isNew()) {
- setFormHeaderImage(task.getConnectorKind());
- setFormHeaderLabel(task);
- } else {
- if (taskData != null) {
- setFormHeaderImage(taskData.getConnectorKind());
- setFormHeaderLabel(taskData);
- }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean isSaveAsAllowed() {
+ return false;
+ }
+
+ @Deprecated
+ public void markDirty() {
+ firePropertyChange(PROP_DIRTY);
+ }
+
+ /**
+ * Refresh editor with new contents (if any)
+ */
+ @Deprecated
+ public void refreshEditorContents() {
+ for (IFormPage page : getPages()) {
+ if (page instanceof AbstractRepositoryTaskEditor) {
+ AbstractRepositoryTaskEditor editor = (AbstractRepositoryTaskEditor) page;
+ editor.refreshEditor();
}
}
- installTitleDrag(getHeaderForm().getForm().getForm(), taskData);
}
- private void setFormHeaderImage(String repositoryKind) {
- ImageDescriptor overlay = TasksUiPlugin.getDefault().getOverlayIcon(repositoryKind);
- Image image = CommonImages.getImageWithOverlay(TasksUiImages.REPOSITORY, overlay, false, false);
- if (getHeaderForm() != null) {
- getHeaderForm().getForm().setImage(image);
+ @Override
+ public void setFocus() {
+ IFormPage page = getActivePageInstance();
+ if (page != null) {
+ page.setFocus();
+ } else {
+ super.setFocus();
}
}
@Deprecated
- public Form getTopForm() {
- return this.getHeaderForm().getForm().getForm();
+ public void setFocusOfActivePage() {
+ if (this.getActivePage() > -1) {
+ IFormPage page = this.getPages()[this.getActivePage()];
+ if (page != null) {
+ page.setFocus();
+ }
+ }
+ }
+
+ public void setMessage(String message, int type) {
+ setMessage(message, type, null);
}
/**
@@ -543,62 +470,60 @@ public class TaskEditor extends SharedHeaderFormEditor {
}
}
- public void setMessage(String message, int type) {
- setMessage(message, type, null);
- }
-
- protected IWorkbenchSiteProgressService getProgressService() {
- Object siteService = getEditorSite().getAdapter(IWorkbenchSiteProgressService.class);
- if (siteService != null) {
- return (IWorkbenchSiteProgressService) siteService;
- }
- return null;
+ /**
+ * @since 3.0
+ */
+ public void setStatus(String message, final String title, final IStatus status) {
+ setMessage(message, IMessageProvider.ERROR, new HyperlinkAdapter() {
+ @Override
+ public void linkActivated(HyperlinkEvent event) {
+ StatusHandler.displayStatus(title, status);
+ }
+ });
}
- private void setFormHeaderLabel(RepositoryTaskData taskData) {
- String kindLabel = taskData.getTaskKind();
- String idLabel = taskData.getTaskKey();
-
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(taskData.getConnectorKind());
- if (connectorUi != null && task != null) {
- kindLabel = connectorUi.getTaskKindLabel(task);
- if (taskData.isNew()) {
- kindLabel = "New " + kindLabel;
- idLabel = "";
+ @Override
+ public void showBusy(boolean busy) {
+ if (busy) {
+ if (TasksUiPlugin.isAnimationsEnabled()) {
+ editorBusyIndicator.start();
}
+ } else {
+ editorBusyIndicator.stop();
}
-
- if (getHeaderForm().getForm() != null) {
- if (idLabel != null) {
- getHeaderForm().getForm().setText(kindLabel + " " + idLabel);
- } else {
- getHeaderForm().getForm().setText(kindLabel);
+ Form form = getHeaderForm().getForm().getForm();
+ EditorUtil.setEnabledState(form.getBody(), !busy);
+ for (IFormPage page : getPages()) {
+ if (page instanceof WorkbenchPart) {
+ WorkbenchPart part = (WorkbenchPart) page;
+ part.showBusy(busy);
}
}
}
- private void setFormHeaderLabel(AbstractTask repositoryTask) {
- AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(repositoryTask.getConnectorKind());
- String kindLabel = "";
- if (connectorUi != null) {
- kindLabel = connectorUi.getTaskKindLabel(repositoryTask);
- }
-
- String idLabel = repositoryTask.getTaskKey();
-
- if (idLabel != null) {
- if (getHeaderForm().getForm() != null) {
- getHeaderForm().getForm().setText(kindLabel + " " + idLabel);
+ @SuppressWarnings("deprecation")
+ private void updateHeader() {
+ IEditorInput input = getEditorInput();
+ if (input instanceof TaskEditorInput) {
+ updateHeaderImage(task.getConnectorKind());
+ updateHeaderLabel(task);
+ } else if (input instanceof RepositoryTaskEditorInput) {
+ RepositoryTaskData taskData = ((RepositoryTaskEditorInput) input).getTaskData();
+ if (task != null) {
+ updateHeaderImage(task.getConnectorKind());
+ updateHeaderLabel(task);
+ } else if (taskData != null) {
+ updateHeaderImage(taskData.getConnectorKind());
+ updateHeaderLabel(taskData);
}
- } else if (getHeaderForm() != null && getHeaderForm().getForm() != null) {
- getHeaderForm().getForm().setText(kindLabel);
}
+ installTitleDrag(getHeaderForm().getForm().getForm());
}
/**
* @since 3.0
*/
- public void updateHeader() {
+ public void updateHeaderToolBar() {
Form form = getHeaderForm().getForm().getForm();
IToolBarManager toolBarManager = form.getToolBarManager();
@@ -621,4 +546,84 @@ public class TaskEditor extends SharedHeaderFormEditor {
toolBarManager.update(true);
}
+ private void updateHeaderImage(String connectorKind) {
+ if (LocalRepositoryConnector.CONNECTOR_KIND.equals(connectorKind)) {
+ getHeaderForm().getForm().setImage(CommonImages.getImage(TasksUiImages.TASK));
+ } else {
+ ImageDescriptor overlay = TasksUiPlugin.getDefault().getOverlayIcon(connectorKind);
+ Image image = CommonImages.getImageWithOverlay(TasksUiImages.REPOSITORY, overlay, false, false);
+ getHeaderForm().getForm().setImage(image);
+ }
+ }
+
+ private void updateHeaderLabel(AbstractTask task) {
+ if (task instanceof LocalTask) {
+ getHeaderForm().getForm().setText("Task: " + task.getSummary());
+ } else {
+ AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(task.getConnectorKind());
+ String kindLabel = "";
+ if (connectorUi != null) {
+ kindLabel = connectorUi.getTaskKindLabel(task);
+ }
+
+ String idLabel = task.getTaskKey();
+ if (idLabel != null) {
+ getHeaderForm().getForm().setText(kindLabel + " " + idLabel);
+ } else {
+ getHeaderForm().getForm().setText(kindLabel);
+ }
+ }
+ }
+
+ @Deprecated
+ private void updateHeaderLabel(RepositoryTaskData taskData) {
+ String kindLabel = taskData.getTaskKind();
+ String idLabel = taskData.getTaskKey();
+
+ AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(taskData.getConnectorKind());
+ if (connectorUi != null && task != null) {
+ kindLabel = connectorUi.getTaskKindLabel(task);
+ if (taskData.isNew()) {
+ kindLabel = "New " + kindLabel;
+ idLabel = "";
+ }
+ }
+
+ if (getHeaderForm().getForm() != null) {
+ if (idLabel != null) {
+ getHeaderForm().getForm().setText(kindLabel + " " + idLabel);
+ } else {
+ getHeaderForm().getForm().setText(kindLabel);
+ }
+ }
+ }
+
+ /**
+ * Update the title of the editor
+ */
+ @Deprecated
+ public void updateTitle(String name) {
+ // setContentDescription(name);
+ setPartName(name);
+ setTitleToolTip(name);
+ updateHeader();
+ }
+
+ @SuppressWarnings("deprecation")
+ private void updateTitleImage() {
+ if (task != null) {
+ AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(task.getConnectorKind());
+ if (connectorUi != null) {
+ ImageDescriptor overlayDescriptor = connectorUi.getTaskKindOverlay(task);
+ setTitleImage(CommonImages.getCompositeTaskImage(TasksUiImages.TASK, overlayDescriptor, false));
+ } else {
+ setTitleImage(CommonImages.getImage(TasksUiImages.TASK));
+ }
+ } else if (getEditorInput() instanceof AbstractRepositoryTaskEditorInput) {
+ setTitleImage(CommonImages.getImage(TasksUiImages.TASK_REMOTE));
+ } else {
+ setTitleImage(CommonImages.getImage(TasksUiImages.TASK));
+ }
+ }
+
}

Back to the top