diff --git a/src/main/java/complexityparser/Model.java b/src/main/java/complexityparser/Model.java index fdf46f8817bd62d08ee94d30bf49c0c5dda12c65..305e323e74cb580f84da24865902d7e32d3c42c4 100644 --- a/src/main/java/complexityparser/Model.java +++ b/src/main/java/complexityparser/Model.java @@ -22,12 +22,7 @@ public class Model extends Observable { public Model() { code = "class MainClass {public static void main(String[] arg) {System.out.println(\"Hello World\");int i = 0;}}"; - CharStream input = CharStreams.fromString(code); - - lexer = new Java8Lexer(input); - token = new CommonTokenStream(lexer); - parser = new Java8Parser(token); - context = parser.compilationUnit(); + setCode(code); } public TreeViewer getTreeComponent() { @@ -38,4 +33,17 @@ public class Model extends Observable { return viewer; } + + public void setCode(String code) { + this.code = code; + + CharStream input = CharStreams.fromString(code); + + lexer = new Java8Lexer(input); + token = new CommonTokenStream(lexer); + parser = new Java8Parser(token); + context = parser.compilationUnit(); + + update(); + } } diff --git a/src/main/java/view/EditorView.java b/src/main/java/view/EditorView.java new file mode 100644 index 0000000000000000000000000000000000000000..9e32adf0676065eb6c94400a5f3ed5db51f5385a --- /dev/null +++ b/src/main/java/view/EditorView.java @@ -0,0 +1,42 @@ +package view; + +import complexityparser.Model; + +import javax.swing.*; +import java.awt.*; + +public class EditorView extends JPanel { + + private JScrollPane panel; + private JTextArea area; + private JButton updateButton; + + private Model m; + + public EditorView(Model m) { + this.m = m; + area = new JTextArea(); + + area.setCaretColor(Color.WHITE); + area.getCaret().setBlinkRate(0); + area.setTabSize(3); + area.setFont(new Font("monospaced", Font.PLAIN, 12)); + + panel = new JScrollPane(area); + + updateButton = new JButton("update"); + updateButton.addActionListener((e) -> { + String code = area.getText(); + m.setCode(code); + }); + + BorderLayout layout = new BorderLayout(); + setLayout(layout); + + add(panel, BorderLayout.CENTER); + add(updateButton, BorderLayout.SOUTH); + + + setPreferredSize(new Dimension(600, 600)); + } +} diff --git a/src/main/java/view/MainFrame.java b/src/main/java/view/MainFrame.java index 1f9ce3305ef43eb347406fd88b9c51051c123370..c9f6e01bb1bbd37be1f430cafc239ce731fa3dfe 100644 --- a/src/main/java/view/MainFrame.java +++ b/src/main/java/view/MainFrame.java @@ -3,6 +3,7 @@ package view; import complexityparser.Model; import javax.swing.*; +import java.awt.*; public class MainFrame extends JFrame { public MainFrame(Model m) { @@ -11,7 +12,12 @@ public class MainFrame extends JFrame { setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setTitle("ComplexityParser"); - add(new TreePanel(m)); + + BorderLayout layout = new BorderLayout(); + setLayout(layout); + + add(new EditorView(m), BorderLayout.WEST); + add(new TreePanel(m), BorderLayout.CENTER); pack(); //setSize(600,600);