/** * */ 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.AnchorLink; import de.jwic.controls.InputBox; import de.jwic.events.SelectionEvent; import de.jwic.events.SelectionListener; /** * Edits the properties of a WizardPageConfig. * @author lippisch */ public class PageEditorControl extends ControlContainer { private WizardPageConfig config; private int pageNumber; private InputBox ibClassName; private InputBox ibTitle; private InputBox ibSubTitle; private IPageEditorControlObserver observer = null; // allow only 1 listener. /** * @param container * @param name */ public PageEditorControl(IControlContainer container, String name, WizardPageConfig config, int pageNumber) { super(container, name); this.config = config; this.pageNumber = pageNumber; createControls(); } /** * */ private void createControls() { AnchorLink btRemove = new AnchorLink(this, "btRemove"); btRemove.setTitle("Remove"); //btRemove.setIconEnabled(ImageLibrary.IMG_CROSS); btRemove.addSelectionListener(new SelectionListener() { @Override public void objectSelected(SelectionEvent event) { removeEntry(); } }); ibClassName = new InputBox(this, "ibClassName"); ibClassName.setWidth(400); ibTitle = new InputBox(this, "ibTitle"); ibTitle.setWidth(400); ibSubTitle = new InputBox(this, "ibSubtitle"); ibSubTitle.setWidth(400); // apply values ibClassName.setText(config.getClassName()); ibTitle.setText(config.getTitle()); ibSubTitle.setText(config.getSubTitle()); } /** * */ protected void removeEntry() { if (observer != null) { observer.onDeletion(this); } } /** * @return the pageNumber */ public int getPageNumber() { return pageNumber; } /** * @param pageNumber the pageNumber to set */ public void setPageNumber(int pageNumber) { this.pageNumber = pageNumber; } /** * @param listener the listener to set */ public void setObserver(IPageEditorControlObserver observer) { this.observer = observer; } /** * Copies the values from the input fields into the configuration object and * validates them. * @return */ public List<String> validate() { List<String> errors = new ArrayList<String>(); config.setClassName(ibClassName.getText()); config.setTitle(ibTitle.getText()); config.setSubTitle(ibSubTitle.getText()); if (config.getClassName().trim().isEmpty()) { errors.add("Page " + getPageNumber() + ": Classname missing"); ibClassName.setFlagAsError(true); } else { ibClassName.setFlagAsError(false); } return errors; } /** * Returns the configuration. * @return */ public WizardPageConfig getPageConfig() { // make sure to update.. config.setClassName(ibClassName.getText()); config.setTitle(ibTitle.getText()); config.setSubTitle(ibSubTitle.getText()); return config; } }