/* * Beanfabrics Framework Copyright (C) by Michael Karneim, beanfabrics.org * Use is subject to license terms. See license.txt. */ package org.beanfabrics.swing.customizer.path; import org.beanfabrics.Path; 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.validation.ValidationState; /** * The <code>PathChooserPM</code> is the presentation model of the * {@link PathChooserDialog}. * * @author Michael Karneim */ public class PathChooserPM extends AbstractPM { public interface OnApplyHandler { void apply(); } private OnApplyHandler onApplyHandler; protected final PathBrowserPM pathBrowser = new PathBrowserPM(); protected final OperationPM apply = new OperationPM(); public PathChooserPM() { PMManager.setup(this); } public void onApply(OnApplyHandler handler) { this.onApplyHandler = handler; revalidateProperties(); } public void setPathContext(PathContext pathContext) { this.pathBrowser.setPathContext(pathContext); } public Path getData() { return pathBrowser.getCurrentPath(); } public void setData(Path data) { pathBrowser.setCurrentPath(data); } @Operation public void apply() { this.onApplyHandler.apply(); } @Validation(path = "apply",message="Missing callback functions") boolean isApplicable() { return onApplyHandler != null; } @Validation(path = "apply") ValidationState getPathBrowserValidationState() { return pathBrowser.getValidationState(); } }