v2
[jalview.git] / src / jalview / gui / PopupMenu.java
index e812530..f6c1379 100644 (file)
@@ -23,6 +23,13 @@ import java.awt.*;
 import java.awt.event.*;
 
 import javax.swing.*;
+import javax.xml.parsers.ParserConfigurationException;
+
+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 MCview.*;
 import jalview.analysis.*;
@@ -71,6 +78,7 @@ public class PopupMenu extends JPopupMenu
   protected JRadioButtonMenuItem BLOSUM62Colour = new JRadioButtonMenuItem();
 
   protected JRadioButtonMenuItem purinePyrimidineColour = new JRadioButtonMenuItem();
+  protected JRadioButtonMenuItem RNAInteractionColour = new JRadioButtonMenuItem();
 
   // protected JRadioButtonMenuItem covariationColour = new
   // JRadioButtonMenuItem();
@@ -189,6 +197,7 @@ public class PopupMenu extends JPopupMenu
     colours.add(PIDColour);
     colours.add(BLOSUM62Colour);
     colours.add(purinePyrimidineColour);
+    colours.add(RNAInteractionColour);
     // colours.add(covariationColour);
 
     for (int i = 0; i < jalview.io.FormatAdapter.WRITEABLE_FORMATS.length; i++)
@@ -255,30 +264,40 @@ public class PopupMenu extends JPopupMenu
       }
       else
       {
-        if (ap.av.alignment.isNucleotide() == false)
+        if (ap.av.getAlignment().isNucleotide() == false)
         {
         structureMenu.remove(viewStructureMenu);
         }
         // structureMenu.remove(colStructureMenu);
       }
 
-      if (ap.av.alignment.isNucleotide() == true)
+      if (ap.av.getAlignment().isNucleotide() == true)
       {
-        AlignmentAnnotation[] aa = ap.av.alignment.getAlignmentAnnotation();
+        AlignmentAnnotation[] aa = ap.av.getAlignment().getAlignmentAnnotation();
         for (int i = 0; i < aa.length; i++)
         {
           if (aa[i].getRNAStruc() != null)
           {
             final String rnastruc = aa[i].getRNAStruc();
-            
+            final String structureLine=aa[i].label;
             menuItem = new JMenuItem();
-            menuItem.setText("RNA structure - consensus");
+            menuItem.setText("2D RNA "+structureLine);
             menuItem.addActionListener(new java.awt.event.ActionListener()
+            
             {
               public void actionPerformed(ActionEvent e)
               {
-                new AppVarna(seq.getSequenceAsString(), rnastruc, seq
-                        .getName(), ap);
+                       //System.out.println("1:"+structureLine);
+                       System.out.println("1:sname"+seq.getName());
+                       System.out.println("2:seq"+seq);
+                
+                       //System.out.println("3:"+seq.getSequenceAsString());
+                       System.out.println("3:strucseq"+rnastruc);
+                       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);
+                       System.out.println("end");
               }
             });
             viewStructureMenu.add(menuItem);
@@ -298,14 +317,15 @@ public class PopupMenu extends JPopupMenu
               
            // TODO: make rnastrucF a bit more nice
               menuItem = new JMenuItem();
-              menuItem.setText("RNA structure - "+seq.getName());
+              menuItem.setText("2D RNA - "+seq.getName());
               menuItem.addActionListener(new java.awt.event.ActionListener()
               {
                 public void actionPerformed(ActionEvent e)
                 {
                   // TODO: VARNA does'nt print gaps in the sequence
-                  new AppVarna(seq.getSequenceAsString(), rnastruc, seq
-                          .getName(), ap);
+                
+                  new AppVarna(seq.getName()+" structure",seq,rnastruc,seq.getRNA(), 
+                                 seq.getName(), ap);
                 }
               });
               viewStructureMenu.add(menuItem);
@@ -340,9 +360,9 @@ public class PopupMenu extends JPopupMenu
         sequenceMenu.add(menuItem);
       }
 
-      if (ap.av.hasHiddenRows)
+      if (ap.av.hasHiddenRows())
       {
-        final int index = ap.av.alignment.findIndex(seq);
+        final int index = ap.av.getAlignment().findIndex(seq);
 
         if (ap.av.adjustForHiddenSeqs(index)
                 - ap.av.adjustForHiddenSeqs(index - 1) > 1)
@@ -364,7 +384,7 @@ public class PopupMenu extends JPopupMenu
       }
     }
     // for the case when no sequences are even visible
