Bug 211493 [Markers] [Markers] New Markers view slows down traversal in Package Explorer
I20071127-0800 Traversing over elements in the Package Explorer via Arrow_Down key is slowed down by the new Markers view. Steps: - select org.eclipse.jdt.doc.user (from CVS) - press Arrow_Right - press and hold Arrow_Down => selection moves slowly, gets faster after folders with many files have been passed I quickly profiled this and found that a lot of time is burned in org.eclipse.ui.internal.provisional.views.markers.CachedMarkerBuilder$1.run(IProgressMonitor) This is probably because ExtendedMarkersView.createPartControl(Composite) contains: ISelectionListener listener = getPageSelectionListener(); getSite().getPage().addSelectionListener(listener); listener.selectionChanged(getSite().getPage().getActivePart(), getSite().getPage().getSelection()); 1. => should not leak the listener when the view is disposed 2. => should not update when the Markers view is not visible 3. => should not use addSelectionListener() but addPostSelectionListener()
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/provisional/views/markers/MarkerEntry.java
String value = marker.getAttribute(IMarker.LOCATION,
						MarkerSupportConstants.EMPTY_STRING);
				attributeCache.put(IMarker.LOCATION, marker
						.getAttribute(IMarker.LOCATION));
				return value;
			}
		} catch (CoreException e) {
			if (Policy.DEBUG_MARKERS)
				StatusManager.getManager().handle(e.getStatus());
		}
		
		int lineNumber = marker.getAttribute(IMarker.LINE_NUMBER, -1);
		String lineNumberString;
		if (lineNumber < 0)
			lineNumberString = MarkerMessages.Unknown;
		else
			lineNumberString = NLS.bind(MarkerMessages.label_lineNumber,
					Integer.toString(lineNumber));
		attributeCache.put(IMarker.LOCATION, lineNumberString);
		return lineNumberString;
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.ui.internal.provisional.views.markers.api.MarkerItem#getMarker()
	 */
	public IMarker getMarker() {
		return marker;
	}
	/*