package net.sf.openrocket.gui.dialogs;
import java.awt.Color;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.miginfocom.swing.MigLayout;
import net.sf.openrocket.gui.adaptors.EnumModel;
import net.sf.openrocket.gui.components.ColorChooserButton;
import net.sf.openrocket.gui.print.PaperOrientation;
import net.sf.openrocket.gui.print.PaperSize;
import net.sf.openrocket.gui.print.PrintSettings;
import net.sf.openrocket.gui.util.GUIUtil;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.logging.Markers;
import net.sf.openrocket.startup.Application;
/**
* This class is a dialog for displaying advanced settings for printing rocket related info.
*/
public class PrintSettingsDialog extends JDialog {
private static final Logger log = LoggerFactory.getLogger(PrintSettingsDialog.class);
private static final Translator trans = Application.getTranslator();
/**
* Construct a dialog for setting the advanced rocket print settings.
*
* @param parent the owning dialog
*/
public PrintSettingsDialog(Window parent, final PrintSettings settings) {
////Print settings
super(parent, trans.get("title"), ModalityType.APPLICATION_MODAL);
JPanel panel = new JPanel(new MigLayout("fill"));
////Template fill color:
panel.add(new JLabel(trans.get("lbl.Templatefillcolor")));
final ColorChooserButton fillColorButton = new ColorChooserButton(settings.getTemplateFillColor());
fillColorButton.addColorPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
Color c = (Color) evt.getNewValue();
log.info("Template fill color changed to " + c);
settings.setTemplateFillColor(c);
}
});
panel.add(fillColorButton, "wrap para");
//// Template border color:
panel.add(new JLabel(trans.get("lbl.Templatebordercolor")));
final ColorChooserButton borderColorButton = new ColorChooserButton(settings.getTemplateBorderColor());
borderColorButton.addColorPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
Color c = (Color) evt.getNewValue();
log.info("Template border color changed to " + c);
settings.setTemplateBorderColor(c);
}
});
panel.add(borderColorButton, "wrap para*2");
JComboBox combo = new JComboBox(new EnumModel<PaperSize>(settings, "PaperSize"));
////Paper size:
panel.add(new JLabel(trans.get("lbl.Papersize")));
panel.add(combo, "growx, wrap para");
combo = new JComboBox(new EnumModel<PaperOrientation>(settings, "PaperOrientation"));
//// Paper orientation:
panel.add(new JLabel(trans.get("lbl.Paperorientation")));
panel.add(combo, "growx, wrap para*2");
//// Reset
JButton button = new JButton(trans.get("but.Reset"));
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
log.info(Markers.USER_MARKER, "Resetting print setting values to defaults");
PrintSettings defaults = new PrintSettings();
settings.loadFrom(defaults);
fillColorButton.setSelectedColor(settings.getTemplateFillColor());
borderColorButton.setSelectedColor(settings.getTemplateBorderColor());
}
});
panel.add(button, "spanx, split, right");
//// Close
JButton closeButton = new JButton(trans.get("but.Close"));
closeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
PrintSettingsDialog.this.setVisible(false);
}
});
panel.add(closeButton, "right");
this.add(panel);
GUIUtil.setDisposableDialogOptions(this, closeButton);
}
}