Xcos: exclude the type field introduced by d74e94
[scilab.git] / scilab / modules / types / src / java / org / scilab / modules / types / ScilabTList.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 TList 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  * ScilabTList data = new ScilabTList();<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 ScilabTList extends ArrayList<ScilabType> implements ScilabType {
33
34         private static final long serialVersionUID = 8080160982092586620L;
35         private static final ScilabTypeEnum type = ScilabTypeEnum.sci_tlist;
36
37         /**
38          * Construct an empty tlist.
39          * 
40          * Note that the first element of this collection is the header used by
41          * Scilab to find each field type.
42          */
43         public ScilabTList() {
44                 super();
45         }
46         
47         /**
48          * Construct a tlist with a specified header.
49          *  
50          * @param types type names of the fields.
51          */
52         public ScilabTList(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 types
64          *                      type names of the fields.
65          * @param c
66          *                      the collection whose elements are to be placed into this
67          *                      tlist.
68          */
69         public ScilabTList(String[] types, Collection< ? extends ScilabType> c) {
70                 super(c.size() + 1);
71                 
72                 String[][] typesData = new String[1][types.length];
73                 typesData[0] = types;
74                 add(new ScilabString(typesData));
75                 
76                 addAll(c);
77         }
78         
79     /** 
80      * Return the type of Scilab 
81      * @return the type of Scilab
82      * @since 5.4.0
83      */
84     @Override
85         public ScilabTypeEnum getType() {
86         return type;
87     }
88
89         /**
90          * @return 1 when there is data on the list, 0 otherwise.
91          * @see org.scilab.modules.types.ScilabType#getHeight()
92          */
93         @Override
94         public int getHeight() {
95                 if (isEmpty()) {
96                         return 0;
97                 }
98                 return 1;
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("tlist()");
126                         return result.toString();
127                 }
128
129                 result.append("tlist(");
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 }