package org.argeo.cms.ux.widgets; import java.util.ArrayList; import java.util.Collections; import java.util.List; public abstract class AbstractGuidedForm implements GuidedForm { private String formTitle; private List pages = new ArrayList<>(); private View view; @Override public abstract void addPages(); public void addPage(AbstractGuidedFormPage page) { page.setView(view); pages.add(page); } @Override public boolean canFinish() { return false; } @Override public boolean performFinish() { return false; } @Override public boolean performCancel() { return false; } @Override public int getPageCount() { return pages.size(); } @Override public List getPages() { return Collections.unmodifiableList(pages); } @Override public Page getStartingPage() { if (pages.isEmpty()) throw new IllegalStateException("No page available"); return pages.get(0); } @Override public Page getPreviousPage(Page page) { int index = pages.indexOf(page); if (index == 0 || index == -1) { // first page or page not found return null; } return pages.get(index - 1); } @Override public Page getNextPage(Page page) { int index = pages.indexOf(page); if (index == pages.size() - 1 || index == -1) { // last page or page not found return null; } return pages.get(index + 1); } public void setFormTitle(String formTitle) { this.formTitle = formTitle; } @Override public String getFormTitle() { return formTitle; } @Override public void setView(View view) { this.view = view; } }