X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fnet%2Fsf%2Fopenrocket%2Fgui%2Fmain%2FBasicFrame.java;h=cd548056f5ba089dd5a3a8384a44c103493ae233;hb=93cac58fbc06a532428e5c0519c24a09e5e9c125;hp=d7fd4ec179430991db3faf50f62abc4f27e7328f;hpb=12754e9e1c69f274c48333477108a2231f6eee22;p=debian%2Fopenrocket diff --git a/src/net/sf/openrocket/gui/main/BasicFrame.java b/src/net/sf/openrocket/gui/main/BasicFrame.java index d7fd4ec1..cd548056 100644 --- a/src/net/sf/openrocket/gui/main/BasicFrame.java +++ b/src/net/sf/openrocket/gui/main/BasicFrame.java @@ -30,6 +30,7 @@ import java.util.List; import java.util.concurrent.ExecutionException; import javax.swing.Action; +import javax.swing.BorderFactory; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; @@ -51,7 +52,6 @@ import javax.swing.SwingUtilities; import javax.swing.border.TitledBorder; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; -import javax.swing.filechooser.FileFilter; import javax.swing.tree.DefaultTreeSelectionModel; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; @@ -75,11 +75,14 @@ import net.sf.openrocket.gui.dialogs.ExampleDesignDialog; import net.sf.openrocket.gui.dialogs.LicenseDialog; import net.sf.openrocket.gui.dialogs.MotorDatabaseLoadingDialog; import net.sf.openrocket.gui.dialogs.PrintDialog; +import net.sf.openrocket.gui.dialogs.ScaleDialog; import net.sf.openrocket.gui.dialogs.SwingWorkerDialog; import net.sf.openrocket.gui.dialogs.WarningDialog; +import net.sf.openrocket.gui.dialogs.optimization.GeneralOptimizationDialog; import net.sf.openrocket.gui.dialogs.preferences.PreferencesDialog; import net.sf.openrocket.gui.main.componenttree.ComponentTree; import net.sf.openrocket.gui.scalefigure.RocketPanel; +import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.rocketcomponent.ComponentChangeEvent; import net.sf.openrocket.rocketcomponent.ComponentChangeListener; @@ -88,6 +91,7 @@ import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.Stage; import net.sf.openrocket.startup.Application; import net.sf.openrocket.util.BugException; +import net.sf.openrocket.util.FileHelper; import net.sf.openrocket.util.GUIUtil; import net.sf.openrocket.util.Icons; import net.sf.openrocket.util.MemoryManagement; @@ -108,21 +112,8 @@ public class BasicFrame extends JFrame { private static final RocketSaver ROCKET_SAVER = new OpenRocketSaver(); - - // FileFilters for different types of rocket design files - private static final FileFilter ALL_DESIGNS_FILTER = - new SimpleFileFilter("All rocket designs (*.ork; *.rkt)", - ".ork", ".ork.gz", ".rkt", ".rkt.gz"); - - private static final FileFilter OPENROCKET_DESIGN_FILTER = - new SimpleFileFilter("OpenRocket designs (*.ork)", ".ork", ".ork.gz"); + private static final Translator trans = Application.getTranslator(); - private static final FileFilter ROCKSIM_DESIGN_FILTER = - new SimpleFileFilter("RockSim designs (*.rkt)", ".rkt", ".rkt.gz"); - - - - public static final int COMPONENT_TAB = 0; public static final int SIMULATION_TAB = 1; @@ -134,9 +125,6 @@ public class BasicFrame extends JFrame { private static final ArrayList frames = new ArrayList(); - - - /** * Whether "New" and "Open" should replace this frame. * Should be set to false on the first rocket modification. @@ -212,8 +200,10 @@ public class BasicFrame extends JFrame { // The top tabbed pane tabbedPane = new JTabbedPane(); - tabbedPane.addTab("Rocket design", null, designTab()); - tabbedPane.addTab("Flight simulations", null, simulationPanel); + //// Rocket design + tabbedPane.addTab(trans.get("BasicFrame.tab.Rocketdesign"), null, designTab()); + //// Flight simulations + tabbedPane.addTab(trans.get("BasicFrame.tab.Flightsim"), null, simulationPanel); vertical.setTopComponent(tabbedPane); @@ -374,8 +364,8 @@ public class BasicFrame extends JFrame { scroll.setBorder(null); scroll.setViewportBorder(null); - TitledBorder border = new TitledBorder("Add new component"); - border.setTitleFont(border.getTitleFont().deriveFont(Font.BOLD)); + TitledBorder border = BorderFactory.createTitledBorder(trans.get("BasicFrame.title.Addnewcomp")); + GUIUtil.changeFontStyle(border, Font.BOLD); scroll.setBorder(border); panel.add(scroll, "grow"); @@ -387,6 +377,19 @@ public class BasicFrame extends JFrame { + /** + * Return the currently selected rocket component, or null if none selected. + */ + private RocketComponent getSelectedComponent() { + TreePath path = componentSelectionModel.getSelectionPath(); + if (path == null) + return null; + tree.scrollPathToVisible(path); + + return (RocketComponent) path.getLastPathComponent(); + } + + /** * Creates the menu for the window. */ @@ -396,15 +399,18 @@ public class BasicFrame extends JFrame { JMenuItem item; //// File - menu = new JMenu("File"); + menu = new JMenu(trans.get("main.menu.file")); menu.setMnemonic(KeyEvent.VK_F); - menu.getAccessibleContext().setAccessibleDescription("File-handling related tasks"); + //// File-handling related tasks + menu.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.file.desc")); menubar.add(menu); - item = new JMenuItem("New", KeyEvent.VK_N); + //// New + item = new JMenuItem(trans.get("main.menu.file.new"), KeyEvent.VK_N); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); item.setMnemonic(KeyEvent.VK_N); - item.getAccessibleContext().setAccessibleDescription("Create a new rocket design"); + //// Create a new rocket design + item.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.file.new.desc")); item.setIcon(Icons.FILE_NEW); item.addActionListener(new ActionListener() { @Override @@ -419,9 +425,11 @@ public class BasicFrame extends JFrame { }); menu.add(item); - item = new JMenuItem("Open...", KeyEvent.VK_O); + //// Open... + item = new JMenuItem(trans.get("main.menu.file.open"), KeyEvent.VK_O); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); - item.getAccessibleContext().setAccessibleDescription("Open a rocket design"); + //// Open a rocket design + item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Openrocketdesign")); item.setIcon(Icons.FILE_OPEN); item.addActionListener(new ActionListener() { @Override @@ -432,8 +440,10 @@ public class BasicFrame extends JFrame { }); menu.add(item); - item = new JMenuItem("Open example..."); - item.getAccessibleContext().setAccessibleDescription("Open an example rocket design"); + //// Open example... + item = new JMenuItem(trans.get("main.menu.file.openExample")); + //// Open an example rocket design + item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Openexamplerocketdesign")); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK)); item.setIcon(Icons.FILE_OPEN_EXAMPLE); @@ -454,9 +464,11 @@ public class BasicFrame extends JFrame { menu.addSeparator(); - item = new JMenuItem("Save", KeyEvent.VK_S); + //// Save + item = new JMenuItem(trans.get("main.menu.file.save"), KeyEvent.VK_S); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK)); - item.getAccessibleContext().setAccessibleDescription("Save the current rocket design"); + //// Save the current rocket design + item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.SavecurRocketdesign")); item.setIcon(Icons.FILE_SAVE); item.addActionListener(new ActionListener() { @Override @@ -467,11 +479,12 @@ public class BasicFrame extends JFrame { }); menu.add(item); - item = new JMenuItem("Save as...", KeyEvent.VK_A); + //// Save as... + item = new JMenuItem(trans.get("main.menu.file.saveAs"), KeyEvent.VK_A); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK)); - item.getAccessibleContext().setAccessibleDescription("Save the current rocket design " + - "to a new file"); + //// Save the current rocket design to a new file + item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.SavecurRocketdesnewfile")); item.setIcon(Icons.FILE_SAVE_AS); item.addActionListener(new ActionListener() { @Override @@ -482,10 +495,11 @@ public class BasicFrame extends JFrame { }); menu.add(item); - - item = new JMenuItem("Print...", KeyEvent.VK_P); + //// Print... + item = new JMenuItem(trans.get("main.menu.file.print"), KeyEvent.VK_P); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK)); - item.getAccessibleContext().setAccessibleDescription("Print parts list and fin template"); + //// Print parts list and fin template + item.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.file.print.desc")); item.setIcon(Icons.FILE_PRINT); item.addActionListener(new ActionListener() { @Override @@ -499,9 +513,11 @@ public class BasicFrame extends JFrame { menu.addSeparator(); - item = new JMenuItem("Close", KeyEvent.VK_C); + //// Close + item = new JMenuItem(trans.get("main.menu.file.close"), KeyEvent.VK_C); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK)); - item.getAccessibleContext().setAccessibleDescription("Close the current rocket design"); + //// Close the current rocket design + item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Closedesign")); item.setIcon(Icons.FILE_CLOSE); item.addActionListener(new ActionListener() { @Override @@ -514,9 +530,11 @@ public class BasicFrame extends JFrame { menu.addSeparator(); - item = new JMenuItem("Quit", KeyEvent.VK_Q); + //// Quit + item = new JMenuItem(trans.get("main.menu.file.quit"), KeyEvent.VK_Q); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK)); - item.getAccessibleContext().setAccessibleDescription("Quit the program"); + //// Quit the program + item.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.item.Quitprogram")); item.setIcon(Icons.FILE_QUIT); item.addActionListener(new ActionListener() { @Override @@ -530,9 +548,10 @@ public class BasicFrame extends JFrame { //// Edit - menu = new JMenu("Edit"); + menu = new JMenu(trans.get("main.menu.edit")); menu.setMnemonic(KeyEvent.VK_E); - menu.getAccessibleContext().setAccessibleDescription("Rocket editing"); + //// Rocket editing + menu.getAccessibleContext().setAccessibleDescription(trans.get("BasicFrame.menu.Rocketedt")); menubar.add(menu); @@ -540,7 +559,8 @@ public class BasicFrame extends JFrame { item = new JMenuItem(action); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK)); item.setMnemonic(KeyEvent.VK_U); - item.getAccessibleContext().setAccessibleDescription("Undo the previous operation"); + //// Undo the previous operation + item.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.edit.undo.desc")); menu.add(item); @@ -548,8 +568,8 @@ public class BasicFrame extends JFrame { item = new JMenuItem(action); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, ActionEvent.CTRL_MASK)); item.setMnemonic(KeyEvent.VK_R); - item.getAccessibleContext().setAccessibleDescription("Redo the previously undone " + - "operation"); + //// Redo the previously undone operation + item.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.edit.redo.desc")); menu.add(item); menu.addSeparator(); @@ -569,15 +589,34 @@ public class BasicFrame extends JFrame { menu.addSeparator(); - item = new JMenuItem("Preferences"); + + + item = new JMenuItem(trans.get("main.menu.edit.resize")); + item.setIcon(Icons.EDIT_SCALE); + item.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.edit.resize.desc")); + item.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + log.user("Scale... selected"); + ScaleDialog dialog = new ScaleDialog(document, getSelectedComponent(), BasicFrame.this); + dialog.setVisible(true); + dialog.dispose(); + } + }); + menu.add(item); + + + + //// Preferences + item = new JMenuItem(trans.get("main.menu.edit.preferences")); item.setIcon(Icons.PREFERENCES); - item.getAccessibleContext().setAccessibleDescription("Setup the application " + - "preferences"); + //// Setup the application preferences + item.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.edit.preferences.desc")); item.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { log.user("Preferences selected"); - PreferencesDialog.showPreferences(); + PreferencesDialog.showPreferences(BasicFrame.this); } }); menu.add(item); @@ -586,14 +625,16 @@ public class BasicFrame extends JFrame { //// Analyze - menu = new JMenu("Analyze"); + menu = new JMenu(trans.get("main.menu.analyze")); menu.setMnemonic(KeyEvent.VK_A); - menu.getAccessibleContext().setAccessibleDescription("Analyzing the rocket"); + //// Analyzing the rocket + menu.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.analyze.desc")); menubar.add(menu); - item = new JMenuItem("Component analysis", KeyEvent.VK_C); - item.getAccessibleContext().setAccessibleDescription("Analyze the rocket components " + - "separately"); + //// Component analysis + item = new JMenuItem(trans.get("main.menu.analyze.componentAnalysis"), KeyEvent.VK_C); + //// Analyze the rocket components separately + item.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.analyze.componentAnalysis.desc")); item.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -604,6 +645,19 @@ public class BasicFrame extends JFrame { menu.add(item); + item = new JMenuItem(trans.get("main.menu.analyze.optimization"), KeyEvent.VK_O); + item.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.analyze.optimization.desc")); + item.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + log.user("Rocket optimization selected"); + new GeneralOptimizationDialog(document, BasicFrame.this).setVisible(true); + } + }); + menu.add(item); + + + //// Debug // (shown if openrocket.debug.menu is defined) if (System.getProperty("openrocket.debug.menu") != null) { @@ -614,15 +668,17 @@ public class BasicFrame extends JFrame { //// Help - menu = new JMenu("Help"); + menu = new JMenu(trans.get("main.menu.help")); menu.setMnemonic(KeyEvent.VK_H); - menu.getAccessibleContext().setAccessibleDescription("Information about OpenRocket"); + //// Information about OpenRocket + menu.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.help.desc")); menubar.add(menu); - - item = new JMenuItem("License", KeyEvent.VK_L); - item.getAccessibleContext().setAccessibleDescription("OpenRocket license information"); + //// License + item = new JMenuItem(trans.get("main.menu.help.license"), KeyEvent.VK_L); + //// OpenRocket license information + item.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.help.license.desc")); item.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -634,9 +690,10 @@ public class BasicFrame extends JFrame { menu.addSeparator(); - item = new JMenuItem("Bug report", KeyEvent.VK_B); - item.getAccessibleContext().setAccessibleDescription("Information about reporting " + - "bugs in OpenRocket"); + //// Bug report + item = new JMenuItem(trans.get("main.menu.help.bugReport"), KeyEvent.VK_B); + //// Information about reporting bugs in OpenRocket + item.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.help.bugReport.desc")); item.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -646,8 +703,10 @@ public class BasicFrame extends JFrame { }); menu.add(item); - item = new JMenuItem("Debug log"); - item.getAccessibleContext().setAccessibleDescription("View the OpenRocket debug log"); + //// Debug log + item = new JMenuItem(trans.get("main.menu.help.debugLog")); + //// View the OpenRocket debug log + item.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.help.debugLog.desc")); item.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -659,8 +718,10 @@ public class BasicFrame extends JFrame { menu.addSeparator(); - item = new JMenuItem("About", KeyEvent.VK_A); - item.getAccessibleContext().setAccessibleDescription("About OpenRocket"); + //// About + item = new JMenuItem(trans.get("main.menu.help.about"), KeyEvent.VK_A); + //// About OpenRocket + item.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.help.about.desc")); item.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -674,15 +735,20 @@ public class BasicFrame extends JFrame { this.setJMenuBar(menubar); } - private JMenu makeDebugMenu() { JMenu menu; JMenuItem item; + /* + * This menu is intentionally left untranslated. + */ + //// Debug menu menu = new JMenu("Debug"); + //// OpenRocket debugging tasks menu.getAccessibleContext().setAccessibleDescription("OpenRocket debugging tasks"); + //// What is this menu? item = new JMenuItem("What is this menu?"); item.addActionListener(new ActionListener() { @Override @@ -702,6 +768,7 @@ public class BasicFrame extends JFrame { menu.addSeparator(); + //// Create test rocket item = new JMenuItem("Create test rocket"); item.addActionListener(new ActionListener() { @Override @@ -808,7 +875,7 @@ public class BasicFrame extends JFrame { }); menu.add(item); - + //// Exhaust memory item = new JMenuItem("Exhaust memory"); item.addActionListener(new ActionListener() { @Override @@ -841,6 +908,7 @@ public class BasicFrame extends JFrame { menu.addSeparator(); + //// Exception here item = new JMenuItem("Exception here"); item.addActionListener(new ActionListener() { @Override @@ -893,7 +961,6 @@ public class BasicFrame extends JFrame { menu.add(item); - return menu; } @@ -912,10 +979,10 @@ public class BasicFrame extends JFrame { private void openAction() { JFileChooser chooser = new JFileChooser(); - chooser.addChoosableFileFilter(ALL_DESIGNS_FILTER); - chooser.addChoosableFileFilter(OPENROCKET_DESIGN_FILTER); - chooser.addChoosableFileFilter(ROCKSIM_DESIGN_FILTER); - chooser.setFileFilter(ALL_DESIGNS_FILTER); + chooser.addChoosableFileFilter(FileHelper.ALL_DESIGNS_FILTER); + chooser.addChoosableFileFilter(FileHelper.OPENROCKET_DESIGN_FILTER); + chooser.addChoosableFileFilter(FileHelper.ROCKSIM_DESIGN_FILTER); + chooser.setFileFilter(FileHelper.ALL_DESIGNS_FILTER); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); chooser.setMultiSelectionEnabled(true); @@ -937,6 +1004,10 @@ public class BasicFrame extends JFrame { // Close previous window if replacing if (replaceable && document.isSaved()) { + // We are replacing the frame, make new window have current location + BasicFrame newFrame = frames.get(frames.size() - 1); + newFrame.setLocation(this.getLocation()); + log.info("Closing window because it is replaceable"); closeAction(); replaceable = false; @@ -1104,10 +1175,13 @@ public class BasicFrame extends JFrame { log.info("Warnings while reading file: " + warnings); WarningDialog.showWarnings(parent, new Object[] { - "The following problems were encountered while opening " + filename + ".", - "Some design features may not have been loaded correctly." + //// The following problems were encountered while opening + trans.get("BasicFrame.WarningDialog.txt1") + " " + filename + ".", + //// Some design features may not have been loaded correctly. + trans.get("BasicFrame.WarningDialog.txt2") }, - "Warnings while opening file", warnings); + //// Warnings while opening file + trans.get("BasicFrame.WarningDialog.title"), warnings); } @@ -1115,6 +1189,7 @@ public class BasicFrame extends JFrame { doc.setFile(file); doc.setSaved(true); + // Open the frame log.debug("Opening new frame with the document"); BasicFrame frame = new BasicFrame(doc); @@ -1136,7 +1211,7 @@ public class BasicFrame extends JFrame { log.info("Saving document to " + file); // Saving RockSim designs is not supported - if (ROCKSIM_DESIGN_FILTER.accept(file)) { + if (FileHelper.ROCKSIM_DESIGN_FILTER.accept(file)) { file = new File(file.getAbsolutePath().replaceAll(".[rR][kK][tT](.[gG][zZ])?$", ".ork")); @@ -1164,7 +1239,7 @@ public class BasicFrame extends JFrame { StorageOptionChooser storageChooser = new StorageOptionChooser(document, document.getDefaultStorageOptions()); JFileChooser chooser = new JFileChooser(); - chooser.setFileFilter(OPENROCKET_DESIGN_FILTER); + chooser.setFileFilter(FileHelper.OPENROCKET_DESIGN_FILTER); chooser.setCurrentDirectory(Prefs.getDefaultDirectory()); chooser.setAccessory(storageChooser); if (document.getFile() != null) @@ -1185,22 +1260,9 @@ public class BasicFrame extends JFrame { Prefs.setDefaultDirectory(chooser.getCurrentDirectory()); storageChooser.storeOptions(document.getDefaultStorageOptions()); - if (file.getName().indexOf('.') < 0) { - log.debug("File name does not contain extension, adding .ork"); - String name = file.getAbsolutePath(); - name = name + ".ork"; - file = new File(name); - } - - if (file.exists()) { - log.info("File " + file + " exists, confirming overwrite from user"); - int result = JOptionPane.showConfirmDialog(this, - "File '" + file.getName() + "' exists. Do you want to overwrite it?", - "File exists", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); - if (result != JOptionPane.YES_OPTION) { - log.user("User decided not to overwrite the file"); - return false; - } + file = FileHelper.ensureExtension(file, "ork"); + if (!FileHelper.confirmWrite(file, this)) { + return false; } return saveAs(file); @@ -1261,9 +1323,10 @@ public class BasicFrame extends JFrame { log.info("Confirming whether to save the design"); ComponentConfigDialog.hideDialog(); int result = JOptionPane.showConfirmDialog(this, - "Design '" + rocket.getName() + "' has not been saved. " + - "Do you want to save it?", - "Design not saved", JOptionPane.YES_NO_CANCEL_OPTION, + trans.get("BasicFrame.dlg.lbl1") + rocket.getName() + + trans.get("BasicFrame.dlg.lbl2") + " " + + trans.get("BasicFrame.dlg.lbl3"), + trans.get("BasicFrame.dlg.title"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if (result == JOptionPane.YES_OPTION) { // Save @@ -1303,14 +1366,7 @@ public class BasicFrame extends JFrame { * */ public void printAction() { - if (!Prefs.getBoolean("printing.experimental.communicated", false)) { - log.info("Showing printing is experimental warning to the user"); - JOptionPane.showMessageDialog(this, "Printing is an currently an experimental feature " + - "and might not fully work on all platforms", - "Experimental feature", JOptionPane.WARNING_MESSAGE); - Prefs.putBoolean("printing.experimental.communicated", true); - } - new PrintDialog(document); + new PrintDialog(this, document).setVisible(true); } /** @@ -1321,7 +1377,8 @@ public class BasicFrame extends JFrame { Rocket rocket = new Rocket(); Stage stage = new Stage(); - stage.setName("Sustainer"); + //// Sustainer + stage.setName(trans.get("BasicFrame.StageName.Sustainer")); rocket.addChild(stage); OpenRocketDocument doc = new OpenRocketDocument(rocket); doc.setSaved(true);