X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=ed9ce8d020e14d2ae5a58508aaffa3df22b0030c;hb=ad35f232acd499d9457056ca24b663866a09edd2;hp=3349825bcbe82581726bcc269f80dbe991cb2c43;hpb=136b2682941bac853aadf1233377edd2325d2090;p=jalview.git diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index 3349825..ed9ce8d 100755 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -366,7 +366,7 @@ public class SeqPanel extends JPanel implements MouseListener, SequenceGroup sg = av.selectionGroup; //Find the top and bottom of this group int min = av.alignment.getHeight(), max = 0; - for(int i=0; i max) @@ -402,7 +402,7 @@ public class SeqPanel extends JPanel implements MouseListener, else { // Now add any sequences between min and max - sg.getSequences(false).clear(); + sg.getSequences(null).clear(); for (int i = min; i < max; i++) { sg.addSequence(av.alignment.getSequenceAt(i), false); @@ -570,117 +570,127 @@ public class SeqPanel extends JPanel implements MouseListener, setStatusMessage(sequence, res, seq); + + + tooltipText.setLength(6); // Cuts the buffer back to + + SequenceGroup [] groups = av.alignment.findAllGroups(sequence); + if(groups!=null) + { + for(int g=0; g=res) + { + if (!groups[g].getName().startsWith("JTreeGroup") && + !groups[g].getName().startsWith("JGroup")) + tooltipText.append(groups[g].getName() + " "); + + if(groups[g].getDescription()!=null) + tooltipText.append(groups[g].getDescription()+"
"); + } + } + } + + // use aa to see if the mouse pointer is on a if (av.showSequenceFeatures) { - tooltipText.setLength(6); // Cuts the buffer back to + SequenceFeature[] features = findFeaturesAtRes( + sequence.getDatasetSequence(), sequence.findPosition(res)); - SequenceFeature[] features = findFeaturesAtRes( - sequence.getDatasetSequence(), sequence.findPosition(res)); - - if(features!=null) + if (features != null) + { + for (int i = 0; i < features.length; i++) { - for (int i = 0; i < features.length; i++) + if (features[i].getType().equals("disulfide bond")) { - if (features[i].getType().equals("disulfide bond")) - { - if (features[i].getBegin() == sequence.findPosition(res) - || features[i].getEnd() == sequence.findPosition(res)) - { - if (tooltipText.length() > 6) - tooltipText.append("
"); - tooltipText.append("disulfide bond " + features[i].getBegin() + ":" + + if (features[i].getBegin() == sequence.findPosition(res) + || features[i].getEnd() == sequence.findPosition(res)) + { + if (tooltipText.length() > 6) + tooltipText.append("
"); + tooltipText.append("disulfide bond " + features[i].getBegin() + ":" + features[i].getEnd()); - if (features[i].links != null) - tooltipText.append(" "); - } - } - else - { - if (tooltipText.length() > 6) - tooltipText.append("
"); + if (features[i].links != null) + tooltipText.append(" "); + } + } + else + { + if (tooltipText.length() > 6) + tooltipText.append("
"); - tooltipText.append(features[i].getType() + " " + + tooltipText.append(features[i].getType() + " " + features[i].begin); - if (features[i].begin != features[i].end) - tooltipText.append(" " + features[i].end); + if (features[i].begin != features[i].end) + tooltipText.append(" " + features[i].end); - if (features[i].getDescription() != null - && !features[i].description.equals(features[i].getType())) - { - tmpString = features[i].getDescription(); - int startTag=tmpString.toUpperCase().indexOf(""); - if(startTag>-1) - { - tmpString = tmpString.substring(startTag + 6); - } - int endTag=tmpString.toUpperCase().indexOf(""); - if(endTag>-1) - { - tmpString = tmpString.substring(0, endTag); - } - endTag = tmpString.toUpperCase().indexOf(""); - if(endTag>-1) - { - tmpString = tmpString.substring(0, endTag); - } - - if(startTag>-1) - { - tooltipText.append("; " + tmpString); - } - else - { - if (tmpString.indexOf("<") > -1 || tmpString.indexOf(">") > -1) - { - //The description does not specify html is to - //be used, so we must remove < > symbols - tmpString = tmpString.replaceAll("<", "<"); - tmpString = tmpString.replaceAll(">", ">"); - - tooltipText.append("; "); - tooltipText.append(tmpString); - - } - else - tooltipText.append("; "+tmpString); - } - } - if (features[i].getValue("status") != null ) + if (features[i].getDescription() != null + && !features[i].description.equals(features[i].getType())) + { + tmpString = features[i].getDescription(); + int startTag = tmpString.toUpperCase().indexOf(""); + if (startTag > -1) + { + tmpString = tmpString.substring(startTag + 6); + } + int endTag = tmpString.toUpperCase().indexOf(""); + if (endTag > -1) + { + tmpString = tmpString.substring(0, endTag); + } + endTag = tmpString.toUpperCase().indexOf(""); + if (endTag > -1) + { + tmpString = tmpString.substring(0, endTag); + } + + if (startTag > -1) + { + tooltipText.append("; " + tmpString); + } + else + { + if (tmpString.indexOf("<") > -1 || tmpString.indexOf(">") > -1) { - String status = features[i].getValue("status").toString(); - if(status.length()>0) - tooltipText.append("; (" + features[i].getValue("status") + ")"); - } + //The description does not specify html is to + //be used, so we must remove < > symbols + tmpString = tmpString.replaceAll("<", "<"); + tmpString = tmpString.replaceAll(">", ">"); - if (features[i].links != null) - tooltipText.append(" "); + tooltipText.append("; "); + tooltipText.append(tmpString); + } + else + tooltipText.append("; " + tmpString); } - - // else if(features[i].begin==0 && features[i].end==0) + } + if (features[i].getValue("status") != null) { - // seqSpecific.append(features[i].featureGroup+": " - // + features[i].getType()+" " - // +features[i].getDescription()+"
"); - + String status = features[i].getValue("status").toString(); + if (status.length() > 0) + tooltipText.append("; (" + features[i].getValue("status") + ")"); } - } - if(tooltipText.length()==6) // - { + if (features[i].links != null) + tooltipText.append(" "); - setToolTipText(""); - } - else - { - tooltipText.append(""); - setToolTipText(tooltipText.toString()); } } - else - setToolTipText(""); + } + } + if (tooltipText.length() == 6) // + { + setToolTipText(null); } + else + { + tooltipText.append(""); + setToolTipText(tooltipText.toString()); + } + // else + // setToolTipText(null); } void setStatusMessage(SequenceI sequence, int res, int seq) @@ -810,24 +820,20 @@ public class SeqPanel extends JPanel implements MouseListener, boolean fixedColumns = false; SequenceGroup sg = av.getSelectionGroup(); + SequenceI seq = av.alignment.getSequenceAt(startseq); + //No group, but the sequence may represent a group if (!groupEditing && av.hasHiddenRows) { - if (av.alignment.getSequenceAt(startseq).getHiddenSequences() != null) + if (av.hiddenRepSequences!=null + && av.hiddenRepSequences.containsKey(seq)) { + sg = (SequenceGroup)av.hiddenRepSequences.get(seq); groupEditing = true; } } - //No group, but the sequence may represent a group - if (groupEditing - && sg == null - && av.alignment.getSequenceAt(startseq).getHiddenSequences() == null) - { - groupEditing = false; - } - SequenceI seq = av.alignment.getSequenceAt(startseq); StringBuffer message = new StringBuffer(); if (groupEditing) { @@ -856,7 +862,7 @@ public class SeqPanel extends JPanel implements MouseListener, //Are we editing within a selection group? if (groupEditing - || (sg != null && sg.getSequences(true).contains(seq))) + || (sg != null && sg.getSequences(av.hiddenRepSequences).contains(seq))) { fixedColumns = true; @@ -864,9 +870,7 @@ public class SeqPanel extends JPanel implements MouseListener, //but the sequence represents a group if (sg == null) { - sg = new SequenceGroup(null, null, false, false, false, 0, - av.alignment.getWidth()-1); - sg.addSequence(av.alignment.getSequenceAt(startseq), false); + sg = (SequenceGroup) av.hiddenRepSequences.get(seq); } fixedLeft = sg.getStartRes(); @@ -925,7 +929,7 @@ public class SeqPanel extends JPanel implements MouseListener, if (groupEditing) { - Vector vseqs = sg.getSequences(true); + Vector vseqs = sg.getSequences(av.hiddenRepSequences); int g, groupSize = vseqs.size(); SequenceI[] groupSeqs = new SequenceI[groupSize]; for (g = 0; g < groupSeqs.length; g++) @@ -973,7 +977,7 @@ public class SeqPanel extends JPanel implements MouseListener, if (!blank) { - if(sg.getSize(false) == av.alignment.getHeight() ) + if(sg.getSize() == av.alignment.getHeight() ) { if((av.hasHiddenColumns && startres1) { - if (av.getSelectionGroup().getSize(false) == 1 + if (av.getSelectionGroup().getSize() == 1 && av.getSelectionGroup().getEndRes() - av.getSelectionGroup().getStartRes() < 2) av.setSelectionGroup(null); @@ -1232,7 +1236,7 @@ public class SeqPanel extends JPanel implements MouseListener, sequence.findPosition( findRes(evt) ) ); - if(features!=null && features.length==1) + if(features!=null && features.length>0) { SearchResults highlight = new SearchResults(); highlight.addResult(sequence, @@ -1244,7 +1248,7 @@ public class SeqPanel extends JPanel implements MouseListener, { seqCanvas.getFeatureRenderer().amendFeatures( new SequenceI[] - {sequence}, features, false); + {sequence}, features, false, ap); seqCanvas.highlightSearchResults(null); } @@ -1328,7 +1332,7 @@ public class SeqPanel extends JPanel implements MouseListener, stretchGroup = null; } } - else if (!stretchGroup.getSequences(false).contains(sequence) || + else if (!stretchGroup.getSequences(null).contains(sequence) || (stretchGroup.getStartRes() > res) || (stretchGroup.getEndRes() < res)) { @@ -1443,7 +1447,7 @@ public class SeqPanel extends JPanel implements MouseListener, if (stretchGroup.cs instanceof ClustalxColourScheme) { ( (ClustalxColourScheme) stretchGroup.cs).resetClustalX( - stretchGroup.getSequences(true), + stretchGroup.getSequences(av.hiddenRepSequences), stretchGroup.getWidth()); } @@ -1550,7 +1554,7 @@ public class SeqPanel extends JPanel implements MouseListener, Sequence nextSeq = (Sequence) av.getAlignment().getSequenceAt(oldSeq); - if (stretchGroup.getSequences(false).contains(nextSeq)) + if (stretchGroup.getSequences(null).contains(nextSeq)) { stretchGroup.deleteSequence(seq, false); }