01: package org.zilonis.tool.ui;
02:
03: import java.awt.BorderLayout;
04: import java.io.DataInputStream;
05: import java.io.IOException;
06: import java.io.PrintStream;
07:
08: import javax.swing.Box;
09: import javax.swing.JPanel;
10: import javax.swing.JScrollPane;
11:
12: import org.zilonis.parser.gen.ZilonisLexer;
13: import org.zilonis.parser.gen.ZilonisParser;
14: import org.zilonis.tool.ext.aerith.ui.AerithScrollbarUI;
15: import org.zilonis.tool.ui.shell.Plugin;
16: import org.zilonis.tool.ui.shell.ShellComponent;
17:
18: public class ShellPanel extends JPanel {
19:
20: private ShellComponent codeTextArea;
21:
22: private AnalysisToolParserEventHandler analysisToolParserEventHandler;
23:
24: public ShellPanel(
25: AnalysisToolParserEventHandler analysisToolParserEventHandler) {
26: this .analysisToolParserEventHandler = analysisToolParserEventHandler;
27: initComponents();
28: }
29:
30: public void initComponents() {
31: setOpaque(false);
32: JScrollPane rulesCodeScrollPane = new JScrollPane();
33: rulesCodeScrollPane.getViewport().setOpaque(false);
34: rulesCodeScrollPane.getHorizontalScrollBar().setUI(
35: new AerithScrollbarUI());
36: rulesCodeScrollPane.getVerticalScrollBar().setUI(
37: new AerithScrollbarUI());
38: rulesCodeScrollPane.setBorder(javax.swing.BorderFactory
39: .createEmptyBorder(1, 1, 6, 1));
40:
41: rulesCodeScrollPane
42: .setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
43: rulesCodeScrollPane
44: .setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
45: rulesCodeScrollPane.setOpaque(false);
46: codeTextArea = new ShellComponent(new Plugin() {
47: public String userVersion() {
48: return "Zilonis Shell UI";
49: }
50:
51: public void console(DataInputStream stdin,
52: PrintStream stdout, PrintStream stderr)
53: throws IOException {
54: stdout.print("$ ");
55: ZilonisLexer lexer = new ZilonisLexer(stdin);
56: ZilonisParser parser = new ZilonisParser(lexer);
57: analysisToolParserEventHandler.setConsole(stdout);
58: parser.setEventHandler(analysisToolParserEventHandler);
59: try {
60: parser.documentStatement();
61: } catch (Exception e) {
62: stderr.println(e.toString());
63: }
64: }
65:
66: public boolean exception(Exception exception,
67: PrintStream stdout, PrintStream stderr) {
68: stdout.println("Exception:" + exception);
69: exception.printStackTrace();
70: return false;
71: }
72: });
73: codeTextArea.start();
74: setLayout(new BorderLayout());
75: add(BorderLayout.CENTER, codeTextArea);
76: add(BorderLayout.WEST, Box.createHorizontalStrut(60));
77: add(BorderLayout.EAST, Box.createHorizontalStrut(60));
78: add(BorderLayout.NORTH, Box.createVerticalStrut(60));
79: add(BorderLayout.SOUTH, Box.createVerticalStrut(60));
80: }
81: }
|