ui_data: make editvar() copy-paste of strings work 19/21219/3
Clement David [Tue, 14 Jan 2020 14:16:31 +0000 (15:16 +0100)]
Change-Id: I7de3ba5bcbab0c902397157bb981802cae814ae3

scilab/CHANGES.md
scilab/modules/ui_data/src/java/org/scilab/modules/ui_data/datatable/SwingEditvarTableModel.java

index 2974fa6..f599085 100644 (file)
@@ -117,6 +117,8 @@ Feature changes and additions
   - When there is an infinite number of solutions, the err flag has a specific value.
   - The output size gets the input's one.
 * `csvRead` and `csvTextScan` are now implemented without extra copies.
+* `editvar()` GUI support copy-paste of strings removing quotes.
+
 
 Help pages:
 -----------
index 31c048c..3d8f253 100644 (file)
@@ -391,7 +391,8 @@ public class SwingEditvarTableModel extends DefaultTableModel {
                 }
             }
         }
-
+        
+        value = escapeQuotes(value);
         ((Vector) dataVector.elementAt(row)).setElementAt(value, col);
 
         if (col >= scilabMatrixColCount || row >= scilabMatrixRowCount) {
@@ -407,6 +408,29 @@ public class SwingEditvarTableModel extends DefaultTableModel {
     }
 
     /**
+     * Escape quotes when applicable
+     * @param value user-provided string to set
+     * @return value without its first and last quotes
+     */
+    private Object escapeQuotes(Object value) {
+        if (EditVar.STRING.equals(type))
+        {
+            String strValue = value.toString();
+            if (strValue.length() > 1)
+            {
+                char first = strValue.charAt(0);
+                char last = strValue.charAt(strValue.length() - 1);
+                
+                if (first == last && (first == '\"' || first == '\''))
+                {
+                    value = strValue.substring(1, strValue.length() - 1);
+                }
+            }
+        }
+        return value;
+    }
+
+    /**
      * Set values at the given row and column
      * @param data the datas
      * @param row the row index