package org.zilonis.tool.ui;
import java.awt.BorderLayout;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintStream;
import javax.swing.Box;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import org.zilonis.parser.gen.ZilonisLexer;
import org.zilonis.parser.gen.ZilonisParser;
import org.zilonis.tool.ext.aerith.ui.AerithScrollbarUI;
import org.zilonis.tool.ui.shell.Plugin;
import org.zilonis.tool.ui.shell.ShellComponent;
public class ShellPanel extends JPanel {
private ShellComponent codeTextArea;
private AnalysisToolParserEventHandler analysisToolParserEventHandler;
public ShellPanel(AnalysisToolParserEventHandler analysisToolParserEventHandler) {
this.analysisToolParserEventHandler = analysisToolParserEventHandler;
initComponents();
}
public void initComponents() {
setOpaque(false);
JScrollPane rulesCodeScrollPane = new JScrollPane();
rulesCodeScrollPane.getViewport().setOpaque(false);
rulesCodeScrollPane.getHorizontalScrollBar().setUI(
new AerithScrollbarUI());
rulesCodeScrollPane.getVerticalScrollBar().setUI(
new AerithScrollbarUI());
rulesCodeScrollPane.setBorder(javax.swing.BorderFactory
.createEmptyBorder(1, 1, 6, 1));
rulesCodeScrollPane
.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
rulesCodeScrollPane
.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
rulesCodeScrollPane.setOpaque(false);
codeTextArea = new ShellComponent(new Plugin() {
public String userVersion() {
return "Zilonis Shell UI";
}
public void console(DataInputStream stdin, PrintStream stdout,
PrintStream stderr) throws IOException {
stdout.print("$ ");
ZilonisLexer lexer = new ZilonisLexer(stdin);
ZilonisParser parser = new ZilonisParser(lexer);
analysisToolParserEventHandler.setConsole(stdout);
parser.setEventHandler(analysisToolParserEventHandler);
try {
parser.documentStatement();
} catch (Exception e) {
stderr.println(e.toString());
}
}
public boolean exception(Exception exception, PrintStream stdout,
PrintStream stderr) {
stdout.println("Exception:" + exception);
exception.printStackTrace();
return false;
}
});
codeTextArea.start();
setLayout(new BorderLayout());
add(BorderLayout.CENTER,codeTextArea);
add(BorderLayout.WEST, Box.createHorizontalStrut(60));
add(BorderLayout.EAST, Box.createHorizontalStrut(60));
add(BorderLayout.NORTH, Box.createVerticalStrut(60));
add(BorderLayout.SOUTH, Box.createVerticalStrut(60));
}
}
|