package de.fuberlin.projectF.CodeGenerator; import java.awt.Dimension; import java.awt.GridLayout; import java.util.ArrayList; import java.util.Vector; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.table.DefaultTableModel; import de.fuberlin.projectF.CodeGenerator.model.Token; public class GUI { Vector<String> tableColl; Vector<Vector<String>> tableRow; JTextArea codeArea; public GUI() { JFrame window = new JFrame("CodeGenerator Debugger"); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setLayout(new GridLayout(0, 2)); window.getContentPane().add(createTokenStreamTable()); window.getContentPane().add(createCodeTextField()); window.pack(); window.setVisible(true); } private JPanel createCodeTextField() { JPanel codePanel = new JPanel(); codeArea = new JTextArea(21, 40); JScrollPane scrollPane = new JScrollPane(codeArea); codePanel.add(scrollPane); return codePanel; } private JPanel createTokenStreamTable() { JPanel tablePanel = new JPanel(); tableColl = new Vector<String>(); tableRow = new Vector<Vector<String>>(); tableColl.add("#"); tableColl.add("type"); tableColl.add("target"); tableColl.add("typeTarget"); tableColl.add("op1"); tableColl.add("typeOp1"); tableColl.add("op2"); tableColl.add("typeOp2"); tableColl.add("parameter"); DefaultTableModel tableModle = new DefaultTableModel(tableRow, tableColl); JTable table = new JTable(tableModle); table.setPreferredScrollableViewportSize(new Dimension(500, 300)); table.setFillsViewportHeight(true); JScrollPane scrollPane = new JScrollPane(table); tablePanel.add(scrollPane); return tablePanel; } public void updateTokenStreamTable(ArrayList<Token> code) { for (Token t : code) { Vector<String> data = new Vector<String>(); data.addElement(new String("" + tableRow.size())); data.addElement(t.getType().toString()); data.addElement(t.getTarget()); data.addElement(t.getTypeTarget()); data.addElement(t.getOp1()); data.addElement(t.getTypeOp1()); data.addElement(t.getOp2()); data.addElement(t.getTypeOp2()); data.addElement(new String("" + t.getParameterCount())); tableRow.addElement(data); } } public void updateCodeArea(String code) { codeArea.setText(code); } public void appendCodeArea(String text) { codeArea.append(text); } }