diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index 59ead4cac..7d169196e 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -253,7 +253,15 @@ pref.dlg.tab.Materials = Materials pref.dlg.tab.Custommaterials = Custom materials pref.dlg.tab.Options = Options pref.dlg.tab.Miscellaneousoptions = Miscellaneous options -pref.dlg.tab.DecalEditor = Graphics Editor + +pref.dlg.tab.Graphics = Graphics +pref.dlg.lbl.DecalEditor = Graphics Editor +pref.dlg.opengl.lbl.title = 3D Graphics +pref.dlg.opengl.but.enableGL = Enable 3D Graphics +pref.dlg.opengl.but.enableAA = Enable Antialiasing +pref.dlg.opengl.lbl.useFBO = Use Off-screen Rendering + + pref.dlg.lbl.Positiontoinsert = Position to insert new body components: pref.dlg.lbl.Confirmdeletion = Confirm deletion of simulations: pref.dlg.lbl.User-definedthrust = User-defined thrust curves: diff --git a/core/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java b/core/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java index a54ef5e7e..c76ad6fe0 100644 --- a/core/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java +++ b/core/src/net/sf/openrocket/gui/dialogs/preferences/PreferencesDialog.java @@ -16,6 +16,7 @@ import java.util.List; import java.util.Locale; import javax.swing.AbstractListModel; +import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.ComboBoxModel; import javax.swing.JButton; @@ -28,12 +29,11 @@ import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.JRadioButton; -import javax.swing.JSeparator; import javax.swing.JTabbedPane; import javax.swing.JTextField; -import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import javax.swing.Timer; +import javax.swing.border.TitledBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.event.DocumentEvent; @@ -64,6 +64,8 @@ import net.sf.openrocket.util.Utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.itextpdf.text.Font; + public class PreferencesDialog extends JDialog { private static final Logger log = LoggerFactory.getLogger(PreferencesDialog.class); @@ -94,7 +96,7 @@ public class PreferencesDialog extends JDialog { tabbedPane.addTab(trans.get("pref.dlg.tab.Options"), null, optionsPane(), trans.get("pref.dlg.tab.Miscellaneousoptions")); //// Decal Editor selection - tabbedPane.addTab("Graphics", graphicsOptionsPane()); //TODO Translation + tabbedPane.addTab(trans.get("pref.dlg.tab.Graphics"), graphicsOptionsPane()); //// Close button JButton close = new JButton(trans.get("dlg.but.close")); @@ -475,150 +477,158 @@ public class PreferencesDialog extends JDialog { private JPanel graphicsOptionsPane() { - JPanel panel = new JPanel(new MigLayout("fill, ins n n n")); + JPanel panel = new JPanel(new MigLayout("fillx")); - panel.add(new StyledLabel(trans.get("pref.dlg.tab.DecalEditor"), Style.BOLD), "wrap"); //TODO Translation - - 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(); - } - } - }); - panel.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); + panel.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(); + } } - } - }); - panel.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); - panel.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()); - } - - }); - panel.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(PreferencesDialog.this)); - if (action == JFileChooser.APPROVE_OPTION) { - String commandLine = fc.getSelectedFile().getAbsolutePath(); - commandText.setText(commandLine); - preferences.setDecalEditorPreference(false, commandLine); + }); + 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(PreferencesDialog.this)); + 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); + } + + }); } - - }); - panel.add(chooser, "wrap"); + }, "growx, span"); - - commandRadio.addChangeListener(new ChangeListener() { - - @Override - public void stateChanged(ChangeEvent e) { - boolean enabled = commandRadio.isSelected(); - commandText.setEnabled(enabled); - chooser.setEnabled(enabled); + panel.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"); } - - }); - - /////GL Options - panel.add(new JSeparator(SwingConstants.HORIZONTAL), "span, wrap, growx"); - panel.add(new StyledLabel("3D Graphics", Style.BOLD), "wrap"); //TODO Translation - - //// The effects will take place the next time you open a window. - panel.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("Enable 3D Graphics"); //TODO Translation - enableGL.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - preferences.putBoolean(Preferences.OPENGL_ENABLED, enableGL.isSelected()); - } - }); - panel.add(enableGL, "wrap"); - - final JCheckBox enableAA = new JCheckBox("Enable Antialiasing"); //TODO Translation - 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); - panel.add(enableAA, "wrap"); - - final JCheckBox useFBO = new JCheckBox("Use Offscreen Rendering"); //TODO Translation - 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); - panel.add(useFBO, "wrap"); - + }, "growx, span"); return panel; } - private class DefaultUnitSelector extends AbstractListModel implements ComboBoxModel { private final UnitGroup group;