/*
- * Jalview - A Sequence Alignment Editor and Viewer
- * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
- *
+ * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)
+ * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ *
* This program 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 2
* of the License, or (at your option) any later version.
- *
+ *
* This program 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 this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
-
package jalview.appletgui;
import java.awt.*;
import jalview.datamodel.*;
-public class AlignmentPanel
- extends Panel implements AdjustmentListener
+public class AlignmentPanel extends Panel implements AdjustmentListener
{
public AlignViewport av;
+
OverviewPanel overviewPanel;
+
SeqPanel seqPanel;
+
IdPanel idPanel;
+
IdwidthAdjuster idwidthAdjuster;
+
public AlignFrame alignFrame;
+
ScalePanel scalePanel;
+
AnnotationPanel annotationPanel;
+
AnnotationLabels alabels;
// this value is set false when selection area being dragged
try
{
jbInit();
- }
- catch (Exception e)
+ } catch (Exception e)
{
e.printStackTrace();
}
idPanel.idCanvas.setSize(d.width, seqPanel.seqCanvas.getSize().height);
annotationSpaceFillerHolder.setSize(d.width,
- annotationPanel.getSize().height);
+ annotationPanel.getSize().height);
alabels.setSize(d.width, annotationPanel.getSize().height);
final AlignmentPanel ap = this;
{
if (evt.getPropertyName().equals("alignment"))
{
- PaintRefresher.Refresh(ap,
- av.getSequenceSetId(),
- true,
- true);
+ PaintRefresher.Refresh(ap, av.getSequenceSetId(), true, true);
alignmentChanged();
}
}
FontMetrics fm = getFontMetrics(av.getFont());
scalePanel.setSize(new Dimension(10, av.charHeight + fm.getDescent()));
- idwidthAdjuster.setSize(new Dimension(10, av.charHeight + fm.getDescent()));
+ idwidthAdjuster.setSize(new Dimension(10, av.charHeight
+ + fm.getDescent()));
av.updateSequenceIdColours();
annotationPanel.image = null;
int ap = annotationPanel.adjustPanelHeight();
public void highlightSearchResults(SearchResults results)
{
seqPanel.seqCanvas.highlightSearchResults(results);
-
+ }
+ /**
+ * scroll the view to show the position of the highlighted
+ * region in results (if any)
+ * @param results
+ */
+ public void scrollToPosition(SearchResults results)
+ {
// do we need to scroll the panel?
- if (results != null)
+ if (results != null && results.getSize()>0)
{
- SequenceI seq = results.getResultSequence(0);
- int seqIndex = av.alignment.findIndex(seq);
- int start = seq.findIndex(results.getResultStart(0)) - 1;
- int end = seq.findIndex(results.getResultEnd(0)) - 1;
-
+ int seqIndex = av.alignment.findIndex(results);
+ if (seqIndex==-1)
+ {
+ return;
+ }
+ SequenceI seq = av.alignment.getSequenceAt(seqIndex);
+ int [] r = results.getResults(seq, seq.getStart(), seq.getEnd());
+ if (r==null)
+ {
+ return;
+ }
+ int start = r[0];
+ int end = r[1];
+ if (start<0)
+ {
+ return;
+ }
+ if (end==seq.getEnd())
+ {
+ return;
+ }
if (!av.wrapAlignment)
{
- if ( (av.getStartRes() > end) || (av.getEndRes() < start) ||
- ( (av.getStartSeq() > seqIndex) || (av.getEndSeq() < seqIndex)))
+ if ((av.getStartRes() > end)
+ || (av.getEndRes() < start)
+ || ((av.getStartSeq() > seqIndex) || (av.getEndSeq() < seqIndex)))
{
if (start > av.alignment.getWidth() - hextent)
{
void scrollToWrappedVisible(int res)
{
- int cwidth = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.
- getSize().width);
+ int cwidth = seqPanel.seqCanvas
+ .getWrappedCanvasWidth(seqPanel.seqCanvas.getSize().width);
if (res <= av.getStartRes() || res >= (av.getStartRes() + cwidth))
{
vscroll.setValue(res / cwidth);
idSpaceFillerPanel1.setVisible(!wrap);
- fontChanged(); //This is so that the scalePanel is resized correctly
+ fontChanged(); // This is so that the scalePanel is resized correctly
validate();
repaint();
}
int hextent = 0;
+
int vextent = 0;
// return value is true if the scroll is valid
}
av.setStartRes(x);
- av.setEndRes( (x + (seqPanel.seqCanvas.getSize().width / av.charWidth)) - 1);
+ av
+ .setEndRes((x + (seqPanel.seqCanvas.getSize().width / av.charWidth)) - 1);
hextent = seqPanel.seqCanvas.getSize().width / av.charWidth;
vextent = seqPanel.seqCanvas.getSize().height / av.charHeight;
vextent = height;
}
- if ( (hextent + x) > width)
+ if ((hextent + x) > width)
{
x = width - hextent;
}
- if ( (vextent + y) > height)
+ if ((vextent + y) > height)
{
y = height - vextent;
}
{
int x = hscroll.getValue();
av.setStartRes(x);
- av.setEndRes(x + seqPanel.seqCanvas.getSize().width / av.getCharWidth() -
- 1);
+ av.setEndRes(x + seqPanel.seqCanvas.getSize().width
+ / av.getCharWidth() - 1);
}
if (evt == null || evt.getSource() == vscroll)
int offy = vscroll.getValue();
if (av.getWrapAlignment())
{
- int rowSize = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.
- seqCanvas.getSize().width);
+ int rowSize = seqPanel.seqCanvas
+ .getWrappedCanvasWidth(seqPanel.seqCanvas.getSize().width);
av.setStartRes(vscroll.getValue() * rowSize);
- av.setEndRes( (vscroll.getValue() + 1) * rowSize);
+ av.setEndRes((vscroll.getValue() + 1) * rowSize);
}
else
{
av.setStartSeq(offy);
- av.setEndSeq(offy +
- seqPanel.seqCanvas.getSize().height / av.getCharHeight());
+ av.setEndSeq(offy + seqPanel.seqCanvas.getSize().height
+ / av.getCharHeight());
}
}
}
idPanel.idCanvas.fastPaint(scrollY);
- seqPanel.seqCanvas.fastPaint(scrollX,
- scrollY);
+ seqPanel.seqCanvas.fastPaint(scrollX, scrollY);
scalePanel.repaint();
if (av.getShowAnnotation())
{
repaint();
- if(updateOverview)
+ if (updateOverview)
{
- jalview.structure.StructureSelectionManager.getStructureSelectionManager()
- .sequenceColoursChanged(this);
+ jalview.structure.StructureSelectionManager
+ .getStructureSelectionManager().sequenceColoursChanged(this);
if (overviewPanel != null)
{
Dimension d = idPanel.idCanvas.getSize();
idPanel.idCanvas.setSize(d.width, seqPanel.seqCanvas.getSize().height);
annotationSpaceFillerHolder.setSize(d.width,
- annotationPanel.getSize().height);
+ annotationPanel.getSize().height);
alabels.setSize(d.width, annotationPanel.getSize().height);
maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;
}
- int canvasWidth = seqPanel.seqCanvas.getWrappedCanvasWidth
- (seqPanel.seqCanvas.getSize().width);
+ int canvasWidth = seqPanel.seqCanvas
+ .getWrappedCanvasWidth(seqPanel.seqCanvas.getSize().width);
if (canvasWidth > 0)
{
}
protected Panel sequenceHolderPanel = new Panel();
+
protected Scrollbar vscroll = new Scrollbar();
+
protected Scrollbar hscroll = new Scrollbar();
+
protected Panel seqPanelHolder = new Panel();
+
BorderLayout borderLayout1 = new BorderLayout();
+
BorderLayout borderLayout3 = new BorderLayout();
+
protected Panel scalePanelHolder = new Panel();
+
protected Panel idPanelHolder = new Panel();
+
BorderLayout borderLayout5 = new BorderLayout();
+
protected Panel idSpaceFillerPanel1 = new Panel();
+
public Panel annotationSpaceFillerHolder = new Panel();
+
BorderLayout borderLayout6 = new BorderLayout();
+
BorderLayout borderLayout7 = new BorderLayout();
+
Panel hscrollHolder = new Panel();
+
BorderLayout borderLayout10 = new BorderLayout();
+
protected Panel hscrollFillerPanel = new Panel();
+
BorderLayout borderLayout11 = new BorderLayout();
+
BorderLayout borderLayout4 = new BorderLayout();
+
BorderLayout borderLayout2 = new BorderLayout();
- private void jbInit()
- throws Exception
+ private void jbInit() throws Exception
{
- // idPanelHolder.setPreferredSize(new Dimension(70, 10));
+ // idPanelHolder.setPreferredSize(new Dimension(70, 10));
this.setLayout(borderLayout7);
- // sequenceHolderPanel.setPreferredSize(new Dimension(150, 150));
+ // sequenceHolderPanel.setPreferredSize(new Dimension(150, 150));
sequenceHolderPanel.setLayout(borderLayout3);
seqPanelHolder.setLayout(borderLayout1);
scalePanelHolder.setBackground(Color.white);
idPanelHolder.setLayout(borderLayout5);
idSpaceFillerPanel1.setBackground(Color.white);
- // idSpaceFillerPanel1.setPreferredSize(new Dimension(10, 30));
+ // idSpaceFillerPanel1.setPreferredSize(new Dimension(10, 30));
idSpaceFillerPanel1.setLayout(borderLayout11);
annotationSpaceFillerHolder.setBackground(Color.white);
- // annotationSpaceFillerHolder.setPreferredSize(new Dimension(10, 80));
+ // annotationSpaceFillerHolder.setPreferredSize(new Dimension(10, 80));
annotationSpaceFillerHolder.setLayout(borderLayout4);
hscroll.setOrientation(Scrollbar.HORIZONTAL);
hscrollHolder.setLayout(borderLayout10);
hscrollFillerPanel.setBackground(Color.white);
- // hscrollFillerPanel.setPreferredSize(new Dimension(70, 10));
+ // hscrollFillerPanel.setPreferredSize(new Dimension(70, 10));
hscrollHolder.setBackground(Color.white);
- // annotationScroller.setPreferredSize(new Dimension(10, 80));
- // this.setPreferredSize(new Dimension(220, 166));
+ // annotationScroller.setPreferredSize(new Dimension(10, 80));
+ // this.setPreferredSize(new Dimension(220, 166));
seqPanelHolder.setBackground(Color.white);
idPanelHolder.setBackground(Color.white);
sequenceHolderPanel.add(scalePanelHolder, BorderLayout.NORTH);
sequenceHolderPanel.add(seqPanelHolder, BorderLayout.CENTER);
seqPanelHolder.add(vscroll, BorderLayout.EAST);
- // Panel3.add(secondaryPanelHolder, BorderLayout.SOUTH);
+ // Panel3.add(secondaryPanelHolder, BorderLayout.SOUTH);
this.add(idPanelHolder, BorderLayout.WEST);
idPanelHolder.add(idSpaceFillerPanel1, BorderLayout.NORTH);
idPanelHolder.add(annotationSpaceFillerHolder, BorderLayout.SOUTH);