Xcos: save and load the DEBUG_LEVEL 65/17465/2
Clément DAVID [Tue, 17 Nov 2015 10:45:28 +0000 (11:45 +0100)]
This property is now part of a diagram thus it should be saved as any other
property.

Change-Id: I88f830c3cc021526e0b67933a974061acb05c464

scilab/modules/xcos/src/java/org/scilab/modules/xcos/actions/dialog/DebugLevelDialog.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/graph/ScicosParameters.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/io/sax/CustomHandler.java
scilab/modules/xcos/src/java/org/scilab/modules/xcos/io/writer/CustomWriter.java

index 51ce9ba..3d6258c 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2010 - DIGITEO - Clement DAVID
+ * Copyright (C) 2015 - Scilab Enterprises - Clement DAVID
  *
  * This file must be used under the terms of the CeCILL.
  * This source file is licensed as described in the file COPYING, which
@@ -38,6 +39,7 @@ import org.scilab.modules.action_binding.highlevel.ScilabInterpreterManagement;
 import org.scilab.modules.action_binding.highlevel.ScilabInterpreterManagement.InterpreterException;
 import org.scilab.modules.commons.gui.FindIconHelper;
 import org.scilab.modules.gui.utils.ScilabSwingUtilities;
+import org.scilab.modules.xcos.JavaController;
 import org.scilab.modules.xcos.actions.DebugLevelAction;
 import org.scilab.modules.xcos.actions.DebugLevelAction.DebugLevel;
 import org.scilab.modules.xcos.graph.ScicosParameters;
@@ -88,7 +90,7 @@ public class DebugLevelDialog extends JDialog {
     private void initComponents() {
         JLabel textLabel = new JLabel(XcosMessages.DEBUG_LEVEL_LABEL);
         debugList = new JList(DebugLevel.values());
-        debugList.setSelectedIndex(parameters.getDebugLevel());
+        debugList.setSelectedIndex(parameters.getDebugLevel(new JavaController()));
         debugList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 
         JButton cancelButton = new JButton(XcosMessages.CANCEL);
@@ -137,7 +139,7 @@ public class DebugLevelDialog extends JDialog {
             public void actionPerformed(ActionEvent e) {
                 int value = ((DebugLevel) debugList.getSelectedValue()).getValue();
                 try {
-                    parameters.setDebugLevel(value);
+                    parameters.setDebugLevel(new JavaController(), value);
                     ScilabInterpreterManagement.synchronousScilabExec("scicos_debug", value);
                     dispose();
                 } catch (InterpreterException e1) {
index ef82b60..b48c6f5 100644 (file)
@@ -97,11 +97,6 @@ public class ScicosParameters implements Serializable, Cloneable {
     public static VectorOfDouble DEFAULT_PARAMETERS;
     public static int DEFAULT_DEBUG_LEVEL;
 
-    /*
-     * Instance data
-     */
-    private int debugLevel;
-
     /**
      * Reference to the diagram
      */
@@ -204,8 +199,10 @@ public class ScicosParameters implements Serializable, Cloneable {
     /**
      * @return current debug level
      */
-    public int getDebugLevel() {
-        return debugLevel;
+    public int getDebugLevel(final JavaController controller) {
+        int[] v = new int[1];
+        controller.getObjectProperty(getUID(), getKind(), ObjectProperties.DEBUG_LEVEL, v);
+        return v[0];
     }
 
     /**
@@ -214,10 +211,10 @@ public class ScicosParameters implements Serializable, Cloneable {
      * @throws PropertyVetoException
      *             when the value is not acceptable.
      */
-    public void setDebugLevel(int debugLevel) throws PropertyVetoException {
-        int oldValue = this.debugLevel;
+    public void setDebugLevel(final JavaController controller, int debugLevel) throws PropertyVetoException {
+        int oldValue = getDebugLevel(controller);
         vcs.fireVetoableChange(DEBUG_LEVEL_CHANGE, oldValue, debugLevel);
-        this.debugLevel = debugLevel;
+        controller.setObjectProperty(getUID(), getKind(), ObjectProperties.DIAGRAM_CONTEXT, debugLevel);
     }
 
     /*
index 9b5bae4..b9fbdd6 100644 (file)
@@ -89,6 +89,10 @@ class CustomHandler implements ScilabHandler {
                 if (v != null) {
                     saxHandler.controller.setObjectProperty(uid, Kind.DIAGRAM, ObjectProperties.PATH, v);
                 }
+                v = atts.getValue("debugLevel");
+                if (v != null) {
+                    saxHandler.controller.setObjectProperty(uid, Kind.DIAGRAM, ObjectProperties.DEBUG_LEVEL, Integer.valueOf(v));
+                }
 
                 /*
                  * Decode simulation properties
index 54923d4..11d55ee 100644 (file)
@@ -34,6 +34,7 @@ public class CustomWriter extends ScilabWriter {
     @Override
     public void write(long uid, Kind kind) throws XMLStreamException {
         String[] str = new String[1];
+        int[] integer = new int[1];
         VectorOfDouble vDouble = new VectorOfDouble();
         VectorOfScicosID children = new VectorOfScicosID();
 
@@ -48,6 +49,8 @@ public class CustomWriter extends ScilabWriter {
 
                 shared.controller.getObjectProperty(uid, kind, ObjectProperties.PATH, str);
                 shared.stream.writeAttribute("savedFile", str[0]);
+                shared.controller.getObjectProperty(uid, kind, ObjectProperties.DEBUG_LEVEL, integer);
+                shared.stream.writeAttribute("debugLevel", Integer.toString(integer[0]));
 
                 // write simulation properties
                 shared.controller.getObjectProperty(uid, kind, ObjectProperties.PROPERTIES, vDouble);