In the last section we extended the desktop with a tool and a component. How do we make our component extensible so that others can extend it?
One strategy would be to define a custom extension point. For example, if we knew that we wanted spell-checking functionality for the editor, and wanted to allow for pluggable spell-checkers, we could define an ISpellChecker interface and a SpellCheckerExtensionPoint, allowing others to provide different spell-checker implementations.
But what if we don’t have a specific kind of pluggable functionality in mind- what if we just want to make the component extensible in a more general sort of way, so that other developers can add toolbar buttons or menu items – actions – that will act on our component?
Recall from the discussion on the plugin/extension architecture that this general means of extensibility is provided by Tools. It seems that we need to define a new extension point based on the ITool interface, which is specific for tools that act on our text editor.