/*
* Beanfabrics Framework Copyright (C) by Michael Karneim, beanfabrics.org
* Use is subject to license terms. See license.txt.
*/
package org.beanfabrics.swing.customizer.table;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.beanfabrics.ModelProvider;
import org.beanfabrics.Path;
import org.beanfabrics.model.AbstractPM;
import org.beanfabrics.model.BooleanPM;
import org.beanfabrics.model.IntegerPM;
import org.beanfabrics.model.ListPM;
import org.beanfabrics.model.PMManager;
import org.beanfabrics.model.TextPM;
import org.beanfabrics.swing.table.BnColumnBuilder;
import org.beanfabrics.swing.table.BnTable;
/**
* @author Michael Karneim
*/
@SuppressWarnings("serial")
public class BnTableCustomizerTestGUI extends JDialog {
private static class FilePM extends AbstractPM {
TextPM name = new TextPM();
IntegerPM size = new IntegerPM();
AccessRightsPM userRights = new AccessRightsPM();
AccessRightsPM groupRights = new AccessRightsPM();
AccessRightsPM otherRights = new AccessRightsPM();
public FilePM() {
PMManager.setup(this);
}
}
private static class AccessRightsPM extends AbstractPM {
BooleanPM read = new BooleanPM();
BooleanPM write = new BooleanPM();
BooleanPM execute = new BooleanPM();
public AccessRightsPM() {
PMManager.setup(this);
}
}
private static class ListOfFilesPM extends ListPM<FilePM> {
}
private static class BrowserPM extends AbstractPM {
ListOfFilesPM files = new ListOfFilesPM();
ListPM<TextPM> lastSearchPatterns = new ListPM<TextPM>();
TextPM searchPattern = new TextPM();
public BrowserPM() {
PMManager.setup(this);
}
}
private JButton closeButton;
private JPanel panel;
private BnTableCustomizer bnTableCustomizer;
public BnTableCustomizerTestGUI() {
super((JDialog)null, true);
getContentPane().add(getBnTableCustomizer(), BorderLayout.CENTER);
getContentPane().add(getPanel(), BorderLayout.SOUTH);
}
protected BnTableCustomizer getBnTableCustomizer() {
if (bnTableCustomizer == null) {
bnTableCustomizer = new BnTableCustomizer();
}
return bnTableCustomizer;
}
protected JPanel getPanel() {
if (panel == null) {
panel = new JPanel();
panel.add(getCloseButton());
}
return panel;
}
protected JButton getCloseButton() {
if (closeButton == null) {
closeButton = new JButton();
closeButton.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
dispose();
}
});
closeButton.setText("Close");
}
return closeButton;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
// prepare the bean for customization
BnTable bean = new BnTable();
ModelProvider provider = new ModelProvider();
provider.setPresentationModelType(BrowserPM.class);
bean.setModelProvider(provider);
bean.setPath(new Path("this.files"));
bean.setColumns(new BnColumnBuilder().addColumn().withPath("name").withName("Name").build());
// then create the customizer frame
BnTableCustomizerTestGUI f = new BnTableCustomizerTestGUI();
f.bnTableCustomizer.setObject(bean);
// finally show the frame
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
});
}
}