I've tried almost everything and the simplest solution is to implement two listeners:
- ICheckStateListener() to track changes and possibly save them.
- ICheckStateProvider() to retrieve previously checked elements after reloading. On the other hand, it will be necessary to manage the grayed state of the directories but it is feasible.
This is what I just pushed for the LOEclipse plugin.