На форумах сообщества Eclipse есть отличное сообщение об этом: http://www.eclipse.org/forums/index.php/t/140214/
Выписка:
Вы используете экземпляр FormEditor в качестве редактора. Этот редактор
содержит экземпляры FormPage в виде страниц. Я надеюсь, что у вас есть
специализированные SectionParts (или AbstractParts) как разделы на странице.
В разделе у вас есть текстовые виджеты, которые отображают некоторые данные и имеют
ModifyListener прилагается. В этом слушателе вызов markDirty () для
раздел и ManagedForm и FormEditor будут обрабатывать грязное состояние для
вы. И не забудьте добавить каждый раздел PartPart в ManagedForm
addPart (раздел)!
По сути, все, что вам нужно, это:
public class MyPage extends FormPage implements ModifyListener {
private SectionPart secPart;
private Text myText;
public MyPage(FormEditor editor, String id, String title) {
super(editor, id, title);
}
@Override
protected void createFormContent(IManagedForm form) {
secPart = new SectionPart(formBody, toolkit, Section.DESCRIPTION
| Section.TITLE_BAR);
Section section = secPart.getSection();
//add labels and controls for the three fields
myText = new Text(composite, SWT.BORDER);
myText.addModifyListener(this);
form.addPart(secPart);
}
public void modifyText(ModifyEvent arg0) {
secPart.markDirty();
}
}
Как примечание, editorDirtyStateChanged () из FormEditor подтолкнет ваш плагин после того, как вы сделали сохранение - чтобы страницы следовали этому примеру, используйте commitPages (true). Эти методы должны использоваться ПОСЛЕ того, как вы сохранили, конечно - чтобы ваш рабочий стол знал, что все снова чисто.