Bug 65464 [Problems] (regression) Not possible to add contributions to ProblemMarker or ConcreteMarker without referencing internal classes
I have a plugin which assigns a popup action to problem IMarkers. This worked fine in Eclipse 2.1.x but in Eclipse 3.0, as you know, the problems view has been separated from the tasks view. In doing so a ProblemMarker class was created which extends the ConcreteMarker class. Neither of these classes implement IMarker. This is a regression in Eclipse 3.0. A couple questions. 1. Why don't either of these classes implement IMarker? Was this a design decision or is this an accidental omission? 2. If these classes can't implement IMarker (for whatever reason) can a public interface be created so I don't have to register my popup action against an internal class? I posted this to the platform UI dev mailing list and it was suggested by John Arthorne to have ConcreteMarker implement IAdaptable and adapt to IMarker so I can register object contributions against IMarkers. Thanks.
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/TableView.java
private int restoreVerticalScrollBarPosition(IMemento memento) {
		if (memento == null) {
			return 0;
		}
		Integer position = memento.getInteger(TAG_VERTICAL_POSITION);
		return (position == null) ? 0 : position.intValue();
	}
	
	private int restoreHorizontalScrollBarPosition(IMemento memento) {
		if (memento == null) {
			return 0;
		}
		Integer position = memento.getInteger(TAG_HORIZONTAL_POSITION);
		return (position == null) ? 0 : position.intValue();
	}
	
	/**
	 * Get the IWorkbenchSiteProgressService for the receiver.
	 * @return IWorkbenchSiteProgressService or <code>null</code>.
	 */
	protected IWorkbenchSiteProgressService getProgressService() {
		IWorkbenchSiteProgressService service = null;
		Object siteService =
			getSite().getAdapter(IWorkbenchSiteProgressService.class);
		if(siteService != null)
			service = (IWorkbenchSiteProgressService) siteService;
		return service;
	}
}