From c83755695e7597383be28aa9fb0d2089aaaa0378 Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Wed, 1 Aug 2012 19:25:50 +0000 Subject: [PATCH] Changed the loader to pull *.rkt files from zip containers. Modified the BasicFrame so it doesn't automatically open the Rocket configuration dialog when opening a new rocket. Unified the behavior for replacing (automatically closing) the base frame when opening a file, loading an example, or picking from the Most-recently-used list. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@948 180e2498-e6e9-4542-8430-84ac67f01cd8 --- core/ChangeLog | 9 ++++ .../openrocket/file/GeneralRocketLoader.java | 3 ++ .../sf/openrocket/gui/main/BasicFrame.java | 53 +++++++------------ 3 files changed, 31 insertions(+), 34 deletions(-) diff --git a/core/ChangeLog b/core/ChangeLog index 4a54dba6..87738415 100644 --- a/core/ChangeLog +++ b/core/ChangeLog @@ -1,3 +1,12 @@ +2012-08-01 Kevin Ruland + + * Changed the loader to pull *.rkt files from zip containers. + + * Modified the BasicFrame so it doesn't automatically open the Rocket configuration dialog when opening a new rocket. + + * Unified the behavior for replacing (automatically closing) the base frame when opening a file, loading an example, + or picking from the Most-recently-used list. + 2012-07-31 Kevin Ruland * Changed the ORK file format to save "keys" for materials and flight data as well as the localized diff --git a/core/src/net/sf/openrocket/file/GeneralRocketLoader.java b/core/src/net/sf/openrocket/file/GeneralRocketLoader.java index f4b64622..da6858d8 100644 --- a/core/src/net/sf/openrocket/file/GeneralRocketLoader.java +++ b/core/src/net/sf/openrocket/file/GeneralRocketLoader.java @@ -78,6 +78,9 @@ public class GeneralRocketLoader extends AbstractRocketLoader { OpenRocketDocument doc = loadFromStream(in, motorFinder); doc.getDefaultStorageOptions().setCompressionEnabled(true); return doc; + } else if ( entry.getName().matches(".*\\.[rR][kK][tT]$")) { + OpenRocketDocument doc = loadFromStream(in, motorFinder); + return doc; } } } diff --git a/core/src/net/sf/openrocket/gui/main/BasicFrame.java b/core/src/net/sf/openrocket/gui/main/BasicFrame.java index cfbfec2c..9f758c34 100644 --- a/core/src/net/sf/openrocket/gui/main/BasicFrame.java +++ b/core/src/net/sf/openrocket/gui/main/BasicFrame.java @@ -165,17 +165,6 @@ public class BasicFrame extends JFrame { this.rocket = document.getRocket(); this.rocket.getDefaultConfiguration().setAllStages(); - - // Set replaceable flag to false at first modification - rocket.addComponentChangeListener(new ComponentChangeListener() { - @Override - public void componentChanged(ComponentChangeEvent e) { - replaceable = false; - BasicFrame.this.rocket.removeComponentChangeListener(this); - } - }); - - // Create the component tree selection model that will be used componentSelectionModel = new DefaultTreeSelectionModel(); componentSelectionModel.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); @@ -417,10 +406,7 @@ public class BasicFrame extends JFrame { public void actionPerformed(ActionEvent e) { log.user("New... selected"); newAction(); - if (replaceable) { - log.info("Closing previous window"); - closeAction(); - } + closeIfReplaceable(); } }); menu.add(item); @@ -1045,23 +1031,24 @@ public class BasicFrame extends JFrame { for (File file : files) { log.info("Opening file: " + file); if (open(file, this)) { - - // 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; - } MRUDesignFile opts = MRUDesignFile.getInstance(); opts.addFile(file.getAbsolutePath()); } } } + void closeIfReplaceable() { + // 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(); + } + + } /** * Open a file based on a URL. * @param url the file to open. @@ -1103,13 +1090,7 @@ public class BasicFrame extends JFrame { log.info("Opening file from url=" + url + " filename=" + filename); try { InputStream is = url.openStream(); - if (open(is, filename, parent)) { - // Close previous window if replacing - if (parent.replaceable && parent.document.isSaved()) { - parent.closeAction(); - parent.replaceable = false; - } - } + open(is, filename, parent); } catch (IOException e) { log.warn("Error opening file" + e); JOptionPane.showMessageDialog(parent, @@ -1240,6 +1221,9 @@ public class BasicFrame extends JFrame { BasicFrame frame = new BasicFrame(doc); frame.setVisible(true); + if ( parent != null && parent instanceof BasicFrame ) { + ((BasicFrame)parent).closeIfReplaceable(); + } return true; } @@ -1473,7 +1457,8 @@ public class BasicFrame extends JFrame { BasicFrame frame = new BasicFrame(doc); frame.replaceable = true; frame.setVisible(true); - ComponentConfigDialog.showDialog(frame, doc, rocket); + // FIXME - kruland commented this out - I don't like it. + //ComponentConfigDialog.showDialog(frame, doc, rocket); } /** -- 2.30.2