JAL-281 added menu items and listeners to load from URL/Db
[jalview.git] / src / jalview / gui / AlignFrame.java
index 7ad362f..21b602f 100644 (file)
@@ -60,6 +60,9 @@ import jalview.datamodel.SeqCigar;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
+import jalview.ext.forester.io.ExternalTreeParserI;
+import jalview.ext.forester.io.ForesterTreeParser;
+import jalview.ext.forester.io.SupportedTreeFileFilter;
 import jalview.gui.ColourMenuHelper.ColourChangeListener;
 import jalview.gui.ViewSelectionMenu.ViewSetProvider;
 import jalview.io.AlignmentProperties;
@@ -163,8 +166,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
   AlignViewport viewport;
 
-  ViewportRanges vpRanges;
-
   public AlignViewControllerI avc;
 
   List<AlignmentPanel> alignPanels = new ArrayList<>();
@@ -336,7 +337,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       progressBar = new ProgressBar(this.statusPanel, this.statusBar);
     }
 
-    vpRanges = viewport.getRanges();
     avc = new jalview.controller.AlignViewController(this, viewport,
             alignPanel);
     if (viewport.getAlignmentConservationAnnotation() == null)
@@ -654,9 +654,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                   { (viewport.cursorMode ? "on" : "off") }));
           if (viewport.cursorMode)
           {
-            alignPanel.getSeqPanel().seqCanvas.cursorX = vpRanges
+            ViewportRanges ranges = viewport.getRanges();
+            alignPanel.getSeqPanel().seqCanvas.cursorX = ranges
                     .getStartRes();
-            alignPanel.getSeqPanel().seqCanvas.cursorY = vpRanges
+            alignPanel.getSeqPanel().seqCanvas.cursorY = ranges
                     .getStartSeq();
           }
           alignPanel.getSeqPanel().seqCanvas.repaint();
@@ -689,10 +690,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           break;
         }
         case KeyEvent.VK_PAGE_UP:
-          vpRanges.pageUp();
+          viewport.getRanges().pageUp();
           break;
         case KeyEvent.VK_PAGE_DOWN:
-          vpRanges.pageDown();
+          viewport.getRanges().pageDown();
           break;
         }
       }
