diff --git a/src/main/java/ui/AvatarDesignPanelTranslator.java b/src/main/java/ui/AvatarDesignPanelTranslator.java index 28ef179f2a17ee66078dab7a1fde429f9c0b83d3..e768a7bbbc7ae64d517969c0cc38c22f6b523478 100644 --- a/src/main/java/ui/AvatarDesignPanelTranslator.java +++ b/src/main/java/ui/AvatarDesignPanelTranslator.java @@ -210,11 +210,13 @@ public class AvatarDesignPanelTranslator { if (tgc instanceof AvatarBDSafetyPragma) { tgsp = (AvatarBDSafetyPragma)tgc; values = tgsp.getValues(); + tgsp.syntaxErrors.clear(); for (String s: values){ if (checkSafetyPragma(s, _blocks, _as)){ _as.addSafetyPragma(s); } else { + tgsp.syntaxErrors.add(s); UICheckingError ce = new UICheckingError(CheckingError.STRUCTURE_ERROR, "Badly Formatted Pragma " + s); ce.setTDiagramPanel(adp.getAvatarBDPanel()); ce.setTGComponent(tgc); @@ -427,8 +429,13 @@ public class AvatarDesignPanelTranslator { if (state.contains("=") || state.contains("<") || state.contains(">")){ String state1 = state.split("==|>(=)?|!=|<(=)?")[0]; String state2 = state.split("==|>(=)?|!=|<(=)?")[1]; + if (!state1.contains(".")){ + TraceManager.addDev("UPPAAL Pragma " + _pragma + " cannot be parsed"); + return false; + } String block1 = state1.split("\\.",2)[0]; String attr1 = state1.split("\\.",2)[1]; + attr1 = attr1.replace(".","__"); AvatarType p1Type= AvatarType.UNDEFINED; AvatarBlock bl1 = as.getBlockWithName(block1); diff --git a/src/main/java/ui/avatarbd/AvatarBDSafetyPragma.java b/src/main/java/ui/avatarbd/AvatarBDSafetyPragma.java index 71dd744e8fc1a3ca12cb34ca2b4c40ae6f230d85..2656c898a33ba5c164e0cb4e463f6fbaf3df725a 100644 --- a/src/main/java/ui/avatarbd/AvatarBDSafetyPragma.java +++ b/src/main/java/ui/avatarbd/AvatarBDSafetyPragma.java @@ -53,6 +53,7 @@ import ui.window.JDialogSafetyPragma; import javax.swing.*; import java.awt.*; import java.util.Arrays; +import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.Map; @@ -76,7 +77,7 @@ public class AvatarBDSafetyPragma extends TGCScalableWithoutInternalComponent { protected int lockX = 1; protected int lockY = 5; protected Graphics myg; - + public ArrayList<String> syntaxErrors; protected Color myColor; private Font myFont;//, myFontB; @@ -119,7 +120,7 @@ public class AvatarBDSafetyPragma extends TGCScalableWithoutInternalComponent { moveable = true; editable = true; removable = true; - + syntaxErrors = new ArrayList<String>(); name = "UPPAAL Pragma"; value = ""; @@ -203,6 +204,13 @@ public class AvatarBDSafetyPragma extends TGCScalableWithoutInternalComponent { g.setFont(fold); for (String s: properties){ g.drawString(s, x + textX, y + textY + (i+1)* currentFontSize); + if (syntaxErrors.contains(s)){ + Color ctmp= g.getColor(); + g.setColor(Color.red); + g.drawLine(x+textX/2,y+textY*3/2 + i*currentFontSize, x+width-textX/2, y+textY*3/2 +(i+1)*currentFontSize); + g.drawLine(x+width-textX/2,y+textY*3/2 + i*currentFontSize, x+textX/2, y+textY*3/2 +(i+1)*currentFontSize); + g.setColor(ctmp); + } drawVerification(s, g, x+textX, y+textY + (i+1)* currentFontSize); i++; }