/** * */ package de.jwic.demo.wizard; import java.util.ArrayList; import java.util.List; import de.jwic.base.ControlContainer; import de.jwic.base.IControlContainer; import de.jwic.controls.InputBox; import de.jwic.controls.ListBox; import de.jwic.controls.wizard.ValidationException; import de.jwic.controls.wizard.WizardPage; /** * Asks the user for some general input like the wizard name, title, etc.. * @author lippisch */ public class WizardBasicsPage extends WizardPage { private WizardGeneratorModel model; private InputBox ibTitle; private InputBox ibPackage; private InputBox ibWizardClass; private InputBox ibModelClass; private ListBox lbWidth; private ListBox lbHeight; /** * */ public WizardBasicsPage(WizardGeneratorModel model) { this.model = model; setTitle("Basic Information"); setSubTitle("Specify basic information such as the title of the Wizard"); } /* (non-Javadoc) * @see de.jwic.controls.wizard.WizardPage#createControls(de.jwic.base.IControlContainer) */ @Override public void createControls(IControlContainer container) { ControlContainer content = new ControlContainer(container, "base"); content.setTemplateName(getClass().getName()); // use the VTL repspective for this class ibTitle = new InputBox(content, "ibTitle"); ibTitle.setWidth(400); ibPackage = new InputBox(content, "ibPackage"); ibPackage.setWidth(400); ibWizardClass = new InputBox(content, "ibWizardClass"); ibWizardClass.setWidth(400); ibModelClass = new InputBox(content, "ibModelClass"); ibModelClass.setWidth(400); lbWidth = new ListBox(content, "lbWidth"); lbHeight = new ListBox(content, "lbHeight"); for (int i = 0; i < 1000; i += 50) { String s = Integer.toString(i); lbWidth.addElement(s, s); lbHeight.addElement(s, s); } // apply data from model ibTitle.setText(model.getTitle()); ibPackage.setText(model.getPackageName()); ibWizardClass.setText(model.getWizardClass()); ibModelClass.setText(model.getModelClass()); lbWidth.selectedByKey(Integer.toString(model.getWizardWidth())); lbHeight.selectedByKey(Integer.toString(model.getWizardHeight())); } /* (non-Javadoc) * @see de.jwic.controls.wizard.WizardPage#validate() */ @Override public boolean validate() throws ValidationException { List<String> errors = new ArrayList<String>(); checkEmpty(ibPackage, errors, "No package specified."); checkEmpty(ibWizardClass, errors, "No wizard classname specified."); checkEmpty(ibModelClass, errors, "No model classname specified."); if (!errors.isEmpty()) { StringBuilder sb = new StringBuilder(); for (String msg : errors) { sb.append(msg).append("<br>"); } throw new ValidationException(sb.toString()); } model.setTitle(ibTitle.getText()); model.setPackageName(ibPackage.getText().trim()); model.setWizardClass(ibWizardClass.getText().trim()); model.setModelClass(ibModelClass.getText().trim()); if (lbWidth.getSelectedKey() != null) { model.setWizardWidth(Integer.parseInt(lbWidth.getSelectedKey())); } else { model.setWizardWidth(0); } if (lbHeight.getSelectedKey() != null) { model.setWizardHeight(Integer.parseInt(lbHeight.getSelectedKey())); } else { model.setWizardHeight(0); } return true; // ok to proceed } /** * @param ibPackage2 * @param string */ private void checkEmpty(InputBox ib, List<String> errors, String message) throws ValidationException { if (ib.getText().trim().isEmpty()) { ib.setFlagAsError(true); errors.add(message); } else { ib.setFlagAsError(false); } } }