/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
*
* This file is part of Jalview.
*
public boolean scrollToPosition(SearchResults results,
boolean redrawOverview)
{
+
// do we need to scroll the panel?
if (results != null && results.getSize() > 0)
{
- int seqIndex = av.alignment.findIndex(results);
+ AlignmentI alignment=av.getAlignment();
+ int seqIndex = alignment.findIndex(results);
if (seqIndex == -1)
{
return false;
}
- SequenceI seq = av.alignment.getSequenceAt(seqIndex);
- int[] r = results.getResults(seq, 0,av.alignment.getWidth());
+ SequenceI seq = alignment.getSequenceAt(seqIndex);
+ int[] r = results.getResults(seq, 0,alignment.getWidth());
if (r == null)
{
if (av.applet.debug) {// DEBUG
}
if (av.applet.debug) {
// DEBUG
- System.out.println("DEBUG: scroll: start=" + r[0]
+ /*System.out.println("DEBUG: scroll: start=" + r[0]
+ " av.getStartRes()=" + av.getStartRes() + " end=" + r[1]
+ " seq.end=" + seq.getEnd() + " av.getEndRes()="
+ av.getEndRes() + " hextent=" + hextent);
+ */
}
int start = r[0];
int end = r[1];
}
public boolean scrollTo(int ostart, int end, int seqIndex, boolean scrollToNearest, boolean redrawOverview)
{
- int start=-1;
- if (av.hasHiddenColumns)
+ int startv, endv, starts, ends, width;
+
+ int start=-1;
+ if (av.hasHiddenColumns())
{
start = av.getColumnSelection().findColumnPosition(ostart);
end = av.getColumnSelection().findColumnPosition(end);
if (start == end)
{
- if (!scrollToNearest && !av.colSel.isVisible(ostart))
+ if (!scrollToNearest && !av.getColumnSelection().isVisible(ostart))
{
// don't scroll - position isn't visible
return false;
}
- }
}
- if (!av.wrapAlignment)
- {
+ }
+ else
+ {
+ start = ostart;
+ }
+ if (!av.wrapAlignment)
+ {
+ /*
+ int spos=av.getStartRes(),sqpos=av.getStartSeq();
+ if ((startv = av.getStartRes()) >= start)
+ {
+ spos=start-1;
+// seqIn
+// setScrollValues(start - 1, seqIndex);
+ }
+ else if ((endv = av.getEndRes()) <= end)
+ {
+// setScrollValues(spos=startv + 1 + end - endv, seqIndex);
+ spos=startv + 1 + end - endv;
+ }
+ else if ((starts = av.getStartSeq()) > seqIndex)
+ {
+ setScrollValues(av.getStartRes(), seqIndex);
+ }
+ else if ((ends = av.getEndSeq()) <= seqIndex)
+ {
+ setScrollValues(av.getStartRes(), starts + seqIndex - ends + 1);
+ }
+
+ /* */
if ((av.getStartRes() > end)
|| (av.getEndRes() < start)
|| ((av.getStartSeq() > seqIndex) || (av.getEndSeq() < seqIndex)))
{
- if (start > av.alignment.getWidth() - hextent)
+ if (start > av.getAlignment().getWidth() - hextent)
{
- start = av.alignment.getWidth() - hextent;
+ start = av.getAlignment().getWidth() - hextent;
if (start < 0)
{
start = 0;
}
}
- if (seqIndex > av.alignment.getHeight() - vextent)
+ if (seqIndex > av.getAlignment().getHeight() - vextent)
{
- seqIndex = av.alignment.getHeight() - vextent;
+ seqIndex = av.getAlignment().getHeight() - vextent;
if (seqIndex < 0)
{
seqIndex = 0;
}
}
+ // System.out.println("trying to scroll to: "+start+" "+seqIndex);
setScrollValues(start, seqIndex);
- }
+ }/**/
}
else
{
apvscroll.addNotify();
hscroll.addNotify();
validate();
- repaint();
+ paintAlignment(true);
}
/**
* calculate the annotation dimensions and refresh slider values accordingly.
annotationSpaceFillerHolder.setSize(new Dimension(e.width, height));
annotationPanelHolder.setSize(new Dimension(d.width, height));
seqPanelHolder.setSize(d.width,seqandannot-height);
+ seqPanel.seqCanvas.setSize(d.width, seqPanel.seqCanvas.getSize().height);
int s=apvscroll.getValue();
if (s>mheight-height)
{
public void setScrollValues(int x, int y)
{
- int width = av.alignment.getWidth();
- int height = av.alignment.getHeight();
+ int width = av.getAlignment().getWidth();
+ int height = av.getAlignment().getHeight();
- if (av.hasHiddenColumns)
+ if (av.hasHiddenColumns())
{
width = av.getColumnSelection().findColumnPosition(width);
}
-
- av.setStartRes(x);
- av.setEndRes((x + (seqPanel.seqCanvas.getSize().width / av.charWidth)) - 1);
+ if (x<0) { x = 0; };
hextent = seqPanel.seqCanvas.getSize().width / av.charWidth;
vextent = seqPanel.seqCanvas.getSize().height / av.charHeight;
if ((hextent + x) > width)
{
+ System.err.println("hextent was "+hextent+" and x was "+x);
+
x = width - hextent;
}
if (x < 0)
{
+ System.err.println("x was "+x);
x = 0;
}
av.setStartSeq(y);
int endSeq = y + vextent;
- if (endSeq > av.alignment.getHeight())
+ if (endSeq > av.getAlignment().getHeight())
{
- endSeq = av.alignment.getHeight();
+ endSeq = av.getAlignment().getHeight();
}
av.setEndSeq(endSeq);
+ av.setStartRes(x);
+ av.setEndRes((x + (seqPanel.seqCanvas.getSize().width / av.charWidth)) - 1);
+
hscroll.setValues(x, hextent, 0, width);
vscroll.setValues(y, vextent, 0, height);
if (av.getWrapAlignment())
{
- int maxwidth = av.alignment.getWidth();
+ int maxwidth = av.getAlignment().getWidth();
- if (av.hasHiddenColumns)
+ if (av.hasHiddenColumns())
{
maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;
}
// remove old automatic annotation
// add any new annotation
- Vector gr = av.alignment.getGroups(); // OrderedBy(av.alignment.getSequencesArray());
+ Vector gr = av.getAlignment().getGroups(); // OrderedBy(av.alignment.getSequencesArray());
// intersect alignment annotation with alignment groups
- AlignmentAnnotation[] aan = av.alignment.getAlignmentAnnotation();
+ AlignmentAnnotation[] aan = av.getAlignment().getAlignmentAnnotation();
Hashtable oldrfs = new Hashtable();
if (aan != null)
{
if (aan[an].autoCalculated && aan[an].groupRef != null)
{
oldrfs.put(aan[an].groupRef, aan[an].groupRef);
- av.alignment.deleteAnnotation(aan[an]);
+ av.getAlignment().deleteAnnotation(aan[an]);
aan[an] = null;
}
}
if (conv)
{
updateCalcs = true;
- av.alignment.addAnnotation(sg.getConservationRow(), 0);
+ av.getAlignment().addAnnotation(sg.getConservationRow(), 0);
}
if (cons)
{
updateCalcs = true;
- av.alignment.addAnnotation(sg.getConsensus(), 0);
+ av.getAlignment().addAnnotation(sg.getConsensus(), 0);
}
// refresh the annotation rows
if (updateCalcs)
@Override
public AlignmentI getAlignment()
{
- return av.alignment;
+ return av.getAlignment();
}
@Override
public StructureSelectionManager getStructureSelectionManager()
{
return StructureSelectionManager.getStructureSelectionManager(av.applet);
}
+ @Override
+ public void raiseOOMWarning(String string, OutOfMemoryError error)
+ {
+ // TODO: JAL-960
+ System.err.println("Out of memory whilst '"+string+"'");
+ error.printStackTrace();
+ }
}