*/
private boolean needOverviewUpdate; // TODO: refactor to avcontroller
+ /**
+ * set if av.getSelectionGroup() refers to a group that is defined on the
+ * alignment view, rather than a transient selection
+ */
+ private boolean editingDefinedGroup = false; // TODO: refactor to avcontroller
+ // or viewModel
+
@Override
public void mouseDragged(MouseEvent evt)
{
&& res < stretchGroup.getEndRes())
{
av.setSelectionGroup(stretchGroup);
+ editingDefinedGroup = true;
}
else
{
stretchGroup = null;
+ editingDefinedGroup = false;
}
}
&& allGroups[i].getEndRes() >= res)
{
stretchGroup = allGroups[i];
+ editingDefinedGroup = true;
break;
}
}
sg.setEndRes(res);
sg.addSequence(sequence, false);
av.setSelectionGroup(sg);
+ editingDefinedGroup = false;
stretchGroup = sg;
if (av.getConservationSelected())
{
return;
}
-
- stretchGroup.recalcConservation(); // always do this - annotation has own
- // state
+ // always do this - annotation has own state
+ // but defer colourscheme update until hidden sequences are passed in
+ boolean vischange = stretchGroup.recalcConservation(true);
+ needOverviewUpdate |= vischange && editingDefinedGroup;
if (stretchGroup.cs != null)
{
stretchGroup.cs.alignmentChanged(stretchGroup,
}
PaintRefresher.Refresh(ap, av.getSequenceSetId());
ap.paintAlignment(needOverviewUpdate);
+ needOverviewUpdate =false;
+ editingDefinedGroup = false;
changeEndRes = false;
changeStartRes = false;
stretchGroup = null;
if (res > (stretchGroup.getStartRes() - 1))
{
stretchGroup.setEndRes(res);
+ needOverviewUpdate |= editingDefinedGroup;
}
}
else if (changeStartRes)
if (res < (stretchGroup.getEndRes() + 1))
{
stretchGroup.setStartRes(res);
+ needOverviewUpdate |= editingDefinedGroup;
}
}
if (stretchGroup.getSequences(null).contains(nextSeq))
{
stretchGroup.deleteSequence(seq, false);
+ needOverviewUpdate |= editingDefinedGroup;
}
else
{
}
stretchGroup.addSequence(nextSeq, false);
+ needOverviewUpdate |= editingDefinedGroup;
}
}
private boolean needOverviewUpdate = false; // TODO: refactor to avcontroller
/**
+ * set if av.getSelectionGroup() refers to a group that is defined on the
+ * alignment view, rather than a transient selection
+ */
+ private boolean editingDefinedGroup = false; // TODO: refactor to avcontroller or viewModel
+
+ /**
* Set status message in alignment panel
*
* @param sequence
&& (res < stretchGroup.getEndRes()))
{
av.setSelectionGroup(stretchGroup);
+ editingDefinedGroup = true;
}
else
{
stretchGroup = null;
+ editingDefinedGroup = false;
}
}
else if (!stretchGroup.getSequences(null).contains(sequence)
&& (allGroups[i].getEndRes() >= res))
{
stretchGroup = allGroups[i];
+ editingDefinedGroup = true;
break;
}
}
sg.setEndRes(res);
sg.addSequence(sequence, false);
av.setSelectionGroup(sg);
-
+ editingDefinedGroup = false;
stretchGroup = sg;
if (av.getConservationSelected())
{
return;
}
-
- stretchGroup.recalcConservation(); // always do this - annotation has own
- // state
+ // always do this - annotation has own state
+ // but defer colourscheme update until hidden sequences are passed in
+ boolean vischange = stretchGroup.recalcConservation(true);
+ needOverviewUpdate |= vischange && editingDefinedGroup;
if (stretchGroup.cs != null)
{
stretchGroup.cs.alignmentChanged(stretchGroup,
}
PaintRefresher.Refresh(this, av.getSequenceSetId());
ap.paintAlignment(needOverviewUpdate);
-
+ needOverviewUpdate =false;
+ editingDefinedGroup = false;
changeEndRes = false;
changeStartRes = false;
stretchGroup = null;
if (res > (stretchGroup.getStartRes() - 1))
{
stretchGroup.setEndRes(res);
+ needOverviewUpdate |= editingDefinedGroup;
}
}
else if (changeStartRes)
if (res < (stretchGroup.getEndRes() + 1))
{
stretchGroup.setStartRes(res);
+ needOverviewUpdate |= editingDefinedGroup;
}
}
if (stretchGroup.getSequences(null).contains(nextSeq))
{
stretchGroup.deleteSequence(seq, false);
+ needOverviewUpdate |= editingDefinedGroup;
}
else
{
}
stretchGroup.addSequence(nextSeq, false);
+ needOverviewUpdate |= editingDefinedGroup;
}
}