JAL-1976 Added progress indicators for HTML_SVG and BioJS export operations
[jalview.git] / src / jalview / gui / AlignFrame.java
index 500dfdb..a616dc0 100644 (file)
@@ -368,6 +368,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       setGUINucleotide(viewport.getAlignment().isNucleotide());
     }
 
+    this.alignPanel.av
+            .setShowAutocalculatedAbove(isShowAutoCalculatedAbove());
+
     setMenusFromViewport(viewport);
     buildSortByAnnotationScoresMenu();
     buildTreeMenu();
@@ -842,6 +845,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    * operation that affects the data in the current view (selection changed,
    * etc) to update the menus to reflect the new state.
    */
+  @Override
   public void setMenusForViewport()
   {
     setMenusFromViewport(viewport);
@@ -1306,19 +1310,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     int startPos = aligmentStartEnd[0];
     int endPos = aligmentStartEnd[1];
 
-    int[] lowestRange = new int[2];
-    int[] higestRange = new int[2];
+    int[] lowestRange = new int[] { -1, -1 };
+    int[] higestRange = new int[] { -1, -1 };
 
     for (int[] hiddenCol : hiddenCols)
     {
-      // System.out.println("comparing : " + hiddenCol[0] + "-" + hiddenCol[1]);
       lowestRange = (hiddenCol[0] <= startPos) ? hiddenCol : lowestRange;
       higestRange = (hiddenCol[1] >= endPos) ? hiddenCol : higestRange;
     }
-    // System.out.println("min : " + lowestRange[0] + "-" + lowestRange[1]);
-    // System.out.println("max : " + higestRange[0] + "-" + higestRange[1]);
 
-    if (lowestRange[0] == 0 && lowestRange[1] == 0)
+    if (lowestRange[0] == -1 && lowestRange[1] == -1)
     {
       startPos = aligmentStartEnd[0];
     }
@@ -1327,27 +1328,27 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       startPos = lowestRange[1] + 1;
     }
 
-    if (higestRange[0] == 0 && higestRange[1] == 0)
+    if (higestRange[0] == -1 && higestRange[1] == -1)
     {
       endPos = aligmentStartEnd[1];
     }
     else
     {
-      endPos = higestRange[0];
+      endPos = higestRange[0] - 1;
     }
 
-    // System.out.println("Export range : " + minPos + " - " + maxPos);
+    // System.out.println("Export range : " + startPos + " - " + endPos);
     return new int[] { startPos, endPos };
   }
 
   public static void main(String[] args)
   {
     ArrayList<int[]> hiddenCols = new ArrayList<int[]>();
-    hiddenCols.add(new int[] { 0, 4 });
+    hiddenCols.add(new int[] { 0, 0 });
     hiddenCols.add(new int[] { 6, 9 });
     hiddenCols.add(new int[] { 11, 12 });
     hiddenCols.add(new int[] { 33, 33 });
-    hiddenCols.add(new int[] { 45, 50 });
+    hiddenCols.add(new int[] { 50, 50 });
 
     int[] x = getStartEnd(new int[] { 0, 50 }, hiddenCols);
     // System.out.println("Export range : " + x[0] + " - " + x[1]);
@@ -1368,7 +1369,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   @Override
   public void bioJSMenuItem_actionPerformed(ActionEvent e)
   {
-    BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel);
+    BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel, this);
     bjs.exportJalviewAlignmentAsBioJsHtmlFile();
   }
 
@@ -1401,6 +1402,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     alignPanel.makeEPS(f);
   }
 
+  @Override
   public void createSVG(File f)
   {
     alignPanel.makeSVG(f);
@@ -1574,6 +1576,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
   }
 