@@ -2147,7 +2148,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       {
 
         // propagate alignment changed.
-        vpRanges.setEndSeq(alignment.getHeight());
+        viewport.getRanges().setEndSeq(alignment.getHeight());
         if (annotationAdded)
         {
           // Duplicate sequence annotation in all views.
@@ -2548,7 +2549,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       {
         trimRegion = new TrimRegionCommand("Remove Left", true, seqs,
                 column, viewport.getAlignment());
-        vpRanges.setStartRes(0);
+        viewport.getRanges().setStartRes(0);
       }
       else
       {
@@ -2613,13 +2614,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     // This is to maintain viewport position on first residue
     // of first sequence
     SequenceI seq = viewport.getAlignment().getSequenceAt(0);
-    int startRes = seq.findPosition(vpRanges.getStartRes());
+    ViewportRanges ranges = viewport.getRanges();
+    int startRes = seq.findPosition(ranges.getStartRes());
     // ShiftList shifts;
     // viewport.getAlignment().removeGaps(shifts=new ShiftList());
     // edit.alColumnChanges=shifts.getInverse();
     // if (viewport.hasHiddenColumns)
     // viewport.getColumnSelection().compensateForEdits(shifts);
-    vpRanges.setStartRes(seq.findIndex(startRes) - 1);
+    ranges.setStartRes(seq.findIndex(startRes) - 1);
     viewport.firePropertyChange("alignment", null,
             viewport.getAlignment().getSequences());
 
@@ -2652,12 +2654,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     // This is to maintain viewport position on first residue
     // of first sequence
     SequenceI seq = viewport.getAlignment().getSequenceAt(0);
-    int startRes = seq.findPosition(vpRanges.getStartRes());
+    int startRes = seq.findPosition(viewport.getRanges().getStartRes());
 
     addHistoryItem(new RemoveGapsCommand("Remove Gaps", seqs, start, end,
             viewport.getAlignment()));
 
-    vpRanges.setStartRes(seq.findIndex(startRes) - 1);
+    viewport.getRanges().setStartRes(seq.findIndex(startRes) - 1);
 
     viewport.firePropertyChange("alignment", null,
             viewport.getAlignment().getSequences());
@@ -2713,8 +2715,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     /*
      * Create a new AlignmentPanel (with its own, new Viewport)
      */
-    AlignmentPanel newap = new Jalview2XML().copyAlignPanel(alignPanel,
-            true);
+    AlignmentPanel newap = new Jalview2XML().copyAlignPanel(alignPanel);
     if (!copyAnnotation)
     {
       /*
@@ -3554,7 +3555,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     viewport.followSelection = listenToViewSelections.isSelected();
   }
 
-
   /**
    * Constructs a tree panel and adds it to the desktop
    * 
@@ -3578,7 +3578,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       SequenceGroup sg = viewport.getSelectionGroup();
 
       /* Decide if the selection is a column region */
-      for (SequenceI _s : sg.getSequences())
+      for (SequenceI _s : sg.getSequences()) // port this to Archaeopteryx?
       {
         if (_s.getLength() < sg.getEndRes())
         {
@@ -3885,9 +3885,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             jalview.bin.Cache.getProperty("LAST_DIRECTORY"));
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle(
-            MessageManager.getString("label.select_newick_like_tree_file"));
+            MessageManager.getString("label.select_newick_like_tree_file")); // modify
     chooser.setToolTipText(
             MessageManager.getString("label.load_tree_file"));
+    for (SupportedTreeFileFilter treeFormat : SupportedTreeFileFilter.values())
+    {
+      chooser.setFileFilter(treeFormat.getTreeFilter());
+    }
 
     int value = chooser.showOpenDialog(null);
 
@@ -3895,9 +3899,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     {
       String filePath = chooser.getSelectedFile().getPath();
       Cache.setProperty("LAST_DIRECTORY", filePath);
+
       NewickFile fin = null;
       try
       {
+        ExternalTreeParserI<?> treeParser = new ForesterTreeParser(
+                filePath);
+        treeParser.loadTree(viewport);
+
+
+
         fin = new NewickFile(filePath, DataSourceType.FILE);
         viewport.setCurrentTree(showNewickTree(fin, filePath).getTree());
       } catch (Exception ex)
@@ -3918,6 +3929,18 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
   }
 
+  @Override
+  protected void loadTreeUrlItem_actionPerformed(ActionEvent e)
+  {
+
+  }
+
+  @Override
+  protected void loadTreeDbItem_actionPerformed(ActionEvent e)
+  {
+
+  }
+
   public TreePanel showNewickTree(NewickFile nf, String treeTitle)
   {
     return showNewickTree(nf, treeTitle, 600, 500, 4, 5);
@@ -4156,7 +4179,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         }
         buildingMenu = false;
       }
-    }).start();
+    }, "BuildWebServiceThread").start();
 
   }
 
@@ -4264,7 +4287,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   protected void showProductsFor(final SequenceI[] sel, final boolean _odna,
           final String source)
   {
-    new Thread(CrossRefAction.showProductsFor(sel, _odna, source, this))
+    new Thread(CrossRefAction.showProductsFor(sel, _odna, source, this),
+            "CrossReferencesThread")
             .start();
   }
 
@@ -4543,7 +4567,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             ex.printStackTrace();
           }
         }
-      }).start();
+      }, "DropFileThread").start();
     }
   }
 
@@ -4914,7 +4938,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             });
             dbRefFetcher.fetchDBRefs(false);
           }
-        }).start();
+        }, "BuildFetchDBMenuThread").start();
 
       }