Как вызвать метод 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());