Bug 221977 [IDE] [RCP] Use of Project Explorer in RCP requires internal IDE class WorkbenchAdapterBuilder
The magic incantation to get an RCP application working with resources and the CommonNavigator (or ResourceNavigator) is to call: WorkbenchAdapterBuilder.registerAdapters() However, this is an internal IDE class. If you don't call it, the CNF will fail in hard to diagnose ways (because there is no UndoRedo handler for example. In my conversations with Paul he is saying that the point of the IDE plugin is to be essentially the UI for resources and nothing more, that all of the "more" stuff is being moved to ui.ide.application. So if that's the case, then we probably just need to move this method to the API and prominently document it's requirement with the CNF/ResourceNavigator. And keep working on moving non-resource stuff out of the ui.ide plugin. And recommend that if you want to use the CNF (with resources) that you need: ui.navigator ui.navigator.resources core.resources ui.ide Alternatively, we can move the classes that are in ui.internal.ide.model to perhaps ui.navigator.resources. And then remove the dependency on ui.ide. I remain confused as to why there are two different plugins required to address the UI requirements for the CNF + resources, ui.navigator.resources and ui.ide. (I understand this might be some kind of legacy requirement).
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/ide/IDE.java
if (w != null) {
					result[0] = PlatformUI.getWorkbench().saveAll(w, w,
							new SaveFilter(resourceRoots), confirm);
				}
			}
		});
		return result[0];
	}
	/**
	 * Sets the default editor id for a given file. This value will be used to
	 * determine the default editor descriptor for the file in future calls to
	 * <code>getDefaultEditor(IFile)</code>.
	 * 
	 * @param file
	 *            the file
	 * @param editorID
	 *            the editor id
	 */
	public static void setDefaultEditor(IFile file, String editorID) {
		try {
			file.setPersistentProperty(EDITOR_KEY, editorID);
		} catch (CoreException e) {
			
		}
	}
	/**
	 * Returns the default editor for a given file. This method will attempt to
	 * resolve the editor based on content-type bindings as well as traditional
	 * name/extension bindings.
	 * <p>