import jalview.commands.EditCommand;
import jalview.commands.EditCommand.Action;
import jalview.commands.EditCommand.Edit;
-import jalview.datamodel.AlignedCodonFrame;
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.SearchResults;
import jalview.datamodel.Sequence;
import jalview.structure.StructureSelectionManager;
import jalview.structure.VamsasSource;
import jalview.util.Comparison;
+import jalview.util.MappingUtils;
import jalview.util.MessageManager;
+import jalview.viewmodel.AlignmentViewport;
import java.awt.BorderLayout;
import java.awt.Color;
int res = 0;
int x = evt.getX();
- if (av.wrapAlignment)
+ if (av.getWrapAlignment())
{
- int hgap = av.charHeight;
- if (av.scaleAboveWrapped)
+ int hgap = av.getCharHeight();
+ if (av.getScaleAboveWrapped())
{
- hgap += av.charHeight;
+ hgap += av.getCharHeight();
}
- int cHeight = av.getAlignment().getHeight() * av.charHeight + hgap
+ int cHeight = av.getAlignment().getHeight() * av.getCharHeight()
+ + hgap
+ seqCanvas.getAnnotationHeight();
int y = evt.getY();
int seq = 0;
int y = evt.getY();
- if (av.wrapAlignment)
+ if (av.getWrapAlignment())
{
- int hgap = av.charHeight;
- if (av.scaleAboveWrapped)
+ int hgap = av.getCharHeight();
+ if (av.getScaleAboveWrapped())
{
- hgap += av.charHeight;
+ hgap += av.getCharHeight();
}
- int cHeight = av.getAlignment().getHeight() * av.charHeight + hgap
+ int cHeight = av.getAlignment().getHeight() * av.getCharHeight()
+ + hgap
+ seqCanvas.getAnnotationHeight();
y -= hgap;
return seq;
}
- SequenceFeature[] findFeaturesAtRes(SequenceI sequence, int res)
- {
- Vector tmp = new Vector();
- SequenceFeature[] features = sequence.getSequenceFeatures();
- if (features != null)
- {
- for (int i = 0; i < features.length; i++)
- {
- if (av.featuresDisplayed == null
- || !av.featuresDisplayed.containsKey(features[i].getType()))
- {
- continue;
- }
-
- if (features[i].featureGroup != null
- && seqCanvas.fr.featureGroups != null
- && seqCanvas.fr.featureGroups
- .containsKey(features[i].featureGroup)
- && !((Boolean) seqCanvas.fr.featureGroups
- .get(features[i].featureGroup)).booleanValue())
- {
- continue;
- }
-
- if ((features[i].getBegin() <= res)
- && (features[i].getEnd() >= res))
- {
- tmp.addElement(features[i]);
- }
- }
- }
-
- features = new SequenceFeature[tmp.size()];
- tmp.copyInto(features);
-
- return features;
- }
-
/**
* When all of a sequence of edits are complete, put the resulting edit list
* on the history stack (undo list), and reset flags for editing in progress.
}
endEditing();
- if (av.wrapAlignment)
+ if (av.getWrapAlignment())
{
ap.scrollToWrappedVisible(seqCanvas.cursorX);
}
{
ap.scrollUp(false);
}
- if (!av.wrapAlignment)
+ if (!av.getWrapAlignment())
{
while (seqCanvas.cursorX < av.getColumnSelection()
.adjustForHiddenColumns(av.startRes))
String lastMessage;
+ @Override
public void mouseOverSequence(SequenceI sequence, int index, int pos)
{
String tmp = sequence.hashCode() + " " + index + " " + pos;
{
return this.ap == null ? null : this.ap.av;
}
+ @Override
public void updateColours(SequenceI seq, int index)
{
System.out.println("update the seqPanel colours");
}
// use aa to see if the mouse pointer is on a
- if (av.showSequenceFeatures)
+ if (av.isShowSequenceFeatures())
{
int rpos;
- SequenceFeature[] features = findFeaturesAtRes(
+ List<SequenceFeature> features = ap.getFeatureRenderer().findFeaturesAtRes(
sequence.getDatasetSequence(),
rpos = sequence.findPosition(res));
seqARep.appendFeatures(tooltipText, rpos, features,
- this.ap.seqPanel.seqCanvas.fr.minmax);
+ this.ap.getSeqPanel().seqCanvas.fr.getMinMax());
}
if (tooltipText.length() == 6) // <html></html>
{
{
if (mouseWheelPressed)
{
- int oldWidth = av.charWidth;
+ int oldWidth = av.getCharWidth();
// Which is bigger, left-right or up-down?
if (Math.abs(evt.getY() - lastMousePress.getY()) > Math.abs(evt
}
av.setFont(new Font(av.font.getName(), av.font.getStyle(), fontSize));
- av.charWidth = oldWidth;
+ av.setCharWidth(oldWidth);
ap.fontChanged();
}
else
{
- if (evt.getX() < lastMousePress.getX() && av.charWidth > 1)
+ if (evt.getX() < lastMousePress.getX() && av.getCharWidth() > 1)
{
- av.charWidth--;
+ av.setCharWidth(av.getCharWidth() - 1);
}
else if (evt.getX() > lastMousePress.getX())
{
- av.charWidth++;
+ av.setCharWidth(av.getCharWidth() + 1);
}
ap.paintAlignment(false);
}
FontMetrics fm = getFontMetrics(av.getFont());
- av.validCharWidth = fm.charWidth('M') <= av.charWidth;
+ av.validCharWidth = fm.charWidth('M') <= av.getCharWidth();
lastMousePress = evt.getPoint();
av.setSelectionGroup(null);
}
- SequenceFeature[] features = findFeaturesAtRes(
+ List<SequenceFeature> features = seqCanvas.getFeatureRenderer().findFeaturesAtRes(
sequence.getDatasetSequence(),
sequence.findPosition(findRes(evt)));
- if (features != null && features.length > 0)
+ if (features != null && features.size()> 0)
{
SearchResults highlight = new SearchResults();
- highlight.addResult(sequence, features[0].getBegin(),
- features[0].getEnd());
+ highlight.addResult(sequence, features.get(0).getBegin(),
+ features.get(0).getEnd());
seqCanvas.highlightSearchResults(highlight);
}
- if (features != null && features.length > 0)
+ if (features != null && features.size()> 0)
{
seqCanvas.getFeatureRenderer().amendFeatures(new SequenceI[]
- { sequence }, features, false, ap);
+ { sequence }, features.toArray(new SequenceFeature[features.size()]), false, ap);
seqCanvas.highlightSearchResults(null);
}
startWrapBlock = wrappedBlock;
- if (av.wrapAlignment && seq > av.getAlignment().getHeight())
+ if (av.getWrapAlignment() && seq > av.getAlignment().getHeight())
{
JOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager
.getString("label.cannot_edit_annotations_in_wrapped_view"),
if (javax.swing.SwingUtilities.isRightMouseButton(evt))
{
- SequenceFeature[] allFeatures = findFeaturesAtRes(
+ List<SequenceFeature> allFeatures = ap.getFeatureRenderer().findFeaturesAtRes(
sequence.getDatasetSequence(), sequence.findPosition(res));
Vector links = new Vector();
- for (int i = 0; i < allFeatures.length; i++)
+ for (SequenceFeature sf:allFeatures)
{
- if (allFeatures[i].links != null)
+ if (sf.links != null)
{
- for (int j = 0; j < allFeatures[i].links.size(); j++)
+ for (int j = 0; j < sf.links.size(); j++)
{
- links.addElement(allFeatures[i].links.elementAt(j));
+ links.addElement(sf.links.elementAt(j));
}
}
}
// TODO: extend config options to allow user to control if selections may be
// shared between viewports.
boolean iSentTheSelection = (av == source
- || (source instanceof AlignViewport && ((AlignViewport) source)
+ || (source instanceof AlignViewport && ((AlignmentViewport) source)
.getSequenceSetId().equals(av.getSequenceSetId())));
if (iSentTheSelection || !av.followSelection)
{
}
/*
- * Check for selection in a view of which this one is a 'slave'.
+ * Check for selection in a view of which this one is a dna/protein
+ * complement.
*/
- if (selectionAsSlave(seqsel, colsel, source))
+ if (selectionFromTranslation(seqsel, colsel, source))
{
return;
}
}
/**
- * If this panel is a 'slave' of the selection source, tries to map the source
- * selection to a local one, and returns true. Else returns false.
+ * If this panel is a cdna/protein translation view of the selection source,
+ * tries to map the source selection to a local one, and returns true. Else
+ * returns false.
*
* @param seqsel
* @param colsel
* @param source
*/
- protected boolean selectionAsSlave(SequenceGroup seqsel,
+ protected boolean selectionFromTranslation(SequenceGroup seqsel,
ColumnSelection colsel, SelectionSource source)
{
if (!(source instanceof AlignViewportI)) {
return false;
}
final AlignViewportI sourceAv = (AlignViewportI) source;
- if (sourceAv.getSlave() != av)
+ if (sourceAv.getCodingComplement() != av && av.getCodingComplement() != sourceAv)
{
return false;
}
/*
- * Map sequence selection. Note the SequenceGroup holds aligned sequences,
- * the mappings hold dataset sequences.
+ * Map sequence selection
*/
- AlignedCodonFrame[] codonFrames = sourceAv.getAlignment()
- .getCodonFrames();
- SequenceGroup sg = new SequenceGroup();
- for (SequenceI selected : seqsel.getSequences())
- {
- for (AlignedCodonFrame acf : codonFrames)
- {
- SequenceI dnaSeq = acf.getDnaForAaSeq(selected);
- if (dnaSeq != null)
- {
- for (SequenceI seq : av.getAlignment().getSequences())
- {
- if (seq.getDatasetSequence() == dnaSeq)
- {
- sg.addSequence(seq, false);
- break;
- }
- }
- }
- }
- }
+ SequenceGroup sg = MappingUtils.mapSequenceGroup(seqsel, sourceAv, av);
av.setSelectionGroup(sg);
av.isSelectionGroupChanged(true);
- // ((AlignmentViewport) slave).firePropertyChange("alignment", null, slave
- // .getAlignment()
- // .getSequences());
/*
* Map column selection
*/
- // TODO
+ ColumnSelection cs = MappingUtils.mapColumnSelection(colsel, sourceAv,
+ av);
+ av.setColumnSelection(cs);
+ av.isColSelChanged(true);
- AlignmentPanel ap = av.getAlignPanel();
PaintRefresher.Refresh(this, av.getSequenceSetId());
return true;