Preferences: continue to connect SciNotes
[scilab.git] / scilab / modules / preferences / src / java / org / scilab / modules / preferences / Component / Select.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2011 - Pierre GRADIT
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.preferences.Component;
14
15 import java.awt.Dimension;
16
17 import org.scilab.modules.preferences.XComponent;
18 import org.scilab.modules.preferences.XChooser;
19 import org.scilab.modules.preferences.XConfigManager;
20 import javax.swing.JComboBox;
21 import org.w3c.dom.Node;
22 import org.w3c.dom.NodeList;
23
24 //TODO ScilabSwing class for this?
25
26 /** Implementation of Select compliant with extended management.
27 *
28 * @author Pierre GRADIT
29 *
30 */
31 public class Select extends JComboBox implements XComponent, XChooser {
32
33     /** Universal identifier for serialization.
34      *
35      */
36     private static final long serialVersionUID = -6127289363733321914L;
37
38     /** Define the set of actuators.
39     *
40     * @return array of actuator names.
41     */
42     public final String [] actuators() {
43         String [] actuators = {"enable"};
44         return actuators;
45     }
46
47     /** Constructor.
48     *
49     * @param peer : associated view DOM node.
50     */
51     public Select(final Node peer) {
52         super();
53         //setMinimumSize(new Dimension(200,30));
54         //setPreferredSize(new Dimension(200,30));
55         NodeList nodelist = peer.getChildNodes();
56         int select = 0;
57         int index = 0;
58         for (int i = 0; i < nodelist.getLength(); i++) {
59             Node node = nodelist.item(i);
60             if (node.getNodeName().equals("option")) {
61                 String value = XConfigManager.getAttribute(node, "value");
62                 String selected = XConfigManager.getAttribute(node, "selected");
63                 addItem(value);
64                 if (selected.equals("selected")) {
65                     select = index;
66                 }
67                 index += 1;
68             }
69         }
70         setSelectedIndex(select);
71     }
72     /** Refresh the component by the use of actuators.
73     *
74     * @param peer the corresponding view DOM node
75     */
76     public void refresh(final Node peer) {
77         NodeList nodelist = peer.getChildNodes();
78         int select = 0;
79         int index = 0;
80         for (int i = 0; i < nodelist.getLength(); i++) {
81             Node node = nodelist.item(i);
82             if (node.getNodeName().equals("option")) {
83                 String selected = XConfigManager.getAttribute(node , "selected");
84                 if (selected.equals("selected")) {
85                     select = index;
86                 }
87                 index += 1;
88             }
89         }
90         if (select != getSelectedIndex()) {
91             setEnabled(false);
92             setSelectedIndex(select);
93         }
94         String enable = XConfigManager.getAttribute(peer , "enable", "true");
95         setEnabled(enable.equals("true"));
96     }
97
98     /** Actual response read by the listener.
99     *
100     * @return response read by the listener.
101     */
102     public final Object choose() {
103         if (isEnabled()) {
104             return (String) getSelectedItem();
105         }
106         return null;
107     }
108
109     /** Developer serialization method.
110     *
111     * @return equivalent signature.
112     */
113     public final String toString() {
114         String signature = "Select";
115         return signature;
116     }
117 }
118