/*\r
* Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
*\r
* This program is free software; you can redistribute it and/or\r
* modify it under the terms of the GNU General Public License\r
\r
import jalview.datamodel.*;\r
\r
-public class AlignmentPanel extends Panel implements AdjustmentListener\r
+public class AlignmentPanel\r
+ extends Panel implements AdjustmentListener\r
{\r
\r
AlignViewport av;\r
// this value is set false when selection area being dragged\r
boolean fastPaint = true;\r
\r
-\r
-\r
public AlignmentPanel(AlignFrame af, final AlignViewport av)\r
{\r
try\r
e.printStackTrace();\r
}\r
\r
-\r
alignFrame = af;\r
this.av = av;\r
seqPanel = new SeqPanel(av, this);\r
\r
}\r
\r
-\r
public void alignmentChanged()\r
{\r
av.alignmentChanged(this);\r
\r
if (overviewPanel != null)\r
+ {\r
overviewPanel.updateOverviewImage();\r
+ }\r
\r
alignFrame.updateEditMenuBar();\r
\r
annotationPanel.repaint();\r
Dimension d = calculateIdWidth();\r
d.setSize(d.width + 4, seqPanel.seqCanvas.getSize().height);\r
- alabels.setSize(d.width+4, ap );\r
+ alabels.setSize(d.width + 4, ap);\r
idPanel.idCanvas.setSize(d);\r
hscrollFillerPanel.setSize(d);\r
\r
validate();\r
repaint();\r
\r
- if(overviewPanel!=null)\r
- overviewPanel.updateOverviewImage();\r
+ if (overviewPanel != null)\r
+ {\r
+ overviewPanel.updateOverviewImage();\r
+ }\r
}\r
\r
public void setIdWidth(int w, int h)\r
{\r
seqPanel.seqCanvas.highlightSearchResults(results);\r
\r
- // do we need to scroll the panel?\r
+ // do we need to scroll the panel?\r
if (results != null)\r
{\r
SequenceI seq = results.getResultSequence(0);\r
int start = seq.findIndex(results.getResultStart(0)) - 1;\r
int end = seq.findIndex(results.getResultEnd(0)) - 1;\r
\r
- if(!av.wrapAlignment)\r
+ if (!av.wrapAlignment)\r
+ {\r
+ if ( (av.getStartRes() > end) || (av.getEndRes() < start) ||\r
+ ( (av.getStartSeq() > seqIndex) || (av.getEndSeq() < seqIndex)))\r
{\r
- if ( (av.getStartRes() > end) || (av.getEndRes() < start) ||\r
- ( (av.getStartSeq() > seqIndex) || (av.getEndSeq() < seqIndex)))\r
+ if (start > av.alignment.getWidth() - hextent)\r
{\r
- if (start > av.alignment.getWidth() - hextent)\r
+ start = av.alignment.getWidth() - hextent;\r
+ if (start < 0)\r
{\r
- start = av.alignment.getWidth() - hextent;\r
- if (start < 0)\r
- start = 0;\r
+ start = 0;\r
}\r
- if (seqIndex > av.alignment.getHeight() - vextent)\r
+ }\r
+ if (seqIndex > av.alignment.getHeight() - vextent)\r
+ {\r
+ seqIndex = av.alignment.getHeight() - vextent;\r
+ if (seqIndex < 0)\r
{\r
- seqIndex = av.alignment.getHeight() - vextent;\r
- if (seqIndex < 0)\r
- seqIndex = 0;\r
+ seqIndex = 0;\r
}\r
- setScrollValues(start, seqIndex);\r
}\r
+ setScrollValues(start, seqIndex);\r
}\r
- else\r
- {\r
- scrollToWrappedVisible(start);\r
- }\r
+ }\r
+ else\r
+ {\r
+ scrollToWrappedVisible(start);\r
+ }\r
}\r
\r
repaint();\r
\r
void scrollToWrappedVisible(int res)\r
{\r
- int cwidth = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getSize().width);\r
+ int cwidth = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.\r
+ getSize().width);\r
if (res <= av.getStartRes() || res >= (av.getStartRes() + cwidth))\r
{\r
vscroll.setValue(res / cwidth);\r
}\r
}\r
\r
-\r
public OverviewPanel getOverviewPanel()\r
{\r
return overviewPanel;\r
av.startRes = 0;\r
scalePanelHolder.setVisible(!wrap);\r
\r
-\r
hscroll.setVisible(!wrap);\r
idwidthAdjuster.setVisible(!wrap);\r
\r
annotationSpaceFillerHolder.setVisible(true);\r
}\r
\r
-\r
idSpaceFillerPanel1.setVisible(!wrap);\r
\r
- fontChanged();//This is so that the scalePanel is resized correctly\r
+ fontChanged(); //This is so that the scalePanel is resized correctly\r
\r
validate();\r
repaint();\r
\r
}\r
\r
-\r
int hextent = 0;\r
int vextent = 0;\r
\r
{\r
return false;\r
}\r
- setScrollValues(hscroll.getValue(), vscroll.getValue()-1);\r
+ setScrollValues(hscroll.getValue(), vscroll.getValue() - 1);\r
}\r
else\r
{\r
{\r
return false;\r
}\r
- setScrollValues(hscroll.getValue(), vscroll.getValue()+1);\r
+ setScrollValues(hscroll.getValue(), vscroll.getValue() + 1);\r
}\r
\r
repaint();\r
{\r
return false;\r
}\r
- setScrollValues(hscroll.getValue()-1, vscroll.getValue());\r
+ setScrollValues(hscroll.getValue() - 1, vscroll.getValue());\r
}\r
else\r
{\r
{\r
return false;\r
}\r
- setScrollValues(hscroll.getValue()+1, vscroll.getValue());\r
+ setScrollValues(hscroll.getValue() + 1, vscroll.getValue());\r
}\r
\r
repaint();\r
int width = av.alignment.getWidth();\r
int height = av.alignment.getHeight();\r
\r
- if(av.hasHiddenColumns)\r
- width = av.getColumnSelection().findColumnPosition(width);\r
+ if (av.hasHiddenColumns)\r
+ {\r
+ width = av.getColumnSelection().findColumnPosition(width);\r
+ }\r
\r
av.setStartRes(x);\r
- av.setEndRes( (x + (seqPanel.seqCanvas.getSize().width / av.charWidth)) -1);\r
+ av.setEndRes( (x + (seqPanel.seqCanvas.getSize().width / av.charWidth)) - 1);\r
\r
hextent = seqPanel.seqCanvas.getSize().width / av.charWidth;\r
vextent = seqPanel.seqCanvas.getSize().height / av.charHeight;\r
hscroll.setValues(x, hextent, 0, width);\r
vscroll.setValues(y, vextent, 0, height);\r
\r
- if(overviewPanel!=null)\r
- overviewPanel.setBoxPosition();\r
+ if (overviewPanel != null)\r
+ {\r
+ overviewPanel.setBoxPosition();\r
+ }\r
\r
}\r
\r
int oldX = av.getStartRes();\r
int oldY = av.getStartSeq();\r
\r
-\r
- if (evt==null || evt.getSource() == hscroll)\r
+ if (evt == null || evt.getSource() == hscroll)\r
{\r
int x = hscroll.getValue();\r
av.setStartRes(x);\r
1);\r
}\r
\r
-\r
- if (evt==null || evt.getSource() == vscroll)\r
+ if (evt == null || evt.getSource() == vscroll)\r
{\r
int offy = vscroll.getValue();\r
if (av.getWrapAlignment())\r
{\r
// Make sure we're not trying to draw a panel\r
// larger than the visible window\r
- if(scrollX>av.endRes-av.startRes)\r
+ if (scrollX > av.endRes - av.startRes)\r
{\r
scrollX = av.endRes - av.startRes;\r
}\r
- else if(scrollX<av.startRes-av.endRes)\r
+ else if (scrollX < av.startRes - av.endRes)\r
+ {\r
scrollX = av.startRes - av.endRes;\r
+ }\r
\r
idPanel.idCanvas.fastPaint(scrollY);\r
seqPanel.seqCanvas.fastPaint(scrollX,\r
int maxwidth = av.alignment.getWidth();\r
\r
if (av.hasHiddenColumns)\r
+ {\r
maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;\r
+ }\r
\r
int canvasWidth = seqPanel.seqCanvas.getWrappedCanvasWidth\r
(seqPanel.seqCanvas.getSize().width);\r
\r
- if(canvasWidth>0)\r
+ if (canvasWidth > 0)\r
{\r
int max = maxwidth / canvasWidth;\r
vscroll.setMaximum(max);\r
if (getBounds() == g.getClipBounds())\r
{\r
if (overviewPanel != null)\r
+ {\r
overviewPanel.updateOverviewImage();\r
+ }\r
}\r
\r
}\r
BorderLayout borderLayout4 = new BorderLayout();\r
BorderLayout borderLayout2 = new BorderLayout();\r
\r
- private void jbInit() throws Exception {\r
- // idPanelHolder.setPreferredSize(new Dimension(70, 10));\r
- this.setLayout(borderLayout7);\r
-\r
- // sequenceHolderPanel.setPreferredSize(new Dimension(150, 150));\r
- sequenceHolderPanel.setLayout(borderLayout3);\r
- seqPanelHolder.setLayout(borderLayout1);\r
- scalePanelHolder.setBackground(Color.white);\r
-\r
- // scalePanelHolder.setPreferredSize(new Dimension(10, 30));\r
- scalePanelHolder.setLayout(borderLayout6);\r
- idPanelHolder.setLayout(borderLayout5);\r
- idSpaceFillerPanel1.setBackground(Color.white);\r
-\r
- // idSpaceFillerPanel1.setPreferredSize(new Dimension(10, 30));\r
- idSpaceFillerPanel1.setLayout(borderLayout11);\r
- annotationSpaceFillerHolder.setBackground(Color.white);\r
-\r
- // annotationSpaceFillerHolder.setPreferredSize(new Dimension(10, 80));\r
- annotationSpaceFillerHolder.setLayout(borderLayout4);\r
- hscroll.setOrientation(Scrollbar.HORIZONTAL);\r
- hscrollHolder.setLayout(borderLayout10);\r
- hscrollFillerPanel.setBackground(Color.white);\r
-\r
- // hscrollFillerPanel.setPreferredSize(new Dimension(70, 10));\r
- hscrollHolder.setBackground(Color.white);\r
-\r
- // annotationScroller.setPreferredSize(new Dimension(10, 80));\r
- // this.setPreferredSize(new Dimension(220, 166));\r
- seqPanelHolder.setBackground(Color.white);\r
- idPanelHolder.setBackground(Color.white);\r
- sequenceHolderPanel.add(scalePanelHolder, BorderLayout.NORTH);\r
- sequenceHolderPanel.add(seqPanelHolder, BorderLayout.CENTER);\r
- seqPanelHolder.add(vscroll, BorderLayout.EAST);\r
-\r
- // Panel3.add(secondaryPanelHolder, BorderLayout.SOUTH);\r
- this.add(idPanelHolder, BorderLayout.WEST);\r
- idPanelHolder.add(idSpaceFillerPanel1, BorderLayout.NORTH);\r
- idPanelHolder.add(annotationSpaceFillerHolder, BorderLayout.SOUTH);\r
- this.add(hscrollHolder, BorderLayout.SOUTH);\r
- hscrollHolder.add(hscroll, BorderLayout.CENTER);\r
- hscrollHolder.add(hscrollFillerPanel, BorderLayout.WEST);\r
- this.add(sequenceHolderPanel, BorderLayout.CENTER);\r
+ private void jbInit()\r
+ throws Exception\r
+ {\r
+ // idPanelHolder.setPreferredSize(new Dimension(70, 10));\r
+ this.setLayout(borderLayout7);\r
+\r
+ // sequenceHolderPanel.setPreferredSize(new Dimension(150, 150));\r
+ sequenceHolderPanel.setLayout(borderLayout3);\r
+ seqPanelHolder.setLayout(borderLayout1);\r
+ scalePanelHolder.setBackground(Color.white);\r
+\r
+ // scalePanelHolder.setPreferredSize(new Dimension(10, 30));\r
+ scalePanelHolder.setLayout(borderLayout6);\r
+ idPanelHolder.setLayout(borderLayout5);\r
+ idSpaceFillerPanel1.setBackground(Color.white);\r
+\r
+ // idSpaceFillerPanel1.setPreferredSize(new Dimension(10, 30));\r
+ idSpaceFillerPanel1.setLayout(borderLayout11);\r
+ annotationSpaceFillerHolder.setBackground(Color.white);\r
+\r
+ // annotationSpaceFillerHolder.setPreferredSize(new Dimension(10, 80));\r
+ annotationSpaceFillerHolder.setLayout(borderLayout4);\r
+ hscroll.setOrientation(Scrollbar.HORIZONTAL);\r
+ hscrollHolder.setLayout(borderLayout10);\r
+ hscrollFillerPanel.setBackground(Color.white);\r
+\r
+ // hscrollFillerPanel.setPreferredSize(new Dimension(70, 10));\r
+ hscrollHolder.setBackground(Color.white);\r
+\r
+ // annotationScroller.setPreferredSize(new Dimension(10, 80));\r
+ // this.setPreferredSize(new Dimension(220, 166));\r
+ seqPanelHolder.setBackground(Color.white);\r
+ idPanelHolder.setBackground(Color.white);\r
+ sequenceHolderPanel.add(scalePanelHolder, BorderLayout.NORTH);\r
+ sequenceHolderPanel.add(seqPanelHolder, BorderLayout.CENTER);\r
+ seqPanelHolder.add(vscroll, BorderLayout.EAST);\r
+\r
+ // Panel3.add(secondaryPanelHolder, BorderLayout.SOUTH);\r
+ this.add(idPanelHolder, BorderLayout.WEST);\r
+ idPanelHolder.add(idSpaceFillerPanel1, BorderLayout.NORTH);\r
+ idPanelHolder.add(annotationSpaceFillerHolder, BorderLayout.SOUTH);\r
+ this.add(hscrollHolder, BorderLayout.SOUTH);\r
+ hscrollHolder.add(hscroll, BorderLayout.CENTER);\r
+ hscrollHolder.add(hscrollFillerPanel, BorderLayout.WEST);\r
+ this.add(sequenceHolderPanel, BorderLayout.CENTER);\r
}\r
\r
}\r