+  @Override
   public void addHistoryItem(CommandI command)
   {
     if (command.getSize() > 0)
@@ -2372,20 +2375,24 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
      */
     if (sg.getSize() == viewport.getAlignment().getHeight())
     {
-      int confirm = JOptionPane.showConfirmDialog(this,
-              MessageManager.getString("warn.delete_all"), // $NON-NLS-1$
-              MessageManager.getString("label.delete_all"), // $NON-NLS-1$
-              JOptionPane.OK_CANCEL_OPTION);
-
-      if (confirm == JOptionPane.CANCEL_OPTION
-              || confirm == JOptionPane.CLOSED_OPTION)
+      boolean isEntireAlignWidth = (((sg.getEndRes() - sg.getStartRes()) + 1) == viewport
+              .getAlignment().getWidth()) ? true : false;
+      if (isEntireAlignWidth)
       {
-        return;
+        int confirm = JOptionPane.showConfirmDialog(this,
+                MessageManager.getString("warn.delete_all"), // $NON-NLS-1$
+                MessageManager.getString("label.delete_all"), // $NON-NLS-1$
+                JOptionPane.OK_CANCEL_OPTION);
+
+        if (confirm == JOptionPane.CANCEL_OPTION
+                || confirm == JOptionPane.CLOSED_OPTION)
+        {
+          return;
+        }
       }
       viewport.getColumnSelection().removeElements(sg.getStartRes(),
               sg.getEndRes() + 1);
     }
-
     SequenceI[] cut = sg.getSequences()
             .toArray(new SequenceI[sg.getSize()]);
 
@@ -2540,7 +2547,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     ColumnSelection colSel = viewport.getColumnSelection();
     int column;
 
-    if (colSel.size() > 0)
+    if (!colSel.isEmpty())
     {
       if (trimLeft)
       {
@@ -2565,18 +2572,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       TrimRegionCommand trimRegion;
       if (trimLeft)
       {
-        trimRegion = new TrimRegionCommand("Remove Left",
-                TrimRegionCommand.TRIM_LEFT, seqs, column,
-                viewport.getAlignment(), viewport.getColumnSelection(),
-                viewport.getSelectionGroup());
+        trimRegion = new TrimRegionCommand("Remove Left", true, seqs,
+                column, viewport.getAlignment());
         viewport.setStartRes(0);
       }
       else
       {
-        trimRegion = new TrimRegionCommand("Remove Right",
-                TrimRegionCommand.TRIM_RIGHT, seqs, column,
-                viewport.getAlignment(), viewport.getColumnSelection(),
-                viewport.getSelectionGroup());
+        trimRegion = new TrimRegionCommand("Remove Right", false, seqs,
+                column, viewport.getAlignment());
       }
 
       statusBar.setText(MessageManager.formatMessage(
@@ -2963,6 +2966,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   {
     viewport.showAllHiddenColumns();
     repaint();
+    viewport.sendSelection();
   }
 
   @Override
@@ -3053,6 +3057,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   public void hideAllButSelection_actionPerformed(ActionEvent e)
   {
     toggleHiddenRegions(false, false);
+    viewport.sendSelection();
   }
 
   /*
@@ -3070,6 +3075,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     viewport.hideAllSelectedSeqs();
     viewport.hideSelectedColumns();
     alignPanel.paintAlignment(true);
+    viewport.sendSelection();
   }
 
   /*
@@ -3085,6 +3091,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     viewport.showAllHiddenColumns();
     viewport.showAllHiddenSeqs();
     alignPanel.paintAlignment(true);
+    viewport.sendSelection();
   }
 
   @Override
@@ -3092,6 +3099,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   {
     viewport.hideSelectedColumns();
     alignPanel.paintAlignment(true);
+    viewport.sendSelection();
   }
 
   @Override
@@ -3493,6 +3501,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    * @param cs
    *          DOCUMENT ME!
    */
+  @Override
   public void changeColour(ColourSchemeI cs)
   {
     // TODO: pull up to controller method
@@ -3512,6 +3521,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         cs.setConservationInc(SliderPanel.setConservationSlider(alignPanel,
                 cs, "Background"));
       }
+      if (cs instanceof TCoffeeColourScheme)
+      {
+        tcoffeeColour.setEnabled(true);
+        tcoffeeColour.setSelected(true);
+      }
     }
 
     viewport.setGlobalColourScheme(cs);
@@ -5522,8 +5536,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           @Override
           public void run()
           {
+            boolean isNuclueotide = alignPanel.alignFrame
+                    .getViewport().getAlignment()
+                    .isNucleotide();
             new jalview.ws.DBRefFetcher(alignPanel.av
-                    .getSequenceSelection(), alignPanel.alignFrame)
+                    .getSequenceSelection(),
+                    alignPanel.alignFrame, null,
+                    alignPanel.alignFrame.featureSettings,
+                    isNuclueotide)
                     .fetchDBRefs(false);
           }
         }).start();
@@ -5592,9 +5612,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                       @Override
                       public void run()
                       {
+                        boolean isNuclueotide = alignPanel.alignFrame
+                                .getViewport().getAlignment()
+                                .isNucleotide();
                         new jalview.ws.DBRefFetcher(alignPanel.av
                                 .getSequenceSelection(),
-                                alignPanel.alignFrame, dassource)
+                                alignPanel.alignFrame, dassource,
+                                alignPanel.alignFrame.featureSettings,
+                                isNuclueotide)
                                 .fetchDBRefs(false);
                       }
                     }).start();
@@ -5628,9 +5653,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                       @Override
                       public void run()
                       {
+                        boolean isNuclueotide = alignPanel.alignFrame
+                                .getViewport().getAlignment()
+                                .isNucleotide();
                         new jalview.ws.DBRefFetcher(alignPanel.av
                                 .getSequenceSelection(),
-                                alignPanel.alignFrame, dassource)
+                                alignPanel.alignFrame, dassource,
+                                alignPanel.alignFrame.featureSettings,
+                                isNuclueotide)
                                 .fetchDBRefs(false);
                       }
                     }).start();
@@ -5679,9 +5709,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                         @Override
                         public void run()
                         {
+                          boolean isNuclueotide = alignPanel.alignFrame
+                                  .getViewport().getAlignment()
+                                  .isNucleotide();
                           new jalview.ws.DBRefFetcher(alignPanel.av
                                   .getSequenceSelection(),
-                                  alignPanel.alignFrame, dassrc)
+                                  alignPanel.alignFrame, dassrc,
+                                  alignPanel.alignFrame.featureSettings,
+                                  isNuclueotide)
                                   .fetchDBRefs(false);
                         }
                       }).start();
@@ -5746,6 +5781,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     viewport.firePropertyChange("alignment", null, al);
   }
 
+  @Override
   public void setShowSeqFeatures(boolean b)
   {
     showSeqFeatures.setSelected(b);