1 | package geniusweb.simplerunner.gui;
|
---|
2 |
|
---|
3 | import java.awt.BorderLayout;
|
---|
4 | import java.io.PrintWriter;
|
---|
5 | import java.io.StringWriter;
|
---|
6 | import java.util.logging.Level;
|
---|
7 |
|
---|
8 | import javax.swing.JButton;
|
---|
9 | import javax.swing.JFrame;
|
---|
10 | import javax.swing.JPanel;
|
---|
11 | import javax.swing.JScrollPane;
|
---|
12 | import javax.swing.JTextArea;
|
---|
13 | import javax.swing.SwingUtilities;
|
---|
14 |
|
---|
15 | import geniusweb.simplerunner.ClassPathConnectionFactory;
|
---|
16 | import geniusweb.simplerunner.Runner;
|
---|
17 | import tudelft.utilities.logging.Reporter;
|
---|
18 |
|
---|
19 | /**
|
---|
20 | * Simple GUI allowing users to create the settings interactively, much like on
|
---|
21 | * the runserver
|
---|
22 | *
|
---|
23 | */
|
---|
24 | public class GUI extends JPanel {
|
---|
25 | private JTextArea resultarea = new JTextArea(
|
---|
26 | "Results will appear here after run", 9, 40);
|
---|
27 | private final SettingsPanel settingsPanel;
|
---|
28 |
|
---|
29 | public GUI() {
|
---|
30 | setLayout(new BorderLayout());
|
---|
31 | settingsPanel = new SettingsPanel();
|
---|
32 | add(settingsPanel, BorderLayout.CENTER);
|
---|
33 | add(startPanel(), BorderLayout.SOUTH);
|
---|
34 | }
|
---|
35 |
|
---|
36 | private JPanel startPanel() {
|
---|
37 | JPanel startpanel = new JPanel();
|
---|
38 | startpanel.setLayout(new BorderLayout());
|
---|
39 | JButton startbutton = new JButton("Start Session");
|
---|
40 | startpanel.add(startbutton, BorderLayout.NORTH);
|
---|
41 | startpanel.add(new JScrollPane(resultarea), BorderLayout.CENTER);
|
---|
42 |
|
---|
43 | startbutton.addActionListener(evt -> runsession());
|
---|
44 | return startpanel;
|
---|
45 | }
|
---|
46 |
|
---|
47 | private void runsession() {
|
---|
48 | resultarea.setText("");
|
---|
49 | Reporter myreporter = new Reporter() {
|
---|
50 |
|
---|
51 | @Override
|
---|
52 | public void log(Level level, String msg) {
|
---|
53 | SwingUtilities.invokeLater(new Runnable() {
|
---|
54 | @Override
|
---|
55 | public void run() {
|
---|
56 | resultarea.append("[" + level + "] " + msg + "\n");
|
---|
57 | }
|
---|
58 | });
|
---|
59 | }
|
---|
60 |
|
---|
61 | @Override
|
---|
62 | public void log(Level level, String msg, Throwable thrown) {
|
---|
63 | SwingUtilities.invokeLater(new Runnable() {
|
---|
64 |
|
---|
65 | @Override
|
---|
66 | public void run() {
|
---|
67 | resultarea
|
---|
68 | .append("[" + level + "] throws " + msg + "\n");
|
---|
69 | StringWriter errors = new StringWriter();
|
---|
70 | thrown.printStackTrace(new PrintWriter(errors));
|
---|
71 | resultarea.append(errors.toString() + "\n");
|
---|
72 | }
|
---|
73 | });
|
---|
74 | }
|
---|
75 | };
|
---|
76 | Runner runner = new Runner(settingsPanel.getSettings(),
|
---|
77 | new ClassPathConnectionFactory(), myreporter, 0);
|
---|
78 | runner.run();
|
---|
79 | }
|
---|
80 |
|
---|
81 | public static void main(String[] args) {
|
---|
82 | JFrame frame = new JFrame("GeniusWeb SimpleRunner GUI");
|
---|
83 | frame.add(new GUI());
|
---|
84 | frame.pack();
|
---|
85 | frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
---|
86 | frame.setVisible(true);
|
---|
87 | }
|
---|
88 | }
|
---|