ShellPanel.java :  » Rule-Engine » zilonis » org » zilonis » tool » ui » Java Open Source

Java Open Source » Rule Engine » zilonis 
zilonis » org » zilonis » tool » ui » ShellPanel.java
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));
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.