JAL-3026 "final" removed in Desktop ; fixing #48. 80, 91, 94
[jalview.git] / src / jalview / gui / Desktop.java
index e82bd9c..b3a82bd 100644 (file)
@@ -421,49 +421,50 @@ public class Desktop extends jalview.jbgui.GDesktop
 
       checkURLLinks();
 
-    this.setDropTarget(new java.awt.dnd.DropTarget(desktop, this));
-    // Spawn a thread that shows the splashscreen
+      // Spawn a thread that shows the splashscreen
 
-    SwingUtilities.invokeLater(new Runnable()
-    {
-      @Override
-      public void run()
+      SwingUtilities.invokeLater(new Runnable()
       {
-        new SplashScreen();
-      }
-    });
+        @Override
+        public void run()
+        {
+          new SplashScreen();
+        }
+      });
 
-    // Thread off a new instance of the file chooser - this reduces the time it
-    // takes to open it later on.
-    new Thread(new Runnable()
-    {
-      @Override
-      public void run()
+      // Thread off a new instance of the file chooser - this reduces the time it
+      // takes to open it later on.
+      new Thread(new Runnable()
       {
-        Cache.log.debug("Filechooser init thread started.");
-        String fileFormat = Cache.getProperty("DEFAULT_FILE_FORMAT");
-        JalviewFileChooser.forRead(Cache.getProperty("LAST_DIRECTORY"),
-                fileFormat);
-        Cache.log.debug("Filechooser init thread finished.");
-      }
-    }).start();
-    // Add the service change listener
-    changeSupport.addJalviewPropertyChangeListener("services",
-            new PropertyChangeListener()
-            {
-
-              @Override
-              public void propertyChange(PropertyChangeEvent evt)
+        @Override
+        public void run()
+        {
+          Cache.log.debug("Filechooser init thread started.");
+          String fileFormat = Cache.getProperty("DEFAULT_FILE_FORMAT");
+          JalviewFileChooser.forRead(Cache.getProperty("LAST_DIRECTORY"),
+                  fileFormat);
+          Cache.log.debug("Filechooser init thread finished.");
+        }
+      }).start();
+      // Add the service change listener
+      changeSupport.addJalviewPropertyChangeListener("services",
+              new PropertyChangeListener()
               {
-                Cache.log.debug("Firing service changed event for "
-                        + evt.getNewValue());
-                JalviewServicesChanged(evt);
-              }
 
-            });
+                @Override
+                public void propertyChange(PropertyChangeEvent evt)
+                {
+                  Cache.log.debug("Firing service changed event for "
+                          + evt.getNewValue());
+                  JalviewServicesChanged(evt);
+                }
+
+              });
 
     } // end BH 2018 ignore
 
