JAL-1517 update copyright to version 2.8.2
[jalview.git] / src / jalview / gui / AlignmentPanel.java
index 5f20808..c83e1d4 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -14,6 +14,7 @@
  * PURPOSE.  See the GNU General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.gui;
 
@@ -421,16 +422,30 @@ public class AlignmentPanel extends GAlignmentPanel implements
   protected void validateAnnotationDimensions(boolean adjustPanelHeight)
   {
     int height = annotationPanel.adjustPanelHeight();
-
-    if (hscroll.isVisible())
-    {
-      height += hscroll.getPreferredSize().height;
-    }
-    if (height > alignFrame.getHeight() / 2)
-    {
-      height = alignFrame.getHeight() / 2;
+    
+    int theight = av.getCharHeight() * (av.getAlignment().getHeight() + (!av.hasHiddenRows() ? 0 : av.getAlignment().getHiddenSequences().getSize()));
+    float sscaling = (float) (theight/(1.0*theight+height));
+    float ascaling=(float)(height*1.0/alignFrame.getHeight());
+    int rheight = alignFrame.getHeight() - height - av.getCharHeight();
+    if (adjustPanelHeight)
+    {
+      // NOTE: this logic is different in the applet. Need a better algorithm to define behaviour
+      // try and set height according to alignment
+      if (ascaling>0 && sscaling < 0.5)
+      {
+        // if the alignment is too big then
+        // default is 0.5 split
+        height = alignFrame.getHeight() / 2;
+      }
+      else
+      {
+        // if space for more than one sequence row left when annotation is fully displayed then set height to annotation height
+        // otherwise, leave at least two lines of sequence shown.  
+        height = (rheight>av.getCharHeight()) ? height : (-av.getCharHeight() * 3
+                + (int) (alignFrame.getHeight() * (1 - sscaling)));
+      }
     }
-    if (!adjustPanelHeight)
+    else
     {
       // maintain same window layout whilst updating sliders
       height = annotationScroller.getSize().height;
@@ -1094,7 +1109,9 @@ public class AlignmentPanel extends GAlignmentPanel implements
   void makeAlignmentImage(int type, File file)
   {
     long progress = System.currentTimeMillis();
-    if (alignFrame != null)
+    boolean headless = (System.getProperty("java.awt.headless") != null
+            && System.getProperty("java.awt.headless").equals("true"));
+    if (alignFrame != null && !headless)
     {
       alignFrame.setProgressBar("Saving "
               + (type == jalview.util.ImageMaker.PNG ? "PNG image"
@@ -1115,8 +1132,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
       if (av.getWrapAlignment())
       {
         height = getWrappedHeight();
-        if (System.getProperty("java.awt.headless") != null
-                && System.getProperty("java.awt.headless").equals("true"))
+        if (headless)
         {
           // need to obtain default alignment width and then add in any
           // additional allowance for id margin
@@ -1184,7 +1200,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
       }
     } finally
     {
-      if (alignFrame != null)
+      if (alignFrame != null && !headless)
       {
         alignFrame.setProgressBar("Export complete.", progress);
       }