package net.sf.openrocket.gui.dialogs.preferences; import java.awt.Desktop; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.border.TitledBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import net.miginfocom.swing.MigLayout; import net.sf.openrocket.gui.adaptors.BooleanModel; import net.sf.openrocket.gui.components.StyledLabel; import net.sf.openrocket.gui.components.StyledLabel.Style; import net.sf.openrocket.gui.util.GUIUtil; import net.sf.openrocket.startup.Preferences; import com.itextpdf.text.Font; public class GraphicsPreferencesPanel extends PreferencesPanel { public GraphicsPreferencesPanel(JDialog parent) { super(parent, new MigLayout("fillx")); this.add(new JPanel(new MigLayout("fill, ins n n n")) { { //Editor Options TitledBorder border = BorderFactory.createTitledBorder(trans.get("pref.dlg.lbl.DecalEditor")); GUIUtil.changeFontStyle(border, Font.BOLD); setBorder(border); ButtonGroup execGroup = new ButtonGroup(); JRadioButton showPrompt = new JRadioButton(trans.get("EditDecalDialog.lbl.prompt")); showPrompt.setSelected(!preferences.isDecalEditorPreferenceSet()); showPrompt.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (((JRadioButton) e.getItem()).isSelected()) { preferences.clearDecalEditorPreference(); } } }); add(showPrompt, "wrap"); execGroup.add(showPrompt); if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.EDIT)) { JRadioButton systemRadio = new JRadioButton(trans.get("EditDecalDialog.lbl.system")); systemRadio.setSelected(preferences.isDecalEditorPreferenceSystem()); systemRadio.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if (((JRadioButton) e.getItem()).isSelected()) { preferences.setDecalEditorPreference(true, null); } } }); add(systemRadio, "wrap"); execGroup.add(systemRadio); } boolean commandLineIsSelected = preferences.isDecalEditorPreferenceSet() && !preferences.isDecalEditorPreferenceSystem(); final JRadioButton commandRadio = new JRadioButton(trans.get("EditDecalDialog.lbl.cmdline")); commandRadio.setSelected(commandLineIsSelected); add(commandRadio, "wrap"); execGroup.add(commandRadio); final JTextField commandText = new JTextField(); commandText.setEnabled(commandLineIsSelected); commandText.setText(commandLineIsSelected ? preferences.getDecalEditorCommandLine() : ""); commandText.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { preferences.setDecalEditorPreference(false, commandText.getText()); } @Override public void removeUpdate(DocumentEvent e) { preferences.setDecalEditorPreference(false, commandText.getText()); } @Override public void changedUpdate(DocumentEvent e) { preferences.setDecalEditorPreference(false, commandText.getText()); } }); add(commandText, "growx, wrap"); final JButton chooser = new JButton(trans.get("EditDecalDialog.btn.chooser")); chooser.setEnabled(commandLineIsSelected); chooser.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JFileChooser fc = new JFileChooser(); int action = fc.showOpenDialog(SwingUtilities.windowForComponent(GraphicsPreferencesPanel.this.parentDialog)); if (action == JFileChooser.APPROVE_OPTION) { String commandLine = fc.getSelectedFile().getAbsolutePath(); commandText.setText(commandLine); preferences.setDecalEditorPreference(false, commandLine); } } }); add(chooser, "wrap"); commandRadio.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { boolean enabled = commandRadio.isSelected(); commandText.setEnabled(enabled); chooser.setEnabled(enabled); } }); } }, "growx, span"); this.add(new JPanel(new MigLayout("fill, ins n n n")) { {/////GL Options TitledBorder border = BorderFactory.createTitledBorder(trans.get("pref.dlg.opengl.lbl.title")); GUIUtil.changeFontStyle(border, Font.BOLD); setBorder(border); //// The effects will take place the next time you open a window. add(new StyledLabel( trans.get("pref.dlg.lbl.effect1"), -2, Style.ITALIC), "spanx, wrap"); BooleanModel enableGLModel = new BooleanModel(preferences.getBoolean(Preferences.OPENGL_ENABLED, true)); final JCheckBox enableGL = new JCheckBox(enableGLModel); enableGL.setText(trans.get("pref.dlg.opengl.but.enableGL")); enableGL.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { preferences.putBoolean(Preferences.OPENGL_ENABLED, enableGL.isSelected()); } }); add(enableGL, "wrap"); final JCheckBox enableAA = new JCheckBox(trans.get("pref.dlg.opengl.but.enableAA")); enableAA.setSelected(preferences.getBoolean(Preferences.OPENGL_ENABLE_AA, true)); enableAA.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { preferences.putBoolean(Preferences.OPENGL_ENABLE_AA, enableAA.isSelected()); } }); enableGLModel.addEnableComponent(enableAA); add(enableAA, "wrap"); final JCheckBox useFBO = new JCheckBox(trans.get("pref.dlg.opengl.lbl.useFBO")); useFBO.setSelected(preferences.getBoolean(Preferences.OPENGL_USE_FBO, false)); useFBO.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { preferences.putBoolean(Preferences.OPENGL_USE_FBO, useFBO.isSelected()); } }); enableGLModel.addEnableComponent(useFBO); add(useFBO, "wrap"); } }, "growx, span"); } }