Community
Participate
Working Groups
ActionExpression, BaseWorkbenchContentProvider and BaseWorkbenchLabelProvider do not look for adapters registered in the platform when working with an Object that either does not implement IAdaptable or the interface that it needs to adapt to. In ActionExpression, the getActionFilter implementation should be something like: (Added extra else expression around line 9) private IActionFilter getActionFilter(Object object) { IActionFilter filter = null; if (object instanceof IActionFilter) { filter = (IActionFilter) object; } else if (object instanceof IAdaptable) { filter = (IActionFilter) ((IAdaptable) object).getAdapter(IActionFilter.class); } else{ filter = (IActionFilter) Platform.getAdapterManager().getAdapter(object,IActionFilter.class); } return filter; } Similarly, BaseWorkbenchContentProvider and BaseWorkbenchLabelProvider's getAdapter method should try to adapt Objects to IWorkbenchAdapter through registered Adapters or AdapterFactories if it cannot otherwise. IWorkbenchAdapter adapter = (IWorkbenchAdapter) Platform.getAdapterManager().getAdapter(anElement, IWorkbenchAdapter.class); Regards, Vincent Giguère protected IWorkbenchAdapter getAdapter(Object element) { IWorkbenchAdapter adapter = (IWorkbenchAdapter) Platform.getAdapterManager().getAdapter(element, IWorkbenchAdapter.class); if (!(element instanceof IAdaptable) || adapter != null) { return adapter; } return (IWorkbenchAdapter) ((IAdaptable) element).getAdapter(IWorkbenchAdapter.class); }
This one should have been fixed by the fix to bug 156581.
Marking WORKSFORME