package org.beanfabrics.swing.customizer.table; import org.beanfabrics.meta.PathNode; import org.beanfabrics.model.AbstractPM; import org.beanfabrics.model.OperationPM; import org.beanfabrics.model.PMManager; import org.beanfabrics.support.Operation; import org.beanfabrics.support.Validation; import org.beanfabrics.swing.table.BnColumn; import org.beanfabrics.validation.ValidationState; public class ColumnListConfigurationPM extends AbstractPM { public interface OnApplyHandler { public void apply(); } protected ColumnListPM list = new ColumnListPM(); protected OperationPM apply = new OperationPM(); protected OnApplyHandler onApplyHandler; public ColumnListConfigurationPM() { PMManager.setup(this); } public void onApply(OnApplyHandler handler) { onApplyHandler = handler; revalidateProperties(); } public void setData(BnColumn[] columns) { list.setData(columns); } public BnColumn[] getData() { return list.getData(); } public void setRootPathInfo(PathNode rootPathInfo) { list.setRowPmRootNode(rootPathInfo); } @Operation public void apply() { onApplyHandler.apply(); } @Validation(path = "apply",message="Missing callback functions") boolean isApplicable() { return onApplyHandler != null; } @Validation(path = "apply") ValidationState getPathBrowserValidationState() { return list.getValidationState(); } }