From 9a5501485b2b8551b61f5a7c759db7b84b0de1a5 Mon Sep 17 00:00:00 2001 From: fros4943 Date: Fri, 23 Feb 2007 15:18:26 +0000 Subject: [PATCH] added "save log" functionality; simply writes to a text file --- .../se/sics/cooja/plugins/LogListener.java | 51 ++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/tools/cooja/java/se/sics/cooja/plugins/LogListener.java b/tools/cooja/java/se/sics/cooja/plugins/LogListener.java index 520688843..b81168081 100644 --- a/tools/cooja/java/se/sics/cooja/plugins/LogListener.java +++ b/tools/cooja/java/se/sics/cooja/plugins/LogListener.java @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: LogListener.java,v 1.4 2007/01/09 09:49:24 fros4943 Exp $ + * $Id: LogListener.java,v 1.5 2007/02/23 15:18:26 fros4943 Exp $ */ package se.sics.cooja.plugins; @@ -35,6 +35,7 @@ import java.awt.BorderLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.*; import java.util.*; import javax.swing.*; import org.apache.log4j.Logger; @@ -69,7 +70,7 @@ public class LogListener extends VisPlugin { * * @param simulationToControl Simulation to control */ - public LogListener(final Simulation simulationToControl, GUI gui) { + public LogListener(final Simulation simulationToControl, final GUI gui) { super("Log Listener - Listening on ?? mote logs", gui); simulation = simulationToControl; int nrLogs = 0; @@ -116,6 +117,7 @@ public class LogListener extends VisPlugin { JPanel filterPanel = new JPanel(); filterPanel.setLayout(new BoxLayout(filterPanel, BoxLayout.X_AXIS)); filterTextField = new JTextField(""); + filterPanel.add(Box.createVerticalStrut(2)); filterPanel.add(new JLabel("Filter on string: ")); filterPanel.add(filterTextField); filterTextField.addActionListener(new ActionListener() { @@ -123,6 +125,51 @@ public class LogListener extends VisPlugin { filterText = filterTextField.getText(); } }); + filterPanel.add(Box.createVerticalStrut(2)); + JButton saveButton; + filterPanel.add(saveButton = new JButton("Save log")); + saveButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent ev) { + JFileChooser fc = new JFileChooser(); + + int returnVal = fc.showSaveDialog(GUI.frame); + if (returnVal == JFileChooser.APPROVE_OPTION) { + File saveFile = fc.getSelectedFile(); + + if (saveFile.exists()) { + String s1 = "Overwrite"; + String s2 = "Cancel"; + Object[] options = { s1, s2 }; + int n = JOptionPane + .showOptionDialog( + GUI.frame, + "A file with the same name already exists.\nDo you want to remove it?", + "Overwrite existing file?", JOptionPane.YES_NO_OPTION, + JOptionPane.QUESTION_MESSAGE, null, options, s1); + if (n != JOptionPane.YES_OPTION) { + return; + } + } + + if (!saveFile.exists() || saveFile.canWrite()) { + logger.debug("SAVING NOW!"); + try { + BufferedWriter outStream = new BufferedWriter( + new OutputStreamWriter( + new FileOutputStream( + saveFile))); + outStream.write(logTextArea.getText()); + outStream.close(); + } catch (Exception ex) { + logger.fatal("Could not write to file: " + saveFile); + return; + } + + } else + logger.fatal("No write access to file"); + } + } + }); getContentPane().add(BorderLayout.CENTER, new JScrollPane(logTextArea)); getContentPane().add(BorderLayout.SOUTH, new JScrollPane(filterPanel));