Rather than poking at the DOM directly in here, I suggest we do something like the following:

* Add the concept of a third display state in EditorManager (not-editor placeholder, editor, or custom viewer widget)
* Offer a formal API, something like EditorManager.showCustomViewer() to switch EditorManager into that state (given a DOM node representing the the UI), hiding the previously-visible content (either an editor or the not-editor placeholder).  This would replace the nullifyEditor() API that's in here now.
* EditorManager would clean up the custom viewer on its own when switching to a different state.  (So you could eliminate the special-case code in ProjectManager too).
* Keep these APIs generic, so they're not calling the custom UI an "image viewer" specifically.