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.

Reply via email to