diff --git a/src/main/java/complexityparser/Model.java b/src/main/java/complexityparser/Model.java index aac73034d1a3a74889bb795f5421fe9db9c8dfdf..6af99504eb3b54272ee82187a4b7dcab49e5cbbb 100644 --- a/src/main/java/complexityparser/Model.java +++ b/src/main/java/complexityparser/Model.java @@ -56,6 +56,7 @@ public class Model extends Observable { private String output; private String error; private Tier result; + private boolean syntaxError = false; public Model() { //The default Java program is below and in default.java @@ -82,6 +83,14 @@ public class Model extends Observable { return result; } + public boolean getSyntaxError() { + return syntaxError; + } + + public void setSyntaxError(boolean syntaxError) { + this.syntaxError = syntaxError; + } + /** * * @return a java swing component representing a graphical view of the ANTLR generated tree. diff --git a/src/main/java/lib/graph/Pair.java b/src/main/java/lib/graph/Pair.java index 67faa354bf65ed5727419b7d4cf59157d7a5b6bf..fc2ff9df8edd8ad77ff319d664bc64bd43c1b26c 100644 --- a/src/main/java/lib/graph/Pair.java +++ b/src/main/java/lib/graph/Pair.java @@ -20,7 +20,7 @@ import java.util.Iterator; /** * A pair associating a node number to an iterator corresponding to existing connections - * used only during the DFS inside the Graph class + * used only during the DFS performed inside the Graph class. */ public class Pair { private int first; diff --git a/src/main/java/view/EditorView.java b/src/main/java/view/EditorView.java index 851d96b889f0212ee4f874a8de79c632bc7120a1..eaa6768033015ab38c65424957bdf2de1a26c888 100644 --- a/src/main/java/view/EditorView.java +++ b/src/main/java/view/EditorView.java @@ -53,11 +53,14 @@ public class EditorView extends JPanel { Action action = new AbstractAction() { @Override public void actionPerformed(ActionEvent actionEvent) { - try{ + try{ + m.setSyntaxError(false); String code = area.getText(); m.setCode(code); } catch (IndexOutOfBoundsException e){ - area.setText(area.getText()+" \n !!! Syntax error !!! "); + area.setText(area.getText()); + m.setSyntaxError(true); + m.update(); } } }; @@ -78,6 +81,7 @@ public class EditorView extends JPanel { if(JFileChooser.APPROVE_OPTION == fc.showOpenDialog(parent)) { File f = fc.getSelectedFile(); try { + m.setSyntaxError(false); byte[] res = Files.readAllBytes(f.toPath()); String txt = new String(res, StandardCharsets.UTF_8); area.setText(txt); @@ -86,7 +90,9 @@ public class EditorView extends JPanel { } catch (IOException e) { e.printStackTrace(); } catch (IndexOutOfBoundsException e){ - area.setText(area.getText()+" \n !!! Syntax error !!! "); + area.setText(area.getText()); + m.setSyntaxError(true); + m.update(); } } } diff --git a/src/main/java/view/MessageView.java b/src/main/java/view/MessageView.java index d2a0ee52cafb1fb73239ca465ea72faf3a0ffedc..5366e76152c3c1221b7ea1e063793ceb75ce0330 100644 --- a/src/main/java/view/MessageView.java +++ b/src/main/java/view/MessageView.java @@ -29,9 +29,9 @@ public class MessageView extends JScrollPane implements Observer { private JTextArea area; private Model m; - public void setArea(JTextArea area){ - this.area= area; - } + // public void setTextArea(String txt){ +// this.area = new TextArea(txt); + // } public MessageView(Model m) { m.addObserver(this); @@ -46,20 +46,24 @@ public class MessageView extends JScrollPane implements Observer { } @Override - public void update(Observable m) { + public void update(Observable o) { StringBuilder str = new StringBuilder(); - String out = this.m.getOutput(); - String err = this.m.getError(); - str.append("Output:\n\n"); - str.append(out); - if(!err.equals("")) { - str.append("\n-------------------------------------------------\nErrors:\n\n"); - str.append(this.m.getError()); - } - str.append("\n-------------------------------------------------\n"); - str.append("Final result: "); - str.append(this.m.getResult()); - str.append("\n"); + String out = m.getOutput(); + String err = m.getError(); + if(m.getSyntaxError()){ + str.append("\n SYNTAX ERROR : This is not a syntactically correct Java \n program.\n"); + }else{ + str.append("Output:\n\n"); + str.append(out); + if(!err.equals("")) { + str.append("\n-------------------------------------------------\nErrors:\n\n"); + str.append(m.getError()); + } + str.append("\n-------------------------------------------------\n"); + str.append("Final result: "); + str.append(m.getResult()); + str.append("\n"); + } area.setText(str.toString()); } } \ No newline at end of file diff --git a/src/main/java/view/TreePanel.java b/src/main/java/view/TreePanel.java index 5e92fe7522cdf91c9b54be26feabfebea1a0d3cb..90f91f1655628c7f36b0258cf11755d3d8e31766 100644 --- a/src/main/java/view/TreePanel.java +++ b/src/main/java/view/TreePanel.java @@ -49,7 +49,12 @@ public class TreePanel extends JScrollPane implements Observer { @Override public void update(Observable m) { Model model = (Model) m; - viewr = model.getTreeComponent(); + if(model.getSyntaxError()){ + viewr = new TreeViewer(null,null); + } + else{ + viewr = model.getTreeComponent(); + } setViewportView(viewr); } } \ No newline at end of file