Merge 6.0 into master
[scilab.git] / scilab / modules / gui / src / java / org / scilab / modules / gui / tabfactory / ScilabTabFactory.java
index 499ef78..cf83a39 100644 (file)
@@ -2,11 +2,14 @@
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2011 - Calixte DENIZET
  *
- * This file must be used under the terms of the CeCILL.
- * This source file is licensed as described in the file COPYING, which
- * you should have received as part of this distribution.  The terms
- * are also available at
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ * Copyright (C) 2012 - 2016 - Scilab Enterprises
+ *
+ * This file is hereby licensed under the terms of the GNU GPL v2.0,
+ * pursuant to article 5.3.4 of the CeCILL v.2.1.
+ * This file was originally licensed under the terms of the CeCILL v2.1,
+ * and continues to be available under such terms.
+ * For more information, see the COPYING file which you should have received
+ * along with this program.
  *
  */
 
@@ -21,7 +24,7 @@ import javax.swing.JTextArea;
 
 import org.flexdock.docking.DockableFactory;
 
-import org.scilab.modules.gui.bridge.tab.SwingScilabTab;
+import org.scilab.modules.gui.bridge.tab.SwingScilabDockablePanel;
 import org.scilab.modules.gui.utils.WindowsConfigurationManager;
 import org.scilab.modules.jvm.LoadClassPath;
 import org.scilab.modules.localization.Messages;
@@ -40,10 +43,10 @@ public class ScilabTabFactory extends DockableFactory.Stub {
     private static final String ERROR = Messages.gettext("The tab with uuid %s cannot be restored.\nPlease report a bug with the previous message and in attaching the file %s.");
 
     /*
-      Certains components could depend an other Tab and this last one could be created before
+      Certains components could depend on other Tab and this last one could be created before
       to be requested by the Tab restorator. So we cache it to be sure to have the same instance.
     */
-    private Map<String, SwingScilabTab> cache = new HashMap<String, SwingScilabTab>();
+    private Map<String, SwingScilabDockablePanel> cache = new HashMap<String, SwingScilabDockablePanel>();
     private Map<String, AbstractScilabTabFactory> factories = new HashMap<String, AbstractScilabTabFactory>();
 
     /**
@@ -86,11 +89,9 @@ public class ScilabTabFactory extends DockableFactory.Stub {
                 addTabFactory(factory);
             } catch (ClassNotFoundException e) {
                 System.out.println(e);
-            }
-            catch (IllegalAccessException e) {
+            } catch (IllegalAccessException e) {
                 System.out.println(e);
-            }
-            catch (InstantiationException e) {
+            } catch (InstantiationException e) {
                 System.out.println(e);
             }
         }
@@ -103,7 +104,7 @@ public class ScilabTabFactory extends DockableFactory.Stub {
      * @param factory the factory to remove
      */
     public void removeTabFactory(AbstractScilabTabFactory factory) {
-        factories.remove(factory);
+        factories.values().remove(factory);
     }
 
     /**
@@ -111,8 +112,8 @@ public class ScilabTabFactory extends DockableFactory.Stub {
      * @param uuid the uuid
      * @return the corresponding tab
      */
-    public SwingScilabTab getTab(String uuid) {
-        SwingScilabTab tab = cache.get(uuid);
+    public SwingScilabDockablePanel getTab(String uuid) {
+        SwingScilabDockablePanel tab = cache.get(uuid);
         if (tab != null) {
             return tab;
         }
@@ -179,12 +180,14 @@ public class ScilabTabFactory extends DockableFactory.Stub {
         cache.remove(uuid);
     }
 
-    public SwingScilabTab getFromCache(String uuid) {
+    public SwingScilabDockablePanel getFromCache(String uuid) {
         return cache.get(uuid);
     }
 
-    public void addToCache(SwingScilabTab tab) {
-        cache.put(tab.getPersistentId(), tab);
+    public void addToCache(SwingScilabDockablePanel tab) {
+        if (tab != null) {
+            cache.put(tab.getPersistentId(), tab);
+        }
     }
 
     /**
@@ -198,13 +201,13 @@ public class ScilabTabFactory extends DockableFactory.Stub {
      * Make an empty tab
      * @return an empty tab
      */
-    private static final SwingScilabTab makeEmptyTab(String uuid) {
+    private static final SwingScilabDockablePanel makeEmptyTab(String uuid) {
         String u = uuid;
         if (uuid == null || uuid.isEmpty()) {
             u = NULLUUID;
         }
 
-        SwingScilabTab tab = new SwingScilabTab(EMPTYTAB, u);
+        SwingScilabDockablePanel tab = new SwingScilabDockablePanel(EMPTYTAB, u);
         String text = String.format(ERROR, u, System.getProperty("user.home"));
         JTextArea textarea = new JTextArea(text);
         textarea.setEditable(false);