JAL-3032 make JS properties conditional on Jalview.isJS()
[jalview.git] / src / jalview / gui / Desktop.java
index ceea332..701d778 100644 (file)
@@ -364,6 +364,8 @@ public class Desktop extends jalview.jbgui.GDesktop
     boolean showjconsole = jalview.bin.Cache.getDefault("SHOW_JAVA_CONSOLE",
             false);
     desktop = new MyDesktopPane(selmemusage);
+    
+    
     showMemusage.setSelected(selmemusage);
     desktop.setBackground(Color.white);
     getContentPane().setLayout(new BorderLayout());
@@ -371,9 +373,19 @@ public class Desktop extends jalview.jbgui.GDesktop
     // JScrollPane sp = new JScrollPane();
     // sp.getViewport().setView(desktop);
     // getContentPane().add(sp, BorderLayout.CENTER);
+    
+    // BH 2018 - just an experiment to try unclipped JInternalFrames. 
+    // Must set for all three to be active:
+       if (Jalview.isJS()) 
+       {
+         getRootPane().putClientProperty("swingjs.overflow.hidden", "false");
+         ((JComponent) getContentPane()).putClientProperty("swingjs.overflow.hidden", "false");
+         desktop.putClientProperty("swingjs.overflow.hidden", "false");
+       }
+    
     getContentPane().add(desktop, BorderLayout.CENTER);
     desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
-
+    
     // This line prevents Windows Look&Feel resizing all new windows to maximum
     // if previous window was maximised
     desktop.setDesktopManager(new MyDesktopManager(
@@ -540,7 +552,7 @@ public class Desktop extends jalview.jbgui.GDesktop
   {
     final Desktop me = this;
     // Thread off the news reader, in case there are connection problems.
-    addDialogThread(new Runnable()
+    new Thread(new Runnable()
     {
       @Override
       public void run()
@@ -550,13 +562,13 @@ public class Desktop extends jalview.jbgui.GDesktop
         showNews.setVisible(true);
         Cache.log.debug("Completed news thread.");
       }
-    });
+    }).start();
   }
 
   public void getIdentifiersOrgData()
   {
     // Thread off the identifiers fetcher
-    addDialogThread(new Runnable()
+    new Thread(new Runnable()
     {
       @Override
       public void run()
@@ -573,7 +585,8 @@ public class Desktop extends jalview.jbgui.GDesktop
                   + e.getMessage());
         }
       }
-    });
+    }).start();
+    ;
   }
 
   @Override
@@ -1143,7 +1156,7 @@ public class Desktop extends jalview.jbgui.GDesktop
         new FileLoader().LoadFile(viewport, selectedFile,
                 DataSourceType.FILE, format);
       }
-    }).openDialog(this);
+    }).showOpenDialog(this);
   }
 
   /**
@@ -1640,20 +1653,18 @@ public class Desktop extends jalview.jbgui.GDesktop
    * Jalview project file
    */
   @Override
