mev-4.0.01/source/org/tigr/microarray/mev/script/util/ErrorLog.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2004, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * ErrorLog.java
2 26 Feb 07 jari 7  *
2 26 Feb 07 jari 8  * Created on March 11, 2004, 12:02 PM
2 26 Feb 07 jari 9  */
2 26 Feb 07 jari 10
2 26 Feb 07 jari 11 package org.tigr.microarray.mev.script.util;
2 26 Feb 07 jari 12
2 26 Feb 07 jari 13 import java.awt.Color;
2 26 Feb 07 jari 14 import java.awt.Dimension;
2 26 Feb 07 jari 15 import java.awt.GridBagConstraints;
2 26 Feb 07 jari 16 import java.awt.Insets;
2 26 Feb 07 jari 17 import java.awt.Point;
2 26 Feb 07 jari 18 import java.awt.Toolkit;
2 26 Feb 07 jari 19 import java.awt.event.ActionEvent;
2 26 Feb 07 jari 20 import java.awt.event.WindowEvent;
2 26 Feb 07 jari 21 import java.io.File;
2 26 Feb 07 jari 22 import java.util.Enumeration;
2 26 Feb 07 jari 23 import java.util.Hashtable;
2 26 Feb 07 jari 24 import java.util.Vector;
2 26 Feb 07 jari 25
2 26 Feb 07 jari 26 import javax.swing.BorderFactory;
2 26 Feb 07 jari 27 import javax.swing.JFrame;
2 26 Feb 07 jari 28 import javax.swing.JOptionPane;
2 26 Feb 07 jari 29 import javax.swing.JScrollPane;
2 26 Feb 07 jari 30 import javax.swing.JSplitPane;
2 26 Feb 07 jari 31 import javax.swing.JTextPane;
2 26 Feb 07 jari 32
2 26 Feb 07 jari 33 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.AlgorithmDialog;
2 26 Feb 07 jari 34 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.DialogListener;
2 26 Feb 07 jari 35 import org.tigr.microarray.mev.cluster.gui.impl.dialogs.dialogHelpUtil.HelpWindow;
2 26 Feb 07 jari 36 import org.tigr.microarray.mev.script.ScriptManager;
2 26 Feb 07 jari 37 import org.tigr.microarray.mev.script.scriptGUI.ScriptXMLViewer;
2 26 Feb 07 jari 38 import org.xml.sax.SAXParseException;
2 26 Feb 07 jari 39
2 26 Feb 07 jari 40 /**
2 26 Feb 07 jari 41  *
2 26 Feb 07 jari 42  * @author  braisted
2 26 Feb 07 jari 43  */
2 26 Feb 07 jari 44 public class ErrorLog {
2 26 Feb 07 jari 45     /** fatal error list */
2 26 Feb 07 jari 46     Vector fatalErrors;
2 26 Feb 07 jari 47     /** dtd mismatch error list */
2 26 Feb 07 jari 48     Vector errors;
2 26 Feb 07 jari 49     /** warning list */
2 26 Feb 07 jari 50     Vector warnings;
2 26 Feb 07 jari 51     /** parameter warning list */
2 26 Feb 07 jari 52     Vector parameterErrors;
2 26 Feb 07 jari 53     /** script manager */
2 26 Feb 07 jari 54     ScriptManager manager;
2 26 Feb 07 jari 55     
2 26 Feb 07 jari 56     /** Report dialog
2 26 Feb 07 jari 57      */    
2 26 Feb 07 jari 58     ErrorLogDialog eDialog;
2 26 Feb 07 jari 59     
2 26 Feb 07 jari 60     /** Script file to log.
2 26 Feb 07 jari 61      */    
2 26 Feb 07 jari 62     File scriptFile;
2 26 Feb 07 jari 63     
2 26 Feb 07 jari 64     int result = JOptionPane.CANCEL_OPTION;
2 26 Feb 07 jari 65     
2 26 Feb 07 jari 66     /** Creates a new instance of ErrorLog
2 26 Feb 07 jari 67      * @param manager ScriptManager
2 26 Feb 07 jari 68      */
2 26 Feb 07 jari 69     public ErrorLog(ScriptManager manager) {
2 26 Feb 07 jari 70         this.manager = manager;
2 26 Feb 07 jari 71         reset();
2 26 Feb 07 jari 72         eDialog = new ErrorLogDialog();
2 26 Feb 07 jari 73     }
2 26 Feb 07 jari 74     
2 26 Feb 07 jari 75     /** Resets the log contents
2 26 Feb 07 jari 76      */    
2 26 Feb 07 jari 77     public void reset() {
2 26 Feb 07 jari 78         fatalErrors = new Vector();
2 26 Feb 07 jari 79         errors = new Vector();
2 26 Feb 07 jari 80         warnings = new Vector();
2 26 Feb 07 jari 81         parameterErrors = new Vector();
2 26 Feb 07 jari 82     }
2 26 Feb 07 jari 83     
2 26 Feb 07 jari 84     /** Sets the script file.
2 26 Feb 07 jari 85      * @param file Script file
2 26 Feb 07 jari 86      */    
2 26 Feb 07 jari 87     public void setFile(File file) {
2 26 Feb 07 jari 88         scriptFile = file;
2 26 Feb 07 jari 89     }
2 26 Feb 07 jari 90     
2 26 Feb 07 jari 91     /** Returns true if there are no fatal errors
2 26 Feb 07 jari 92      * and no dtd errors.
2 26 Feb 07 jari 93      * @return
2 26 Feb 07 jari 94      */    
2 26 Feb 07 jari 95     public boolean isValid() {
2 26 Feb 07 jari 96         return (fatalErrors.size() == 0 &&
2 26 Feb 07 jari 97         errors.size() == 0);
2 26 Feb 07 jari 98     }
2 26 Feb 07 jari 99     
2 26 Feb 07 jari 100     /** Returns true if there are warnings
2 26 Feb 07 jari 101      * @return
2 26 Feb 07 jari 102      */    
2 26 Feb 07 jari 103     public boolean hasWarnings() {
2 26 Feb 07 jari 104         return warnings.size() != 0;
2 26 Feb 07 jari 105     }
2 26 Feb 07 jari 106     
2 26 Feb 07 jari 107     /** Returns true if there are dtd errors.
2 26 Feb 07 jari 108      */    
2 26 Feb 07 jari 109     public boolean hasErrors() {
2 26 Feb 07 jari 110         return errors.size() != 0;
2 26 Feb 07 jari 111     }
2 26 Feb 07 jari 112     
2 26 Feb 07 jari 113     /** Returns true if there are fatal errors
2 26 Feb 07 jari 114      */    
2 26 Feb 07 jari 115     public boolean hasFatalErrors() {
2 26 Feb 07 jari 116         return fatalErrors.size() != 0;
2 26 Feb 07 jari 117     }
2 26 Feb 07 jari 118     
2 26 Feb 07 jari 119     /** Returns true if there are parameter errors.
2 26 Feb 07 jari 120      */    
2 26 Feb 07 jari 121     public boolean hasParameterErrors() {
2 26 Feb 07 jari 122         return parameterErrors.size() != 0;
2 26 Feb 07 jari 123     }
2 26 Feb 07 jari 124     
2 26 Feb 07 jari 125     /** Returns true if there are no errors to log.
2 26 Feb 07 jari 126      */    
2 26 Feb 07 jari 127     public boolean isEmpty() {
2 26 Feb 07 jari 128         return isValid() && !hasWarnings();
2 26 Feb 07 jari 129     }
2 26 Feb 07 jari 130     
2 26 Feb 07 jari 131     /** Records a parse warning.
2 26 Feb 07 jari 132      * @param e Parse exception
2 26 Feb 07 jari 133      */    
2 26 Feb 07 jari 134     public void recordWarning(SAXParseException e) {
2 26 Feb 07 jari 135         warnings.add(e);
2 26 Feb 07 jari 136     }
2 26 Feb 07 jari 137     
2 26 Feb 07 jari 138     /** Records a parse error.
2 26 Feb 07 jari 139      * @param e Error exeception
2 26 Feb 07 jari 140      */    
2 26 Feb 07 jari 141     public void recordError(SAXParseException e) {
2 26 Feb 07 jari 142         errors.add(e);
2 26 Feb 07 jari 143     }
2 26 Feb 07 jari 144     
2 26 Feb 07 jari 145     /** Records a fatal error.
2 26 Feb 07 jari 146      * @param e Exception
2 26 Feb 07 jari 147      */    
2 26 Feb 07 jari 148     public void recordFatalError(SAXParseException e) {
2 26 Feb 07 jari 149         fatalErrors.add(e);
2 26 Feb 07 jari 150     }
2 26 Feb 07 jari 151     
2 26 Feb 07 jari 152     /** Parameter error.
2 26 Feb 07 jari 153      * @param e <CODE>ScriptParameterException</CODE>
2 26 Feb 07 jari 154      */    
2 26 Feb 07 jari 155     public void recordParameterError(ScriptParameterException e) {
2 26 Feb 07 jari 156         parameterErrors.add(e);
2 26 Feb 07 jari 157     }
2 26 Feb 07 jari 158     
2 26 Feb 07 jari 159     //Reporting Methods
2 26 Feb 07 jari 160     
2 26 Feb 07 jari 161     /** Reports all listing in log to the dialog.
2 26 Feb 07 jari 162      */    
2 26 Feb 07 jari 163     public void reportAllListings() {
2 26 Feb 07 jari 164         eDialog.updateContent();
2 26 Feb 07 jari 165         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 166         eDialog.setLocation((screenSize.width - eDialog.getSize().width)/2, (screenSize.height - eDialog.getSize().height)/2);
2 26 Feb 07 jari 167         eDialog.show();
2 26 Feb 07 jari 168     }
2 26 Feb 07 jari 169     
2 26 Feb 07 jari 170     /** Report only fatal errors.
2 26 Feb 07 jari 171      */    
2 26 Feb 07 jari 172     public void reportFatalErrors() {
2 26 Feb 07 jari 173         eDialog.updateContent();
2 26 Feb 07 jari 174         eDialog.show();
2 26 Feb 07 jari 175     }
2 26 Feb 07 jari 176     
2 26 Feb 07 jari 177     /** Report only parse errors.
2 26 Feb 07 jari 178      */    
2 26 Feb 07 jari 179     public void reportErrors() {
2 26 Feb 07 jari 180         eDialog.updateContent();
2 26 Feb 07 jari 181         eDialog.show();
2 26 Feb 07 jari 182     }
2 26 Feb 07 jari 183     
2 26 Feb 07 jari 184     /** reports warnings to log.
2 26 Feb 07 jari 185      */    
2 26 Feb 07 jari 186     public void reportWarnings() {
2 26 Feb 07 jari 187         eDialog.updateContent();
2 26 Feb 07 jari 188         eDialog.show();
2 26 Feb 07 jari 189     }
2 26 Feb 07 jari 190     
2 26 Feb 07 jari 191     
2 26 Feb 07 jari 192     //API methods to get data
2 26 Feb 07 jari 193     /** Gets fatal errors.
2 26 Feb 07 jari 194      * @return
2 26 Feb 07 jari 195      */    
2 26 Feb 07 jari 196     public String [] getFataErrors() {
2 26 Feb 07 jari 197         return null;
2 26 Feb 07 jari 198     }
2 26 Feb 07 jari 199     
2 26 Feb 07 jari 200     /**
2 26 Feb 07 jari 201      * @return  */    
2 26 Feb 07 jari 202     public String [] getErrors() {
2 26 Feb 07 jari 203         return null;
2 26 Feb 07 jari 204     }
2 26 Feb 07 jari 205     
2 26 Feb 07 jari 206     /** Returns errors.
2 26 Feb 07 jari 207      * @return  */    
2 26 Feb 07 jari 208     public String [] getWarnings() {
2 26 Feb 07 jari 209         return null;
2 26 Feb 07 jari 210     }
2 26 Feb 07 jari 211     
2 26 Feb 07 jari 212     
2 26 Feb 07 jari 213     
2 26 Feb 07 jari 214     /** ErrorLogDialog to display errors.
2 26 Feb 07 jari 215      */    
2 26 Feb 07 jari 216     private class ErrorLogDialog extends AlgorithmDialog {
2 26 Feb 07 jari 217         /** Text Pane
2 26 Feb 07 jari 218          */        
2 26 Feb 07 jari 219         JTextPane pane;
2 26 Feb 07 jari 220         /** Text string for error accumulation.
2 26 Feb 07 jari 221          */        
2 26 Feb 07 jari 222         String text;
2 26 Feb 07 jari 223         JScrollPane sPane;
2 26 Feb 07 jari 224         /** Indicates if the dialog should support editing
2 26 Feb 07 jari 225          */        
2 26 Feb 07 jari 226         boolean isEditing;
2 26 Feb 07 jari 227         
2 26 Feb 07 jari 228         /** Constructs the error log dialog.
2 26 Feb 07 jari 229          */        
2 26 Feb 07 jari 230         public ErrorLogDialog() {
2 26 Feb 07 jari 231             super(new JFrame(), "Script Error Log", true);
2 26 Feb 07 jari 232             isEditing = false;
2 26 Feb 07 jari 233             //set up button panel
2 26 Feb 07 jari 234             this.buttonPanel.remove(this.okButton);
2 26 Feb 07 jari 235             this.buttonPanel.remove(this.cancelButton);
2 26 Feb 07 jari 236             this.buttonPanel.remove(this.resetButton);
2 26 Feb 07 jari 237             this.cancelButton.setText("Edit Script");
2 26 Feb 07 jari 238             this.cancelButton.setActionCommand("edit-command");
2 26 Feb 07 jari 239             cancelButton.setSize(120,30);
2 26 Feb 07 jari 240             cancelButton.setPreferredSize(new Dimension(120,30));
2 26 Feb 07 jari 241             this.okButton.setText("Close Log");
2 26 Feb 07 jari 242             this.okButton.setActionCommand("close-command");
2 26 Feb 07 jari 243             okButton.setSize(120,30);
2 26 Feb 07 jari 244             okButton.setPreferredSize(new Dimension(120,30));
2 26 Feb 07 jari 245             buttonPanel.add(cancelButton, new GridBagConstraints(2,0,1,1,0.0,0.0,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,0,5), 0,0));
2 26 Feb 07 jari 246             buttonPanel.add(okButton, new GridBagConstraints(3,0,1,1,0.0,0.0,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0,20,0,0), 0,0));
2 26 Feb 07 jari 247             this.buttonPanel.validate();
2 26 Feb 07 jari 248             
2 26 Feb 07 jari 249             
2 26 Feb 07 jari 250             pane = new JTextPane();
2 26 Feb 07 jari 251             pane.setEditable(false);
2 26 Feb 07 jari 252             pane.setMargin(new Insets(0,10,5,15));
2 26 Feb 07 jari 253             pane.setBackground(new Color(252, 253, 196));
2 26 Feb 07 jari 254             pane.setContentType("text/html");
2 26 Feb 07 jari 255             sPane = new JScrollPane(pane);
2 26 Feb 07 jari 256             addContent(sPane);
2 26 Feb 07 jari 257             setActionListeners(new Listener());
2 26 Feb 07 jari 258             
2 26 Feb 07 jari 259             setSize(550, 600);
2 26 Feb 07 jari 260         }
2 26 Feb 07 jari 261         
2 26 Feb 07 jari 262         /** Updates the content by searching the error logs.
2 26 Feb 07 jari 263          */        
2 26 Feb 07 jari 264         public void updateContent() {
2 26 Feb 07 jari 265             SAXParseException e;
2 26 Feb 07 jari 266             int lineNum;
2 26 Feb 07 jari 267             String lineNumStr;
2 26 Feb 07 jari 268             String msg;
2 26 Feb 07 jari 269             boolean showSep = false;
2 26 Feb 07 jari 270             
2 26 Feb 07 jari 271             text = new String();
2 26 Feb 07 jari 272             
2 26 Feb 07 jari 273             text += "<html><body>";
2 26 Feb 07 jari 274             
2 26 Feb 07 jari 275             //Fatal Errors
2 26 Feb 07 jari 276             if(fatalErrors.size() > 0) {
2 26 Feb 07 jari 277                 showSep = true;
2 26 Feb 07 jari 278                 text += "<h2>Fatal Errors</h2><h3>The following Fatal Error";
2 26 Feb 07 jari 279                 if(fatalErrors.size() > 1)
2 26 Feb 07 jari 280                     text += "s";
2 26 Feb 07 jari 281                 text += " occured during parsing and validation.</h2>";
2 26 Feb 07 jari 282                 
2 26 Feb 07 jari 283                 text += "<p>Note: Fatal Errors indicate that the input script had fundamental problems " +
2 26 Feb 07 jari 284                 "in script construction such as unpaired tags.  Loading will be terminated "+
2 26 Feb 07 jari 285                 "so that the reported errors can be corrected.  MeV does not have to be closed while "+
2 26 Feb 07 jari 286                 "corrections are made to the input script.</p>";
2 26 Feb 07 jari 287                 
2 26 Feb 07 jari 288                 text += "<table border=3><th>Line</th><th>Error</th></tr>";
2 26 Feb 07 jari 289                 for(int i = 0; i < fatalErrors.size(); i++){
2 26 Feb 07 jari 290                     e = (SAXParseException)fatalErrors.elementAt(i);
2 26 Feb 07 jari 291                     lineNum = e.getLineNumber();
2 26 Feb 07 jari 292                     if(lineNum >= 0)
2 26 Feb 07 jari 293                         lineNumStr = String.valueOf(lineNum);
2 26 Feb 07 jari 294                     else
2 26 Feb 07 jari 295                         lineNumStr = "N/A";
2 26 Feb 07 jari 296                     msg = e.getMessage();
2 26 Feb 07 jari 297                     text += "<tr><td align=center>"+lineNumStr+"</td><td>"+msg+"</td></tr>";
2 26 Feb 07 jari 298                 }
2 26 Feb 07 jari 299                 text += "</table>";
2 26 Feb 07 jari 300             }
2 26 Feb 07 jari 301             if(errors.size() > 0) {
2 26 Feb 07 jari 302                 if(showSep)
2 26 Feb 07 jari 303                     text+="<br><hr size=3>";
2 26 Feb 07 jari 304                 text += "<h2>Validation Errors</h2><h3>The following Validation Error";
2 26 Feb 07 jari 305                 if(errors.size() > 1)
2 26 Feb 07 jari 306                     text += "s";
2 26 Feb 07 jari 307                 text += " occured during parsing and validation.</h2>";
2 26 Feb 07 jari 308                 text += "<p>Note: Validation Errors indicate that the input script did not conform " +
2 26 Feb 07 jari 309                 "to the conventions of the document type definition.  Loading will be terminated "+
2 26 Feb 07 jari 310                 "so that the reported errors can be corrected.  MeV does not have to be closed while "+
2 26 Feb 07 jari 311                 "corrections are made to the input script.</p>";
2 26 Feb 07 jari 312                 text += "<table border=3><tr><th>Line</th><th>Error</th></tr>";
2 26 Feb 07 jari 313                 for(int i = 0; i < errors.size(); i++){
2 26 Feb 07 jari 314                     e = (SAXParseException)errors.elementAt(i);
2 26 Feb 07 jari 315                     lineNum = e.getLineNumber();
2 26 Feb 07 jari 316                     if(lineNum >= 0)
2 26 Feb 07 jari 317                         lineNumStr = String.valueOf(lineNum);
2 26 Feb 07 jari 318                     else
2 26 Feb 07 jari 319                         lineNumStr = "N/A";
2 26 Feb 07 jari 320                     msg = e.getMessage();
2 26 Feb 07 jari 321                     text += "<tr><td align=center>"+lineNumStr+"</td><td>"+msg+"</td></tr>";
2 26 Feb 07 jari 322                 }
2 26 Feb 07 jari 323                 text += "</table>";
2 26 Feb 07 jari 324             }
2 26 Feb 07 jari 325             if(warnings.size() > 0) {
2 26 Feb 07 jari 326                 if(showSep)
2 26 Feb 07 jari 327                     text+="<br><hr size=3>";
2 26 Feb 07 jari 328                 
2 26 Feb 07 jari 329                 text += "<h2>Warnings</h2><h3>The following Warning";
2 26 Feb 07 jari 330                 if(warnings.size() > 1)
2 26 Feb 07 jari 331                     text += "s";
2 26 Feb 07 jari 332                 text += " occured during parsing and validation.</h2>";
2 26 Feb 07 jari 333                 
2 26 Feb 07 jari 334                 if(!showSep) { //only warnings
2 26 Feb 07 jari 335                     text += "<p>Note: The script has loaded with some reported warnings " +
2 26 Feb 07 jari 336                     "If you would like to stop the script load hit stop otherwise "+
2 26 Feb 07 jari 337                     "hit continue to complete the loading.</p>";
2 26 Feb 07 jari 338                 }
2 26 Feb 07 jari 339                 
2 26 Feb 07 jari 340                 
2 26 Feb 07 jari 341                 text += "<table border=3><th>Line</th><th>Error</th></tr>";
2 26 Feb 07 jari 342                 for(int i = 0; i < warnings.size(); i++){
2 26 Feb 07 jari 343                     e = (SAXParseException)warnings.elementAt(i);
2 26 Feb 07 jari 344                     lineNum = e.getLineNumber();
2 26 Feb 07 jari 345                     if(lineNum >= 0)
2 26 Feb 07 jari 346                         lineNumStr = String.valueOf(lineNum);
2 26 Feb 07 jari 347                     else
2 26 Feb 07 jari 348                         lineNumStr = "N/A";
2 26 Feb 07 jari 349                     msg = e.getMessage();
2 26 Feb 07 jari 350                     text += "<tr><td align=center>"+lineNumStr+"</td><td>"+msg+"</td></tr>";
2 26 Feb 07 jari 351                 }
2 26 Feb 07 jari 352                 text += "</table>";
2 26 Feb 07 jari 353             }
2 26 Feb 07 jari 354             if(parameterErrors.size() > 0) {
2 26 Feb 07 jari 355                 ScriptParameterException spe;
2 26 Feb 07 jari 356                 Vector algVector = new Vector();
2 26 Feb 07 jari 357                 
2 26 Feb 07 jari 358                 String algName;
2 26 Feb 07 jari 359                 
2 26 Feb 07 jari 360                 Hashtable errorHash = new Hashtable();
2 26 Feb 07 jari 361                 for(int i = 0; i < parameterErrors.size(); i++) {
2 26 Feb 07 jari 362                     spe =(ScriptParameterException)(parameterErrors.elementAt(i));
2 26 Feb 07 jari 363                     algName = spe.getAlgoritmName();
2 26 Feb 07 jari 364                     if(errorHash.containsKey(algName)) {
2 26 Feb 07 jari 365                         ((Vector)(errorHash.get(algName))).add(spe);
2 26 Feb 07 jari 366                     } else {
2 26 Feb 07 jari 367                         Vector v = new Vector();
2 26 Feb 07 jari 368                         v.add(spe);
2 26 Feb 07 jari 369                         errorHash.put(algName, v);
2 26 Feb 07 jari 370                     }
2 26 Feb 07 jari 371                 }
2 26 Feb 07 jari 372                 
2 26 Feb 07 jari 373                 if(showSep)
2 26 Feb 07 jari 374                     text+="<br><hr size=3>";
2 26 Feb 07 jari 375                 text+= "<h2>Script Parameter Validation Errors</h2><h3>The following Error";
2 26 Feb 07 jari 376                 if(parameterErrors.size() > 1)
2 26 Feb 07 jari 377                     text+= "s";
2 26 Feb 07 jari 378                 text+= " occurred during parameter validation.</h3>";
2 26 Feb 07 jari 379                 text += "<p>Note: The parameter warnings are reported so that you are aware of "+
2 26 Feb 07 jari 380                         "possible script errors that could abort processing during script execution.</p>";
2 26 Feb 07 jari 381                 text+= "<br><hr size=3>";    
2 26 Feb 07 jari 382                 
2 26 Feb 07 jari 383                 Vector eVector;
2 26 Feb 07 jari 384                 Enumeration keys = errorHash.keys();
2 26 Feb 07 jari 385                 int errorCount = 0;
2 26 Feb 07 jari 386                 
2 26 Feb 07 jari 387                 while(keys.hasMoreElements()) {
2 26 Feb 07 jari 388                     if(errorCount > 0)
2 26 Feb 07 jari 389                         text +="<br><hr size=3>";
2 26 Feb 07 jari 390                     errorCount++;                    
2 26 Feb 07 jari 391                     algName = (String)(keys.nextElement());
2 26 Feb 07 jari 392                     eVector = (Vector)(errorHash.get(algName));
2 26 Feb 07 jari 393                     text += "<table border=3><th>Algorithm</th><th>Alg. Index</th><th>Data Ref.</th><th>Key</th><th>Error</th>";
2 26 Feb 07 jari 394                     for(int i = 0; i < eVector.size(); i++) {
2 26 Feb 07 jari 395                         spe = (ScriptParameterException)(eVector.elementAt(i));
2 26 Feb 07 jari 396                         text += "<tr><td>"+algName+"</td><td>"+String.valueOf(spe.getAlgorithmIndex())+"</td><td>"+String.valueOf(spe.getDataReference())+"</td><td>"+spe.getKey()+"</td><td><b>"+spe.getMessage()+"</b></td></tr>";                                                
2 26 Feb 07 jari 397                     }
2 26 Feb 07 jari 398                     text += "</table>";
2 26 Feb 07 jari 399
2 26 Feb 07 jari 400                     String table = manager.getValidParametersTable(algName);
2 26 Feb 07 jari 401                     if(table != null)
2 26 Feb 07 jari 402                         text += table;
2 26 Feb 07 jari 403                 }                
2 26 Feb 07 jari 404                 
2 26 Feb 07 jari 405             }
2 26 Feb 07 jari 406             text += "</body></html>";
2 26 Feb 07 jari 407             setText(text);
2 26 Feb 07 jari 408         }
2 26 Feb 07 jari 409         
2 26 Feb 07 jari 410         //TEST CODE
2 26 Feb 07 jari 411         /** Sets the error text string.
2 26 Feb 07 jari 412          */        
2 26 Feb 07 jari 413         public void setText(String t) {
2 26 Feb 07 jari 414             text = t;
2 26 Feb 07 jari 415             pane.setText(text);
2 26 Feb 07 jari 416             pane.setCaretPosition(0);
2 26 Feb 07 jari 417             pane.repaint();
2 26 Feb 07 jari 418         }
2 26 Feb 07 jari 419         
2 26 Feb 07 jari 420         /**
2 26 Feb 07 jari 421          * The class to listen to the dialog events.
2 26 Feb 07 jari 422          */
2 26 Feb 07 jari 423         private class Listener extends DialogListener {
2 26 Feb 07 jari 424             
2 26 Feb 07 jari 425             public void actionPerformed(ActionEvent e) {
2 26 Feb 07 jari 426                 Object source = e.getSource();
2 26 Feb 07 jari 427                 String cmd = e.getActionCommand();
2 26 Feb 07 jari 428                 
2 26 Feb 07 jari 429                 if (cmd.equals("close-command")) {
2 26 Feb 07 jari 430                     dispose();
2 26 Feb 07 jari 431                 } else if (cmd.equals("edit-command")) {
2 26 Feb 07 jari 432                     if(isEditing)
2 26 Feb 07 jari 433                         return;
2 26 Feb 07 jari 434                     isEditing = true;
2 26 Feb 07 jari 435                     cancelButton.setEnabled(false);
2 26 Feb 07 jari 436                     
2 26 Feb 07 jari 437                     ScriptXMLViewer viewer = new ScriptXMLViewer(scriptFile);
2 26 Feb 07 jari 438                     
2 26 Feb 07 jari 439                     //if viewer actually loaded text
2 26 Feb 07 jari 440                     if(viewer.getText().length() > 10) {
2 26 Feb 07 jari 441                 /*        JFrame frame = new JFrame("Script Editor");
2 26 Feb 07 jari 442                         
2 26 Feb 07 jari 443                         JScrollPane pane = new JScrollPane(viewer.getContentComponent());
2 26 Feb 07 jari 444                         pane.setRowHeaderView(viewer.getRowHeaderComponent());
2 26 Feb 07 jari 445                         
2 26 Feb 07 jari 446                         frame.getContentPane().add(pane);
2 26 Feb 07 jari 447                         frame.setSize(350, 400);
2 26 Feb 07 jari 448                         Point p = ErrorLogDialog.this.getLocation();
2 26 Feb 07 jari 449                         if(p != null)
2 26 Feb 07 jari 450                             frame.setLocation(p.x+30, p.y+30);
2 26 Feb 07 jari 451                         else {
2 26 Feb 07 jari 452                             Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
2 26 Feb 07 jari 453                             frame.setLocation((screenSize.width - frame.getSize().width)/2, (screenSize.height - frame.getSize().height)/2);
2 26 Feb 07 jari 454                   
2 26 Feb 07 jari 455                         }
2 26 Feb 07 jari 456                         frame.setVisible(true);
2 26 Feb 07 jari 457                  **/
2 26 Feb 07 jari 458                         Point p = ErrorLogDialog.this.getLocation();
2 26 Feb 07 jari 459                         int width = getWidth();
2 26 Feb 07 jari 460                         int h = sPane.getHeight();
2 26 Feb 07 jari 461                         
2 26 Feb 07 jari 462                         JScrollPane pane = new JScrollPane(viewer.getContentComponent());
2 26 Feb 07 jari 463                         pane.setRowHeaderView(viewer.getRowHeaderComponent());
2 26 Feb 07 jari 464                         
2 26 Feb 07 jari 465                         JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, sPane, pane);
2 26 Feb 07 jari 466                         splitPane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
2 26 Feb 07 jari 467                         splitPane.setDividerLocation((int)(width*0.65));
2 26 Feb 07 jari 468                         splitPane.setPreferredSize(new Dimension(width+(int)(width/2), h));
2 26 Feb 07 jari 469                         splitPane.setSize(width+(int)(width/2), h);                      
2 26 Feb 07 jari 470                         addContent(splitPane);
2 26 Feb 07 jari 471                         pack();
2 26 Feb 07 jari 472                         if(p != null)
2 26 Feb 07 jari 473                             setLocation(p.x-((int)(width/4)), p.y);
2 26 Feb 07 jari 474                     } else {
2 26 Feb 07 jari 475                         JOptionPane.showMessageDialog(ErrorLogDialog.this, "Couldn't load script file into script editor.", "Script Editor Loading Error", JOptionPane.WARNING_MESSAGE);
2 26 Feb 07 jari 476                     }
2 26 Feb 07 jari 477                 }
2 26 Feb 07 jari 478                 
2 26 Feb 07 jari 479                 else if (cmd.equals("info-command")){
2 26 Feb 07 jari 480                     HelpWindow hw = new HelpWindow(ErrorLogDialog.this, "Error Log");
2 26 Feb 07 jari 481                     if(hw.getWindowContent()){
2 26 Feb 07 jari 482                         hw.setSize(450,650);
2 26 Feb 07 jari 483                         hw.setLocation();
2 26 Feb 07 jari 484                         hw.show();
2 26 Feb 07 jari 485                     }
2 26 Feb 07 jari 486                     else {
2 26 Feb 07 jari 487                         hw.setVisible(false);
2 26 Feb 07 jari 488                         hw.dispose();
2 26 Feb 07 jari 489                     }
2 26 Feb 07 jari 490                 }
2 26 Feb 07 jari 491             }
2 26 Feb 07 jari 492             
2 26 Feb 07 jari 493             public void windowClosing(WindowEvent e) {
2 26 Feb 07 jari 494                 result = JOptionPane.CLOSED_OPTION;
2 26 Feb 07 jari 495                 dispose();
2 26 Feb 07 jari 496             }
2 26 Feb 07 jari 497         }
2 26 Feb 07 jari 498         
2 26 Feb 07 jari 499     }
2 26 Feb 07 jari 500     
2 26 Feb 07 jari 501 }
2 26 Feb 07 jari 502