/*
- * 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.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
*
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* 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/>.
+ * 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;
{
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;
return false;
}
- //fastPaint = false;
+ fastPaint = false;
vscroll.setValue(vscroll.getValue() - 1);
}
else
return false;
}
- //fastPaint = false;
+ fastPaint = false;
vscroll.setValue(vscroll.getValue() + 1);
}
- //fastPaint = true;
+ fastPaint = true;
return true;
}
return false;
}
- //fastPaint = false;
+ fastPaint = false;
hscroll.setValue(hscroll.getValue() - 1);
}
else
return false;
}
- //fastPaint = false;
+ fastPaint = false;
hscroll.setValue(hscroll.getValue() + 1);
}
- //fastPaint = true;
+ fastPaint = true;
return true;
}
seqPanel.seqCanvas.fastPaint(scrollX, scrollY);
scalePanel.repaint();
- if (av.getShowAnnotation() && scrollX!=0)
+ if (av.getShowAnnotation() && scrollX != 0)
{
annotationPanel.fastPaint(scrollX);
}
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"
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
}
} finally
{
- if (alignFrame != null)
+ if (alignFrame != null && !headless)
{
alignFrame.setProgressBar("Export complete.", progress);
}