/*
* 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 java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import org.beanfabrics.meta.PathNode;
import org.beanfabrics.model.AbstractPM;
import org.beanfabrics.model.BooleanPM;
import org.beanfabrics.model.DatePM;
import org.beanfabrics.model.ITextPM;
import org.beanfabrics.model.ListPM;
import org.beanfabrics.model.PMManager;
import org.beanfabrics.model.TextPM;
/**
* @author Michael Karneim
*/
public class PathBrowserPanelTestGUI {
public static void main(String[] args) {
PathNode pathElementInfo = PMManager.getInstance().getMetadata().getPathNode(ProjectModel.class);
final PathBrowserPM model = new PathBrowserPM();
model.setPathContext(new PathContext(pathElementInfo, PMManager.getInstance().getMetadata().getTypeInfo(ITextPM.class)));
EventQueue.invokeLater(new Runnable() {
public void run() {
PathBrowserPanel panel = new PathBrowserPanel();
panel.setPresentationModel(model);
JFrame frame = new JFrame("Path Browser");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(panel, BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
private static class ProjectModel extends AbstractPM {
TextPM name = new TextPM();
DatePM dueDate = new DatePM();
ContactModel manager = new ContactModel();
ListPM<ContactModel> members = new ListPM<ContactModel>();
public ProjectModel() {
PMManager.setup(this);
}
}
private static class ContactModel extends AbstractPM {
TextPM firstname = new TextPM();
TextPM lastname = new TextPM();
DatePM dateOfBirth = new DatePM();
ListPM<EmailAddressModel> emailAddresses = new ListPM<EmailAddressModel>();
public ContactModel() {
PMManager.setup(this);
}
}
private static class EmailAddressModel extends TextPM {
BooleanPM isMain = new BooleanPM();
public EmailAddressModel() {
PMManager.setup(this);
}
}
}