From 2772a56902d8c2846ba121b9dca65175c4106d1f Mon Sep 17 00:00:00 2001 From: fbecker Date: Tue, 6 Jul 2010 18:38:52 +0000 Subject: ASSIGNED - bug 310076: [patch] Remove selected match does not work for Task Search https://bugs.eclipse.org/bugs/show_bug.cgi?id=310076 --- .../ui/search/SearchResultTreeContentProvider.java | 81 +++++++++++++++------- 1 file changed, 55 insertions(+), 26 deletions(-) (limited to 'org.eclipse.mylyn.tasks.search') diff --git a/org.eclipse.mylyn.tasks.search/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultTreeContentProvider.java b/org.eclipse.mylyn.tasks.search/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultTreeContentProvider.java index 97d56fd09..9b09ef8bc 100644 --- a/org.eclipse.mylyn.tasks.search/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultTreeContentProvider.java +++ b/org.eclipse.mylyn.tasks.search/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchResultTreeContentProvider.java @@ -96,37 +96,66 @@ public class SearchResultTreeContentProvider extends SearchResultContentProvider @Override public void elementsChanged(Object[] updatedElements) { for (Object object : updatedElements) { - boolean added = elements.add(object); - if (added && object instanceof ITask) { - AbstractTask task = ((AbstractTask) object); - String owner = task.getOwner(); - if (owner == null) { - owner = Messages.SearchResultTreeContentProvider__unknown_; + boolean inResult = false; + Object[] resultElements = searchResult.getElements(); + for (Object resultObject : resultElements) { + if (resultObject.equals(object)) { + inResult = true; } - Person person = owners.get(owner); - if (person == null) { - person = new Person(owner, task.getConnectorKind(), task.getRepositoryUrl()); - owners.put(owner, person); + + } + if (inResult) { + boolean added = elements.add(object); + if (added && object instanceof ITask) { + AbstractTask task = ((AbstractTask) object); + String owner = task.getOwner(); + if (owner == null) { + owner = Messages.SearchResultTreeContentProvider__unknown_; + } + Person person = owners.get(owner); + if (person == null) { + person = new Person(owner, task.getConnectorKind(), task.getRepositoryUrl()); + owners.put(owner, person); + } + person.internalAddChild(task); + + TaskGroup completeIncomplete = null; + if (task.isCompleted()) { + completeIncomplete = completeState.get(Messages.SearchResultTreeContentProvider_Complete); + if (completeIncomplete == null) { + completeIncomplete = new TaskGroup( + "group-complete", Messages.SearchResultTreeContentProvider_Complete, GroupBy.COMPLETION.name()); //$NON-NLS-1$ + completeState.put(Messages.SearchResultTreeContentProvider_Complete, completeIncomplete); + } + } else { + completeIncomplete = completeState.get(Messages.SearchResultTreeContentProvider_Incomplete); + if (completeIncomplete == null) { + completeIncomplete = new TaskGroup( + "group-incomplete", Messages.SearchResultTreeContentProvider_Incomplete, GroupBy.COMPLETION.name()); //$NON-NLS-1$ + completeState.put(Messages.SearchResultTreeContentProvider_Incomplete, completeIncomplete); + } + } + completeIncomplete.internalAddChild(task); } - person.internalAddChild(task); - - TaskGroup completeIncomplete = null; - if (task.isCompleted()) { - completeIncomplete = completeState.get(Messages.SearchResultTreeContentProvider_Complete); - if (completeIncomplete == null) { - completeIncomplete = new TaskGroup( - "group-complete", Messages.SearchResultTreeContentProvider_Complete, GroupBy.COMPLETION.name()); //$NON-NLS-1$ - completeState.put(Messages.SearchResultTreeContentProvider_Complete, completeIncomplete); + } else { + if (object instanceof ITask) { + AbstractTask task = ((AbstractTask) object); + elements.remove(task); + String owner = task.getOwner(); + if (owner == null) { + owner = Messages.SearchResultTreeContentProvider__unknown_; } - } else { - completeIncomplete = completeState.get(Messages.SearchResultTreeContentProvider_Incomplete); - if (completeIncomplete == null) { - completeIncomplete = new TaskGroup( - "group-incomplete", Messages.SearchResultTreeContentProvider_Incomplete, GroupBy.COMPLETION.name()); //$NON-NLS-1$ - completeState.put(Messages.SearchResultTreeContentProvider_Incomplete, completeIncomplete); + Person person = owners.get(owner); + person.internalRemoveChild(task); + + TaskGroup completeIncomplete = null; + if (task.isCompleted()) { + completeIncomplete = completeState.get(Messages.SearchResultTreeContentProvider_Complete); + } else { + completeIncomplete = completeState.get(Messages.SearchResultTreeContentProvider_Incomplete); } + completeIncomplete.internalRemoveChild(task); } - completeIncomplete.internalAddChild(task); } } } -- cgit v1.2.3