1 package net.sf.openrocket.gui.dialogs;
4 import java.awt.Window;
5 import java.awt.event.ActionEvent;
6 import java.awt.event.ActionListener;
7 import java.beans.PropertyChangeEvent;
8 import java.beans.PropertyChangeListener;
10 import javax.swing.JButton;
11 import javax.swing.JComboBox;
12 import javax.swing.JDialog;
13 import javax.swing.JLabel;
14 import javax.swing.JPanel;
16 import net.miginfocom.swing.MigLayout;
17 import net.sf.openrocket.gui.adaptors.EnumModel;
18 import net.sf.openrocket.gui.components.ColorChooserButton;
19 import net.sf.openrocket.gui.print.PaperOrientation;
20 import net.sf.openrocket.gui.print.PaperSize;
21 import net.sf.openrocket.gui.print.PrintSettings;
22 import net.sf.openrocket.logging.LogHelper;
23 import net.sf.openrocket.startup.Application;
24 import net.sf.openrocket.util.GUIUtil;
27 * This class is a dialog for displaying advanced settings for printing rocket related info.
29 public class PrintSettingsDialog extends JDialog {
30 private static final LogHelper log = Application.getLogger();
34 * Construct a dialog for setting the advanced rocket print settings.
36 * @param parent the owning dialog
38 public PrintSettingsDialog(Window parent, final PrintSettings settings) {
39 super(parent, "Print settings", ModalityType.APPLICATION_MODAL);
42 JPanel panel = new JPanel(new MigLayout("fill"));
45 panel.add(new JLabel("Template fill color:"));
46 final ColorChooserButton fillColorButton = new ColorChooserButton(settings.getTemplateFillColor());
47 fillColorButton.addColorPropertyChangeListener(new PropertyChangeListener() {
49 public void propertyChange(PropertyChangeEvent evt) {
50 Color c = (Color) evt.getNewValue();
51 log.info("Template fill color changed to " + c);
52 settings.setTemplateFillColor(c);
55 panel.add(fillColorButton, "wrap para");
58 panel.add(new JLabel("Template border color:"));
59 final ColorChooserButton borderColorButton = new ColorChooserButton(settings.getTemplateBorderColor());
60 borderColorButton.addColorPropertyChangeListener(new PropertyChangeListener() {
62 public void propertyChange(PropertyChangeEvent evt) {
63 Color c = (Color) evt.getNewValue();
64 log.info("Template border color changed to " + c);
65 settings.setTemplateBorderColor(c);
68 panel.add(borderColorButton, "wrap para*2");
72 JComboBox combo = new JComboBox(new EnumModel<PaperSize>(settings, "PaperSize"));
73 panel.add(new JLabel("Paper size:"));
74 panel.add(combo, "growx, wrap para");
77 combo = new JComboBox(new EnumModel<PaperOrientation>(settings, "PaperOrientation"));
78 panel.add(new JLabel("Paper orientation:"));
79 panel.add(combo, "growx, wrap para*2");
85 JButton button = new JButton("Reset");
86 button.addActionListener(new ActionListener() {
88 public void actionPerformed(ActionEvent e) {
89 log.user("Resetting print setting values to defaults");
90 PrintSettings defaults = new PrintSettings();
91 settings.loadFrom(defaults);
92 fillColorButton.setSelectedColor(settings.getTemplateFillColor());
93 borderColorButton.setSelectedColor(settings.getTemplateBorderColor());
96 panel.add(button, "spanx, split, right");
99 JButton closeButton = new JButton("Close");
100 closeButton.addActionListener(new ActionListener() {
102 public void actionPerformed(ActionEvent e) {
103 PrintSettingsDialog.this.setVisible(false);
106 panel.add(closeButton, "right");
109 GUIUtil.setDisposableDialogOptions(this, closeButton);