Merge branch 'JAL-1372_referenceseq' into feature_29/JAL-1372_referenceseq
[jalview.git] / src / jalview / gui / PopupMenu.java
index 3ea689f..41cb6b1 100644 (file)
@@ -140,6 +140,8 @@ public class PopupMenu extends JPopupMenu
   JMenuItem sequenceDetails = new JMenuItem();
 
   JMenuItem sequenceSelDetails = new JMenuItem();
+  
+  JMenuItem makeReferenceSeq = new JMenuItem();
 
   JMenuItem chooseAnnotations = new JMenuItem();
 
@@ -322,6 +324,12 @@ public class PopupMenu extends JPopupMenu
     if (seq != null)
     {
       sequenceMenu.setText(sequence.getName());
+      if (seq == ap.av.getAlignment().getSeqrep())
+      {
+        makeReferenceSeq.setText("Unmark representative");
+      } else {
+        makeReferenceSeq.setText("Mark as representative");
+      }
 
       if (seq.getDatasetSequence().getPDBId() != null
               && seq.getDatasetSequence().getPDBId().size() > 0)
@@ -369,7 +377,6 @@ public class PopupMenu extends JPopupMenu
         }
         // structureMenu.remove(colStructureMenu);
       }
-
       if (ap.av.getAlignment().isNucleotide() == true)
       {
         AlignmentAnnotation[] aa = ap.av.getAlignment()
@@ -441,7 +448,6 @@ public class PopupMenu extends JPopupMenu
             }
           }
         }
-
       }
 
       menuItem = new JMenuItem(
@@ -1507,7 +1513,17 @@ public class PopupMenu extends JPopupMenu
         editSequence_actionPerformed(actionEvent);
       }
     });
-
+    makeReferenceSeq.setText("Mark as representative");
+    makeReferenceSeq.addActionListener(new ActionListener()
+    {
+      
+      @Override
+      public void actionPerformed(ActionEvent actionEvent)
+      {
+        makeReferenceSeq_actionPerformed(actionEvent);
+        
+      }
+    });
     /*
      * annotationMenuItem.setText("By Annotation");
      * annotationMenuItem.addActionListener(new ActionListener() { public void
@@ -1539,6 +1555,7 @@ public class PopupMenu extends JPopupMenu
     groupMenu.add(jMenu1);
     sequenceMenu.add(sequenceName);
     sequenceMenu.add(sequenceDetails);
+    sequenceMenu.add(makeReferenceSeq);
     colourMenu.add(textColour);
     colourMenu.add(noColourmenuItem);
     colourMenu.add(clustalColour);
@@ -1912,6 +1929,28 @@ public class PopupMenu extends JPopupMenu
     }
     refresh();
   }
+protected void makeReferenceSeq_actionPerformed(ActionEvent actionEvent)
+{
+  if (!ap.av.getAlignment().hasSeqrep())
+  {
+    // initialise the display flags so the user sees something happen
+    ap.av.setDisplayReferenceSeq(true);
+    ap.av.setColourByReferenceSeq(true);
+    ap.av.getAlignment().setSeqrep(sequence);
+  }
+  else
+  {
+    if (ap.av.getAlignment().getSeqrep() == sequence)
+    {
+      ap.av.getAlignment().setSeqrep(null);
+    }
+    else
+    {
+      ap.av.getAlignment().setSeqrep(sequence);
+    }
+  }
+  refresh();
+}
 
   protected void sequenceSelectionDetails_actionPerformed()
   {