Xcos: exclude the type field introduced by d74e94
[scilab.git] / scilab / modules / types / src / java / org / scilab / modules / types / ScilabMList.java
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2009-2009 - DIGITEO - Bruno JOFRET
4  * 
5  *  This file must be used under the terms of the CeCILL.
6  *  This source file is licensed as described in the file COPYING, which
7  *  you should have received as part of this distribution.  The terms
8  *  are also available at
9  *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  * 
11  */
12
13 package org.scilab.modules.types;
14
15 import java.util.ArrayList;
16 import java.util.Collection;
17
18 /**
19  * This class provides a representation on the Scilab MList datatype<br>
20  * <br>
21  * This class is {@link java.io.Serializable} and any modification could 
22  * impact load and store of data (Xcos files, Javasci saved data, etc...).<br>
23  * <br>
24  * Example:<br />
25  * <code>
26  * ScilabMList data = new ScilabMList();<br />
27  * data.add(new ScilabString("hello"));<br />
28  * data.add(new ScilabDouble(2));<br />
29  * </code>
30  * @see org.scilab.modules.javasci.Scilab
31  */
32 public class ScilabMList extends ArrayList<ScilabType> implements ScilabType {
33    
34         private static final long serialVersionUID = 3224510024213901841L;
35         private static final ScilabTypeEnum type = ScilabTypeEnum.sci_mlist;
36
37         /**
38          * Construct an empty mlist.
39          * 
40          * Note that the first element of this collection is the header used by
41          * Scilab to find each field name.
42          */
43         public ScilabMList() {
44                 super();
45         }
46         
47         /**
48          * Construct an mlist with a specified header.
49          *  
50          * @param types field names used by the accessors.
51          */
52         public ScilabMList(String []types) {
53                 super();
54                 String [][] typesData = new String[1][types.length];
55                 typesData[0] = types;
56                 add(new ScilabString(typesData));
57         }
58         
59         /**
60          * Construct a tlist containing the elements of the specified collection, in
61          * the order that they are returned by the specified collection's iterator.
62          * 
63          * @param names
64          *                      field names, used by the accessors.
65          * @param c
66          *                      the collection whose elements are to be placed into this
67          *                      mlist.
68          */
69         public ScilabMList(String[] names, Collection< ? extends ScilabType> c) {
70                 super(c.size() + 1);
71                 
72                 String[][] namesData = new String[1][names.length];
73                 namesData[0] = names;
74                 add(new ScilabString(namesData));
75                 
76                 addAll(c);
77         }
78         
79         /**
80          * @return 1 when there is data on the list, 0 otherwise.
81          * @see org.scilab.modules.types.ScilabType#getHeight()
82          */
83         @Override
84         public int getHeight() {
85                 if (isEmpty()) {
86                         return 0;
87                 }
88                 return 1;
89         }
90
91     /** 
92      * Return the type of Scilab 
93      * @return the type of Scilab
94      * @since 5.4.0
95      */
96     @Override
97         public ScilabTypeEnum getType() {
98         return type;
99     }
100
101         /**
102          * @return 1 when there is data on the list, 0 otherwise.
103          * @see org.scilab.modules.types.ScilabType#getWidth()
104          */
105         @Override
106         public int getWidth() {
107                 if (isEmpty()) {
108                         return 0;
109                 }
110                 return size();
111         }
112         
113         /**
114          * Display the representation in the Scilab language of the type<br />
115          * Note that the representation can be copied/pasted straight into Scilab 
116      *
117          * @return the pretty-printed data 
118          * @see java.util.AbstractCollection#toString()
119          */
120         @Override
121         public String toString() {
122                 
123                 StringBuffer result = new StringBuffer();
124                 if (isEmpty()) {
125                         result.append("mlist()");
126                         return result.toString();
127                 }
128
129                 result.append("mlist(");
130                 for (int i = 0; i < size(); i++) {
131                         result.append(get(i));
132                         if (i != size() - 1) {
133                                 result.append(", ");
134                         }
135                         
136                 }
137                 result.append(")");
138         
139                 return result.toString();
140         }
141 }