Помощникът за JFace показва данни на последната страница

Имам Wizard с 3 WizardPages, всяка страница с джаджи, съдържаща входове от потребителя, трябва да добавя последна страница, съдържаща цялата информация, въведена от потребителя.

Не знаех как да го направя, защото 4-те страници се създават едновременно.

Public Wizard(){
    addPage(new Page1()) ;
    addPage(new Page2()) ;
    addPage(new Page3()) ;
    addPage(new PageSummary()) ;

}

Как мога да променя контролите на PageSummary в зависимост от въведеното в предишните страници?

Редактиране: Намерих публикация, която прави точно това, което искам, използването на метода onEnterPage() изглежда умно, ето как пробвал съм го:

public class NewEquipementSummaryPage extends WizardPage {
    public void createControl(Composite parent) {
    // composite to hold widgets 
    Composite composite = new Composite(parent, SWT.NONE) ;

    // composite layout 
    GridLayout gl = new GridLayout(2, false) ;
    composite.setLayout(gl) ;

    // making widgets 
    createWidgets(composite) ;
    setControl(composite) ;
}

    public void onEnterPage() {
    TypeEquipementPage typePage = (TypeEquipementPage) getWizard().getPage(TypeEquipementPage.PAGE_NAME) ;
    CompanySellerPage companyPage = (CompanySellerPage) getWizard().getPage(CompanySellerPage.PAGE_NAME) ;
    EquipementUserPage userPage = (EquipementUserPage) getWizard().getPage(EquipementUserPage.PAGE_NAME) ;

    if(typePage.types[0].getSelection() == true)
        typeEquipementLabel.setText("Poste de travail") ;
    else
        typeEquipementLabel.setText("Peripherique") ;

    marqueEquipementLabel.setText(typePage.marquesCombo.getText()) ;
    descriptionEquipementLabel.setText(typePage.descriptionField.getText()) ;

    if(companyPage.companyExistButton[0].getSelection() == true) {
        companyNameLabel.setText(companyPage.companiesCombo.getText()) ;
    }
    else{
        companyNameLabel.setText(companyPage.companyNameField.getText()) ;
        companyAdressLabel.setText(companyPage.companyAdressField.getText()) ;
        companyNumberLabel.setText(companyPage.companyNumberField.getText()) ;
    }

    if( !(userPage.sharedEquipementButton.getSelection()) )
        useOfEquipementLabel.setText("Utilisateur") ;
    else
        useOfEquipementLabel.setText("Bureau") ;

    pack() ;
}

С метода pack() в крайна сметка имам грешка в компилацията (не мога да намеря символ)

и без него нищо не се появява на страницата .. какво съм пропуснал ?


person elaich    schedule 16.08.2012    source източник
comment
Методът onEnterPage, използван в тази връзка, е просто персонализиран метод за обработка на влизане в страницата в урока „Създаване на JFace Wizards“. Извиква се от техния съветник, когато извиква техния заменен Wizard#getNextPage. Нищо няма да го извика автоматично   -  person mecsco    schedule 20.08.2012


Отговори (2)


Опитайте да замените DialogPage#setVisible в NewEquipementSummaryPage и извикайте onEnterPage от там:

public void setVisible(boolean visible) {

    super.setVisible(visible);

    if (visible) {

        onEnterPage();
    }
}

(както и промяна на composite.pack(), както е предложено в отговора на SoboLAN)

person mecsco    schedule 20.08.2012

Мисля, че искаш composite.pack (), не само pack (). За да направите това, запазете променливата composite като поле private във вашия клас (така че да имате достъп до нея в метода onEnterPage).

person Radu Murzea    schedule 17.08.2012
comment
това е composite.pack() .. и не работи има ли друг начин да направя това, което изяснявам? последната страница в съветника служи като обобщение на това, което потребителят е въвел във всички предишни страници, така че той може да чете и променя чрез натискане на предишни и актуализиране на стойности или валидиране чрез натискане на край. направих празни етикети, където информацията ще се показва с помощта на метода setText() в onEnterPage() .. - person elaich; 17.08.2012
comment
Използвах регистрационен файл, за да видя дали има извикване на метода onEnterPage(), но само методът createControl() се извиква по време на процеса .. Когато проверих javadoc, няма метод onEnterPage() в интерфейса на IWizardPage дори инертирана .. Къде е този метод? - person elaich; 18.08.2012
comment
@elaich Намерих този метод тук: eclipse.org/epf/composer_javadoc/1.0/org/eclipse/epf/library/ui/ . Не знам обаче каква е целта му... - person Radu Murzea; 18.08.2012
comment
Методът onEnterPage във връзката във въпроса на OP е просто персонализиран метод за справяне с въвеждането на страницата в урока „Създаване на JFace Wizards“. Извиква се от техния съветник, когато извиква техния заменен Wizard#getNextPage. Нищо няма да го извика автоматично - person mecsco; 20.08.2012