|
Lines 28-39
Link Here
|
| 28 |
import org.eclipse.jface.viewers.StructuredSelection; |
28 |
import org.eclipse.jface.viewers.StructuredSelection; |
| 29 |
import org.eclipse.jface.viewers.StructuredViewer; |
29 |
import org.eclipse.jface.viewers.StructuredViewer; |
| 30 |
import org.eclipse.jface.viewers.TreeViewer; |
30 |
import org.eclipse.jface.viewers.TreeViewer; |
|
|
31 |
import org.eclipse.jface.viewers.ViewerFilter; |
| 31 |
import org.eclipse.mylyn.commons.core.StatusHandler; |
32 |
import org.eclipse.mylyn.commons.core.StatusHandler; |
| 32 |
import org.eclipse.mylyn.context.core.AbstractContextListener; |
33 |
import org.eclipse.mylyn.context.core.AbstractContextListener; |
| 33 |
import org.eclipse.mylyn.context.core.AbstractContextStructureBridge; |
34 |
import org.eclipse.mylyn.context.core.AbstractContextStructureBridge; |
| 34 |
import org.eclipse.mylyn.context.core.ContextChangeEvent; |
35 |
import org.eclipse.mylyn.context.core.ContextChangeEvent; |
| 35 |
import org.eclipse.mylyn.context.core.ContextCore; |
36 |
import org.eclipse.mylyn.context.core.ContextCore; |
| 36 |
import org.eclipse.mylyn.context.core.IInteractionElement; |
37 |
import org.eclipse.mylyn.context.core.IInteractionElement; |
|
|
38 |
import org.eclipse.mylyn.context.ui.AbstractFocusViewAction; |
| 39 |
import org.eclipse.mylyn.context.ui.InterestFilter; |
| 37 |
import org.eclipse.mylyn.internal.context.core.ContextCorePlugin; |
40 |
import org.eclipse.mylyn.internal.context.core.ContextCorePlugin; |
| 38 |
import org.eclipse.mylyn.internal.provisional.commons.ui.DelayedRefreshJob; |
41 |
import org.eclipse.mylyn.internal.provisional.commons.ui.DelayedRefreshJob; |
| 39 |
import org.eclipse.ui.ISelectionListener; |
42 |
import org.eclipse.ui.ISelectionListener; |
|
Lines 52-57
Link Here
|
| 52 |
|
55 |
|
| 53 |
private final CopyOnWriteArrayList<StructuredViewer> filteredViewers = new CopyOnWriteArrayList<StructuredViewer>(); |
56 |
private final CopyOnWriteArrayList<StructuredViewer> filteredViewers = new CopyOnWriteArrayList<StructuredViewer>(); |
| 54 |
|
57 |
|
|
|
58 |
private final Map<StructuredViewer, AbstractFocusViewAction> focusActions = new HashMap<StructuredViewer, AbstractFocusViewAction>(); |
| 59 |
|
| 55 |
private final Map<StructuredViewer, BrowseFilteredListener> listenerMap = new HashMap<StructuredViewer, BrowseFilteredListener>(); |
60 |
private final Map<StructuredViewer, BrowseFilteredListener> listenerMap = new HashMap<StructuredViewer, BrowseFilteredListener>(); |
| 56 |
|
61 |
|
| 57 |
private final Map<IWorkbenchPart, StructuredViewer> partToViewerMap = new HashMap<IWorkbenchPart, StructuredViewer>(); |
62 |
private final Map<IWorkbenchPart, StructuredViewer> partToViewerMap = new HashMap<IWorkbenchPart, StructuredViewer>(); |
|
Lines 204-209
Link Here
|
| 204 |
} |
209 |
} |
| 205 |
} |
210 |
} |
| 206 |
|
211 |
|
|
|
212 |
public void addFilteredViewer(StructuredViewer viewer, AbstractFocusViewAction action) { |
| 213 |
addFilteredViewer(viewer); |
| 214 |
if (viewer != null && action != null) { |
| 215 |
focusActions.put(viewer, action); |
| 216 |
} |
| 217 |
} |
| 218 |
|
| 219 |
@Deprecated |
| 207 |
public void addFilteredViewer(StructuredViewer viewer) { |
220 |
public void addFilteredViewer(StructuredViewer viewer) { |
| 208 |
if (viewer != null && !filteredViewers.contains(viewer)) { |
221 |
if (viewer != null && !filteredViewers.contains(viewer)) { |
| 209 |
filteredViewers.add(viewer); |
222 |
filteredViewers.add(viewer); |
|
Lines 211-216
Link Here
|
| 211 |
} |
224 |
} |
| 212 |
|
225 |
|
| 213 |
public void removeFilteredViewer(StructuredViewer viewer) { |
226 |
public void removeFilteredViewer(StructuredViewer viewer) { |
|
|
227 |
focusActions.remove(viewer); |
| 214 |
filteredViewers.remove(viewer); |
228 |
filteredViewers.remove(viewer); |
| 215 |
} |
229 |
} |
| 216 |
|
230 |
|
|
Lines 353-360
Link Here
|
| 353 |
private void updateExpansionState(StructuredViewer viewer, Object objectToRefresh) { |
367 |
private void updateExpansionState(StructuredViewer viewer, Object objectToRefresh) { |
| 354 |
if (viewer instanceof TreeViewer |
368 |
if (viewer instanceof TreeViewer |
| 355 |
&& filteredViewers.contains(viewer) |
369 |
&& filteredViewers.contains(viewer) |
| 356 |
&& ContextUiPlugin.getDefault().getPreferenceStore().getBoolean( |
370 |
&& hasInterestFilter(viewer, true) |
| 357 |
IContextUiPreferenceContstants.AUTO_MANAGE_EXPANSION)) { |
371 |
&& ContextUiPlugin.getDefault() |
|
|
372 |
.getPreferenceStore() |
| 373 |
.getBoolean(IContextUiPreferenceContstants.AUTO_MANAGE_EXPANSION)) { |
| 358 |
TreeViewer treeViewer = (TreeViewer) viewer; |
374 |
TreeViewer treeViewer = (TreeViewer) viewer; |
| 359 |
|
375 |
|
| 360 |
// HACK to fix bug 278569: [context] errors with Markers view and active Mylyn task |
376 |
// HACK to fix bug 278569: [context] errors with Markers view and active Mylyn task |
|
Lines 371-376
Link Here
|
| 371 |
} |
387 |
} |
| 372 |
} |
388 |
} |
| 373 |
|
389 |
|
|
|
390 |
private boolean hasInterestFilter(StructuredViewer viewer, boolean tryToReinstall) { |
| 391 |
for (ViewerFilter filter : viewer.getFilters()) { |
| 392 |
if (filter instanceof InterestFilter) { |
| 393 |
return true; |
| 394 |
} |
| 395 |
} |
| 396 |
if (tryToReinstall) { |
| 397 |
AbstractFocusViewAction action = focusActions.get(viewer); |
| 398 |
if (action != null) { |
| 399 |
action.run(action); |
| 400 |
viewer.refresh(); |
| 401 |
return hasInterestFilter(viewer, false); |
| 402 |
} |
| 403 |
} |
| 404 |
return false; |
| 405 |
} |
| 406 |
|
| 374 |
/** |
407 |
/** |
| 375 |
* Set to true for testing |
408 |
* Set to true for testing |
| 376 |
*/ |
409 |
*/ |