package edu.byu.cs.roots.opg.gui;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.*;
import edu.byu.cs.roots.opg.chart.ChartMarginData;
import edu.byu.cs.roots.opg.gui.tools.FloatEditor;
import edu.byu.cs.roots.opg.gui.tools.FloatSpinnerModel;
public class MarginEditorDialog extends JDialog{
/**
*
*/
private static final long serialVersionUID = 1L;
/** Width of the dialog box */
private static final int DIALOG_WIDTH = 220;
/** Height of the dialog box */
private static final int DIALOG_HEIGHT = 150;
/** Title of the dialog box */
private static final String DIALOG_TITLE = "Margins";
private JLabel lLabel, rLabel, tLabel, bLabel;
private JSpinner lSpinner, rSpinner, tSpinner, bSpinner;
private JButton okButton, cancelButton, acceptButton;
private JPanel buttonPanel;
ChartMarginData margins;
OnePageMainGui parent;
public MarginEditorDialog(ChartMarginData margins, OnePageMainGui parent)
{
this.margins = margins;
this.parent = parent;
initialize();
}
private void initialize()
{
this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
setLayout(new GridBagLayout());
buttonPanel = new JPanel(new GridBagLayout());
lLabel = new JLabel("Left");
rLabel = new JLabel("Right");
tLabel = new JLabel("Top");
bLabel = new JLabel("Bottom");
GridBagConstraints c = new GridBagConstraints();
c.gridx = 1;
c.gridy = 0;
add(lLabel, c);
c.gridx = 2;
add(getLSpinner(), c);
c.gridx = 1;
c.gridy = 1;
add(rLabel, c);
c.gridx = 2;
add(getRSpinner(), c);
c.gridx = 1;
c.gridy = 2;
add(tLabel, c);
c.gridx = 2;
add(getTSpinner(), c);
c.gridx = 1;
c.gridy = 3;
add(bLabel, c);
c.gridx = 2;
add(getBSpinner(), c);
c.gridx = 0;
c.gridy = 4;
c.gridwidth = 4;
add(buttonPanel, c);
c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
buttonPanel.add(getOkButton(), c);
c.gridx = 1;
buttonPanel.add(getAcceptButton(), c);
c.gridx = 2;
buttonPanel.add(getCancelButton(), c);
this.setSize(new Dimension(DIALOG_WIDTH, DIALOG_HEIGHT));
this.setTitle(DIALOG_TITLE);
this.setResizable(false);
}
private void close(){
this.dispose();
}
private void updateChart(){
margins.setLeft(new Double((Float) lSpinner.getModel().getValue()*72));
margins.setRight(new Double((Float) rSpinner.getModel().getValue()*72));
margins.setTop(new Double((Float) tSpinner.getModel().getValue()*72));
margins.setBottom(new Double((Float) bSpinner.getModel().getValue()*72));
parent.session.currentPage().getFirstOptions().setMarginsChanged(true);
parent.refresh();
}
JSpinner getLSpinner() {
if (lSpinner == null) {
final FloatSpinnerModel spinnerModel = new FloatSpinnerModel();
spinnerModel.setMaxvalue(10000);
spinnerModel.setMinvalue(0);
spinnerModel.setValue(margins.getLeft()/72.0);
spinnerModel.setStepsize(.1f);
lSpinner = new JSpinner();
lSpinner.setModel(spinnerModel);
lSpinner.setEditor(new FloatEditor(lSpinner));
lSpinner.setEnabled(true);
lSpinner.setToolTipText("The position of the texts");
lSpinner.setPreferredSize(new Dimension(60, 20));
lSpinner.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent e) {
new Double((Float) spinnerModel.getValue());
}
});
}
return lSpinner;
}
JSpinner getRSpinner() {
if (rSpinner == null) {
final FloatSpinnerModel spinnerModel = new FloatSpinnerModel();
spinnerModel.setMaxvalue(10000);
spinnerModel.setMinvalue(0);
spinnerModel.setValue(margins.getRight()/72.0);
spinnerModel.setStepsize(.1f);
rSpinner = new JSpinner();
rSpinner.setModel(spinnerModel);
rSpinner.setEditor(new FloatEditor(rSpinner));
rSpinner.setEnabled(true);
rSpinner.setToolTipText("The position of the texts");
rSpinner.setPreferredSize(new Dimension(60, 20));
rSpinner.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent e) {
}
});
}
return rSpinner;
}
JSpinner getTSpinner() {
if (tSpinner == null) {
final FloatSpinnerModel spinnerModel = new FloatSpinnerModel();
spinnerModel.setMaxvalue(10000);
spinnerModel.setMinvalue(0);
spinnerModel.setValue(margins.getTop()/72.0);
spinnerModel.setStepsize(.1f);
tSpinner = new JSpinner();
tSpinner.setModel(spinnerModel);
tSpinner.setEditor(new FloatEditor(tSpinner));
tSpinner.setEnabled(true);
tSpinner.setToolTipText("The position of the texts");
tSpinner.setPreferredSize(new Dimension(60, 20));
tSpinner.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent e) {
new Double((Float) spinnerModel.getValue());
}
});
}
return tSpinner;
}
JSpinner getBSpinner() {
if (bSpinner == null) {
final FloatSpinnerModel spinnerModel = new FloatSpinnerModel();
spinnerModel.setMaxvalue(10000);
spinnerModel.setMinvalue(0);
spinnerModel.setValue(margins.getBottom()/72.0);
spinnerModel.setStepsize(.1f);
bSpinner = new JSpinner();
bSpinner.setModel(spinnerModel);
bSpinner.setEditor(new FloatEditor(bSpinner));
bSpinner.setEnabled(true);
bSpinner.setToolTipText("The position of the texts");
bSpinner.setPreferredSize(new Dimension(60, 20));
bSpinner.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent e) {
new Double((Float) spinnerModel.getValue());
}
});
}
return bSpinner;
}
JButton getOkButton() {
if (okButton == null) {
okButton = new JButton("Ok");
okButton.setEnabled(true);
okButton.setToolTipText("Accept changes and close this window");
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
updateChart();
close();
}
});
}
return okButton;
}
JButton getCancelButton() {
if (cancelButton == null) {
cancelButton = new JButton("Cancel");
cancelButton.setEnabled(true);
cancelButton.setToolTipText("Close window and discard any changes");
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
close();
}
});
}
return cancelButton;
}
JButton getAcceptButton() {
if (acceptButton == null) {
acceptButton = new JButton("Accept");
acceptButton.setEnabled(true);
acceptButton.setToolTipText("Update changes without closing the window");
acceptButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
updateChart();
}
});
}
return acceptButton;
}
}