\r
setScrollValues(0, 0);\r
\r
- annotationPanel.adjustPanelHeight();\r
- annotationSpaceFillerHolder.setPreferredSize(annotationPanel.\r
- getPreferredSize());\r
- annotationScroller.setPreferredSize(annotationPanel.\r
- getPreferredSize());\r
+ adjustAnnotationHeight();\r
+\r
setAnnotationVisible(av.getShowAnnotation());\r
\r
hscroll.addAdjustmentListener(this);\r
switch (evt.getKeyCode())\r
{\r
case 27: // escape key\r
- av.setSelectionGroup(null);\r
- repaint();\r
+ alignFrame.deselectAllSequenceMenuItem_actionPerformed(null);\r
\r
break;\r
\r
case KeyEvent.VK_SPACE:\r
if(av.cursorMode)\r
{\r
- seqPanel.insertGapAtCursor(evt.isControlDown());\r
+ seqPanel.insertGapAtCursor(evt.isControlDown() || evt.isShiftDown());\r
}\r
break;\r
\r
case KeyEvent.VK_DELETE:\r
- if(av.cursorMode)\r
- {\r
- seqPanel.deleteGapAtCursor(evt.isControlDown());\r
- }\r
- break;\r
-\r
case KeyEvent.VK_BACK_SPACE:\r
if(!av.cursorMode)\r
{\r
alignFrame.cut_actionPerformed(null);\r
- seqPanel.seqCanvas.repaint();\r
}\r
+ else\r
+ seqPanel.deleteGapAtCursor(evt.isControlDown() || evt.isShiftDown());\r
+\r
break;\r
\r
case KeyEvent.VK_S:\r
}\r
break;\r
case KeyEvent.VK_C:\r
- if(av.cursorMode)\r
+ if(av.cursorMode && !evt.isControlDown())\r
{\r
seqPanel.setCursorColumn();\r
}\r
ex.printStackTrace();\r
}\r
break;\r
+ case KeyEvent.VK_H:\r
+ {\r
+ SequenceGroup sg = av.getSelectionGroup();\r
+ if(sg!=null && sg.getSize(false)!=av.alignment.getHeight())\r
+ {\r
+ alignFrame.hideSelSequences_actionPerformed(null);\r
+ }\r
+ else\r
+ alignFrame.showAllSeqs_actionPerformed(null);\r
+\r
+ if(av.colSel.getSelected().size()>0)\r
+ alignFrame.hideSelColumns_actionPerformed(null);\r
+ else\r
+ alignFrame.showAllColumns_actionPerformed(null);\r
+\r
+ break;\r
+ }\r
\r
}\r
}\r
}\r
else\r
{\r
- int cwidth = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth());\r
- if( start<av.getStartRes() || start>(av.getStartRes()+cwidth) )\r
- {\r
- vscroll.setValue(start / cwidth);\r
- av.startRes = vscroll.getValue() * cwidth;\r
- }\r
+ scrollToWrappedVisible(start);\r
}\r
}\r
}\r
\r
+ void scrollToWrappedVisible(int res)\r
+ {\r
+ int cwidth = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth());\r
+ if( res<=av.getStartRes() || res>=(av.getStartRes()+cwidth) )\r
+ {\r
+ vscroll.setValue(res / cwidth);\r
+ av.startRes = vscroll.getValue() * cwidth;\r
+ }\r
+ }\r
+\r
/**\r
* DOCUMENT ME!\r
*\r
repaint();\r
}\r
\r
+ public void adjustAnnotationHeight()\r
+ {\r
+ javax.swing.SwingUtilities.invokeLater(new Runnable()\r
+ {\r
+ public void run()\r
+ {\r
+ while(alignFrame.getHeight()==0)\r
+ {\r
+ Thread.yield();\r
+ }\r
+\r
+ int height = annotationPanel.adjustPanelHeight();\r
+\r
+ if (height > alignFrame.getHeight() / 2)\r
+ {\r
+ height = alignFrame.getHeight() / 2;\r
+ }\r
+\r
+ annotationScroller.setPreferredSize(\r
+ new Dimension(annotationScroller.getWidth(),\r
+ height));\r
+\r
+ annotationSpaceFillerHolder.setPreferredSize(new Dimension(\r
+ annotationSpaceFillerHolder.getWidth(),\r
+ height));\r
+\r
+ annotationPanel.repaint();\r
+ }\r
+ });\r
+ }\r
+\r
/**\r
* DOCUMENT ME!\r
*\r
*/\r
public void adjustmentValueChanged(AdjustmentEvent evt)\r
{\r
+\r
int oldX = av.getStartRes();\r
int oldY = av.getStartSeq();\r
\r
\r
if (av.getWrapAlignment())\r
{\r
- int rowSize = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.\r
- seqCanvas.getWidth());\r
- av.setStartRes(vscroll.getValue() * rowSize);\r
- av.setEndRes( (vscroll.getValue() + 1) * rowSize);\r
+ if(offy>-1)\r
+ {\r
+ int rowSize = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.\r
+ seqCanvas.getWidth());\r
+ av.setStartRes(offy * rowSize);\r
+ av.setEndRes( (offy + 1) * rowSize);\r
+ }\r
+ else\r
+ {\r
+ //This is only called if file loaded is a jar file that\r
+ //was wrapped when saved and user has wrap alignment true\r
+ //as preference setting\r
+ SwingUtilities.invokeLater(new Runnable()\r
+ {\r
+ public void run()\r
+ {\r
+ setScrollValues(av.getStartRes(), av.getStartSeq());\r
+ }\r
+ });\r
+ }\r
}\r
else\r
{\r
\r
if (av.getWrapAlignment())\r
{\r
- int max = av.alignment.getWidth() /\r
- seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()) +1;\r
+ int maxwidth = av.alignment.getWidth();\r
+\r
+ if (av.hasHiddenColumns)\r
+ maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;\r
+\r
+ int max = maxwidth /\r
+ seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()) +\r
+ 1;\r
\r
\r
vscroll.setMaximum(max);\r
for (int i = startSeq; i < endSeq; i++)\r
{\r
if ( (av.getSelectionGroup() != null) &&\r
- av.getSelectionGroup().sequences.contains(\r
+ av.getSelectionGroup().getSequences(false).contains(\r
av.getAlignment().getSequenceAt(i)))\r
{\r
currentColor = Color.gray;\r
\r
int idWidth = calculateIdWidth().width + 4;\r
\r
+ int maxwidth = av.alignment.getWidth();\r
+ if (av.hasHiddenColumns)\r
+ maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;\r
+\r
+\r
int resWidth = seqPanel.seqCanvas.getWrappedCanvasWidth(pwidth -\r
idWidth);\r
\r
- int totalHeight = cHeight * (av.alignment.getWidth() / resWidth + 1);\r
+ int totalHeight = cHeight * (maxwidth / resWidth + 1);\r
\r
pg.setColor(Color.white);\r
pg.fillRect(0, 0, pwidth, pheight);\r
\r
void makeAlignmentImage(int type, File file)\r
{\r
- int height = ( (av.alignment.getHeight() + 1) * av.charHeight) + 30;\r
- int width = idPanel.getWidth() + (av.alignment.getWidth() * av.charWidth);\r
+ int maxwidth = av.alignment.getWidth();\r
+ if (av.hasHiddenColumns)\r
+ maxwidth = av.getColumnSelection().findColumnPosition(maxwidth);\r
\r
+ int height = ( (av.alignment.getHeight() + 1) * av.charHeight) + 30;\r
+ int width = idPanel.getWidth() + (maxwidth * av.charWidth);\r
if (idPanel.getWidth() == 0)\r
{\r
width += calculateIdWidth().getWidth() + 4;\r
if (av.getWrapAlignment())\r
{\r
height = getWrappedHeight();\r
- width = seqPanel.getWidth() + idPanel.getWidth();\r
+ if (System.getProperty("java.awt.headless") != null\r
+ && System.getProperty("java.awt.headless").equals("true"))\r
+ {\r
+ width = alignFrame.getWidth() - 22;\r
+ }\r
+ else\r
+ width = seqPanel.getWidth() + idPanel.getWidth();\r
+\r
}\r
else if (av.getShowAnnotation())\r
{\r
if (features[f].getDescription() != null && !features[f].getType().equals(features[f].getDescription()))\r
text.append(" " + features[f].getDescription());\r
\r
- if (features[f].getStatus() != null && features[f].getStatus().length()>0)\r
+ if (features[f].getValue("status") != null )\r
{\r
- text.append(" (" + features[f].getStatus() + ")");\r
+ text.append(" (" + features[f].getValue("status") + ")");\r
}\r
}\r
}\r
\r
int getWrappedHeight()\r
{\r
+ int seqPanelWidth = seqPanel.seqCanvas.getWidth();\r
+\r
+ //If headless, seqPanel will have 0 width\r
+ if (System.getProperty("java.awt.headless") != null\r
+ && System.getProperty("java.awt.headless").equals("true"))\r
+ {\r
+ int idWidth = calculateIdWidth().width + 4;\r
+ seqPanelWidth = alignFrame.getWidth() - idWidth;\r
+ }\r
\r
int chunkWidth = seqPanel.seqCanvas.getWrappedCanvasWidth(\r
- seqPanel.seqCanvas.getWidth());\r
+ seqPanelWidth\r
+ );\r
\r
int hgap = av.charHeight;\r
if (av.scaleAboveWrapped)\r
+ hgap\r
+ annotationHeight;\r
\r
- int height = ( (av.alignment.getWidth() / chunkWidth) + 1) * cHeight;\r
+ int maxwidth = av.alignment.getWidth();\r
+ if (av.hasHiddenColumns)\r
+ maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;\r
+\r
+\r
+ int height = ( (maxwidth / chunkWidth) + 1) * cHeight;\r
\r
return height;\r
}\r