From 2e66e367551972cfe28384bfa6fcb1f02d6a9826 Mon Sep 17 00:00:00 2001 From: fros4943 Date: Mon, 8 Dec 2008 09:38:42 +0000 Subject: [PATCH] added for convenience: reload simulation with new random seed --- tools/cooja/java/se/sics/cooja/GUI.java | 52 +++++++++++++++++++++---- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/tools/cooja/java/se/sics/cooja/GUI.java b/tools/cooja/java/se/sics/cooja/GUI.java index 6f750a145..69a5726a9 100644 --- a/tools/cooja/java/se/sics/cooja/GUI.java +++ b/tools/cooja/java/se/sics/cooja/GUI.java @@ -24,7 +24,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: GUI.java,v 1.93 2008/12/03 16:06:33 fros4943 Exp $ + * $Id: GUI.java,v 1.94 2008/12/08 09:38:42 fros4943 Exp $ */ package se.sics.cooja; @@ -501,14 +501,31 @@ public class GUI extends Observable { menuItem.addActionListener(guiEventHandler); menu.add(menuItem); - menuItem = new JMenuItem("Reload simulation"); + menuItem = new JMenu("Reload simulation"); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { reloadCurrentSimulation(false); } }); + menuItem.setToolTipText("Reload simulation using the same random seed"); menu.add(menuItem); + JMenuItem menuItem2 = new JMenuItem("same random seed"); + menuItem2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + reloadCurrentSimulation(false, false); + } + }); + menuItem.add(menuItem2); + + menuItem2 = new JMenuItem("new random seed"); + menuItem2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + reloadCurrentSimulation(false, true); + } + }); + menuItem.add(menuItem2); + menuItem = new JMenuItem("Close simulation"); menuItem.setMnemonic(KeyEvent.VK_C); menuItem.setActionCommand("close sim"); @@ -2273,10 +2290,13 @@ public class GUI extends Observable { } /** - * Reloads current simulation. - * This may include recompiling libraries and renaming mote type identifiers. + * Reload currently configured simulation. + * Reloading a simulation may include recompiling Contiki. + * + * @param autoStart Start executing simulation when loaded + * @param newSeed Change simulation seed */ - public void reloadCurrentSimulation(final boolean autoStart) { + public void reloadCurrentSimulation(final boolean autoStart, final boolean newSeed) { if (getSimulation() == null) { logger.fatal("No simulation to reload"); return; @@ -2289,6 +2309,10 @@ public class GUI extends Observable { /* Get current simulation configuration */ Element root = new Element("simconf"); Element simulationElement = new Element("simulation"); + if (newSeed) { + getSimulation().setRandomSeed(getSimulation().getRandomSeed() + 1); + } + simulationElement.addContent(getSimulation().getConfigXML()); root.addContent(simulationElement); Collection pluginsConfig = getPluginsConfigXML(); @@ -2318,7 +2342,7 @@ public class GUI extends Observable { } } while (shouldRetry); - if (progressDialog != null && progressDialog.isDisplayable()) { + if (progressDialog.isDisplayable()) { progressDialog.dispose(); } } @@ -2332,11 +2356,11 @@ public class GUI extends Observable { JButton button = new JButton("Cancel"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - if (loadThread != null && loadThread.isAlive()) { + if (loadThread.isAlive()) { loadThread.interrupt(); doRemoveSimulation(false); } - if (progressDialog != null && progressDialog.isDisplayable()) { + if (progressDialog.isDisplayable()) { progressDialog.dispose(); } } @@ -2360,6 +2384,18 @@ public class GUI extends Observable { progressDialog.setVisible(true); } + /** + * Reload currently configured simulation. + * Reloading a simulation may include recompiling Contiki. + * The same random seed is used. + * + * @see #reloadCurrentSimulation(boolean, boolean) + * @param autoStart Start executing simulation when loaded + */ + public void reloadCurrentSimulation(boolean autoStart) { + reloadCurrentSimulation(autoStart, false); + } + /** * Save current simulation configuration to disk *