-  public void saveState_actionPerformed()
+  public void saveState_actionPerformed(boolean asCastor)
   {
-    JalviewFileChooser chooser = new JalviewFileChooser("jvp",
+    JalviewFileChooser chooser = new JalviewFileChooser(
+            asCastor ? "jvp" : "jvx",
             "Jalview Project");
 
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle(MessageManager.getString("label.save_state"));
-
-    int value = chooser.showSaveDialog(this);
-
-    if (value == JalviewFileChooser.APPROVE_OPTION)
+    int option = chooser.showSaveDialog(this);
+    if (option == JalviewFileChooser.APPROVE_OPTION)
     {
-      final Desktop me = this;
-      final java.io.File choice = chooser.getSelectedFile();
+      File choice = chooser.getSelectedFile();
       setProjectFile(choice);
 
       new Thread(new Runnable()
@@ -1671,7 +1682,14 @@ public class Desktop extends jalview.jbgui.GDesktop
           // TODO prevent user from messing with the Desktop whilst we're saving
           try
           {
-            new Jalview2XML().saveState(choice);
+            if (asCastor)
+            {
+              new Jalview2XML().saveState(choice);
+            }
+            else
+            {
+              new jalview.project.Jalview2XML().saveState(choice);
+            }
           } catch (OutOfMemoryError oom)
           {
             new OOMWarning(
@@ -1682,7 +1700,7 @@ public class Desktop extends jalview.jbgui.GDesktop
             Cache.log.error(
                     "Problems whilst trying to save to " + choice.getName(),
                     ex);
-            JvOptionPane.showMessageDialog(me,
+            JvOptionPane.showMessageDialog(Desktop.this,
                     MessageManager.formatMessage(
                             "label.error_whilst_saving_current_state_to",
                             new Object[]
@@ -1693,10 +1711,10 @@ public class Desktop extends jalview.jbgui.GDesktop
           setProgressBar(null, choice.hashCode());
         }
       }).start();
-    }
+      }
   }
 
-  private void setProjectFile(File choice)
+  void setProjectFile(File choice)
   {
     this.projectFile = choice;
   }
@@ -1710,41 +1728,51 @@ public class Desktop extends jalview.jbgui.GDesktop
    * Prompts the user to choose a file and loads in as a Jalview project file
    */
   @Override
-  public void loadState_actionPerformed()
-  {
+  public void loadState_actionPerformed(boolean asCastor)
+  {
+    // TODO: GET RID OF .JVX BEFORE RELEASE JIM!
+    final String[] suffix = asCastor ? new String[] { "jvp", "jar" }
+            : new String[]
+            { "jvx" };
+    final String[] desc = asCastor
+            ? new String[]
+            { "Jalview Project", "Jalview Project (old)" }
+            : new String[]
+            { "Jalview Project" };
     JalviewFileChooser chooser = new JalviewFileChooser(
-            Cache.getProperty("LAST_DIRECTORY"), new String[]
-            { "jvp", "jar" },
-            new String[]
-            { "Jalview Project", "Jalview Project (old)" },
+            Cache.getProperty("LAST_DIRECTORY"), suffix,
+            desc,
             "Jalview Project");
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle(MessageManager.getString("label.restore_state"));
-
-    int value = chooser.showOpenDialog(this);
-
-    if (value == JalviewFileChooser.APPROVE_OPTION)
+    chooser.response(new RunResponse(JalviewFileChooser.APPROVE_OPTION)
     {
-      final File selectedFile = chooser.getSelectedFile();
-      setProjectFile(selectedFile);
-      final String choice = selectedFile.getAbsolutePath();
-      Cache.setProperty("LAST_DIRECTORY", selectedFile.getParent());
-      new Thread(new Runnable()
+      @Override
+      public void run()
       {
-        @Override
-        public void run()
+        File selectedFile = chooser.getSelectedFile();
+        setProjectFile(selectedFile);
+        final String choice = selectedFile.getAbsolutePath();
+        Cache.setProperty("LAST_DIRECTORY", selectedFile.getParent());
+        new Thread(new Runnable()
         {
-          setProgressBar(MessageManager.formatMessage(
-                  "label.loading_jalview_project", new Object[]
-                  { choice }), choice.hashCode());
-          try
-          {
-            new Jalview2XML().loadJalviewAlign(choice);
-          } catch (OutOfMemoryError oom)
+          @Override
+          public void run()
           {
+               try {
+              if (asCastor)
+              {
+                new Jalview2XML().loadJalviewAlign(choice);
+              }
+              else
+              {
+                new jalview.project.Jalview2XML().loadJalviewAlign(choice);
+              }
+            } catch (OutOfMemoryError oom)
+            {
             new OOMWarning("Whilst loading project from " + choice, oom);
-          } catch (Exception ex)
-          {
+            } catch (Exception ex)
+            {
             Cache.log.error(
                     "Problems whilst loading project from " + choice, ex);
             JvOptionPane.showMessageDialog(Desktop.desktop,
@@ -1754,11 +1782,13 @@ public class Desktop extends jalview.jbgui.GDesktop
                             { choice }),
                     MessageManager.getString("label.couldnt_load_project"),
                     JvOptionPane.WARNING_MESSAGE);
+            }
           }
-          setProgressBar(null, choice.hashCode());
-        }
-      }).start();
-    }
+        }).start();
+      }
+    });
+    
+    chooser.showOpenDialog(this);
   }
 
   @Override