JAL-629 Opening files in new windows. not working yet
[jalview.git] / src / jalview / bin / Commands.java
index 67c0c64..43dc1fd 100644 (file)
@@ -2,6 +2,7 @@ package jalview.bin;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -10,6 +11,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import jalview.analysis.AlignmentUtils;
 import jalview.api.AlignmentViewPanel;
@@ -33,6 +35,7 @@ import jalview.gui.StructureChooser;
 import jalview.gui.StructureViewer;
 import jalview.io.AppletFormatAdapter;
 import jalview.io.DataSourceType;
+import jalview.io.FileFormat;
 import jalview.io.FileFormatException;
 import jalview.io.FileFormatI;
 import jalview.io.FileLoader;
@@ -164,8 +167,19 @@ public class Commands
       boolean first = true;
       boolean progressBarSet = false;
       AlignFrame af;
-      for (ArgValue av : avm.getArgValueList(Arg.OPEN))
+      List<Entry<Arg, ArgValue>> openAvList = new ArrayList<>();
+      avm.getArgValueList(Arg.OPEN).stream()
+              .forEachOrdered(av -> openAvList.add(
+                      new AbstractMap.SimpleEntry<Arg, ArgValue>(Arg.OPEN,
+                              av)));
+      avm.getArgValueList(Arg.OPENNEW).stream()
+              .forEachOrdered(av -> openAvList
+                      .add(new AbstractMap.SimpleEntry<Arg, ArgValue>(
+                              Arg.OPENNEW, av)));
+      for (Entry<Arg, ArgValue> aav : openAvList)
       {
+        Arg a = aav.getKey();
+        ArgValue av = aav.getValue();
         String openFile = av.getValue();
         if (openFile == null)
           continue;
@@ -213,7 +227,8 @@ public class Commands
         }
 
         af = afMap.get(id);
-        if (af == null)
+        if (af == null || "true".equals(av.getSubVal("new"))
+                || a == Arg.OPENNEW || format == FileFormat.Jalview)
         {
           /*
            * this approach isn't working yet