Bug 129061 [Common Navigator] Request to support programmatic binding of drag adapter
We have a problem in the Team use of the Common Navigator is that each repository provider may define one or more viewers. It is not practical for each of the viewer definitions to define the complete set of drag assistants, especially considering that each model may have their own elements that can be dragged. It would simplify things if we could just programmatically bind drag assistants to a viewer. Then we could bind he resource drag assistant to all Team viewers for free. Currently, each provider with a viewer must add a dependency to the org.eclipse.ui.navigator.resources plugin and then add the dragAssistant binding to each viewer.
bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/navigator/INavigatorDnDService.java
/**
	 * 
	 * This method returns an array of {@link CommonDropAdapterAssistant} from
	 * content extensions that are <i>visible</i> and <i>active</i> for the
	 * associated {@link INavigatorContentService}.  
	 *  
	 * <p>
	 * The array should be processed from the first element to the last, asking
	 * each extension to
	 * {@link CommonDropAdapterAssistant#validateDrop(Object, int, org.eclipse.swt.dnd.TransferData)}.
	 * The first to successfully validate the drop operation will have the
	 * opportunity to
	 * {@link CommonDropAdapterAssistant#handleDrop(CommonDropAdapter, org.eclipse.swt.dnd.DropTargetEvent, Object) handle the drop}
	 * </p>
	 * 
	 * @param aDropTarget
	 *            The target element in the viewer of the drop operation.
	 * @param theDragSelection 
	 * 			  The drag selection of the current drop operation.
	 * @return An array of {@link CommonDropAdapterAssistant}s that are defined
	 *         by the set of
	 *         <b>org.eclipse.ui.navigator.navigatorContent/navigatorContent</b>
	 *         extensions that provide a <b>possibleChildren</b> expression
	 *         that matches the given drop target.
	 */
	CommonDropAdapterAssistant[] findCommonDropAdapterAssistants(
			Object aDropTarget, IStructuredSelection theDragSelection);
}