source: trunk/quest-jfcmonitor/src/main/java/de/ugoe/cs/quest/jfcmonitor/Runner.java @ 853

Last change on this file since 853 was 853, checked in by fglaser, 12 years ago
  • JFCMonitor now logs component class parents
  • Renamed WindowMonitor? to JFCWindowMonitor
  • Property svn:mime-type set to text/plain
File size: 4.0 KB
Line 
1
2package de.ugoe.cs.quest.jfcmonitor;
3
4import java.awt.AWTEvent;
5import java.awt.Toolkit;
6import java.awt.event.AWTEventListener;
7import java.awt.event.FocusEvent;
8import java.io.FileOutputStream;
9import java.io.IOException;
10import java.io.OutputStreamWriter;
11import java.io.UnsupportedEncodingException;
12import java.util.Arrays;
13
14/**
15 * <p>
16 * Start-up class of the application.
17 * </p>
18 * <p>
19 * Launches the application under test in the same JVM.
20 * </p>
21 *
22 * @author Steffen Herbold
23 * @author Fabian Glaser
24 * @version 1.0
25 */
26public class Runner {
27
28    /**
29     * <p>
30     * Debugging variable. If set to true, the logging is also written to the console.
31     * </p>
32     */
33    private final static boolean stdOutputWrite = true;
34
35    /**
36     * <p>
37     * Main method of the application.
38     * </p>
39     *
40     * @param args
41     *            the first parameter defines the Jar file that contains the start-up information of
42     *            the application under test. The remaining parameters are passed on the toe
43     *            application under test.
44     */
45    public static void main(String[] args) {
46        String logfileName = "jfcmonitor_" + System.currentTimeMillis() + ".log";
47
48        FileOutputStream fis;
49        OutputStreamWriter writer;
50        try {
51            // the writer is not closed explicitly!
52            fis = new FileOutputStream(logfileName, true);
53            writer = new OutputStreamWriter(fis, "UTF-8");
54        }
55        catch (IOException e) {
56            System.err.println("JFCMONITOR -- failure opening logfile: " + e.getMessage());
57            return;
58        }
59
60        JFCMonitorOutputWriter jfcWriter = new JFCMonitorOutputWriter(writer);
61        AWTEventListener listenerFile = new JFCListener(jfcWriter);
62        Toolkit.getDefaultToolkit().addAWTEventListener(listenerFile, AWTEvent.KEY_EVENT_MASK);
63        Toolkit.getDefaultToolkit().addAWTEventListener(listenerFile, AWTEvent.MOUSE_EVENT_MASK);
64        Toolkit.getDefaultToolkit().addAWTEventListener(listenerFile, FocusEvent.FOCUS_EVENT_MASK);
65        Toolkit.getDefaultToolkit().addAWTEventListener(new JFCWindowMonitor(jfcWriter),
66                                                        AWTEvent.WINDOW_EVENT_MASK);
67        JFCComponent.addPropertyChangeListener(new JFCNameChangeListener(jfcWriter));
68        JFCComponent.addContainerListener(new JFCContainerListener(jfcWriter));
69
70        if (stdOutputWrite) {
71            AWTEventListener listenerStdOut;
72            try {
73                OutputStreamWriter stdOutputWriter = new OutputStreamWriter(System.out, "UTF-8");
74                JFCMonitorOutputWriter stdJfcWriter = new JFCMonitorOutputWriter(stdOutputWriter);
75                listenerStdOut = new JFCListener(stdJfcWriter);
76                Toolkit.getDefaultToolkit().addAWTEventListener(listenerStdOut,
77                                                                AWTEvent.KEY_EVENT_MASK);
78                Toolkit.getDefaultToolkit().addAWTEventListener(listenerStdOut,
79                                                                AWTEvent.MOUSE_EVENT_MASK);
80                Toolkit.getDefaultToolkit().addAWTEventListener(listenerStdOut,
81                                                                FocusEvent.FOCUS_EVENT_MASK);
82                Toolkit.getDefaultToolkit().addAWTEventListener(new JFCWindowMonitor(stdJfcWriter),
83                        AWTEvent.WINDOW_EVENT_MASK);
84                JFCComponent.addPropertyChangeListener(new JFCNameChangeListener(stdJfcWriter));
85                JFCComponent.addContainerListener(new JFCContainerListener(stdJfcWriter));
86            }
87            catch (UnsupportedEncodingException e) {
88                System.err
89                    .println("JFCMONITOR -- failure to create OutputStreamWriter with UTF-8 encoding to System.out");
90            }
91        }
92
93        JarLauncher launcher = new JarLauncher(args[0], Arrays.copyOfRange(args, 1, args.length));
94        launcher.exec();
95    }
96}
Note: See TracBrowser for help on using the repository browser.