package hep.aida.ref.plotter.style.editor;
/*
* ConfigurePreviewPanel.java
*
* Created on June 22, 2005, 11:06 AM
*/
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Logger;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.border.EtchedBorder;
import org.freehep.swing.JSpinBox;
/**
*
* @author serbo
*/
public class ConfigurePreviewPanel extends JPanel {
protected Logger styleLogger;
int previewWidth = 300;
int previewHeight = 200;
boolean previewFitRegion = true;
int nEvents1D = 1000;
int nx1D = 50;
double xMin1D = 1;
double xMax1D = 101;
int nEvents2D = 1000;
int nx2D = 50;
double xMin2D = 1;
double xMax2D = 101;
int ny2D = 50;
double yMin2D = 1;
double yMax2D = 101;
int nEventsDps2D = 20;
double xMinDps2D = 1;
double xMaxDps2D = 21;
double yMinDps2D = 10;
double yMaxDps2D = 50;
private JButton advancedButton;
private JTextField previewWidthField;
private JTextField previewHeightField;
private JCheckBox previewFitRegionBox;
private JPanel previewPanel;
private JPanel advancedPanel;
private JPanel hist1DPanel;
private JPanel hist2DPanel;
private JPanel dps2DPanel;
private JSpinBox nEvents1DBox;
private JSpinBox nx1DBox;
private JTextField xMin1DField;
private JTextField xMax1DField;
private JSpinBox nEvents2DBox;
private JSpinBox nx2DBox;
private JSpinBox ny2DBox;
private JTextField xMin2DField;
private JTextField xMax2DField;
private JTextField yMin2DField;
private JTextField yMax2DField;
private JSpinBox nEventsDps2DBox;
private JTextField xMinDps2DField;
private JTextField xMaxDps2DField;
private JTextField yMinDps2DField;
private JTextField yMaxDps2DField;
/** Creates a new instance of ConfigurePreviewPanel */
public ConfigurePreviewPanel() {
this(null);
}
public ConfigurePreviewPanel(StyleEditorPanel editorPanel) {
super();
styleLogger = Logger.getLogger("hep.aida.ref.plotter.style.editor");
init(editorPanel);
}
public void init(StyleEditorPanel editorPanel) {
if (advancedPanel == null) makePanel();
resetPanel();
}
public void validateInput() throws NumberFormatException {
int i = Integer.parseInt(previewWidthField.getText());
i = Integer.parseInt(previewHeightField.getText());
double d = Double.parseDouble(xMin1DField.getText());
d = Double.parseDouble(xMax1DField.getText());
d = Double.parseDouble(xMin2DField.getText());
d = Double.parseDouble(xMax2DField.getText());
d = Double.parseDouble(yMin2DField.getText());
d = Double.parseDouble(yMax2DField.getText());
d = Double.parseDouble(xMinDps2DField.getText());
d = Double.parseDouble(xMaxDps2DField.getText());
d = Double.parseDouble(yMinDps2DField.getText());
d = Double.parseDouble(yMaxDps2DField.getText());
}
public void readInput() throws NumberFormatException {
previewWidth = Integer.parseInt(previewWidthField.getText());
previewHeight = Integer.parseInt(previewHeightField.getText());
previewFitRegion = previewFitRegionBox.isSelected();
nEvents1D = nEvents1DBox.getValue();
nx1D = nx1DBox.getValue();
xMin1D = Double.parseDouble(xMin1DField.getText());
xMax1D = Double.parseDouble(xMax1DField.getText());
nEvents2D = nEvents2DBox.getValue();
nx2D = nx2DBox.getValue();
ny2D = ny2DBox.getValue();
xMin2D = Double.parseDouble(xMin2DField.getText());
xMax2D = Double.parseDouble(xMax2DField.getText());
yMin2D = Double.parseDouble(yMin2DField.getText());
yMax2D = Double.parseDouble(yMax2DField.getText());
nEventsDps2D = nEventsDps2DBox.getValue();
xMinDps2D = Double.parseDouble(xMinDps2DField.getText());
xMaxDps2D = Double.parseDouble(xMaxDps2DField.getText());
yMinDps2D = Double.parseDouble(yMinDps2DField.getText());
yMaxDps2D = Double.parseDouble(yMaxDps2DField.getText());
}
public void resetPanel() {
previewWidthField.setText(String.valueOf(previewWidth));
previewHeightField.setText(String.valueOf(previewHeight));
previewFitRegionBox.setSelected(previewFitRegion);
previewWidthField.setEnabled(!previewFitRegion);
previewHeightField.setEnabled(!previewFitRegion);
nEvents1DBox.setValue(nEvents1D);
nx1DBox.setValue(nx1D);
xMin1DField.setText(String.valueOf(xMin1D));
xMax1DField.setText(String.valueOf(xMax1D));
nEvents2DBox.setValue(nEvents2D);
nx2DBox.setValue(nx2D);
ny2DBox.setValue(ny2D);
xMin2DField.setText(String.valueOf(xMin2D));
xMax2DField.setText(String.valueOf(xMax2D));
yMin2DField.setText(String.valueOf(yMin2D));
yMax2DField.setText(String.valueOf(yMax2D));
nEventsDps2DBox.setValue(nEventsDps2D);
xMinDps2DField.setText(String.valueOf(xMinDps2D));
xMaxDps2DField.setText(String.valueOf(xMaxDps2D));
yMinDps2DField.setText(String.valueOf(yMinDps2D));
yMaxDps2DField.setText(String.valueOf(yMaxDps2D));
}
void previewFitRegionAction() {
boolean fit = previewFitRegionBox.isSelected();
previewWidthField.setEnabled(!fit);
previewHeightField.setEnabled(!fit);
}
private void makePanel() {
advancedButton = new JButton("Advanced");
advancedButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
final JFrame frame = (JFrame) SwingUtilities.getAncestorOfClass(JFrame.class, advancedButton);
String title = "Advanced Preview Settings";
boolean wrong = true;
while (wrong) {
int reply = JOptionPane.showOptionDialog(frame, advancedPanel, title, JOptionPane.YES_NO_OPTION, JOptionPane.DEFAULT_OPTION, null, new String[] {"Ok", "Cancel"}, "Cancel");
if (reply == JOptionPane.YES_OPTION) {
try {
validateInput();
wrong = false;
} catch (Exception ex) {
String message = "Wrong input! Please correct: ";
message += "\n"+ex.getMessage();
JOptionPane.showMessageDialog(frame, message);
}
} else {
resetPanel();
wrong = false;
}
}
}
});
previewWidthField = new JTextField(4);
previewHeightField = new JTextField(4);
previewFitRegionBox = new JCheckBox("Fit the Preview Region");
previewFitRegionBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
previewFitRegionAction();
}
});
nEvents1DBox = new JSpinBox(nEvents1D, 0, 1000000);
nx1DBox = new JSpinBox(nx1D, 0, 1000);
xMin1DField = new JTextField(4);
xMax1DField = new JTextField(4);
nEvents2DBox = new JSpinBox(nEvents2D, 0, 1000000);
nx2DBox = new JSpinBox(nx2D, 0, 1000);
ny2DBox = new JSpinBox(ny2D, 0, 1000);
xMin2DField = new JTextField(4);
xMax2DField = new JTextField(4);
yMin2DField = new JTextField(4);
yMax2DField = new JTextField(4);
nEventsDps2DBox = new JSpinBox(nEventsDps2D, 0, 1000000);
xMinDps2DField = new JTextField(4);
xMaxDps2DField = new JTextField(4);
yMinDps2DField = new JTextField(4);
yMaxDps2DField = new JTextField(4);
packPanel();
}
private void packPanel() {
advancedPanel = new JPanel();
advancedPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
advancedPanel.setLayout(new BoxLayout(advancedPanel, BoxLayout.Y_AXIS));
hist1DPanel = new JPanel();
hist1DPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "IHistogram1D"));
hist1DPanel.setLayout(new java.awt.GridBagLayout());
hist2DPanel = new JPanel();
hist2DPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "IHistogram2D"));
hist2DPanel.setLayout(new java.awt.GridBagLayout());
dps2DPanel = new JPanel();
dps2DPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "IDataPointSet"));
dps2DPanel.setLayout(new java.awt.GridBagLayout());
java.awt.GridBagConstraints gbc = new java.awt.GridBagConstraints();
gbc.insets = new java.awt.Insets(2, 2, 2, 2);
// Histogram 1D
gbc.gridy=0; gbc.gridx=0;
gbc.anchor = GridBagConstraints.WEST;
hist1DPanel.add(new JLabel("N Events"), gbc);
gbc.gridx=1;
gbc.anchor = GridBagConstraints.EAST;
hist1DPanel.add(nEvents1DBox, gbc);
gbc.anchor = GridBagConstraints.WEST;
gbc.gridy=1; gbc.gridx=0;
hist1DPanel.add(new JLabel("N Bins: "), gbc);
gbc.gridx=1;
gbc.anchor = GridBagConstraints.EAST;
hist1DPanel.add(nx1DBox, gbc);
gbc.gridx=2;
gbc.anchor = GridBagConstraints.CENTER;
hist1DPanel.add(new JLabel("X Min:"), gbc);
gbc.gridx=3;
hist1DPanel.add(xMin1DField, gbc);
gbc.gridx=4;
hist1DPanel.add(new JLabel("X Max:"), gbc);
gbc.gridx=5;
hist1DPanel.add(xMax1DField, gbc);
// Histogram 2D
gbc.gridy=0; gbc.gridx=0;
gbc.anchor = GridBagConstraints.WEST;
hist2DPanel.add(new JLabel("N Events"), gbc);
gbc.gridx=1;
gbc.anchor = GridBagConstraints.EAST;
hist2DPanel.add(nEvents2DBox, gbc);
gbc.gridy=1; gbc.gridx=0;
gbc.anchor = GridBagConstraints.WEST;
hist2DPanel.add(new JLabel("X: N Bins: "), gbc);
gbc.gridx=1;
gbc.anchor = GridBagConstraints.EAST;
hist2DPanel.add(nx2DBox, gbc);
gbc.gridx=2;
gbc.anchor = GridBagConstraints.CENTER;
hist2DPanel.add(new JLabel("X Min:"), gbc);
gbc.gridx=3;
hist2DPanel.add(xMin2DField, gbc);
gbc.gridx=4;
hist2DPanel.add(new JLabel("X Max:"), gbc);
gbc.gridx=5;
hist2DPanel.add(xMax2DField, gbc);
gbc.gridy=2; gbc.gridx=0;
gbc.anchor = GridBagConstraints.WEST;
hist2DPanel.add(new JLabel("Y: N Bins: "), gbc);
gbc.gridx=1;
gbc.anchor = GridBagConstraints.EAST;
hist2DPanel.add(ny2DBox, gbc);
gbc.gridx=2;
gbc.anchor = GridBagConstraints.CENTER;
hist2DPanel.add(new JLabel("Y Min:"), gbc);
gbc.gridx=3;
hist2DPanel.add(yMin2DField, gbc);
gbc.gridx=4;
hist2DPanel.add(new JLabel("Y Max:"), gbc);
gbc.gridx=5;
hist2DPanel.add(yMax2DField, gbc);
// DPS 2D
gbc.gridy=0; gbc.gridx=0;
gbc.anchor = GridBagConstraints.WEST;
dps2DPanel.add(new JLabel("N Events"), gbc);
gbc.gridx=1;
gbc.anchor = GridBagConstraints.EAST;
dps2DPanel.add(nEventsDps2DBox, gbc);
gbc.anchor = GridBagConstraints.CENTER;
gbc.gridy=1; gbc.gridx=2;
dps2DPanel.add(new JLabel("X Min:"), gbc);
gbc.gridx=3;
dps2DPanel.add(xMinDps2DField, gbc);
gbc.gridx=4;
dps2DPanel.add(new JLabel("X Max:"), gbc);
gbc.gridx=5;
dps2DPanel.add(xMaxDps2DField, gbc);
gbc.gridy=7; gbc.gridx=2;
dps2DPanel.add(new JLabel("Y Min:"), gbc);
gbc.gridx=3;
dps2DPanel.add(yMinDps2DField, gbc);
gbc.gridx=4;
dps2DPanel.add(new JLabel("Y Max:"), gbc);
gbc.gridx=5;
dps2DPanel.add(yMaxDps2DField, gbc);
advancedPanel.add(hist1DPanel);
advancedPanel.add(hist2DPanel);
advancedPanel.add(dps2DPanel);
// Panel with Advanced button
JPanel panel5 = new JPanel();
panel5.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
panel5.setLayout(new FlowLayout(FlowLayout.RIGHT));
panel5.add(advancedButton);
// Panel with preview size
previewPanel = new JPanel();
previewPanel.setLayout(new java.awt.GridBagLayout());
previewPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
gbc.gridy=0; gbc.gridx=0;
previewPanel.add(previewFitRegionBox);
gbc.gridy=1; gbc.gridx=0;
previewPanel.add(new JLabel("Preview Width: "), gbc);
gbc.gridx=1;
previewPanel.add(previewWidthField, gbc);
gbc.gridx=2;
previewPanel.add(new JLabel(" pixels"), gbc);
gbc.gridy=2; gbc.gridx=0;
previewPanel.add(new JLabel("Preview Height: "), gbc);
gbc.gridx=1;
previewPanel.add(previewHeightField, gbc);
gbc.gridx=2;
previewPanel.add(new JLabel(" pixels"), gbc);
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
add(previewPanel);
add(panel5);
}
}
Ads help maintain this website.