2014-01-20 4 views
1

В коде библиотеки после создания страницы, проверка утверждение для управления имуществом происходит:Как создать WizardPage правильно (платформа Eclipse)

public void createPageControls(Composite pageContainer) { 
     // the default behavior is to create all the pages controls 
     for (int i = 0; i < pages.size(); i++) { 
      IWizardPage page = (IWizardPage) pages.get(i); 
      page.createControl(pageContainer); 
      // page is responsible for ensuring the created control is 
      // accessable 
      // via getControl. 
      Assert.isNotNull(page.getControl()); 
     } 
    } 

(последняя строка)

Таким образом, при реализации WizardPage#createControl НАДО заполните control чем-то.

В образце Vogella, он создал промежуточный Composite контейнер и использует его: http://www.vogella.com/tutorials/EclipseWizards/article.html#wizards_example

Но, возможно, я просто использовать createContol «s parent аргумент?

UPDATE

Что делать, если Redefine WizardPage класс и использовать его все время?

public abstract class WizardPageEx extends WizardPage { 

    public WizardPageEx(String pageName, String title, ImageDescriptor titleImage) { 
     super(pageName, title, titleImage); 
    } 

    public WizardPageEx(String pageName) { 
     super(pageName); 
    } 

    @Override 
    final public void createControl(Composite parent) { 
     Composite control = new Composite(parent, SWT.NONE); 
     createControlEx(control); 
     setControl(control); 
    } 

    abstract public void createControlEx(Composite control); 

} 

Каковы недостатки такого решения?

+0

Что произойдет, если вы попробуете? – csmckelvey

ответ

3

В WizardPage.createControl вы должны создать своего рода Control - обычно Composite и вы должны вызвать WizardPage.setControl(control) сказать WizardPage, который является контроль верхнего уровня. Так обычно что-то типа:

@Override 
public void createControl(final Composite parent) 
{ 
    final Composite composite = new Composite(parent, SWT.NULL); 

    ... 

    setControl(composite); 
} 
Смежные вопросы