/*
* 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.Color;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
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.customizer.util.CustomizerUtil;
/**
* The <code>PathChooserDialog</code> is a view on a {@link PathChooserPM} and
* allows choosing a valid Path inside a presentation model.
*
* @created by the Beanfabrics Component Wizard, www.beanfabrics.org
*/
@SuppressWarnings("serial")
public class PathChooserDialog extends JDialog implements View<PathChooserPM>, ModelSubscriber {
public static PathChooserDialog create(Window parent) {
if (parent instanceof Dialog) {
return new PathChooserDialog((Dialog)parent);
} else {
return new PathChooserDialog((Frame)parent);
}
}
private JButton cancelButton;
private BnButton okBnButton;
private JPanel buttonPanel;
private PathBrowserPanel pathChooserPanel;
private JPanel centerPanel;
private final Link link = new Link(this);
private ModelProvider localProvider;
/**
* @wbp.parser.constructor
*/
private PathChooserDialog(Dialog dialog) {
super(dialog);
init();
}
private PathChooserDialog(Frame frame) {
super(frame);
init();
}
private void init() {
getContentPane().setLayout(new BorderLayout());
getContentPane().add(getCenterPanel(), BorderLayout.CENTER);
this.setBackground(this.getDefaultBackground());
//
}
/**
* Returns the local {@link ModelProvider} for this class.
*
* @wbp.nonvisual location=10,430
* @return the local <code>ModelProvider</code>
*/
protected ModelProvider getLocalProvider() {
if (localProvider == null) {
localProvider = new ModelProvider(); // @wb:location=10,430
localProvider.setPresentationModelType(PathChooserPM.class);
}
return localProvider;
}
/** {@inheritDoc} */
public PathChooserPM getPresentationModel() {
return getLocalProvider().getPresentationModel();
}
/** {@inheritDoc} */
public void setPresentationModel(PathChooserPM 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 getCenterPanel() {
if (centerPanel == null) {
centerPanel = new JPanel();
centerPanel.setLayout(new BorderLayout());
centerPanel.add(getPathChooserPanel(), BorderLayout.CENTER);
centerPanel.add(getButtonPanel(), BorderLayout.SOUTH);
}
return centerPanel;
}
private PathBrowserPanel getPathChooserPanel() {
if (pathChooserPanel == null) {
pathChooserPanel = new PathBrowserPanel();
pathChooserPanel.setPath(new org.beanfabrics.Path("this.pathBrowser"));
pathChooserPanel.setModelProvider(getLocalProvider());
}
return pathChooserPanel;
}
private JPanel getButtonPanel() {
if (buttonPanel == null) {
buttonPanel = new JPanel();
buttonPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
final GridBagLayout gridBagLayout = new GridBagLayout();
gridBagLayout.columnWidths = new int[] { 0, 7 };
buttonPanel.setLayout(gridBagLayout);
final GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridy = 0;
gridBagConstraints.gridx = 0;
gridBagConstraints.insets = new Insets(4, 4, 4, 5);
buttonPanel.add(getOkBnButton(), gridBagConstraints);
final GridBagConstraints gridBagConstraints_1 = new GridBagConstraints();
gridBagConstraints_1.anchor = GridBagConstraints.EAST;
gridBagConstraints_1.weightx = 1;
gridBagConstraints_1.weighty = 0;
gridBagConstraints_1.insets = new Insets(4, 4, 4, 0);
gridBagConstraints_1.gridy = 0;
gridBagConstraints_1.gridx = 1;
buttonPanel.add(getCancelButton(), gridBagConstraints_1);
}
return buttonPanel;
}
private BnButton getOkBnButton() {
if (okBnButton == null) {
okBnButton = new BnButton();
okBnButton.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
dispose();
}
});
okBnButton.setPath(new org.beanfabrics.Path("this.apply"));
okBnButton.setModelProvider(getLocalProvider());
okBnButton.setText("Ok");
}
return okBnButton;
}
private JButton getCancelButton() {
if (cancelButton == null) {
cancelButton = new JButton();
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
dispose();
}
});
cancelButton.setText("Cancel");
}
return cancelButton;
}
private Color getDefaultBackground() {
if (CustomizerUtil.isAquaLookAndFeel()) {
return new Color(232, 232, 232);
} else {
return getBackground();
}
}
}