src/Tools/GraphBrowser/graphbrowser/Console.java
changeset 74015 12b1f4649ab1
parent 74011 1d366486a812
equal deleted inserted replaced
74014:3b8b1da2ff29 74015:12b1f4649ab1
       
     1 /***************************************************************************
       
     2   Title:      graphbrowser/Console.java
       
     3   Author:     Gerwin Klein, TU Muenchen
       
     4   Options:    :tabSize=2:
       
     5 
       
     6   This is the graph browser's main class when run as a console application.
       
     7   It duplicates some logic from GraphBrowser and GraphView.
       
     8   It does so to remove dependency on AWT.
       
     9 
       
    10 ***************************************************************************/
       
    11 
       
    12 package isabelle.graphbrowser;
       
    13 
       
    14 import java.io.*;
       
    15 import java.util.*;
       
    16 
       
    17 public class Console {
       
    18 	Graph g;
       
    19 	String gfname;  
       
    20 
       
    21   public Console(String name) {
       
    22     gfname = name;
       
    23   }
       
    24 
       
    25 	public void PS(String fname, boolean printable) throws IOException {
       
    26     g.layout(null);
       
    27 		g.PS(fname,printable);
       
    28 	}
       
    29 
       
    30 
       
    31 	public void collapseNodes(Vector collapsedDir) { 
       
    32 		Enumeration e1=collapsedDir.elements();
       
    33 		Graph gra=(Graph)(g.clone());
       
    34 
       
    35 		while (e1.hasMoreElements()) {
       
    36 			Directory d=(Directory)(e1.nextElement());
       
    37 			Vector v=gra.decode(d.getCollapsed());
       
    38 			if (!v.isEmpty())
       
    39 				gra.collapse(v,"["+d.getName()+"]",d.getCollapsed());
       
    40 		}
       
    41     
       
    42     g = gra;
       
    43 	}
       
    44 
       
    45 
       
    46 	public void initBrowser(InputStream is) {
       
    47 		try {
       
    48 			TreeNode tn = new TreeNode("Root", "", -1, true);
       
    49       g = new Graph(is, tn);
       
    50 			Vector v = new Vector(10,10);
       
    51 			tn.collapsedDirectories(v);      
       
    52       collapseNodes(v);
       
    53 		} catch (IOException exn) {
       
    54 			System.err.println("\nI/O error while reading graph file.");
       
    55 		} catch (ParseError exn) {
       
    56 			System.err.println("\nParse error in graph file:");
       
    57 			System.err.println(exn.getMessage());
       
    58 			System.err.println("\nSyntax:\n<vertexname> <vertexID> <dirname> [ + ] <path> "+
       
    59                          "[ < | > ] [ <vertexID> [ ... [ <vertexID> ] ... ] ] ;");
       
    60 		}
       
    61 	}
       
    62 
       
    63 	public static void main(String[] args) {
       
    64 		try {
       
    65       if (args.length <= 1) {
       
    66         System.err.println("Graph and output file expected.");
       
    67         return;
       
    68       }
       
    69 
       
    70 			Console console=new Console(args[0]);
       
    71       InputStream is=new FileInputStream(args[0]);
       
    72       console.initBrowser(is);
       
    73       is.close();      
       
    74     
       
    75       try {
       
    76         if (args[1].endsWith(".ps"))
       
    77           console.PS(args[1], true);
       
    78         else if (args[1].endsWith(".eps"))
       
    79           console.PS(args[1], false);
       
    80         else
       
    81           System.err.println("Unknown file type: " + args[1]);
       
    82       } catch (IOException exn) {
       
    83         System.err.println("Unable to write file " + args[1]);
       
    84       }
       
    85 		} catch (IOException exn) {
       
    86 			System.err.println("Can't open graph file "+args[0]);
       
    87 		}
       
    88 	}
       
    89 }