Как вызвать метод getContainer() класса IWizard

Краткая заметка о моей работе:

В настоящее время я работаю над JFace Wizards. В одном из моих мастеров есть tableViewer, и в строке этой таблицы есть кнопка, открывающая диалоговый редактор ячеек. Мастер также имеет индикатор IRunnableWithProgress, который будет запускаться в IRunnableContext.

Проблема, с которой я сталкиваюсь:

Конструктор в моем классе редактора ячеек Dialog принимает два параметра:

public DialogEditor(Composite parent,IRunnableContext context)

Вызывая вышеупомянутый конструктор из другого класса, я могу передать объект tableViewer как фактический параметр для формального параметра Composite parent, но как мне вызвать IRunnableContext? что я передаю в качестве параметра для IRunnableContext? Например:

TableViewer tableViewer = new TableViewer(table);
DialogEditor dialogEditor = new DialogEditor(tableViewer, ???(What do I add here?))

После того, как я погуглил и прочитал несколько документов Java, я понял, что в классе org.eclipse.jface.wizard.IWizard есть метод getContainer(), который возвращает контейнер этого мастера. Но я не совсем уверен, как использовать метод getContainer(), так как это не статический метод, и я не могу создать экземпляр типа IWizard.

Обновление на мой вопрос.

Я попытался реализовать интерфейс IWizard и использовать метод getContainer(), но получил исключение:

"java.lang.Error: Нерешенная проблема компиляции: IWizardContainer не может быть решен"

Это интерфейс Java Doc для IWizard:

/**
 * Returns the container of this wizard.
 *
 * @return the wizard container, or <code>null</code> if this
 *   wizard has yet to be added to a container
 */
public IWizardContainer getContainer();

И это мой код:

public abstract class myWizard implements IWizard {
TableViewer tableViewer = new TableViewer(table);
DialogEditor dialogEditor = new DialogEditor(tableViewer, getContainer());
//other code
}

Нет ошибок компиляции, но я получаю исключение, когда нажимаю на строку таблицы "java.lang.Error: Неразрешенная проблема компиляции: IWizardContainer не может быть решен".

А также я не хочу реализовывать интерфейс IWizard, поскольку мои другие классы, которые расширяют myWizard.class, должны реализовывать унаследованный абстрактный метод IWizrad.getContainer(), который не нужен в других классах. Есть ли обходной путь для этой проблемы, с которой я сталкиваюсь?

1 ответ

Решение

WizardPage который содержит ваш код имеет getContainer() метод, так что вы просто должны быть в состоянии сделать:

DialogEditor dialogEditor = new DialogEditor(tableViewer, getContainer());
Другие вопросы по тегам