8020bf488e347d018ec2c4c77938fd9b2eae8d96
[debian/openrocket] / src / net / sf / openrocket / gui / dialogs / PrintSettingsDialog.java
1 package net.sf.openrocket.gui.dialogs;
2
3 import java.awt.Color;
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;
9
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;
15
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;
25
26 /**
27  * This class is a dialog for displaying advanced settings for printing rocket related info.
28  */
29 public class PrintSettingsDialog extends JDialog {
30         private static final LogHelper log = Application.getLogger();
31         
32         
33         /**
34          * Construct a dialog for setting the advanced rocket print settings.
35          *
36          * @param parent the owning dialog
37          */
38         public PrintSettingsDialog(Window parent, final PrintSettings settings) {
39                 super(parent, "Print settings", ModalityType.APPLICATION_MODAL);
40                 
41
42                 JPanel panel = new JPanel(new MigLayout("fill"));
43                 
44
45                 panel.add(new JLabel("Template fill color:"));
46                 final ColorChooserButton fillColorButton = new ColorChooserButton(settings.getTemplateFillColor());
47                 fillColorButton.addColorPropertyChangeListener(new PropertyChangeListener() {
48                         @Override
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);
53                         }
54                 });
55                 panel.add(fillColorButton, "wrap para");
56                 
57
58                 panel.add(new JLabel("Template border color:"));
59                 final ColorChooserButton borderColorButton = new ColorChooserButton(settings.getTemplateBorderColor());
60                 borderColorButton.addColorPropertyChangeListener(new PropertyChangeListener() {
61                         @Override
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);
66                         }
67                 });
68                 panel.add(borderColorButton, "wrap para*2");
69                 
70
71
72                 JComboBox combo = new JComboBox(new EnumModel<PaperSize>(settings, "PaperSize"));
73                 panel.add(new JLabel("Paper size:"));
74                 panel.add(combo, "growx, wrap para");
75                 
76
77                 combo = new JComboBox(new EnumModel<PaperOrientation>(settings, "PaperOrientation"));
78                 panel.add(new JLabel("Paper orientation:"));
79                 panel.add(combo, "growx, wrap para*2");
80                 
81
82
83
84
85                 JButton button = new JButton("Reset");
86                 button.addActionListener(new ActionListener() {
87                         @Override
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());
94                         }
95                 });
96                 panel.add(button, "spanx, split, right");
97                 
98
99                 JButton closeButton = new JButton("Close");
100                 closeButton.addActionListener(new ActionListener() {
101                         @Override
102                         public void actionPerformed(ActionEvent e) {
103                                 PrintSettingsDialog.this.setVisible(false);
104                         }
105                 });
106                 panel.add(closeButton, "right");
107                 
108                 this.add(panel);
109                 GUIUtil.setDisposableDialogOptions(this, closeButton);
110         }
111         
112
113 }