Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java')
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java55
1 files changed, 41 insertions, 14 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java
index 7ddd43c52..a39358d37 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListView.java
@@ -53,6 +53,7 @@ import org.eclipse.jface.window.Window;
import org.eclipse.mylyn.commons.core.StatusHandler;
import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages;
import org.eclipse.mylyn.internal.provisional.commons.ui.CommonThemes;
+import org.eclipse.mylyn.internal.provisional.commons.ui.DelayedRefreshJob;
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
import org.eclipse.mylyn.internal.tasks.core.AbstractTaskCategory;
import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer;
@@ -110,6 +111,7 @@ import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel;
import org.eclipse.mylyn.tasks.ui.TasksUi;
import org.eclipse.mylyn.tasks.ui.editors.TaskEditorInput;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.SWTException;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.FileTransfer;
import org.eclipse.swt.dnd.RTFTransfer;
@@ -173,6 +175,44 @@ import org.eclipse.ui.themes.IThemeManager;
*/
public class TaskListView extends ViewPart implements IPropertyChangeListener {
+ private final class TaskListRefreshJob extends DelayedRefreshJob {
+
+ private TaskListRefreshJob(TreeViewer treeViewer, String name) {
+ super(treeViewer, name);
+ }
+
+ @Override
+ protected void refresh(Object[] items) {
+ if (items == null) {
+ treeViewer.refresh(true);
+ } else if (items.length > 0) {
+ try {
+ for (Object item : items) {
+ if (item instanceof ITask) {
+ ITask task = (ITask) item;
+ treeViewer.refresh(task, true);
+ } else {
+ treeViewer.refresh(item, true);
+ }
+ updateExpansionState(item);
+ }
+ } catch (SWTException e) {
+ StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Failed to refresh viewer: "
+ + treeViewer, e));
+ }
+ }
+
+ updateToolTip(false);
+ }
+
+ @Override
+ protected void updateExpansionState(Object item) {
+ if (TaskListView.this.isFocusedMode()) {
+ TaskListView.this.getViewer().expandToLevel(item, 3);
+ }
+ }
+ }
+
public static final String ID = "org.eclipse.mylyn.tasks.ui.views.tasks";
public static final String LABEL_VIEW = "Tasks";
@@ -763,20 +803,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener {
getViewer().getTree().setHeaderVisible(false);
getViewer().setUseHashlookup(true);
- refreshJob = new DelayedRefreshJob(getViewer(), "Task List Refresh") {
- @Override
- protected void refresh(Object[] items) {
- super.refresh(items);
- updateToolTip(false);
- }
-
- @Override
- protected void updateExpansionState(Object item) {
- if (TaskListView.this.isFocusedMode()) {
- TaskListView.this.getViewer().expandToLevel(item, 3);
- }
- }
- };
+ refreshJob = new TaskListRefreshJob(getViewer(), "Task List Refresh");
configureColumns(columnNames, columnWidths);

Back to the top