int oldstartres = oldvalues[0];
int oldendres = oldvalues[1];
+ if (oldstartres == startRes && oldendres == endRes)
+ {
+ return; // BH 2019.07.27 standard check for no changes
+ }
+
+ // listeners include:
+
+ // jalview.gui.SeqCanvas[,0,0,568x90,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+ // STARTRES, STARTRESANDSEQ
+ // jalview.gui.IdCanvas[,0,0,112x90,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=112,height=0]]
+ // jalview.gui.ScalePanel[,0,0,594x17,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
+ // jalview.gui.AnnotationPanel[,0,0,0x162,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=1,height=162]]
+ // jalview.gui.AlignmentPanel[,0,0,706x133,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777225,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=220,height=166]]
+ // jalview.gui.OverviewPanel[,0,0,543x135,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=543,height=135]]
+
+
+ // "STARTRES" is a misnomer here -- really "STARTORENDRES"
+ // note that this could be "no change" if the range is just being expanded
changeSupport.firePropertyChange(STARTRES, oldstartres, startRes);
if (oldstartres == startRes)
{
- // event won't be fired if start positions are same
- // fire an event for the end positions in case they changed
+ // No listener cares about this
+ // "ENDRES" is a misnomer here -- really "ENDONLYRES"
+ // BH 2019.07.27 adds end change check
+ // fire only if only the end is changed
changeSupport.firePropertyChange(ENDRES, oldendres, endRes);
}
}
*/
public void setStartSeq(int seq)
{
- int startseq = seq;
int height = getViewportHeight();
- if (startseq + height - 1 > getVisibleAlignmentHeight() - 1)
- {
- startseq = getVisibleAlignmentHeight() - height;
- }
+ int startseq = Math.max(seq, getVisibleAlignmentHeight() - height);
+ // BH 2019.07.27 cosmetic only -- was:
+ // if (startseq + height - 1 > getVisibleAlignmentHeight() - 1)
+ // {
+ // startseq = getVisibleAlignmentHeight() - height;
+ // }
setStartEndSeq(startseq, startseq + height - 1);
}
int oldstartseq = oldvalues[0];
int oldendseq = oldvalues[1];
+ if (oldstartseq == startSeq && oldendseq == endSeq)
+ {
+ return; // BH 2019.07.27 standard check for no changes
+ }
+
+ // "STARTSEQ" is a misnomer here -- really "STARTORENDSEQ"
changeSupport.firePropertyChange(STARTSEQ, oldstartseq, startSeq);
if (oldstartseq == startSeq)
{
- // event won't be fired if start positions are the same
- // fire in case the end positions changed
+ // Note that all listeners ignore this - could be removed, or there is a
+ // bug.
+ // "ENDSEQ" is a misnomer here -- really "ENDONLYSEQ"
+ // additional fire, only if only the end is changed
changeSupport.firePropertyChange(ENDSEQ, oldendseq, endSeq);
}
}
*/
public void setStartResAndSeq(int res, int seq)
{
+ // from Overview only
int width = getViewportWidth();
int[] oldresvalues = updateStartEndRes(res, res + width - 1);
}
int[] oldseqvalues = updateStartEndSeq(startseq, startseq + height - 1);
- int[] old = new int[] { oldresvalues[0], oldseqvalues[0] };
- int[] newresseq = new int[] { startRes, startSeq };
- changeSupport.firePropertyChange(STARTRESANDSEQ, old, newresseq);
+ int[] oldvalues = new int[] { oldresvalues[0], oldseqvalues[0] };
+ int[] newvalues = new int[] { startRes, startSeq };
+ changeSupport.firePropertyChange(STARTRESANDSEQ, oldvalues, newvalues);
}
/**
}
/**
- * Set the viewport location so that a position is visible
+ * Set the viewport location so that a position is visible. From
+ * SeqPanel.scrollToVisible(true) only, from AlignFrame keyboard actions
+ * SeqPanel.scrollCursor[Row(VK_S)/Column(VK_C)/RowAndColumn(VK_ENTER,COMMA)/Position(VK_P)]
+ *
*
* @param x
* column to be visible: absolute position in alignment