Merge branch 'develop' into menard
[jalview.git] / src / jalview / gui / PopupMenu.java
index f6c1379..c354964 100644 (file)
@@ -30,6 +30,7 @@ import org.xml.sax.SAXException;
 import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax;
 import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed;
 import fr.orsay.lri.varna.exceptions.ExceptionPermissionDenied;
+import fr.orsay.lri.varna.exceptions.ExceptionUnmatchedClosingParentheses;
 
 import MCview.*;
 import jalview.analysis.*;
@@ -92,6 +93,9 @@ public class PopupMenu extends JPopupMenu
   JMenu sequenceMenu = new JMenu();
 
   JMenuItem sequenceName = new JMenuItem();
+  
+  JMenuItem sequenceDetails = new JMenuItem();
+  JMenuItem sequenceSelDetails = new JMenuItem();
 
   SequenceI sequence;
 
@@ -293,10 +297,12 @@ public class PopupMenu extends JPopupMenu
                 
                        //System.out.println("3:"+seq.getSequenceAsString());
                        System.out.println("3:strucseq"+rnastruc);
-                       System.out.println("4:struc"+seq.getRNA());
+                       //System.out.println("4:struc"+seq.getRNA());
                        System.out.println("5:name"+seq.getName());
                        System.out.println("6:ap"+ap);
-                new AppVarna(seq.getName(),seq,rnastruc,seq.getRNA(), seq.getName(), ap);
+                       new AppVarna(structureLine, seq, seq.getSequenceAsString(), rnastruc, seq
+                            .getName(), ap);
+                       //new AppVarna(seq.getName(),seq,rnastruc,seq.getRNA(), seq.getName(), ap);
                        System.out.println("end");
               }
             });
@@ -324,8 +330,9 @@ public class PopupMenu extends JPopupMenu
                 {
                   // TODO: VARNA does'nt print gaps in the sequence
                 
-                  new AppVarna(seq.getName()+" structure",seq,rnastruc,seq.getRNA(), 
-                                 seq.getName(), ap);
+                  //new AppVarna(seq.getName()+" structure",seq,rnastruc,seq.getRNA(), seq.getName(), ap);
+                  new AppVarna(seq.getName()+" structure",seq,seq.getSequenceAsString(), rnastruc, seq
+                          .getName(), ap);
                 }
               });
               viewStructureMenu.add(menuItem);
@@ -920,6 +927,20 @@ public class PopupMenu extends JPopupMenu
         sequenceName_actionPerformed();
       }
     });
+    sequenceDetails.setText("Sequence Details ...");
+    sequenceDetails.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        sequenceDetails_actionPerformed();
+     }});
+    sequenceSelDetails.setText("Sequence Details ...");
+    sequenceSelDetails.addActionListener(new java.awt.event.ActionListener()
+    {
+      public void actionPerformed(ActionEvent e)
+      {
+        sequenceSelectionDetails_actionPerformed();
+     }});    
     PIDColour.setFocusPainted(false);
     unGroupMenuItem.setText("Remove Group");
     unGroupMenuItem.addActionListener(new java.awt.event.ActionListener()
@@ -1049,6 +1070,9 @@ public class PopupMenu extends JPopupMenu
                } catch (InterruptedException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
+               } catch (ExceptionUnmatchedClosingParentheses e1) {
+                       // TODO Auto-generated catch block
+                       e1.printStackTrace();
                }
       }
     });
@@ -1097,15 +1121,15 @@ public class PopupMenu extends JPopupMenu
         editSequence_actionPerformed(actionEvent);
       }
     });
+    
     /*
      * annotationMenuItem.setText("By Annotation");
      * annotationMenuItem.addActionListener(new ActionListener() { public void
      * actionPerformed(ActionEvent actionEvent) {
      * annotationMenuItem_actionPerformed(actionEvent); } });
      */
-
+    groupMenu.add(sequenceSelDetails);
     add(groupMenu);
-
     add(sequenceMenu);
     this.add(structureMenu);
     groupMenu.add(editMenu);
@@ -1113,6 +1137,7 @@ public class PopupMenu extends JPopupMenu
     groupMenu.add(sequenceFeature);
     groupMenu.add(jMenu1);
     sequenceMenu.add(sequenceName);
+    sequenceMenu.add(sequenceDetails);
     colourMenu.add(textColour);
     colourMenu.add(noColourmenuItem);
     colourMenu.add(clustalColour);
@@ -1318,6 +1343,40 @@ public class PopupMenu extends JPopupMenu
             });
   }
 
+  protected void sequenceSelectionDetails_actionPerformed()
+  {
+    createSequenceDetailsReport(ap.av.getSequenceSelection());
+  }
+
+  protected void sequenceDetails_actionPerformed()
+  {
+    createSequenceDetailsReport(new SequenceI[]{sequence});
+  }
+  public void createSequenceDetailsReport(SequenceI[] sequences)
+  {
+    CutAndPasteHtmlTransfer cap = new CutAndPasteHtmlTransfer();
+    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>");
+    }
+    cap.setText("<html>" + contents.toString() + "</html>");
+    
+    Desktop.instance.addInternalFrame(cap, 
+            "Sequence Details for " + (sequences.length==1 ? sequences[0].getDisplayId(true) : "Selection") 
+, 500, 400);
+    
+  }
+
   protected void showNonconserved_actionPerformed()
   {
     getGroup().setShowNonconserved(displayNonconserved.isSelected());
@@ -1908,7 +1967,7 @@ public class PopupMenu extends JPopupMenu
     oal = null;
   }
 
-  public void pdbFromFile_actionPerformed() throws ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed, InterruptedException
+  public void pdbFromFile_actionPerformed() throws ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed, InterruptedException, ExceptionUnmatchedClosingParentheses
   {
     jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser(
             jalview.bin.Cache.getProperty("LAST_DIRECTORY"));