|
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 } |