diff options
author | fbecker | 2010-02-20 19:03:26 +0000 |
---|---|---|
committer | fbecker | 2010-02-20 19:03:26 +0000 |
commit | 49254ec98ad169d2229879550400ca1c5d886b4f (patch) | |
tree | e15f3a983b1e513de042f024fd161958ba4311ee | |
parent | 7f6da34266984e4b90dafdf3c73eacb97dd59449 (diff) | |
download | org.eclipse.mylyn.tasks-49254ec98ad169d2229879550400ca1c5d886b4f.tar.gz org.eclipse.mylyn.tasks-49254ec98ad169d2229879550400ca1c5d886b4f.tar.xz org.eclipse.mylyn.tasks-49254ec98ad169d2229879550400ca1c5d886b4f.zip |
ASSIGNED - bug 303411: cleanup of CustomTaskListDecorationDrawer
https://bugs.eclipse.org/bugs/show_bug.cgi?id=303411
3 files changed, 73 insertions, 31 deletions
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 061be3286..58bdd9a10 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 @@ -39,10 +39,11 @@ import org.eclipse.swt.widgets.TreeItem; /** * @author Mik Kersten + * @author Frank Becker */ -class CustomTaskListDecorationDrawer implements Listener { +public class CustomTaskListDecorationDrawer implements Listener { - private final TaskListView taskListView; + private final TaskListDelayedRefreshJob delayedRefreshJob; private final int activationImageOffset; @@ -61,27 +62,34 @@ class CustomTaskListDecorationDrawer implements Listener { private boolean useStrikethroughForCompleted; + private boolean synchronizationOverlaid; + private final org.eclipse.jface.util.IPropertyChangeListener PROPERTY_LISTENER = new org.eclipse.jface.util.IPropertyChangeListener() { public void propertyChange(org.eclipse.jface.util.PropertyChangeEvent event) { if (event.getProperty().equals(ITasksUiPreferenceConstants.USE_STRIKETHROUGH_FOR_COMPLETED)) { if (event.getNewValue() instanceof Boolean) { useStrikethroughForCompleted = (Boolean) event.getNewValue(); - taskListView.refresh(); + delayedRefreshJob.refresh(); + } + } else if (event.getProperty().equals(ITasksUiPreferenceConstants.OVERLAYS_INCOMING_TIGHT)) { + if (event.getNewValue() instanceof Boolean) { + synchronizationOverlaid = (Boolean) event.getNewValue(); + delayedRefreshJob.refresh(); } } } }; - CustomTaskListDecorationDrawer(TaskListView taskListView, int activationImageOffset) { - this.taskListView = taskListView; + CustomTaskListDecorationDrawer(TaskListDelayedRefreshJob delayedRefreshJob, int activationImageOffset) { + this.delayedRefreshJob = delayedRefreshJob; this.activationImageOffset = activationImageOffset; this.lastClippingArea = new Rectangle(0, 0, 0, 0); this.tweakClipping = PlatformUtil.isPaintItemClippingRequired(); this.platformSpecificSquish = PlatformUtil.getTreeItemSquish(); - this.taskListView.synchronizationOverlaid = TasksUiPlugin.getDefault().getPluginPreferences().getBoolean( + this.synchronizationOverlaid = TasksUiPlugin.getDefault().getPreferenceStore().getBoolean( ITasksUiPreferenceConstants.OVERLAYS_INCOMING_TIGHT); - this.useStrikethroughForCompleted = TasksUiPlugin.getDefault().getPluginPreferences().getBoolean( + this.useStrikethroughForCompleted = TasksUiPlugin.getDefault().getPreferenceStore().getBoolean( ITasksUiPreferenceConstants.USE_STRIKETHROUGH_FOR_COMPLETED); TasksUiPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(PROPERTY_LISTENER); } @@ -129,7 +137,7 @@ class CustomTaskListDecorationDrawer implements Listener { // if (activationImage != null) { // drawActivationImage(activationImageOffset, event, activationImage); // } -// if (!this.taskListView.synchronizationOverlaid) { +// if (!this.synchronizationOverlaid) { // if (data instanceof ITaskContainer) { // drawSyncronizationImage((ITaskContainer) data, event); // } @@ -176,19 +184,18 @@ class CustomTaskListDecorationDrawer implements Listener { Image image = null; int offsetX = PlatformUtil.getIncomingImageOffset(); int offsetY = (event.height / 2) - 5; - if (taskListView.synchronizationOverlaid) { + if (synchronizationOverlaid) { offsetX = event.x + 18 - platformSpecificSquish; offsetY += 2; } if (element != null) { if (element instanceof ITask) { - image = CommonImages.getImage(getSynchronizationImageDescriptor(element, - taskListView.synchronizationOverlaid)); + image = CommonImages.getImage(getSynchronizationImageDescriptor(element, synchronizationOverlaid)); } else { int imageOffset = 0; if (!hideDecorationOnContainer(element, (TreeItem) event.item) && AbstractTaskListFilter.hasDescendantIncoming(element)) { - if (taskListView.synchronizationOverlaid) { + if (synchronizationOverlaid) { image = CommonImages.getImage(CommonImages.OVERLAY_SYNC_OLD_INCOMMING); } else { image = CommonImages.getImage(CommonImages.OVERLAY_SYNC_INCOMMING); @@ -197,7 +204,7 @@ class CustomTaskListDecorationDrawer implements Listener { RepositoryQuery query = (RepositoryQuery) element; if (query.getStatus() != null) { image = CommonImages.getImage(CommonImages.OVERLAY_SYNC_WARNING); - if (taskListView.synchronizationOverlaid) { + if (synchronizationOverlaid) { imageOffset = 11; } else { imageOffset = 3; @@ -206,12 +213,12 @@ class CustomTaskListDecorationDrawer implements Listener { } int additionalSquish = 0; - if (platformSpecificSquish > 0 && taskListView.synchronizationOverlaid) { + if (platformSpecificSquish > 0 && synchronizationOverlaid) { additionalSquish = platformSpecificSquish + 3; } else if (platformSpecificSquish > 0) { additionalSquish = platformSpecificSquish / 2; } - if (taskListView.synchronizationOverlaid) { + if (synchronizationOverlaid) { offsetX = 42 - imageOffset - additionalSquish; } else { offsetX = 24 - imageOffset - additionalSquish; @@ -226,7 +233,7 @@ class CustomTaskListDecorationDrawer implements Listener { private boolean hideDecorationOnContainer(ITaskContainer element, TreeItem treeItem) { if (element instanceof UnmatchedTaskContainer) { - if (!taskListView.isFocusedMode()) { + if (!delayedRefreshJob.isFocusedMode()) { return false; } else if (AbstractTaskListFilter.hasDescendantIncoming(element)) { return true; @@ -238,7 +245,7 @@ class CustomTaskListDecorationDrawer implements Listener { } } - if (!taskListView.isFocusedMode()) { + if (!delayedRefreshJob.isFocusedMode()) { return false; } else if (element instanceof IRepositoryQuery || element instanceof TaskCategory) { return treeItem.getExpanded(); @@ -306,4 +313,12 @@ class CustomTaskListDecorationDrawer implements Listener { TasksUiPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(PROPERTY_LISTENER); } + public void setUseStrikethroughForCompleted(boolean useStrikethroughForCompleted) { + this.useStrikethroughForCompleted = useStrikethroughForCompleted; + } + + public void setSynchronizationOverlaid(boolean synchronizationOverlaid) { + this.synchronizationOverlaid = synchronizationOverlaid; + } + }
\ No newline at end of file diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDelayedRefreshJob.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDelayedRefreshJob.java new file mode 100644 index 000000000..f7f645ce4 --- /dev/null +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/views/TaskListDelayedRefreshJob.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright (c) 2010 Frank Becker 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: + * Frank Becker - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylyn.internal.tasks.ui.views; + +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.mylyn.internal.provisional.commons.ui.DelayedRefreshJob; + +public abstract class TaskListDelayedRefreshJob extends DelayedRefreshJob { + + private boolean focusedMode; + + public TaskListDelayedRefreshJob(StructuredViewer viewer, String name, boolean focusedMode) { + super(viewer, name); + this.focusedMode = focusedMode; + } + + public boolean isFocusedMode() { + return focusedMode; + } + + public void setFocusedMode(boolean focusedMode) { + this.focusedMode = focusedMode; + } + +} 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 d7b92c362..c22c7bb54 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 @@ -56,7 +56,6 @@ import org.eclipse.jface.viewers.TreeViewer; 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.provisional.commons.ui.SubstringPatternFilter; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer; @@ -178,10 +177,10 @@ import org.eclipse.ui.themes.IThemeManager; */ public class TaskListView extends ViewPart implements IPropertyChangeListener, IShowInTarget { - private final class TaskListRefreshJob extends DelayedRefreshJob { + private final class TaskListRefreshJob extends TaskListDelayedRefreshJob { - private TaskListRefreshJob(TreeViewer treeViewer, String name) { - super(treeViewer, name); + private TaskListRefreshJob(TreeViewer treeViewer, String name, boolean focusedMode) { + super(treeViewer, name, focusedMode); } @Override @@ -420,8 +419,6 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I */ protected boolean isPaused = false; - boolean synchronizationOverlaid = false; - private final Listener CATEGORY_GRADIENT_DRAWER = new Listener() { public void handleEvent(Event event) { if (event.item.getData() instanceof ITaskContainer && !(event.item.getData() instanceof ITask)) { @@ -890,7 +887,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(getViewer(), "Task List Refresh", focusedMode); //$NON-NLS-1$ configureColumns(columnNames, columnWidths); @@ -919,7 +916,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I getViewer().setInput(getViewSite()); final int activationImageOffset = PlatformUtil.getTreeImageOffset(); - customDrawer = new CustomTaskListDecorationDrawer(this, activationImageOffset); + customDrawer = new CustomTaskListDecorationDrawer(refreshJob, activationImageOffset); getViewer().getTree().addListener(SWT.EraseItem, customDrawer); getViewer().getTree().addListener(SWT.PaintItem, customDrawer); @@ -1373,7 +1370,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I boolean isInRenameAction = false; - private DelayedRefreshJob refreshJob; + private TaskListDelayedRefreshJob refreshJob; private boolean itemNotFoundExceptionLogged; @@ -1563,6 +1560,7 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I return; } this.focusedMode = focusedMode; + refreshJob.setFocusedMode(focusedMode); IToolBarManager manager = getViewSite().getActionBars().getToolBarManager(); if (focusedMode && isAutoExpandMode()) { @@ -1576,11 +1574,6 @@ public class TaskListView extends ViewPart implements IPropertyChangeListener, I updateFilterEnablement(); } - public void setSynchronizationOverlaid(boolean synchronizationOverlaid) { - this.synchronizationOverlaid = synchronizationOverlaid; - getViewer().refresh(); - } - public void displayPrioritiesAbove(String priority) { filterPriority.displayPrioritiesAbove(priority); getViewer().refresh(); |