Xcos: fix old diagram simulation after fc0c389d 92/18992/2
Clément DAVID [Fri, 27 Jan 2017 13:28:00 +0000 (14:28 +0100)]
Change-Id: I75b3f7625f46384913001b2f40c85ae68f2f5ff8

scilab/modules/xcos/src/java/org/scilab/modules/xcos/graph/ScicosParameters.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/io/scicos/DiagramElement.java

index d769931..f2c057d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2010 - DIGITEO - Clement DAVID
- * Copyright (C) 2011 - Scilab Enterprises - Clement DAVID
+ * Copyright (C) 2011-2017 - Scilab Enterprises - Clement DAVID
  *
  * Copyright (C) 2012 - 2016 - Scilab Enterprises
  *
@@ -117,10 +117,10 @@ public class ScicosParameters implements Serializable, Cloneable {
      * Default constructor
      *
      * Initialize parameters with their default values.
-     * @param root the diagram
+     * @param diagramOwner the diagram
      */
-    public ScicosParameters(final ScicosObjectOwner root) {
-        this.root = root;
+    public ScicosParameters(final ScicosObjectOwner diagramOwner) {
+        this.root = diagramOwner;
 
         /*
          * This call will update static values from the configuration.
@@ -128,10 +128,15 @@ public class ScicosParameters implements Serializable, Cloneable {
         XcosOptions.getSimulation();
 
         // install the modification handler
-        vcs.addVetoableChangeListener((PropertyChangeEvent evt) -> {
-            Xcos.getInstance().setModified(root, true);
-            Xcos.getInstance().openedDiagrams(root).stream().forEach(d -> d.updateTabTitle());
-        });
+        if (diagramOwner.getKind() == Kind.DIAGRAM) {
+            vcs.addVetoableChangeListener((PropertyChangeEvent evt) -> {
+                Xcos xcos = Xcos.getInstance();
+                if (!xcos.openedDiagrams(diagramOwner).isEmpty()) {
+                    xcos.setModified(diagramOwner, true);
+                    xcos.openedDiagrams(diagramOwner).stream().forEach(d -> d.updateTabTitle());
+                }
+            });
+        }
     }
 
     public long getUID() {
index cc02f93..4da6ea9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2010 - DIGITEO - Clement DAVID
- * Copyright (C) 2011-2015 - Scilab Enterprises - Clement DAVID
+ * Copyright (C) 2011-2017 - Scilab Enterprises - Clement DAVID
  *
  * Copyright (C) 2012 - 2016 - Scilab Enterprises
  *
@@ -31,10 +31,10 @@ import org.scilab.modules.types.ScilabString;
 import org.scilab.modules.types.ScilabTList;
 import org.scilab.modules.types.ScilabType;
 import org.scilab.modules.xcos.JavaController;
-import org.scilab.modules.xcos.Xcos;
 import org.scilab.modules.xcos.block.BasicBlock;
 import org.scilab.modules.xcos.block.SuperBlock;
 import org.scilab.modules.xcos.block.io.ContextUpdate.IOBlocks;
+import org.scilab.modules.xcos.graph.model.ScicosObjectOwner;
 import org.scilab.modules.xcos.graph.ScicosParameters;
 import org.scilab.modules.xcos.graph.XcosDiagram;
 import org.scilab.modules.xcos.io.scicos.ScicosFormatException.VersionMismatchException;
@@ -192,7 +192,7 @@ public final class DiagramElement extends AbstractElement<XcosDiagram> {
 
         // Fill the diagram attributes
         ScicosParametersElement params = new ScicosParametersElement(controller);
-        params.decode(base.get(1), new ScicosParameters(Xcos.findRoot(diag)));
+        params.decode(base.get(1), new ScicosParameters(new ScicosObjectOwner(controller, diag.getUID(), diag.getKind())));
 
         // Decode the objs attributes
         decodeObjs(diag);