00001 package plp;
00002
00003 import java.awt.Dimension;
00004 import java.awt.Font;
00005 import java.awt.Toolkit;
00006 import java.awt.event.KeyEvent;
00007 import java.awt.event.KeyListener;
00008
00009 import javax.swing.JButton;
00010 import javax.swing.JComboBox;
00011 import javax.swing.JFrame;
00012 import javax.swing.JLabel;
00013 import javax.swing.JPanel;
00014 import javax.swing.JScrollPane;
00015 import javax.swing.JTextArea;
00016 import javax.swing.JTextField;
00017
00018 public class InterpretadorPLP extends JFrame {
00019
00020 private static final long serialVersionUID = -7647474898074642286L;
00021 private static final Font COURIER_NEW = new Font("Courier New", Font.PLAIN,
00022 12);
00023
00024 private JPanel jContentPane = null;
00025 JTextArea jTextAreaCodigo = null;
00026 private JScrollPane jScrollPaneMensagens = null;
00027 JTextArea jTextAreaMensagens = null;
00028 private JLabel jLabelCodigo = null;
00029 private JLabel jLabelMasg = null;
00030 private JScrollPane jScrollPaneCodigo = null;
00031 JComboBox jComboBoxLinguagens = null;
00032 private JLabel jLabelExecutar = null;
00033
00034 MultiInterpretador interpreter;
00035
00036 private JButton jButtonExecutar = null;
00037 JTextField jTextFieldListaEntrada = null;
00038 private JLabel jLabelListaEntrada = null;
00039 private InterpreterKeyListener listener;
00040
00044 public InterpretadorPLP() {
00045 super();
00046 initialize();
00047 }
00048
00054 private void initialize() {
00055 this.setContentPane(getJContentPane());
00056 this.setTitle("Interpretador PLP V 0.3");
00057 this.setResizable(false);
00058 this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
00059 this.listener = new InterpreterKeyListener(this);
00060 this.addKeyListener(this.listener);
00061 this.jTextAreaCodigo.addKeyListener(this.listener);
00062 this.jTextAreaMensagens.addKeyListener(this.listener);
00063 this.jTextFieldListaEntrada.addKeyListener(this.listener);
00064 this.jTextFieldListaEntrada.setEnabled(false);
00065
00066 interpreter = new MultiInterpretador(this.jTextAreaMensagens);
00067 Dimension d;
00068 int w, h;
00069
00070 w = 390;
00071 h = 480;
00072
00073 d = Toolkit.getDefaultToolkit().getScreenSize();
00074 d.height /= 2;
00075 d.width /= 2;
00076 d.height -= h / 2 + 15;
00077 d.width -= w / 2;
00078
00079 this.setBounds(d.width, d.height, w, h);
00080
00081 }
00082
00088 private JPanel getJContentPane() {
00089 if (jContentPane == null) {
00090 jLabelListaEntrada = new JLabel();
00091 jLabelListaEntrada.setBounds(new java.awt.Rectangle(20, 194, 127,
00092 20));
00093 jLabelListaEntrada
00094 .setToolTipText("informe os valores da lista de entrada separados por espaços");
00095 jLabelListaEntrada.setText("Lista de Entrada");
00096 jLabelExecutar = new JLabel();
00097 jLabelExecutar.setBounds(new java.awt.Rectangle(19, 434, 157, 17));
00098 jLabelExecutar.setText("Pressione F1 para executar");
00099 jLabelMasg = new JLabel();
00100 jLabelMasg.setBounds(new java.awt.Rectangle(20, 245, 80, 16));
00101 jLabelMasg.setText("Mensagens");
00102 jLabelCodigo = new JLabel();
00103 jLabelCodigo.setBounds(new java.awt.Rectangle(20, 33, 70, 16));
00104 jLabelCodigo.setText("Código");
00105 jContentPane = new JPanel();
00106 jContentPane.setLayout(null);
00107 jContentPane.add(getJScrollPaneMensagens(), null);
00108 jContentPane.add(jLabelCodigo, null);
00109 jContentPane.add(jLabelMasg, null);
00110 jContentPane.add(getJScrollPaneCodigo(), null);
00111 jContentPane.add(getJTextFieldListaEntrada(), null);
00112 jContentPane.add(getJComboBoxLinguagens(), null);
00113 jContentPane.add(jLabelExecutar, null);
00114 jContentPane.add(getJButton(), null);
00115 jContentPane.add(jLabelListaEntrada, null);
00116 }
00117 return jContentPane;
00118 }
00119
00125 private JTextArea getJTextAreaCodigo() {
00126 if (jTextAreaCodigo == null) {
00127 jTextAreaCodigo = new JTextArea();
00128 jTextAreaCodigo.setFont(COURIER_NEW);
00129 jTextAreaCodigo.setTabSize(2);
00130 UndoUtil.registerUndoManager(jTextAreaCodigo);
00131 }
00132 return jTextAreaCodigo;
00133 }
00134
00140 private JScrollPane getJScrollPaneMensagens() {
00141 if (jScrollPaneMensagens == null) {
00142 jScrollPaneMensagens = new JScrollPane();
00143 jScrollPaneMensagens.setBounds(new java.awt.Rectangle(20, 267, 350,
00144 160));
00145 jScrollPaneMensagens.setViewportView(getJTextAreaMensagens());
00146 }
00147 return jScrollPaneMensagens;
00148 }
00149
00155 private JTextArea getJTextAreaMensagens() {
00156 if (jTextAreaMensagens == null) {
00157 jTextAreaMensagens = new JTextArea();
00158 }
00159 return jTextAreaMensagens;
00160 }
00161
00167 private JScrollPane getJScrollPaneCodigo() {
00168 if (jScrollPaneCodigo == null) {
00169 jScrollPaneCodigo = new JScrollPane();
00170 jScrollPaneCodigo
00171 .setBounds(new java.awt.Rectangle(20, 52, 350, 134));
00172 jScrollPaneCodigo.setViewportView(getJTextAreaCodigo());
00173 }
00174 return jScrollPaneCodigo;
00175 }
00176
00182 private JComboBox getJComboBoxLinguagens() {
00183 if (jComboBoxLinguagens == null) {
00184 jComboBoxLinguagens = new JComboBox();
00185 jComboBoxLinguagens
00186 .setBounds(new java.awt.Rectangle(19, 7, 250, 20));
00187 jComboBoxLinguagens
00188 .addActionListener(new java.awt.event.ActionListener() {
00189 public void actionPerformed(java.awt.event.ActionEvent e) {
00190 switch (jComboBoxLinguagens.getSelectedIndex()) {
00191 case 0:
00192 case 1:
00193 case 2:
00194 case 3:
00195 jTextFieldListaEntrada.setEnabled(false);
00196 break;
00197 default:
00198 jTextFieldListaEntrada.setEnabled(true);
00199 break;
00200 }
00201 }
00202 });
00203 jComboBoxLinguagens.addItem("Expressoes 1");
00204 jComboBoxLinguagens.addItem("Expressoes 2");
00205 jComboBoxLinguagens.addItem("Funcional 1");
00206 jComboBoxLinguagens.addItem("Funcional 2");
00207 jComboBoxLinguagens.addItem("Funcional 3");
00208 jComboBoxLinguagens.addItem("Imperativa 1");
00209 jComboBoxLinguagens.addItem("Imperativa 2");
00210 jComboBoxLinguagens.addItem("Orientada a Objetos 1");
00211
00212 }
00213 return jComboBoxLinguagens;
00214 }
00215
00221 private JButton getJButton() {
00222 if (jButtonExecutar == null) {
00223 jButtonExecutar = new JButton();
00224 jButtonExecutar.setBounds(new java.awt.Rectangle(283, 8, 86, 19));
00225 jButtonExecutar.setText("executar");
00226 jButtonExecutar
00227 .addActionListener(new java.awt.event.ActionListener() {
00228 public void actionPerformed(java.awt.event.ActionEvent e) {
00229 String sourceCode = jTextAreaCodigo.getText();
00230 String listaEntrada = jTextFieldListaEntrada
00231 .getText();
00232 interpreter.interpretarCodigo(sourceCode,
00233 listaEntrada, jComboBoxLinguagens
00234 .getSelectedIndex());
00235 }
00236 });
00237 }
00238 return jButtonExecutar;
00239 }
00240
00246 private JTextField getJTextFieldListaEntrada() {
00247 if (jTextFieldListaEntrada == null) {
00248 jTextFieldListaEntrada = new JTextField();
00249 jTextFieldListaEntrada.setBounds(new java.awt.Rectangle(20, 218,
00250 350, 20));
00251 jTextFieldListaEntrada
00252 .setToolTipText("informe os valores da lista de entrada separados por espaços");
00253 }
00254 return jTextFieldListaEntrada;
00255 }
00256
00257 public static void main(String[] args) {
00258 (new InterpretadorPLP()).setVisible(true);
00259 }
00260
00261 }
00262
00263 class InterpreterKeyListener implements KeyListener {
00264
00265 InterpretadorPLP frame;
00266
00267 public InterpreterKeyListener(InterpretadorPLP frm) {
00268 super();
00269 this.frame = frm;
00270 }
00271
00272 public void keyPressed(java.awt.event.KeyEvent e) {
00273 if (e.getKeyCode() == KeyEvent.VK_F1) {
00274 String sourceCode = this.frame.jTextAreaCodigo.getText();
00275 String listaEntrada = this.frame.jTextFieldListaEntrada.getText();
00276 this.frame.interpreter.interpretarCodigo(sourceCode, listaEntrada,
00277 this.frame.jComboBoxLinguagens.getSelectedIndex());
00278 }
00279 }
00280
00281 public void keyReleased(KeyEvent arg0) {
00282 }
00283
00284 public void keyTyped(KeyEvent arg0) {
00285 }
00286 }