We, as Eclipse support, have tried to deliver solutions to those problems. But we failed because of something rather unexpected:
There is too much freedom in preferences allowed.
Developer tends to:
- Cache preference node. This results in beautiful java.lang.IllegalStateException: Preference node "org.eclipse.core.XYZ" has been removed.
- assume that nobody else will modify those preferences and there is no need to listen for changes.
- assume that preferences can be changed only by preferences dialog and put some business logic into IPreferencePage#performOK().
Is it so difficult to choose the right way?