package org.beanfabrics.samples.properties;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import org.beanfabrics.IModelProvider;
import org.beanfabrics.Link;
import org.beanfabrics.ModelProvider;
import org.beanfabrics.ModelSubscriber;
import org.beanfabrics.Path;
import org.beanfabrics.View;
import org.beanfabrics.swing.BnLabel;
import org.beanfabrics.swing.table.BnColumnBuilder;
import org.beanfabrics.swing.table.BnTable;
/*
* @created by the Beanfabrics Component Wizard, www.beanfabrics.org
*/
@SuppressWarnings("serial")
public class PropertiesPanel extends JPanel implements View<PropertiesPM>, ModelSubscriber {
private BnLabel statusLabel;
private JPanel footerPanel;
private BnTable bnTable;
private JScrollPane scrollPane;
private JPanel centerPanel;
private final Link link = new Link(this);
private ModelProvider localModelProvider;
/**
* Constructs a new <code>PropertiesPanel</code>.
*/
public PropertiesPanel() {
super();
setLayout(new BorderLayout());
add(getCenterPanel(), BorderLayout.CENTER);
//
}
/**
* Returns the local {@link ModelProvider} for this class.
*
* @return the local <code>ModelProvider</code>
* @wbp.nonvisual location=10,430
*/
protected ModelProvider getLocalModelProvider() {
if (localModelProvider == null) {
localModelProvider = new ModelProvider(); // @wb:location=10,430
localModelProvider.setPresentationModelType(PropertiesPM.class);
}
return localModelProvider;
}
/** {@inheritDoc} */
public PropertiesPM getPresentationModel() {
return getLocalModelProvider().getPresentationModel();
}
/** {@inheritDoc} */
public void setPresentationModel(PropertiesPM pModel) {
getLocalModelProvider().setPresentationModel(pModel);
}
/** {@inheritDoc} */
public IModelProvider getModelProvider() {
return this.link.getModelProvider();
}
/** {@inheritDoc} */
public void setModelProvider(IModelProvider modelProvider) {
this.link.setModelProvider(modelProvider);
}
/** {@inheritDoc} */
public Path getPath() {
return this.link.getPath();
}
/** {@inheritDoc} */
public void setPath(Path path) {
this.link.setPath(path);
}
/**
* @return
*/
private JPanel getCenterPanel() {
if (centerPanel == null) {
centerPanel = new JPanel();
centerPanel.setLayout(new BorderLayout());
centerPanel.add(getScrollPane(), BorderLayout.CENTER);
centerPanel.add(getFooterPanel(), BorderLayout.SOUTH);
}
return centerPanel;
}
/**
* @return
*/
private JScrollPane getScrollPane() {
if (scrollPane == null) {
scrollPane = new JScrollPane();
scrollPane.setViewportView(getBnTable());
scrollPane.getViewport().setBackground(getBnTable().getBackground());
}
return scrollPane;
}
/**
* @return
*/
private BnTable getBnTable() {
if (bnTable == null) {
bnTable = new BnTable();
bnTable.setPath(new org.beanfabrics.Path("this"));
bnTable.setColumns(new BnColumnBuilder().addColumn().withPath("this.key").withName("Key").withWidth(200).withWidthFixed(true).addColumn().withPath("this.value").withName("Value").build());
bnTable.setModelProvider(getLocalModelProvider());
bnTable.setBackground(Color.WHITE);
bnTable.setShowVerticalLines(true);
bnTable.setShowHorizontalLines(false);
bnTable.setIntercellSpacing(new Dimension(0, 0));
}
return bnTable;
}
/**
* @return
*/
private JPanel getFooterPanel() {
if (footerPanel == null) {
footerPanel = new JPanel();
footerPanel.setLayout(new BorderLayout());
footerPanel.add(getStatusLabel());
}
return footerPanel;
}
/**
* @return
*/
private BnLabel getStatusLabel() {
if (statusLabel == null) {
statusLabel = new BnLabel();
statusLabel.setPath(new org.beanfabrics.Path("this.status"));
statusLabel.setModelProvider(getLocalModelProvider());
}
return statusLabel;
}
}