@Override public boolean handleDataClick(TrackClickEvent te) { MouseEvent e = te.getMouseEvent(); Feature f = getFeatureAtMousePosition(te); // We allow any of these modifier keys for multi-select if (!e.isShiftDown() && !e.isControlDown() && !e.isMetaDown()) { clearSelectedExons(); } boolean foundExon = false; if (f != null && f instanceof IGVFeature) { selectedFeature = (IGVFeature) f; double location = te.getFrame().getChromosomePosition(e.getX()); if (selectedFeature.getExons() != null) { for (Exon exon : selectedFeature.getExons()) { if (location >= exon.getStart() && location < exon.getEnd()) { selectedExons.add(exon); foundExon = true; break; } } } } ((SelectableFeatureRenderer) getRenderer()).setSelectedExons(selectedExons); return foundExon; }
public FeatureWrappedAlignment(BasicFeature f) { this.readName = f.getName(); this.chr = f.getChr(); this.start = f.getStart(); this.end = f.getEnd(); strand = f.getStrand(); if (f.getExonCount() > 0) { blocks = new AlignmentBlock[f.getExonCount()]; int i = 0; for (Exon exon : f.getExons()) { int length = exon.getLength(); byte[] seq = new byte[length]; blocks[i] = new AlignmentBlock(exon.getStart(), seq, seq, this); i++; } } }