瀏覽代碼

Subdiagram markers fixed (#1716)

Andreas Mülder 7 年之前
父節點
當前提交
4f89cc28c2

+ 5 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/providers/StatechartValidationDecorationProvider.java

@@ -40,6 +40,7 @@ import org.eclipse.xtext.validation.Issue.IssueImpl;
 import org.yakindu.base.gmf.runtime.decorators.AbstractDecoratorProvider;
 import org.yakindu.sct.model.sgraph.FinalState;
 import org.yakindu.sct.model.sgraph.Pseudostate;
+import org.yakindu.sct.model.sgraph.Transition;
 import org.yakindu.sct.model.sgraph.ui.validation.SCTIssue;
 import org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor;
 import org.yakindu.sct.ui.editor.editparts.BorderItemEditPart;
@@ -197,6 +198,10 @@ public class StatechartValidationDecorationProvider extends AbstractDecoratorPro
 					TreeIterator<EObject> eAllContents = element.eAllContents();
 					while (eAllContents.hasNext()) {
 						EObject next = eAllContents.next();
+						if(next instanceof Transition) {
+							eAllContents.prune();
+							continue;
+						}
 						String semanticURI = EcoreUtil.getURI(next).fragment();
 						List<SCTIssue> issues = store.getIssues(semanticURI);
 						for (final SCTIssue issue : issues) {

+ 10 - 4
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/validation/DefaultValidationIssueStore.java

@@ -166,6 +166,7 @@ public class DefaultValidationIssueStore implements IValidationIssueStore, IReso
 
 	@Override
 	public synchronized void processIssues(List<Issue> issues, IProgressMonitor monitor) {
+		
 		final Multimap<String, SCTIssue> newVisibleIssues = ArrayListMultimap.create();
 		for (Issue issue : issues) {
 			if (issue instanceof SCTIssue) {
@@ -195,11 +196,16 @@ public class DefaultValidationIssueStore implements IValidationIssueStore, IReso
 		}
 
 		SetView<String> changes = Sets.symmetricDifference(oldVisibleIssues.keySet(), newVisibleIssues.keySet());
-		for (String semanticElementID : newVisibleIssues.keySet()) {
-			if (changes.contains(semanticElementID)
-					|| changedSeverity(semanticElementID, oldVisibleIssues, newVisibleIssues))
-				notifyListeners(semanticElementID);
+		for (String string : changes) {
+			notifyListeners(string);
 		}
+		SetView<String> intersection = Sets.intersection(oldVisibleIssues.keySet(), newVisibleIssues.keySet());
+		for (String string : intersection) {
+			if(changedSeverity(string, oldVisibleIssues, newVisibleIssues)){
+				notifyListeners(string);	
+			}
+		}
+		
 	}
 
 	protected boolean changedSeverity(String semanticElementID, Multimap<String, SCTIssue> oldVisibleIssues,