Bug fix #11530 & #11363: Raise (help, scinotes...) windows when iconified
[scilab.git] / scilab / modules / ui_data / src / java / org / scilab / modules / ui_data / filebrowser / ScilabFileBrowser.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2011 - DIGITEO - Calixte DENIZET
4  *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  *
14  */
15
16 package org.scilab.modules.ui_data.filebrowser;
17
18 import javax.swing.SwingUtilities;
19
20 import org.scilab.modules.gui.bridge.window.SwingScilabWindow;
21 import org.scilab.modules.gui.tabfactory.ScilabTabFactory;
22 import org.scilab.modules.gui.textbox.ScilabTextBox;
23 import org.scilab.modules.gui.textbox.TextBox;
24 import org.scilab.modules.gui.utils.WindowsConfigurationManager;
25 import org.scilab.modules.gui.window.ScilabWindow;
26 import org.scilab.modules.ui_data.tabfactory.FileBrowserTab;
27 import org.scilab.modules.ui_data.tabfactory.FileBrowserTabFactory;
28 import org.scilab.modules.ui_data.utils.UiDataMessages;
29
30 /**
31  * The file browser
32  * @author Calixte DENIZET
33  */
34 public final class ScilabFileBrowser {
35
36     private static SwingScilabFileBrowser instance;
37
38     static {
39         ScilabTabFactory.getInstance().addTabFactory(FileBrowserTabFactory.getInstance());
40     }
41
42     /**
43      * Constructor
44      */
45     private ScilabFileBrowser() {
46         TextBox infobar = ScilabTextBox.createTextBox();
47         instance = new SwingScilabFileBrowser();
48         instance.addInfoBar(infobar);
49         instance.setTitle(UiDataMessages.FILE_BROWSER);
50     }
51
52     /**
53      * Create a file browser (as tab) instance
54      * @return the instance
55      */
56     public static SwingScilabFileBrowser createFileBrowserTab() {
57         if (instance == null) {
58             new ScilabFileBrowser();
59         }
60
61         return instance;
62     }
63
64     /**
65      * @return true if an instance of BrowseVar already exists.
66      */
67     public static boolean isFileBrowserOpened() {
68         return instance != null;
69     }
70
71     /**
72      * Set the base directory
73      * @param dir the base directory
74      */
75     public static void setBaseDir(String dir) {
76         if (instance != null) {
77             instance.setBaseDir(dir);
78         }
79     }
80
81     /**
82      * Get the variable browser singleton with specified columns title.
83      * @return the File Browser
84      */
85     public static SwingScilabFileBrowser getFileBrowser() {
86         if (instance == null) {
87             boolean success = WindowsConfigurationManager.restoreUUID(SwingScilabFileBrowser.FILEBROWSERUUID);
88             if (!success) {
89                 FileBrowserTab.getFileBrowserInstance();
90                 SwingScilabWindow window = SwingScilabWindow.createWindow(true);
91                 window.addTab(instance);
92                 window.setLocation(0, 0);
93                 window.setSize(500, 500);
94                 window.setVisible(true);
95             }
96         } else {
97             SwingScilabWindow window = (SwingScilabWindow) SwingUtilities.getAncestorOfClass(SwingScilabWindow.class, instance);
98             if(window != null) {
99                 int state = window.getExtendedState();
100                 if((state & SwingScilabWindow.ICONIFIED) == SwingScilabWindow.ICONIFIED) {
101                     window.setExtendedState(state - SwingScilabWindow.ICONIFIED);
102                 }
103             }
104         }
105
106         return instance;
107     }
108
109     /**
110      * Close File Browser
111      */
112     public static void closeFileBrowser() {
113         if (instance != null) {
114             instance.close();
115             instance = null;
116         }
117     }
118
119     /**
120      * Close File Browser
121      */
122     public void close() {
123         instance = null;
124     }
125
126     /**
127      * {@inheritDoc}
128      */
129     public void setVisible(boolean status) {
130         instance.setVisible(status);
131     }
132 }