diff options
author | Caitlin Matthew | 2013-08-07 23:08:08 +0000 |
---|---|---|
committer | Sam Davis | 2013-09-30 18:45:35 +0000 |
commit | 4dff02370d10c265b597e6cd4cf3931e084852d6 (patch) | |
tree | 4a463de55dfd68109ee1a68943d4596d3708a2ec /org.eclipse.mylyn.tasks.ui | |
parent | b25ac21444f9250945fa89c2a9bb20cb8c8d67b6 (diff) | |
download | org.eclipse.mylyn.tasks-4dff02370d10c265b597e6cd4cf3931e084852d6.tar.gz org.eclipse.mylyn.tasks-4dff02370d10c265b597e6cd4cf3931e084852d6.tar.xz org.eclipse.mylyn.tasks-4dff02370d10c265b597e6cd4cf3931e084852d6.zip |
414597: allow easier reuse of TaskListFilteredTree outside of
TaskListView
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=414597
Change-Id: I0c725bc0ba514b008fd21a826f16e3c4ec6f6d09
Signed-off-by: Caitlin Matthew <caitlin.matthew@tasktop.com>
Also-by: Sam Davis <sam.davis@tasktop.com>
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui')
7 files changed, 259 insertions, 175 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/AbstractTaskListContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/AbstractTaskListContentProvider.java index 113683bfb..6d0990ebf 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/AbstractTaskListContentProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/AbstractTaskListContentProvider.java @@ -21,9 +21,9 @@ import org.eclipse.jface.viewers.ITreePathContentProvider; */ public abstract class AbstractTaskListContentProvider implements ITreeContentProvider, ITreePathContentProvider { - protected TaskListView taskListView; + protected AbstractTaskListView taskListView; - public AbstractTaskListContentProvider(TaskListView view) { + public AbstractTaskListContentProvider(AbstractTaskListView view) { this.taskListView = view; } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/AbstractTaskListView.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/AbstractTaskListView.java new file mode 100644 index 000000000..bd302e3b2 --- /dev/null +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/AbstractTaskListView.java @@ -0,0 +1,40 @@ +/******************************************************************************* + * Copyright (c) 2013 Tasktop Technologies and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Tasktop Technologies - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylyn.internal.tasks.ui.views; + +import java.util.Set; + +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.mylyn.internal.tasks.ui.AbstractTaskListFilter; +import org.eclipse.ui.part.ViewPart; + +public abstract class AbstractTaskListView extends ViewPart { + + public abstract Set<AbstractTaskListFilter> getFilters(); + + public abstract TaskListFilteredTree getFilteredTree(); + + public abstract void refresh(); + + public abstract boolean isFocusedMode(); + + public abstract TreeViewer getViewer(); + + public abstract boolean isScheduledPresentation(); + + protected abstract void expandToActiveTasks(); + + protected abstract void updateToolTip(boolean force); + + protected abstract boolean isAutoExpandMode(); + +} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/CustomTaskListDecorationDrawer.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/CustomTaskListDecorationDrawer.java index 6d5384ba8..95aafeab3 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/CustomTaskListDecorationDrawer.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/CustomTaskListDecorationDrawer.java @@ -241,7 +241,7 @@ public class CustomTaskListDecorationDrawer implements Listener { } } - private void drawActivationImage(final int activationImageOffset, Event event, Image image) { + protected void drawActivationImage(final int activationImageOffset, Event event, Image image) { Rectangle rect = image.getBounds(); int offset = Math.max(0, (event.height - rect.height) / 2); event.gc.drawImage(image, activationImageOffset, event.y + offset); @@ -316,4 +316,4 @@ public class CustomTaskListDecorationDrawer implements Listener { this.focusedMode = focusedMode; } -}
\ No newline at end of file +} diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java index 5aa5e9192..dd11b0163 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListContentProvider.java @@ -45,7 +45,7 @@ public class TaskListContentProvider extends AbstractTaskListContentProvider { protected static Object[] EMPTY_ARRRY = new Object[0]; - public TaskListContentProvider(TaskListView taskListView) { + public TaskListContentProvider(AbstractTaskListView taskListView) { super(taskListView); } diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListRefreshJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListRefreshJob.java new file mode 100644 index 000000000..a4de21e86 --- /dev/null +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListRefreshJob.java @@ -0,0 +1,195 @@ +/******************************************************************************* + * Copyright (c) 2013 Tasktop Technologies and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Tasktop Technologies - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylyn.internal.tasks.ui.views; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.TreePath; +import org.eclipse.jface.viewers.TreeSelection; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.mylyn.commons.core.StatusHandler; +import org.eclipse.mylyn.commons.workbench.DelayedRefreshJob; +import org.eclipse.mylyn.internal.tasks.core.AbstractTask; +import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer; +import org.eclipse.mylyn.internal.tasks.core.ITaskListChangeListener; +import org.eclipse.mylyn.internal.tasks.core.TaskContainerDelta; +import org.eclipse.mylyn.internal.tasks.core.UncategorizedTaskContainer; +import org.eclipse.mylyn.internal.tasks.core.UnmatchedTaskContainer; +import org.eclipse.mylyn.internal.tasks.core.UnsubmittedTaskContainer; +import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; +import org.eclipse.mylyn.internal.tasks.ui.editors.TaskListChangeAdapter; +import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; +import org.eclipse.mylyn.internal.tasks.ui.util.TreeWalker; +import org.eclipse.mylyn.internal.tasks.ui.util.TreeWalker.TreeVisitor; +import org.eclipse.mylyn.tasks.core.ITaskContainer; +import org.eclipse.swt.SWTException; +import org.eclipse.swt.widgets.TreeItem; +import org.eclipse.ui.PlatformUI; + +public final class TaskListRefreshJob extends DelayedRefreshJob { + private final AbstractTaskListView taskListView; + + private final ITaskListChangeListener TASKLIST_CHANGE_LISTENER = new TaskListChangeAdapter() { + + @Override + public void containersChanged(final Set<TaskContainerDelta> deltas) { + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + for (TaskContainerDelta taskContainerDelta : deltas) { + if (taskListView.isScheduledPresentation()) { + // TODO: implement refresh policy for scheduled presentation + refresh(); + } else { + switch (taskContainerDelta.getKind()) { + case ROOT: + refresh(); + break; + case ADDED: + case REMOVED: + if (isFilteredContainer(taskContainerDelta)) { + // container may have changed visibility, refresh root + refresh(); + } else { + if (taskContainerDelta.getElement() != null) { + refreshElement(taskContainerDelta.getElement()); + } + if (taskContainerDelta.getParent() != null) { + refreshElement(taskContainerDelta.getParent()); + } else { + // element was added/removed from the root + refresh(); + } + } + break; + case CONTENT: + refreshElement(taskContainerDelta.getElement()); + } + + } + } + } + + private boolean isFilteredContainer(TaskContainerDelta taskContainerDelta) { + ITaskContainer parent = taskContainerDelta.getParent(); + return parent instanceof UnsubmittedTaskContainer || parent instanceof UnmatchedTaskContainer + || parent instanceof UncategorizedTaskContainer; + } + }); + } + }; + + public TaskListRefreshJob(AbstractTaskListView taskListView, TreeViewer treeViewer, String name) { + super(treeViewer, name); + this.taskListView = taskListView; + TasksUiInternal.getTaskList().addChangeListener(TASKLIST_CHANGE_LISTENER); + } + + @Override + protected void doRefresh(Object[] items) { + TreePath selection = preserveSelection(); + + if (items == null) { + viewer.refresh(true); + } else if (items.length > 0) { + try { + if (taskListView.isFocusedMode()) { + Set<Object> children = new HashSet<Object>(Arrays.asList(items)); + Set<AbstractTaskContainer> parents = new HashSet<AbstractTaskContainer>(); + for (Object item : items) { + if (item instanceof AbstractTask) { + parents.addAll(((AbstractTask) item).getParentContainers()); + } + } + // 1. refresh parents + children.removeAll(parents); + for (AbstractTaskContainer parent : parents) { + viewer.refresh(parent, false); + // only refresh label of parent + viewer.update(parent, null); + } + // 2. refresh children + for (Object item : children) { + viewer.refresh(item, true); + } + // 3. update states of all changed items + for (Object item : items) { + updateExpansionState(item); + } + } else { + Set<AbstractTaskContainer> parents = new HashSet<AbstractTaskContainer>(); + for (Object item : items) { + if (item instanceof AbstractTask) { + parents.addAll(((AbstractTask) item).getParentContainers()); + } + viewer.refresh(item, true); + updateExpansionState(item); + } + // refresh labels of parents for task activation or incoming indicators + for (AbstractTaskContainer parent : parents) { + // only refresh label + viewer.update(parent, null); + } + } + } catch (SWTException e) { + StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Failed to refresh viewer: " //$NON-NLS-1$ + + viewer, e)); + } + } + + taskListView.updateToolTip(false); + restoreSelection(selection); + } + + private TreePath preserveSelection() { + if (viewer instanceof TreeViewer) { + TreeViewer treeViewer = (TreeViewer) viewer; + // in case the refresh removes the currently selected item, + // remember the next item in the tree to restore the selection + // TODO: consider making this optional + TreeItem[] selection = treeViewer.getTree().getSelection(); + if (selection.length > 0) { + TreeWalker treeWalker = new TreeWalker(treeViewer); + return treeWalker.walk(new TreeVisitor() { + @Override + public boolean visit(Object object) { + return true; + } + }, selection[selection.length - 1]); + } + } + return null; + } + + private void restoreSelection(TreePath treePath) { + if (treePath != null) { + ISelection newSelection = viewer.getSelection(); + if (newSelection == null || newSelection.isEmpty()) { + viewer.setSelection(new TreeSelection(treePath), true); + } + } + } + + protected void updateExpansionState(Object item) { + if (taskListView.isFocusedMode() && taskListView.isAutoExpandMode()) { + taskListView.getViewer().expandToLevel(item, 3); + } + } + + public void dispose() { + TasksUiInternal.getTaskList().removeChangeListener(TASKLIST_CHANGE_LISTENER); + } +}
\ No newline at end of file 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 0a61b33bc..a7cc34d77 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 @@ -15,7 +15,6 @@ package org.eclipse.mylyn.internal.tasks.ui.views; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; @@ -53,24 +52,16 @@ import org.eclipse.jface.viewers.OpenEvent; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TextCellEditor; -import org.eclipse.jface.viewers.TreePath; -import org.eclipse.jface.viewers.TreeSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.mylyn.commons.core.StatusHandler; import org.eclipse.mylyn.commons.ui.CommonImages; import org.eclipse.mylyn.commons.ui.PlatformUiUtil; import org.eclipse.mylyn.commons.ui.compatibility.CommonThemes; -import org.eclipse.mylyn.commons.workbench.DelayedRefreshJob; import org.eclipse.mylyn.commons.workbench.GradientDrawer; import org.eclipse.mylyn.internal.commons.notifications.feed.ServiceMessage; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer; -import org.eclipse.mylyn.internal.tasks.core.ITaskListChangeListener; import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants; -import org.eclipse.mylyn.internal.tasks.core.TaskContainerDelta; -import org.eclipse.mylyn.internal.tasks.core.UncategorizedTaskContainer; -import org.eclipse.mylyn.internal.tasks.core.UnmatchedTaskContainer; -import org.eclipse.mylyn.internal.tasks.core.UnsubmittedTaskContainer; import org.eclipse.mylyn.internal.tasks.ui.AbstractTaskListFilter; import org.eclipse.mylyn.internal.tasks.ui.CategorizedPresentation; import org.eclipse.mylyn.internal.tasks.ui.ITasksUiPreferenceConstants; @@ -95,7 +86,6 @@ import org.eclipse.mylyn.internal.tasks.ui.actions.ShowNonMatchingSubtasksAction import org.eclipse.mylyn.internal.tasks.ui.actions.SynchronizeAutomaticallyAction; import org.eclipse.mylyn.internal.tasks.ui.actions.TaskListSortAction; import org.eclipse.mylyn.internal.tasks.ui.actions.TaskListViewActionGroup; -import org.eclipse.mylyn.internal.tasks.ui.editors.TaskListChangeAdapter; import org.eclipse.mylyn.internal.tasks.ui.notifications.TaskListServiceMessageControl; import org.eclipse.mylyn.internal.tasks.ui.search.AbstractSearchHandler; import org.eclipse.mylyn.internal.tasks.ui.search.SearchUtil; @@ -103,8 +93,6 @@ import org.eclipse.mylyn.internal.tasks.ui.util.SortCriterion; import org.eclipse.mylyn.internal.tasks.ui.util.SortCriterion.SortKey; import org.eclipse.mylyn.internal.tasks.ui.util.TaskDragSourceListener; import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; -import org.eclipse.mylyn.internal.tasks.ui.util.TreeWalker; -import org.eclipse.mylyn.internal.tasks.ui.util.TreeWalker.TreeVisitor; import org.eclipse.mylyn.tasks.core.IRepositoryElement; import org.eclipse.mylyn.tasks.core.ITask; import org.eclipse.mylyn.tasks.core.ITask.PriorityLevel; @@ -121,7 +109,6 @@ import org.eclipse.mylyn.tasks.ui.TasksUiImages; import org.eclipse.mylyn.tasks.ui.editors.TaskEditorInput; import org.eclipse.swt.SWT; import org.eclipse.swt.SWTError; -import org.eclipse.swt.SWTException; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.FileTransfer; import org.eclipse.swt.dnd.RTFTransfer; @@ -180,7 +167,6 @@ import org.eclipse.ui.part.IShowInSource; import org.eclipse.ui.part.IShowInTarget; import org.eclipse.ui.part.IShowInTargetList; import org.eclipse.ui.part.ShowInContext; -import org.eclipse.ui.part.ViewPart; import org.eclipse.ui.progress.IWorkbenchSiteProgressService; import org.eclipse.ui.themes.IThemeManager; @@ -190,105 +176,7 @@ import org.eclipse.ui.themes.IThemeManager; * @author Eugene Kuleshov * @author David Green */ -public class TaskListView extends ViewPart implements IPropertyChangeListener, IShowInTarget { - - private final class TaskListRefreshJob extends DelayedRefreshJob { - - private TaskListRefreshJob(TreeViewer treeViewer, String name) { - super(treeViewer, name); - } - - @Override - protected void doRefresh(Object[] items) { - TreePath selection = preserveSelection(); - - if (items == null) { - viewer.refresh(true); - } else if (items.length > 0) { - try { - if (TaskListView.this.isFocusedMode()) { - Set<Object> children = new HashSet<Object>(Arrays.asList(items)); - Set<AbstractTaskContainer> parents = new HashSet<AbstractTaskContainer>(); - for (Object item : items) { - if (item instanceof AbstractTask) { - parents.addAll(((AbstractTask) item).getParentContainers()); - } - } - // 1. refresh parents - children.removeAll(parents); - for (AbstractTaskContainer parent : parents) { - viewer.refresh(parent, false); - // only refresh label of parent - viewer.update(parent, null); - } - // 2. refresh children - for (Object item : children) { - viewer.refresh(item, true); - } - // 3. update states of all changed items - for (Object item : items) { - updateExpansionState(item); - } - } else { - Set<AbstractTaskContainer> parents = new HashSet<AbstractTaskContainer>(); - for (Object item : items) { - if (item instanceof AbstractTask) { - parents.addAll(((AbstractTask) item).getParentContainers()); - } - viewer.refresh(item, true); - updateExpansionState(item); - } - // refresh labels of parents for task activation or incoming indicators - for (AbstractTaskContainer parent : parents) { - // only refresh label - viewer.update(parent, null); - } - } - } catch (SWTException e) { - StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, "Failed to refresh viewer: " //$NON-NLS-1$ - + viewer, e)); - } - } - - updateToolTip(false); - restoreSelection(selection); - } - - private TreePath preserveSelection() { - if (viewer instanceof TreeViewer) { - TreeViewer treeViewer = (TreeViewer) viewer; - // in case the refresh removes the currently selected item, - // remember the next item in the tree to restore the selection - // TODO: consider making this optional - TreeItem[] selection = treeViewer.getTree().getSelection(); - if (selection.length > 0) { - TreeWalker treeWalker = new TreeWalker(treeViewer); - return treeWalker.walk(new TreeVisitor() { - @Override - public boolean visit(Object object) { - return true; - } - }, selection[selection.length - 1]); - } - } - return null; - } - - private void restoreSelection(TreePath treePath) { - if (treePath != null) { - ISelection newSelection = viewer.getSelection(); - if (newSelection == null || newSelection.isEmpty()) { - viewer.setSelection(new TreeSelection(treePath), true); - } - } - } - - protected void updateExpansionState(Object item) { - if (TaskListView.this.isFocusedMode() && isAutoExpandMode()) { - TaskListView.this.getViewer().expandToLevel(item, 3); - } - } - } +public class TaskListView extends AbstractTaskListView implements IPropertyChangeListener, IShowInTarget { private static final String ID_SEPARATOR_FILTERS = "filters"; //$NON-NLS-1$ @@ -488,55 +376,6 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I }; - private final ITaskListChangeListener TASKLIST_CHANGE_LISTENER = new TaskListChangeAdapter() { - - @Override - public void containersChanged(final Set<TaskContainerDelta> deltas) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - public void run() { - for (TaskContainerDelta taskContainerDelta : deltas) { - if (isScheduledPresentation()) { - // TODO: implement refresh policy for scheduled presentation - refreshJob.refresh(); - } else { - switch (taskContainerDelta.getKind()) { - case ROOT: - refreshJob.refresh(); - break; - case ADDED: - case REMOVED: - if (isFilteredContainer(taskContainerDelta)) { - // container may have changed visibility, refresh root - refreshJob.refresh(); - } else { - if (taskContainerDelta.getElement() != null) { - refreshJob.refreshElement(taskContainerDelta.getElement()); - } - if (taskContainerDelta.getParent() != null) { - refreshJob.refreshElement(taskContainerDelta.getParent()); - } else { - // element was added/removed from the root - refreshJob.refresh(); - } - } - break; - case CONTENT: - refreshJob.refreshElement(taskContainerDelta.getElement()); - } - - } - } - } - - private boolean isFilteredContainer(TaskContainerDelta taskContainerDelta) { - ITaskContainer parent = taskContainerDelta.getParent(); - return parent instanceof UnsubmittedTaskContainer || parent instanceof UnmatchedTaskContainer - || parent instanceof UncategorizedTaskContainer; - } - }); - } - }; - private final IPropertyChangeListener THEME_CHANGE_LISTENER = new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { if (event.getProperty().equals(IThemeManager.CHANGE_CURRENT_THEME) @@ -608,7 +447,9 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I TasksUiPlugin.getDefault().getServiceMessageManager().removeServiceMessageListener(serviceMessageControl); TasksUiPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(tasksUiPreferenceListener); - TasksUiInternal.getTaskList().removeChangeListener(TASKLIST_CHANGE_LISTENER); + if (refreshJob != null) { + refreshJob.dispose(); + } TasksUiPlugin.getTaskActivityManager().removeActivityListener(TASK_ACTIVITY_LISTENER); TasksUiPlugin.getTaskActivityManager().removeActivationListener(TASK_ACTIVATION_LISTENER); @@ -835,7 +676,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I getViewer().getTree().setHeaderVisible(false); getViewer().setUseHashlookup(true); - refreshJob = new TaskListRefreshJob(getViewer(), "Task List Refresh"); //$NON-NLS-1$ + refreshJob = new TaskListRefreshJob(this, getViewer(), "Task List Refresh"); //$NON-NLS-1$ configureColumns(columnNames, columnWidths); @@ -978,7 +819,6 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I PlatformUI.getWorkbench().getWorkingSetManager().addPropertyChangeListener(this); TasksUiPlugin.getTaskActivityManager().addActivityListener(TASK_ACTIVITY_LISTENER); TasksUiPlugin.getTaskActivityManager().addActivationListener(TASK_ACTIVATION_LISTENER); - TasksUiInternal.getTaskList().addChangeListener(TASKLIST_CHANGE_LISTENER); TasksUiPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(tasksUiPreferenceListener); @@ -1168,7 +1008,8 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I new TaskListDropAdapter(getViewer())); } - void expandToActiveTasks() { + @Override + protected void expandToActiveTasks() { final IWorkbench workbench = PlatformUI.getWorkbench(); workbench.getDisplay().asyncExec(new Runnable() { public void run() { @@ -1332,6 +1173,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I } } + @Override public void refresh() { refreshJob.refreshNow(); } @@ -1340,6 +1182,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I return taskListToolTip; } + @Override public TreeViewer getViewer() { return filteredTree.getViewer(); } @@ -1375,7 +1218,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I boolean isInRenameAction = false; - private DelayedRefreshJob refreshJob; + private TaskListRefreshJob refreshJob; private boolean itemNotFoundExceptionLogged; @@ -1457,6 +1300,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I return drilledIntoCategory; } + @Override public TaskListFilteredTree getFilteredTree() { return filteredTree; } @@ -1523,6 +1367,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I return images; } + @Override public Set<AbstractTaskListFilter> getFilters() { return filters; } @@ -1555,15 +1400,18 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I //filterArchiveCategory.setEnabled(enabled); } + @Override public boolean isScheduledPresentation() { return currentPresentation != null && ScheduledPresentation.ID.equals(currentPresentation.getId()); } + @Override public boolean isFocusedMode() { return focusedMode; } - private boolean isAutoExpandMode() { + @Override + protected boolean isAutoExpandMode() { return TasksUiPlugin.getDefault() .getPreferenceStore() .getBoolean(ITasksUiPreferenceConstants.AUTO_EXPAND_TASK_LIST); @@ -1663,7 +1511,8 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I } } - private void updateToolTip(boolean force) { + @Override + protected void updateToolTip(boolean force) { if (taskListToolTip != null && taskListToolTip.isVisible()) { if (!force && taskListToolTip.isTriggeredByMouse()) { return; diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskScheduleContentProvider.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskScheduleContentProvider.java index 960846c3f..571218e1a 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskScheduleContentProvider.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskScheduleContentProvider.java @@ -67,7 +67,7 @@ public class TaskScheduleContentProvider extends TaskListContentProvider impleme private final Completed completed; - public TaskScheduleContentProvider(TaskListView taskListView) { + public TaskScheduleContentProvider(AbstractTaskListView taskListView) { super(taskListView); this.taskActivityManager = TasksUiPlugin.getTaskActivityManager(); taskActivityManager.addActivityListener(this); |