create changelog entry
[debian/openrocket] / core / 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.gui.util.GUIUtil;
23 import net.sf.openrocket.l10n.Translator;
24 import net.sf.openrocket.logging.LogHelper;
25 import net.sf.openrocket.startup.Application;
26
27 /**
28  * This class is a dialog for displaying advanced settings for printing rocket related info.
29  */
30 public class PrintSettingsDialog extends JDialog {
31         private static final LogHelper log = Application.getLogger();
32         private static final Translator trans = Application.getTranslator();
33
34         
35         /**
36          * Construct a dialog for setting the advanced rocket print settings.
37          *
38          * @param parent the owning dialog
39          */
40         public PrintSettingsDialog(Window parent, final PrintSettings settings) {
41                 ////Print settings
42                 super(parent, trans.get("title"), ModalityType.APPLICATION_MODAL);
43                 
44
45                 JPanel panel = new JPanel(new MigLayout("fill"));
46                 
47                 ////Template fill color:
48                 panel.add(new JLabel(trans.get("lbl.Templatefillcolor")));
49                 final ColorChooserButton fillColorButton = new ColorChooserButton(settings.getTemplateFillColor());
50                 fillColorButton.addColorPropertyChangeListener(new PropertyChangeListener() {
51                         @Override
52                         public void propertyChange(PropertyChangeEvent evt) {
53                                 Color c = (Color) evt.getNewValue();
54                                 log.info("Template fill color changed to " + c);
55                                 settings.setTemplateFillColor(c);
56                         }
57                 });
58                 panel.add(fillColorButton, "wrap para");
59                 
60                 //// Template border color:
61                 panel.add(new JLabel(trans.get("lbl.Templatebordercolor")));
62                 final ColorChooserButton borderColorButton = new ColorChooserButton(settings.getTemplateBorderColor());
63                 borderColorButton.addColorPropertyChangeListener(new PropertyChangeListener() {
64                         @Override
65                         public void propertyChange(PropertyChangeEvent evt) {
66                                 Color c = (Color) evt.getNewValue();
67                                 log.info("Template border color changed to " + c);
68                                 settings.setTemplateBorderColor(c);
69                         }
70                 });
71                 panel.add(borderColorButton, "wrap para*2");
72                 
73
74
75                 JComboBox combo = new JComboBox(new EnumModel<PaperSize>(settings, "PaperSize"));
76                 ////Paper size:
77                 panel.add(new JLabel(trans.get("lbl.Papersize")));
78                 panel.add(combo, "growx, wrap para");
79                 
80
81                 combo = new JComboBox(new EnumModel<PaperOrientation>(settings, "PaperOrientation"));
82                 //// Paper orientation:
83                 panel.add(new JLabel(trans.get("lbl.Paperorientation")));
84                 panel.add(combo, "growx, wrap para*2");
85                 
86
87
88
89                 //// Reset
90                 JButton button = new JButton(trans.get("but.Reset"));
91                 button.addActionListener(new ActionListener() {
92                         @Override
93                         public void actionPerformed(ActionEvent e) {
94                                 log.user("Resetting print setting values to defaults");
95                                 PrintSettings defaults = new PrintSettings();
96                                 settings.loadFrom(defaults);
97                                 fillColorButton.setSelectedColor(settings.getTemplateFillColor());
98                                 borderColorButton.setSelectedColor(settings.getTemplateBorderColor());
99                         }
100                 });
101                 panel.add(button, "spanx, split, right");
102                 
103                 //// Close
104                 JButton closeButton = new JButton(trans.get("but.Close"));
105                 closeButton.addActionListener(new ActionListener() {
106                         @Override
107                         public void actionPerformed(ActionEvent e) {
108                                 PrintSettingsDialog.this.setVisible(false);
109                         }
110                 });
111                 panel.add(closeButton, "right");
112                 
113                 this.add(panel);
114                 GUIUtil.setDisposableDialogOptions(this, closeButton);
115         }
116         
117
118 }