JAL-958 normalise logo menu options in applet
[jalview.git] / src / jalview / appletgui / APopupMenu.java
index 7a99a20..fe1700b 100755 (executable)
@@ -28,6 +28,7 @@ import jalview.datamodel.*;
 import jalview.schemes.*;
 import jalview.util.UrlLink;
 import jalview.io.AppletFormatAdapter;
+import jalview.io.SequenceAnnotationReport;
 
 public class APopupMenu extends java.awt.PopupMenu implements
         ActionListener, ItemListener
@@ -107,7 +108,11 @@ public class APopupMenu extends java.awt.PopupMenu implements
   MenuItem sequenceFeature = new MenuItem("Create Sequence Feature");
 
   MenuItem editSequence = new MenuItem("Edit Sequence");
+  
+  MenuItem sequenceDetails = new MenuItem("Sequence Details ...");
 
+  MenuItem selSeqDetails = new MenuItem("Sequence Details ...");
+  
   Sequence seq;
 
   MenuItem revealAll = new MenuItem();
@@ -450,6 +455,14 @@ public class APopupMenu extends java.awt.PopupMenu implements
     {
       editName();
     }
+    else if (source == sequenceDetails)
+    {
+      showSequenceDetails();
+    }
+    else if (source == selSeqDetails)
+    {
+      showSequenceSelectionDetails();
+    }
     else if (source == pdb)
     {
       addPDB();
@@ -529,7 +542,6 @@ public class APopupMenu extends java.awt.PopupMenu implements
       Vector regions = new Vector();
       if (sg != null)
       {
-        // TODO test change case behaves identically in JvLite
         int[][] startEnd = ap.av.getVisibleRegionBoundaries(sg.getStartRes(),
                 sg.getEndRes() + 1);
 
@@ -609,6 +621,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
 
   }
 
+
   void outputText(ActionEvent e)
   {
     CutAndPasteTransfer cap = new CutAndPasteTransfer(true, ap.alignFrame);
@@ -626,6 +639,41 @@ public class APopupMenu extends java.awt.PopupMenu implements
             ap.av.showJVSuffix));
 
   }
+  protected void showSequenceSelectionDetails()
+  {
+    createSequenceDetailsReport(ap.av.getSequenceSelection());
+  }
+
+  protected void showSequenceDetails()
+  {
+    createSequenceDetailsReport(new SequenceI[]{seq});
+  }
+  public void createSequenceDetailsReport(SequenceI[] sequences)
+  {
+
+    CutAndPasteTransfer cap = new CutAndPasteTransfer(false, ap.alignFrame);
+    
+    StringBuffer contents = new StringBuffer();
+    for (SequenceI seq:sequences)
+    {
+    contents.append("<p><h2>Annotation for "+seq.getDisplayId(true)+"</h2></p><p>");
+    new SequenceAnnotationReport(null)
+            .createSequenceAnnotationReport(
+                    contents,
+                    seq,
+                    true,
+                    true,false, 
+                    (ap.seqPanel.seqCanvas.fr != null) ? ap.seqPanel.seqCanvas.fr.minmax
+                            : null);
+    contents.append("</p>");
+    }
+    Frame frame = new Frame();
+    frame.add(cap);
+    jalview.bin.JalviewLite.addFrame(frame,
+            "Sequence Details for " + (sequences.length==1 ? sequences[0].getDisplayId(true) : "Selection")
+            , 600, 500);
+    cap.setText("<html>" + contents.toString() + "</html>");
+  }
 
   void editName()
   {
@@ -686,6 +734,8 @@ public class APopupMenu extends java.awt.PopupMenu implements
     showBoxes.setState(true);
     showBoxes.addItemListener(this);
     sequenceName.addActionListener(this);
+    sequenceDetails.addActionListener(this);
+    selSeqDetails.addActionListener(this);
     displayNonconserved.setLabel("Show Nonconserved");
     displayNonconserved.setState(false);
     displayNonconserved.addItemListener(this);
@@ -706,6 +756,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
     this.add(hideSeqs);
     this.add(revealSeq);
     this.add(revealAll);
+    // groupMenu.add(selSeqDetails);
     groupMenu.add(editGroupName);
     groupMenu.add(editMenu);
     groupMenu.add(outputmenu);
@@ -772,6 +823,8 @@ public class APopupMenu extends java.awt.PopupMenu implements
     toLower.addActionListener(this);
     editMenu.add(toggleCase);
     seqMenu.add(sequenceName);
+    // seqMenu.add(sequenceDetails);
+    
     if (!ap.av.applet.useXtrnalSviewer)
     {
       seqMenu.add(pdb);
@@ -800,8 +853,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
   {
     SequenceGroup sg = getGroup();
     sg.cs = new ClustalxColourScheme(
-            sg.getSequences(ap.av.getHiddenRepSequences()),
-            ap.av.getAlignment().getWidth());
+            sg,ap.av.getHiddenRepSequences());
     refresh();
   }