/*
* 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.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.AbstractButton;
import javax.swing.JPanel;
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.BnButton;
import org.beanfabrics.swing.BnTextField;
/**
* The <code>PathPanel</code> is a view on a {@link PathPM}.
*
* @created by the Beanfabrics Component Wizard, www.beanfabrics.org
*/
@SuppressWarnings("serial")
public class PathPanel extends JPanel implements View<org.beanfabrics.swing.customizer.path.PathPM>, ModelSubscriber {
private BnButton bnButton;
private BnTextField bnTextField;
private JPanel panel;
private final Link link = new Link(this);
private ModelProvider localProvider;
/**
* Constructs a new <code>PathPanel</code>.
*/
public PathPanel() {
super();
setLayout(new BorderLayout());
add(getPanel(), BorderLayout.CENTER);
//
}
/**
* Returns the local {@link ModelProvider} for this class.
*
* @return the local <code>ModelProvider</code>
*/
protected ModelProvider getLocalProvider() {
if (localProvider == null) {
localProvider = new ModelProvider(); // @wb:location=10,430
localProvider.setPresentationModelType(org.beanfabrics.swing.customizer.path.PathPM.class);
}
return localProvider;
}
/** {@inheritDoc} */
public org.beanfabrics.swing.customizer.path.PathPM getPresentationModel() {
return getLocalProvider().getPresentationModel();
}
/** {@inheritDoc} */
public void setPresentationModel(org.beanfabrics.swing.customizer.path.PathPM pModel) {
getLocalProvider().setPresentationModel(pModel);
}
/** {@inheritDoc} */
public IModelProvider getModelProvider() {
return this.link.getModelProvider();
}
/** {@inheritDoc} */
public void setModelProvider(IModelProvider provider) {
this.link.setModelProvider(provider);
}
/** {@inheritDoc} */
public Path getPath() {
return this.link.getPath();
}
/** {@inheritDoc} */
public void setPath(Path path) {
this.link.setPath(path);
}
private JPanel getPanel() {
if (panel == null) {
panel = new JPanel();
final GridBagLayout gridBagLayout = new GridBagLayout();
gridBagLayout.columnWidths = new int[] { 0, 7 };
panel.setLayout(gridBagLayout);
final GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1;
gridBagConstraints.insets = new Insets(0, 0, 0, 0);
gridBagConstraints.gridy = 0;
gridBagConstraints.gridx = 0;
panel.add(getBnTextField(), gridBagConstraints);
final GridBagConstraints gridBagConstraints_1 = new GridBagConstraints();
gridBagConstraints_1.insets = new Insets(0, 4, 0, 0);
gridBagConstraints_1.gridy = 0;
gridBagConstraints_1.gridx = 1;
panel.add(getBnButton(), gridBagConstraints_1);
panel.setOpaque(false);
}
return panel;
}
private BnTextField getBnTextField() {
if (bnTextField == null) {
bnTextField = new BnTextField();
bnTextField.setPath(new org.beanfabrics.Path("this"));
bnTextField.setModelProvider(getLocalProvider());
bnTextField.setColumns(10);
}
return bnTextField;
}
private BnButton getBnButton() {
if (bnButton == null) {
bnButton = new BnButton();
bnButton.setPath(new org.beanfabrics.Path("this.choosePath"));
bnButton.setModelProvider(getLocalProvider());
bnButton.setText("Browse ...");
setTexturedButtonType(bnButton);
}
return bnButton;
}
private static void setTexturedButtonType(AbstractButton button) {
// see http://developer.apple.com/technotes/tn2007/tn2196.html
button.putClientProperty("JButton.buttonType", "gradient");
}
}