package fr.orsay.lri.varna.components;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import fr.orsay.lri.varna.VARNAPanel;
import fr.orsay.lri.varna.controlers.ControleurScriptParser;
import fr.orsay.lri.varna.models.VARNAConfig;
public class VARNAConsole extends JFrame implements ActionListener, FocusListener, KeyListener {
private VARNAPanel _vp;
private JButton _quitButton;
private JPanel _contentPanel;
private JPanel _quitPanel;
private JTextField _input;
private JEditorPane _output;
private JScrollPane _scrolls;
public VARNAConsole(VARNAPanel vp)
{
_vp = vp;
init();
}
private void init()
{
_quitButton = new JButton("Exit");
_quitPanel = new JPanel();
_contentPanel = new JPanel();
_input = new JTextField("Your command here...");
_output = new JEditorPane();
_scrolls = new JScrollPane(_output);
_input.addFocusListener(this);
_input.addKeyListener(this);
_output.setText(VARNAConfig.getFullName()+" console\n");
_output.setPreferredSize(new Dimension(500,300));
_output.setEditable(false);
_quitPanel.add(_quitButton);
_quitButton.addActionListener(this);
_contentPanel.setLayout(new BorderLayout());
_contentPanel.add(_scrolls,BorderLayout.CENTER);
_contentPanel.add(_input,BorderLayout.SOUTH);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(_contentPanel,BorderLayout.CENTER);
getContentPane().add(_quitPanel,BorderLayout.SOUTH);
pack();
}
public void actionPerformed(ActionEvent arg0) {
setVisible(false);
}
private boolean _firstFocus = true;
public void focusGained(FocusEvent arg0) {
if (_firstFocus)
{
_input.setSelectionStart(0);
_input.setSelectionEnd(_input.getText().length());
_firstFocus = false;
}
}
public void focusLost(FocusEvent arg0) {
// TODO Auto-generated method stub
}
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
}
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
char c = arg0.getKeyChar();
if (c=='\n')
{
try {
ControleurScriptParser.executeScript(_vp,_input.getText());
} catch (Exception e) {
_output.setText(_output.getText()+e.getMessage()+'\n');
e.printStackTrace();
}
}
}
}