в дополнение к предыдущему вопросу я пытаюсь реализовать свою собственную мастера калитки с пошаговым обзором. Теперь проблема в том, что isComplete();
похоже возвращает true, даже если шаг еще не завершен. Я сделал 3 шага мастера, а затем запускаю этот код:
public class MainWizard extends Wizard{
private static final long serialVersionUID = 1L;
private List<IWizardStep> steps = new ArrayList<IWizardStep>();
private Component overview = newOverviewBar("overview");
private IWizardModel wizardModel;
public MainWizard(String id, IWizardModel wizardModel, boolean addDefaultCssStyle) {
super(id, wizardModel, addDefaultCssStyle);
this.wizardModel = wizardModel;
fillList();
getIndex();
this.add(overview);
}
public void getIndex(){
for(IWizardStep step : steps){
System.out.println(step.getClass());
if(step.equals(wizardModel.getActiveStep())){
System.out.println("Active");
} else if(!step.isComplete()){
System.out.println("Pending");
} else if(step.isComplete()){
System.out.println("Finished");
}
}
}
public void fillList(){
Iterator<IWizardStep> iterator = wizardModel.stepIterator();
while(iterator.hasNext()){
steps.add(iterator.next());
}
}
@Override
public void onActiveStepChanged(IWizardStep newStep) {
try{
getIndex();
} catch (Exception e){
e.getMessage();
}
super.onActiveStepChanged(newStep);
}
}
Вывод в консоли для первого шага:
class {package}.StepOne > Active
class {package}.StepTwo > Finished
class {package}.StepThree > Finished
При переходе к следующему шагу:
class {package}.StepOne > Finished
class {package}.StepTwo > Active
class {package}.StepThree > Finished
На последнем шаге:
class {package}.StepOne > Finished
class {package}.StepTwo > Finished
class {package}.StepThree > Active
Я не могу объяснить это поведение. Как и в сообщении, на которое я ссылался выше, я хотел бы поделиться этим компонентом, если он работает в конце. Заранее спасибо.
Проблема в том, что шаги, которые я реализовал, еще не имеют реальной цели? Должен ли я вручную устанавливать setComplete();
или что-то еще в моем коде для панелей?