-    if (ap.av.hasHiddenRows) {
+    if (ap.av.hasHiddenRows()) {
       {
         menuItem = new JMenuItem("Reveal All");
         menuItem.addActionListener(new ActionListener()
@@ -439,6 +459,11 @@ public class PopupMenu extends JPopupMenu
       {
         purinePyrimidineColour.setSelected(true);
       }
+      
+      else if (sg.cs instanceof RNAInteractionColourScheme)
+      {
+        RNAInteractionColour.setSelected(true);
+      }
       /*
        * else if (sg.cs instanceof CovariationColourScheme) {
        * covariationColour.setSelected(true); }
@@ -506,7 +531,7 @@ public class PopupMenu extends JPopupMenu
       editMenu.setVisible(false);
     }
 
-    if (!ap.av.alignment.getGroups().contains(sg))
+    if (!ap.av.getAlignment().getGroups().contains(sg))
     {
       unGroupMenuItem.setVisible(false);
     }
@@ -1004,7 +1029,27 @@ public class PopupMenu extends JPopupMenu
     {
       public void actionPerformed(ActionEvent e)
       {
-        pdbFromFile_actionPerformed();
+        try {
+                       pdbFromFile_actionPerformed();
+               } catch (ExceptionFileFormatOrSyntax e1) {
+                       // TODO Auto-generated catch block
+                       e1.printStackTrace();
+               } catch (ParserConfigurationException e1) {
+                       // TODO Auto-generated catch block
+                       e1.printStackTrace();
+               } catch (SAXException e1) {
+                       // TODO Auto-generated catch block
+                       e1.printStackTrace();
+               } catch (ExceptionPermissionDenied e1) {
+                       // TODO Auto-generated catch block
+                       e1.printStackTrace();
+               } catch (ExceptionLoadingFailed e1) {
+                       // TODO Auto-generated catch block
+                       e1.printStackTrace();
+               } catch (InterruptedException e1) {
+                       // TODO Auto-generated catch block
+                       e1.printStackTrace();
+               }
       }
     });
     enterPDB.setText("Enter PDB Id");
@@ -1081,6 +1126,7 @@ public class PopupMenu extends JPopupMenu
     colourMenu.add(turnColour);
     colourMenu.add(buriedColour);
     colourMenu.add(nucleotideMenuItem);
+    colourMenu.add(RNAInteractionColour);
     if (ap.getAlignment().isNucleotide()) {
        colourMenu.add(purinePyrimidineColour);
     }
@@ -1245,6 +1291,16 @@ public class PopupMenu extends JPopupMenu
                 purinePyrimidineColour_actionPerformed();
               }
             });
+    
+    RNAInteractionColour.setText("RNA Interaction type");
+    RNAInteractionColour
+            .addActionListener(new java.awt.event.ActionListener()
+            {
+              public void actionPerformed(ActionEvent e)
+              {
+                RNAInteractionColour_actionPerformed();
+              }
+            });
     /*
      * covariationColour.addActionListener(new java.awt.event.ActionListener() {
      * public void actionPerformed(ActionEvent e) {
@@ -1289,8 +1345,7 @@ public class PopupMenu extends JPopupMenu
   {
     SequenceGroup sg = getGroup();
     sg.cs = new ClustalxColourScheme(
-            sg.getSequences(ap.av.hiddenRepSequences),
-            ap.av.alignment.getWidth());
+            sg,ap.av.getHiddenRepSequences());
     refresh();
   }
 
@@ -1396,6 +1451,11 @@ public class PopupMenu extends JPopupMenu
     refresh();
   }
 
+  protected void RNAInteractionColour_actionPerformed()
+  {
+    getGroup().cs = new RNAInteractionColourScheme();
+    refresh();
+  }
   /*
    * protected void covariationColour_actionPerformed() { getGroup().cs = new
    * CovariationColourScheme(sequence.getAnnotation()[0]); refresh(); }
@@ -1417,7 +1477,7 @@ public class PopupMenu extends JPopupMenu
     if (abovePIDColour.isSelected())
     {
       sg.cs.setConsensus(AAFrequency.calculate(
-              sg.getSequences(ap.av.hiddenRepSequences), sg.getStartRes(),
+              sg.getSequences(ap.av.getHiddenRepSequences()), sg.getStartRes(),
               sg.getEndRes() + 1));
 
       int threshold = SliderPanel.setPIDSliderSource(ap, sg.cs, getGroup()
@@ -1471,7 +1531,7 @@ public class PopupMenu extends JPopupMenu
     SequenceGroup sg = getGroup();
     sg.cs = new PIDColourScheme();
     sg.cs.setConsensus(AAFrequency.calculate(
-            sg.getSequences(ap.av.hiddenRepSequences), sg.getStartRes(),
+            sg.getSequences(ap.av.getHiddenRepSequences()), sg.getStartRes(),
             sg.getEndRes() + 1));
     refresh();
   }
@@ -1489,7 +1549,7 @@ public class PopupMenu extends JPopupMenu
     sg.cs = new Blosum62ColourScheme();
 
     sg.cs.setConsensus(AAFrequency.calculate(
-            sg.getSequences(ap.av.hiddenRepSequences), sg.getStartRes(),
+            sg.getSequences(ap.av.getHiddenRepSequences()), sg.getStartRes(),
             sg.getEndRes() + 1));
 
     refresh();
@@ -1525,11 +1585,11 @@ public class PopupMenu extends JPopupMenu
     {
       Conservation c = new Conservation("Group",
               ResidueProperties.propHash, 3,
-              sg.getSequences(ap.av.hiddenRepSequences), sg.getStartRes(),
+              sg.getSequences(ap.av.getHiddenRepSequences()), sg.getStartRes(),
               sg.getEndRes() + 1);
 
       c.calculate();
-      c.verdict(false, ap.av.ConsPercGaps);
+      c.verdict(false, ap.av.getConsPercGaps());
 
       sg.cs.setConservation(c);
 
@@ -1599,7 +1659,7 @@ public class PopupMenu extends JPopupMenu
     // this method won't add a new group if it already exists
     if (sg != null)
     {
-      ap.av.alignment.addGroup(sg);
+      ap.av.getAlignment().addGroup(sg);
     }
 
     return sg;
@@ -1653,7 +1713,7 @@ public class PopupMenu extends JPopupMenu
   void unGroupMenuItem_actionPerformed()
   {
     SequenceGroup sg = ap.av.getSelectionGroup();
-    ap.av.alignment.deleteGroup(sg);
+    ap.av.getAlignment().deleteGroup(sg);
     ap.av.setSelectionGroup(null);
     refresh();
   }
@@ -1807,7 +1867,7 @@ public class PopupMenu extends JPopupMenu
       }
 
       ChangeCaseCommand caseCommand = new ChangeCaseCommand(description,
-              sg.getSequencesAsArray(ap.av.hiddenRepSequences), startEnd,
+              sg.getSequencesAsArray(ap.av.getHiddenRepSequences()), startEnd,
               caseChange);
 
       ap.alignFrame.addHistoryItem(caseCommand);
@@ -1834,7 +1894,7 @@ public class PopupMenu extends JPopupMenu
     ColumnSelection csel = new ColumnSelection(ap.av.getColumnSelection());
     omitHidden = ap.av.getViewAsString(true);
     Alignment oal = new Alignment(ap.av.getSequenceSelection());
-    AlignmentAnnotation[] nala = ap.av.alignment.getAlignmentAnnotation();
+    AlignmentAnnotation[] nala = ap.av.getAlignment().getAlignmentAnnotation();
     if (nala != null)
     {
       for (int i = 0; i < nala.length; i++)
@@ -1848,7 +1908,7 @@ public class PopupMenu extends JPopupMenu
     oal = null;
   }
 
-  public void pdbFromFile_actionPerformed()
+  public void pdbFromFile_actionPerformed() throws ExceptionFileFormatOrSyntax, ParserConfigurationException, SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed, InterruptedException
   {
     jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser(
             jalview.bin.Cache.getProperty("LAST_DIRECTORY"));
@@ -1883,9 +1943,9 @@ public class PopupMenu extends JPopupMenu
   public void discoverPDB_actionPerformed()
   {
 
-    final SequenceI[] sequences = ((ap.av.selectionGroup == null) ? new SequenceI[]
+    final SequenceI[] sequences = ((ap.av.getSelectionGroup() == null) ? new SequenceI[]
     { sequence }
-            : ap.av.selectionGroup.getSequencesInOrder(ap.av.alignment));
+            : ap.av.getSequenceSelection());
     Thread discpdb = new Thread(new Runnable()
     {
       public void run()
@@ -1954,10 +2014,10 @@ public class PopupMenu extends JPopupMenu
     AlignmentAnnotation an = new AlignmentAnnotation("Structure",
             "Coloured by " + pdbid, anots);
 
-    ap.av.alignment.addAnnotation(an);
+    ap.av.getAlignment().addAnnotation(an);
     an.createSequenceMapping(sequence, 0, true);
     // an.adjustForAlignment();
-    ap.av.alignment.setAnnotationIndex(an, 0);
+    ap.av.getAlignment().setAnnotationIndex(an, 0);
 
     ap.adjustAnnotationHeight();
 
@@ -1984,8 +2044,8 @@ public class PopupMenu extends JPopupMenu
         EditCommand editCommand = new EditCommand("Edit Sequences",
                 EditCommand.REPLACE, dialog.getName().replace(' ',
                         ap.av.getGapCharacter()),
-                sg.getSequencesAsArray(ap.av.hiddenRepSequences),
-                sg.getStartRes(), sg.getEndRes() + 1, ap.av.alignment);
+                sg.getSequencesAsArray(ap.av.getHiddenRepSequences()),
+                sg.getStartRes(), sg.getEndRes() + 1, ap.av.getAlignment());
 
         ap.alignFrame.addHistoryItem(editCommand);