JAL-750 and JAL-451
[jalview.git] / src / jalview / appletgui / APopupMenu.java
index 5288fe4..a56f76d 100755 (executable)
@@ -112,6 +112,11 @@ public class APopupMenu extends java.awt.PopupMenu implements
 
   MenuItem revealAll = new MenuItem();
 
+  MenuItem revealSeq = new MenuItem();
+  /**
+   * index of sequence to be revealed
+   */
+  int revealSeq_index=-1;
   Menu menu1 = new Menu();
 
   public APopupMenu(AlignmentPanel apanel, final Sequence seq, Vector links)
@@ -298,6 +303,17 @@ public class APopupMenu extends java.awt.PopupMenu implements
     if (!ap.av.hasHiddenRows)
     {
       remove(revealAll);
+      remove(revealSeq);
+    } else {
+      final int index = ap.av.alignment.findIndex(seq);
+
+      if (ap.av.adjustForHiddenSeqs(index)
+              - ap.av.adjustForHiddenSeqs(index - 1) > 1)
+      {
+        revealSeq_index=index;
+      } else {
+        remove(revealSeq);
+      }
     }
   }
 
@@ -446,6 +462,10 @@ public class APopupMenu extends java.awt.PopupMenu implements
     {
       hideSequences(true);
     }
+    else if (source == revealSeq)
+    {
+      ap.av.showSequence(revealSeq_index);
+    }
     else if (source == revealAll)
     {
       ap.av.showAllHiddenSeqs();
@@ -712,10 +732,12 @@ public class APopupMenu extends java.awt.PopupMenu implements
     hideSeqs.setLabel("Hide Sequences");
     repGroup.setLabel("Represent Group with");
     revealAll.setLabel("Reveal All");
+    revealSeq.setLabel("Reveal Sequences");
     menu1.setLabel("Group");
     add(groupMenu);
     this.add(seqMenu);
     this.add(hideSeqs);
+    this.add(revealSeq);
     this.add(revealAll);
     groupMenu.add(editGroupName);
     groupMenu.add(editMenu);
@@ -796,6 +818,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
     hideSeqs.addActionListener(this);
     repGroup.addActionListener(this);
     revealAll.addActionListener(this);
+    revealSeq.addActionListener(this);
   }
 
   void refresh()
@@ -1034,6 +1057,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
     }
 
     ap.av.hideSequence(hseqs);
+    ap.av.sendSelection();
   }
 
 }