Prefs: add a function preferences()
[scilab.git] / scilab / modules / preferences / src / java / org / scilab / modules / preferences / ScilabPreferences.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2011 - DIGITEO - Calixte DENIZET
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;
14
15 import java.io.File;
16 import java.util.ArrayList;
17 import java.util.HashMap;
18 import java.util.List;
19 import java.util.Map;
20
21 import javax.swing.SwingUtilities;
22
23 import org.scilab.modules.localization.Messages;
24
25 /**
26  * @author Calixte DENIZET
27  */
28 public class ScilabPreferences {
29
30     private static Map<String, ToolboxInfos> tbxs = new HashMap<String, ToolboxInfos>();
31
32     /**
33      * Open the preferences window
34      */
35     public static void openPreferences() {
36         SwingUtilities.invokeLater(new Runnable() {
37             public void run() {
38                 XConfigManager.openPreferences();
39             }
40         });
41     }
42
43     /**
44      * @param name the toolbox name
45      * @param path the toolbox path
46      * @param prefFile the toolbox preference file path
47      */
48     public static void addToolboxInfos(String name, String path, String prefFile) throws Exception {
49         File f = new File(path);
50         if (!f.exists()) {
51             throw new Exception(Messages.gettext("Invalid path:") + " " + path + ".");
52         }
53         f = new File(prefFile);
54         if (!f.exists()) {
55             throw new Exception(Messages.gettext("Invalid preferences file:") + " " + prefFile + ".");
56         }
57         tbxs.put(path, new ToolboxInfos(name, path, prefFile));
58     }
59
60     /**
61      * @return a list of the toolboxes infos
62      */
63     public static List<ToolboxInfos> getToolboxesInfos() {
64         return new ArrayList<ToolboxInfos>(tbxs.values());
65     }
66
67     /**
68      * @param path the toolbox to remove
69      */
70     public static void removeToolboxInfos(String path) {
71         tbxs.remove(path);
72     }
73
74     /**
75      * Toolbox infos
76      */
77     public static class ToolboxInfos {
78
79         private String name;
80         private String path;
81         private String prefFile;
82
83         /**
84          * Default constructor
85          * @param name the toolbox name
86          * @param path the toolbox path
87          * @param prefFile the toolbox preference file path
88          */
89         public ToolboxInfos(String name, String path, String prefFile) {
90             this.name = name;
91             this.path = path;
92             this.prefFile = prefFile;
93         }
94
95         /**
96          * @return the toolbox name
97          */
98         public String getName() {
99             return name;
100         }
101
102         /**
103          * @return the toolbox path
104          */
105         public String getPath() {
106             return path;
107         }
108
109         /**
110          * @return the toolbox preference file path
111          */
112         public String getPrefFile() {
113             return prefFile;
114         }
115
116         /**
117          * {@inheritDoc}
118          */
119         public String toString() {
120             return "Toolbox: " + name + "\nPath: " + path + "\nPreference file: " + prefFile;
121         }
122     }
123 }