+    this.setDropTarget(new java.awt.dnd.DropTarget(desktop, this));
+
     this.addWindowListener(new WindowAdapter()
     {
       @Override
@@ -1062,7 +1063,7 @@ public class Desktop extends jalview.jbgui.GDesktop
     // Java's Transferable for native dnd
     evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
     Transferable t = evt.getTransferable();
-    List<String> files = new ArrayList<>();
+    List<Object> files = new ArrayList<>();
     List<DataSourceType> protocols = new ArrayList<>();
 
     try
@@ -1080,13 +1081,15 @@ public class Desktop extends jalview.jbgui.GDesktop
       {
         for (int i = 0; i < files.size(); i++)
         {
-          String file = files.get(i).toString();
+          // BH 2018 File or String
+          Object file = files.get(i);
+          String fileName = file.toString();
           DataSourceType protocol = (protocols == null)
                   ? DataSourceType.FILE
                   : protocols.get(i);
           FileFormatI format = null;
 
-          if (file.endsWith(".jar"))
+          if (fileName.endsWith(".jar"))
           {
             format = FileFormat.Jalview;
 
@@ -1096,7 +1099,7 @@ public class Desktop extends jalview.jbgui.GDesktop
             format = new IdentifyFile().identify(file, protocol);
           }
 
-          new FileLoader().LoadFile(file, protocol, format);
+          new FileLoader().LoadFile(null, file, protocol, format);
 
         }
       } catch (Exception ex)
@@ -1118,7 +1121,7 @@ public class Desktop extends jalview.jbgui.GDesktop
   public void inputLocalFileMenuItem_actionPerformed(AlignViewport viewport)
   {
     String fileFormat = Cache.getProperty("DEFAULT_FILE_FORMAT");
-    final JalviewFileChooser chooser = JalviewFileChooser
+    JalviewFileChooser chooser = JalviewFileChooser
             .forRead(Cache.getProperty("LAST_DIRECTORY"), fileFormat);
 
     chooser.setFileView(new JalviewFileView());
@@ -1608,6 +1611,8 @@ public class Desktop extends jalview.jbgui.GDesktop
   @Override
   public void saveState_actionPerformed(ActionEvent e)
   {
+    // TODO: JAL-3048 not needed for Jalview-JS
+
     JalviewFileChooser chooser = new JalviewFileChooser("jvp",
             "Jalview Project");
 
@@ -1681,6 +1686,8 @@ public class Desktop extends jalview.jbgui.GDesktop
   @Override
   public void loadState_actionPerformed(ActionEvent e)
   {
+    // TODO: JAL-3048 not needed for Jalview-JS
+
     JalviewFileChooser chooser = new JalviewFileChooser(
             Cache.getProperty("LAST_DIRECTORY"), new String[]
             { "jvp", "jar" },
@@ -1740,7 +1747,7 @@ public class Desktop extends jalview.jbgui.GDesktop
 
   ArrayList<JPanel> fileLoadingPanels = new ArrayList<>();
 
-  public void startLoading(final String fileName)
+  public void startLoading(final Object fileName)
   {
     if (fileLoadingCount == 0)
     {
@@ -1988,6 +1995,8 @@ public class Desktop extends jalview.jbgui.GDesktop
   @Override
   public void vamsasImport_actionPerformed(ActionEvent e)
   {
+    // TODO: JAL-3048 not needed for Jalview-JS
+
     if (v_client == null)
     {
       // Load and try to start a session.
@@ -2264,6 +2273,8 @@ public class Desktop extends jalview.jbgui.GDesktop
   @Override
   public void vamsasSave_actionPerformed(ActionEvent e)
   {
+    // TODO: JAL-3048 not needed for Jalview-JS
+
     if (v_client != null)
     {
       // TODO: VAMSAS DOCUMENT EXTENSION is VDJ
@@ -3504,10 +3515,29 @@ public class Desktop extends jalview.jbgui.GDesktop
    *          - the payload from the drop event
    * @throws Exception
    */
-  public static void transferFromDropTarget(List<String> files,
+  public static void transferFromDropTarget(List<Object> files,
           List<DataSourceType> protocols, DropTargetDropEvent evt,
           Transferable t) throws Exception
   {
+    
+    // BH 2018 changed List<String> to List<Object> to allow for File from SwingJS
+
+//    DataFlavor[] flavors = t.getTransferDataFlavors();
+//    for (int i = 0; i < flavors.length; i++) {
+//      if (flavors[i].isFlavorJavaFileListType()) {
+//              evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
+//              List<File> list = (List<File>) t.getTransferData(flavors[i]);
+//              for (int j = 0; j < list.size(); j++) {
+//                      File file = (File) list.get(j);
+//                      byte[] data = getDroppedFileBytes(file);
+//                      fileName.setText(file.getName() + " - " + data.length + " " + evt.getLocation());
+//                      JTextArea target = (JTextArea) ((DropTarget) evt.getSource()).getComponent();
+//                      target.setText(new String(data));
+//              }
+//              dtde.dropComplete(true);
+//              return;
+//      }
+//
 
     DataFlavor uriListFlavor = new DataFlavor(
             "text/uri-list;class=java.lang.String"), urlFlavour = null;
@@ -3557,7 +3587,7 @@ public class Desktop extends jalview.jbgui.GDesktop
       for (Object file : (List) t
               .getTransferData(DataFlavor.javaFileListFlavor))
       {
-        files.add(((File) file).toString());
+        files.add(file);
         protocols.add(DataSourceType.FILE);
       }
     }
@@ -3663,13 +3693,14 @@ public class Desktop extends jalview.jbgui.GDesktop
       // resolve any .lnk files in the file drop
       for (int f = 0; f < files.size(); f++)
       {
-        String source = files.get(f).toLowerCase();
+        String source = files.get(f).toString().toLowerCase();
         if (protocols.get(f).equals(DataSourceType.FILE)
                 && (source.endsWith(".lnk") || source.endsWith(".url")
                         || source.endsWith(".site")))
         {
           try {
-            File lf = new File(files.get(f));
+            Object obj = files.get(f);
+            File lf = (obj instanceof File ? (File) obj : new File((String) obj));
             // process link file to get a URL
             Cache.log.debug("Found potential link file: " + lf);
             WindowsShortcut wscfile = new WindowsShortcut(lf);