Как включить действия Save и SaveAs для редактора, который расширяет класс FormEditor - PullRequest
3 голосов
/ 02 февраля 2012

У меня есть класс редактора, который расширяет класс FormEditor. Для достижения функциональности save и save As для этого редактора будет достаточно переопределить:

  1. doSave (монитор IProgressMonitor)

  2. doSaveAs ()

  3. isSaveAsAllowed ()

только эти методы? Или что-нибудь еще?

Ответы [ 2 ]

1 голос
/ 28 января 2013

На форумах сообщества 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). Эти методы должны использоваться ПОСЛЕ того, как вы сохранили, конечно - чтобы ваш рабочий стол знал, что все снова чисто.

1 голос
/ 02 февраля 2012

Да.Также обратите внимание на следующее

  • Ваш редактор должен быть грязным, это означает, что вы должны были позвонить firePropertyChange(PROP_DIRTY) до
  • Если вы создаете свой собственный RCP, убедитесь, что вы добавили Saveи Save As... Пункты меню в вашем ActionBarAdvisor
  • рассматривают возможность использования методов doSave интегрированных страниц формы (это иногда имеет смысл)
  • Не интегрируйте никакое пользовательское взаимодействие с пользователем (например,дополнительные диалоговые окна) в методах doSave или doSaveAs.
  • рассмотрите возможность предоставления стека команд, чтобы пользователь мог отменить / повторить изменения, связанные с вводом редактора
  • , убедитесь, что обрабатываете тот факт, что ваш редактортем временем может быть изменено (например, если другой редактор управляет вводом редактора).
...