Author: apico
Date: 2011-07-14 12:15:11 -0700 (Thu, 14 Jul 2011)
New Revision: 26181
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/dialogs/logger/LoggerDialog.java
Log:
- added 'save' button to error console, including method to concatenate all log
level messages into a single html file
- flipped order of messages: new on bottom. Now the logs read top-to-bottom,
which just makes sense.
Modified:
cytoscape/trunk/application/src/main/java/cytoscape/dialogs/logger/LoggerDialog.java
===================================================================
---
cytoscape/trunk/application/src/main/java/cytoscape/dialogs/logger/LoggerDialog.java
2011-07-14 18:37:37 UTC (rev 26180)
+++
cytoscape/trunk/application/src/main/java/cytoscape/dialogs/logger/LoggerDialog.java
2011-07-14 19:15:11 UTC (rev 26181)
@@ -3,6 +3,10 @@
import cytoscape.Cytoscape;
import cytoscape.logger.CyLogHandler;
import cytoscape.logger.LogLevel;
+import cytoscape.logger.CyLogger;
+import cytoscape.util.CyFileFilter;
+import cytoscape.util.FileUtil;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -11,6 +15,11 @@
import javax.swing.*;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+
/** Singleton dialog */
public class LoggerDialog extends javax.swing.JDialog implements CyLogHandler {
private static LoggerDialog dialog;
@@ -21,6 +30,7 @@
// Variables declaration - do not modify
private javax.swing.JButton clearButton;
private javax.swing.JButton closeButton;
+ private javax.swing.JButton saveButton;
private javax.swing.JTabbedPane logTabs;
// aware no one can currently create the console with an owner, gotta see
how headless mode works
@@ -37,6 +47,35 @@
return dialog;
}
+
+ public String getAllMessages() {
+ String allMessages = "";
+
+ //set prioritized order for logs
+ List<LogLevel> orderedLevels = new ArrayList<LogLevel>();
+ orderedLevels.add(LogLevel.LOG_FATAL);
+ orderedLevels.add(LogLevel.LOG_ERROR);
+ orderedLevels.add(LogLevel.LOG_WARN);
+ orderedLevels.add(LogLevel.LOG_INFO);
+ orderedLevels.add(LogLevel.LOG_DEBUG);
+
+ //set colors for log titles
+ Map<LogLevel, String> logColors = new HashMap<LogLevel, String>();
+ logColors.put(LogLevel.LOG_FATAL, "red");
+ logColors.put(LogLevel.LOG_ERROR, "red");
+ logColors.put(LogLevel.LOG_WARN, "orange");
+ logColors.put(LogLevel.LOG_INFO, "green");
+ logColors.put(LogLevel.LOG_DEBUG, "blue");
+
+ for (LogLevel logLevel : orderedLevels){
+ if (this.logTabMap.containsKey(logLevel)) {
+ allMessages += "<H1><font
color='"+logColors.get(logLevel)+"'>"+logLevel.getPrettyName()+"</font></H1>";
+ String msg = ((JEditorPane)
this.logTabMap.get(logLevel).getViewport().getView()).getText();
+ allMessages += msg ;
+ }
+ }
+ return allMessages;
+ }
private void init() {
messageMap = new HashMap<LogLevel, List<String>>();
@@ -45,15 +84,11 @@
this.setSize(this.getWidth()*2, this.getHeight()*2);
}
- /**
- * This method is called from within the constructor to initialize the
form. WARNING: Do NOT modify this code. The
- * content of this method is always regenerated by the Form Editor.
- */
- // <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
closeButton = new javax.swing.JButton();
clearButton = new javax.swing.JButton();
+ saveButton = new javax.swing.JButton();
logTabs = new javax.swing.JTabbedPane();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
@@ -64,13 +99,20 @@
}
});
- clearButton.setText("Clear Messages");
+ clearButton.setText("Clear All");
clearButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
clearButtonActionPerformed(evt);
}
});
+ saveButton.setText("Save All");
+ saveButton.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ saveButtonActionPerformed(evt);
+ }
+ });
+
logTabs.setAutoscrolls(true);
org.jdesktop.layout.GroupLayout layout = new
org.jdesktop.layout.GroupLayout(getContentPane());
@@ -85,7 +127,9 @@
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 380,
Short.MAX_VALUE)
.add(org.jdesktop.layout.GroupLayout.TRAILING,
- layout.createSequentialGroup().add(clearButton)
+ layout.createSequentialGroup().add(saveButton)
+
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+ .add(clearButton)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(closeButton))).addContainerGap()));
layout.setVerticalGroup(layout.createParallelGroup(
@@ -98,10 +142,10 @@
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(
org.jdesktop.layout.GroupLayout.BASELINE)
- .add(closeButton).add(clearButton))
+
.add(closeButton).add(clearButton).add(saveButton))
.addContainerGap()));
pack();
- } // </editor-fold>
+ }
private void clearButtonActionPerformed(java.awt.event.ActionEvent evt) {
for (LogLevel key : this.messageMap.keySet()) {
@@ -115,6 +159,40 @@
this.dispose();
}
+ private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {
+ File file = null;
+ try {
+
+ CyFileFilter cyFileFilter = new CyFileFilter("html");
+ String suggestedFileName =
"Cytoscape_error_console.html";
+
+ File suggestedFile = new File(suggestedFileName);
+
+ file = FileUtil.getFile("Save all to file",
FileUtil.SAVE, cyFileFilter, suggestedFile);
+ }
+ catch (Exception e){
+ // canceled dialog
+ }
+
+ if (file != null) {
+ String filename = file.toString();
+ if (!filename.endsWith(".html")){
+ filename = filename + ".html";
+ file.renameTo(new File(filename));
+ }
+
+ try{
+ PrintWriter out = new PrintWriter(new
FileWriter(file));
+ out.print(getAllMessages());
+ out.close();
+ } catch (IOException e) {
+ CyLogger.getLogger().info(
+ "Didn't write error console messages to
file: " + e);
+ }
+ }
+ }
+
+
public void handleLog(LogLevel level, String msg) {
if (level.getLevel() > 3) {
return; // not adding messages for "fatal" errors
@@ -199,15 +277,12 @@
sb.append("<table width='100%' cellspacing='5'>");
- // show the message in reversed order, i.e. most recent message on top
- int line = messageMap.get(level).size();
-
- for (int i = messageMap.get(level).size()-1; i >= 0; i--) {
- sb.append("<tr><td width='5%'>" + line + "</td><td
width='95%'>");
+ // show the message in order, i.e. most recent message on bottom
+ for (int i = 0; i < messageMap.get(level).size(); i++) {
+ sb.append("<tr><td width='5%'>" + i + "</td><td width='95%'>");
sb.append(messageMap.get(level).get(i));
sb.append("</td></tr>");
sb.append("<tr><td colspan='2'><hr></td></tr>");
- line--;
}
sb.append("</table></body></html>");
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.