lib/browser/GraphBrowser/Console.java
author wenzelm
Tue, 21 Dec 2010 21:21:21 +0100
changeset 41377 390c53904220
parent 33686 8e33ca8832b1
child 50473 ca4088bf8365
permissions -rw-r--r--
configuration option "syntax_ast_trace" and "syntax_ast_stat";
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
     1
/***************************************************************************
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
     2
  Title:      GraphBrowser/Console.java
13970
4aef7117817b cleanup, comments
kleing
parents: 13968
diff changeset
     3
  Author:     Gerwin Klein, TU Muenchen
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
     4
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
     5
  This is the graph browser's main class when run as a console application.
13972
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
     6
  It duplicates some logic from GraphBrowser and GraphView.
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
     7
  It does so to remove dependency on AWT.
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
     8
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
     9
***************************************************************************/
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    10
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    11
package GraphBrowser;
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    12
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    13
import java.io.*;
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    14
import java.util.*;
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    15
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    16
public class Console {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    17
	Graph g;
13972
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    18
	String gfname;  
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    19
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    20
  public Console(String name) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    21
    gfname = name;
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    22
  }
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    23
13970
4aef7117817b cleanup, comments
kleing
parents: 13968
diff changeset
    24
	public void PS(String fname, boolean printable) throws IOException {
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    25
    g.layout(null);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    26
		g.PS(fname,printable);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    27
	}
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    28
13972
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    29
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    30
	public void collapseNodes(Vector collapsedDir) { 
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    31
		Enumeration e1=collapsedDir.elements();
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    32
		Graph gra=(Graph)(g.clone());
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    33
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    34
		while (e1.hasMoreElements()) {
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    35
			Directory d=(Directory)(e1.nextElement());
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    36
			Vector v=gra.decode(d.getCollapsed());
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    37
			if (!v.isEmpty())
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    38
				gra.collapse(v,"["+d.getName()+"]",d.getCollapsed());
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    39
		}
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    40
    
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    41
    g = gra;
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    42
	}
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    43
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    44
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    45
	public void initBrowser(InputStream is) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    46
		try {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    47
			TreeNode tn = new TreeNode("Root", "", -1, true);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    48
      g = new Graph(is, tn);
13972
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    49
			Vector v = new Vector(10,10);
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    50
			tn.collapsedDirectories(v);      
fac2aa7618ed fixed uncollapsed dirs (should be collapsed by default)
kleing
parents: 13970
diff changeset
    51
      collapseNodes(v);
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    52
		} catch (IOException exn) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    53
			System.err.println("\nI/O error while reading graph file.");
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    54
		} catch (ParseError exn) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    55
			System.err.println("\nParse error in graph file:");
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    56
			System.err.println(exn.getMessage());
13970
4aef7117817b cleanup, comments
kleing
parents: 13968
diff changeset
    57
			System.err.println("\nSyntax:\n<vertexname> <vertexID> <dirname> [ + ] <path> "+
4aef7117817b cleanup, comments
kleing
parents: 13968
diff changeset
    58
                         "[ < | > ] [ <vertexID> [ ... [ <vertexID> ] ... ] ] ;");
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    59
		}
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    60
	}
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    61
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    62
	public static void main(String[] args) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    63
		try {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    64
      if (args.length <= 1) {
13970
4aef7117817b cleanup, comments
kleing
parents: 13968
diff changeset
    65
        System.err.println("Graph and output file expected.");
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    66
        return;
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    67
      }
13970
4aef7117817b cleanup, comments
kleing
parents: 13968
diff changeset
    68
13968
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    69
			Console console=new Console(args[0]);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    70
      InputStream is=new FileInputStream(args[0]);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    71
      console.initBrowser(is);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    72
      is.close();      
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    73
    
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    74
      try {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    75
        if (args[1].endsWith(".ps"))
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    76
          console.PS(args[1], true);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    77
        else if (args[1].endsWith(".eps"))
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    78
          console.PS(args[1], false);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    79
        else
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    80
          System.err.println("Unknown file type: " + args[1]);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    81
      } catch (IOException exn) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    82
        System.err.println("Unable to write file " + args[1]);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    83
      }
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    84
		} catch (IOException exn) {
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    85
			System.err.println("Can't open graph file "+args[0]);
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    86
		}
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    87
	}
689868b99bde eliminated dependencies on AWT for batch mode
kleing
parents:
diff changeset
    88
}