JAL-842, AppVarnaBinding was filled with a minimalistic method to
authorjanengelhardt <engelhardt87@googlemail.com>
Thu, 16 Jun 2011 18:10:39 +0000 (20:10 +0200)
committerjanengelhardt <engelhardt87@googlemail.com>
Mon, 25 Jul 2011 12:58:33 +0000 (14:58 +0200)
start a VARNA JFrame like in VARNAGUI, it is called over AppVarna in
the PopupMenu just like Jmol.
TODOs: Check if a sequence/alignments is a RNA; clean the VARNA class
structure; really include the VARNA frame into jalview-desktop

Change-Id: Ia9b4e4ad1caa2d39518d6f862bde8840821808ee

.classpath
src/jalview/gui/AppVarna.java
src/jalview/gui/AppVarnaBinding.java
src/jalview/gui/PopupMenu.java

index ec1077a..b09d9ee 100644 (file)
@@ -41,5 +41,6 @@
        </classpathentry>
        <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/plugin.jar"/>
        <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/plugin.java"/>
+       <classpathentry kind="lib" path="/VARNAv3-8b/VARNAv3-8b.jar"/>
        <classpathentry kind="output" path="classes"/>
 </classpath>
index 3a67e10..d0173d0 100644 (file)
@@ -48,13 +48,21 @@ public class AppVarna extends JInternalFrame // implements Runnable,SequenceStru
 
   Vector atomsPicked = new Vector();
   
-  void initVarna(){
+  public AppVarna(){
+         initVarna();
+  }
+  
+  public void initVarna(){
          //vab.setFinishedInit(false);
          //renderPanel = new RenderPanel();
          // TODO: consider waiting until the structure/view is fully loaded before
          // displaying
          //this.getContentPane().add(renderPanel, java.awt.BorderLayout.CENTER);
-         jalview.gui.Desktop.addInternalFrame(this,"test",300,300);
+         //jalview.gui.Desktop.addInternalFrame(this,"test",300,300);
+         AppVarnaBinding d = new AppVarnaBinding();
+         d.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+         d.pack();
+         d.setVisible(true);
   }
   
   private boolean _started = false;
index 5b65b8c..ac9a880 100644 (file)
  */
 package jalview.gui;
 
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.GridLayout;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DropTarget;
+import java.awt.dnd.DropTargetDragEvent;
+import java.awt.dnd.DropTargetDropEvent;
+import java.awt.dnd.DropTargetEvent;
+import java.awt.dnd.DropTargetListener;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.io.File;
+import java.text.DateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.swing.DefaultListModel;
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.Icon;
+import javax.swing.JButton;
 import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
+import javax.swing.JTextField;
+import javax.swing.ListModel;
+import javax.swing.ListSelectionModel;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+import fr.orsay.lri.varna.VARNAPanel;
+import fr.orsay.lri.varna.components.ReorderableJList;
+import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax;
+import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed;
+import fr.orsay.lri.varna.exceptions.ExceptionNonEqualLength;
+import fr.orsay.lri.varna.exceptions.ExceptionUnmatchedClosingParentheses;
+import fr.orsay.lri.varna.interfaces.InterfaceVARNAListener;
+import fr.orsay.lri.varna.models.FullBackup;
+import fr.orsay.lri.varna.models.VARNAConfig;
+import fr.orsay.lri.varna.models.rna.Mapping;
+import fr.orsay.lri.varna.models.rna.RNA;
+
+public class AppVarnaBinding extends JFrame implements DropTargetListener, InterfaceVARNAListener, MouseListener {
+
+       /**
+        * 
+        */
+       //private static final long serialVersionUID = -790155708306987257L;
+
+       private String DEFAULT_SEQUENCE = "CAGCACGACACUAGCAGUCAGUGUCAGACUGCAIACAGCACGACACUAGCAGUCAGUGUCAGACUGCAIACAGCACGACACUAGCAGUCAGUGUCAGACUGCAIA";
 
-import fr.orsay.lri.varna.applications.*;
+       private String DEFAULT_STRUCTURE1 = "..(((((...(((((...(((((...(((((.....)))))...))))).....(((((...(((((.....)))))...))))).....)))))...)))))..";
+       private String DEFAULT_STRUCTURE2 = "..(((((...(((((...(((((........(((((...(((((.....)))))...)))))..................))))).....)))))...)))))..";
+       // private static final String DEFAULT_STRUCTURE1 = "((((....))))";
+       // private static final String DEFAULT_STRUCTURE2 =
+       // "((((..(((....)))..))))";
+
+       private VARNAPanel _vp;
+
+       private JPanel _tools = new JPanel();
+       private JPanel _input = new JPanel();
+
+       private JPanel _seqPanel = new JPanel();
+       private JPanel _strPanel = new JPanel();
+       private JLabel _info = new JLabel();
+       private JTextField _str = new JTextField();
+       private JTextField _seq = new JTextField();
+       private JLabel _strLabel = new JLabel(" Str:");
+       private JLabel _seqLabel = new JLabel(" Seq:");
+       private JButton _createButton = new JButton("Create");
+       private JButton _deleteButton = new JButton("Delete");
+       private JButton _duplicateButton = new JButton("Snapshot");
+       
+       private JPanel _listPanel = new JPanel();
+       private ReorderableJList _sideList = null;
 
-public class AppVarnaBinding// extends jalview.ext.jmol.JalviewJmolBinding
-{
-       protected JFrame varnagui;
-  
-       public AppVarnaBinding(){
-               newVarnaGui();
+
+       private static String errorOpt = "error";
+       @SuppressWarnings("unused")
+       private boolean _error;
+
+       private Color _backgroundColor = Color.white;
+
+       private static int _nextID = 1;
+       @SuppressWarnings("unused")
+       private int _algoCode;
+       
+       private BackupHolder _rnaList;
+
+
+       public AppVarnaBinding() {
+               super("VARNA in Jalview");
+               //this.set_seq("ATGC");
+               //this.set_str(".().");
+               //RNAPanelDemoInit();
+               
+               //initVarna("ATGCATGATATATATATAT","....((((...))))....");
+               initVarna(this.DEFAULT_SEQUENCE,this.DEFAULT_STRUCTURE1);
        }
+       
+       
+       
+       private void initVarna(String seq, String str){
+               DefaultListModel dlm = new DefaultListModel(); 
+           
+
+               DefaultListSelectionModel m = new DefaultListSelectionModel();
+           m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+           m.setLeadAnchorNotificationEnabled(false);
+           
+           
+               _sideList = new ReorderableJList();
+               _sideList.setModel(dlm);
+               _sideList.addMouseListener(this);
+           _sideList.setSelectionModel(m);
+           _sideList.setPreferredSize(new Dimension(100, 0));
+           _sideList.addListSelectionListener( new ListSelectionListener(){
+                       public void valueChanged(ListSelectionEvent arg0) {
+                               if (!_sideList.isSelectionEmpty() && !arg0.getValueIsAdjusting())
+                               {
+                                       FullBackup  sel = (FullBackup) _sideList.getSelectedValue();
+                                       Mapping map = Mapping.DefaultOutermostMapping(_vp.getRNA().getSize(), sel.rna.getSize());
+                                       _vp.showRNAInterpolated(sel.rna,sel.config,map);
+                                       _seq.setText(sel.rna.getSeq());
+                                       _str.setText(sel.rna.getStructDBN());
+                               }
+                       }
+           });
+
+           _rnaList = new BackupHolder(dlm,_sideList);
+               RNA _RNA1 = new RNA("User defined 1");
+               
+               try {
+                       _vp = new VARNAPanel("0",".");
+                       _RNA1.setRNA(seq, str);
+                       _RNA1.drawRNARadiate(_vp.getConfig());
+               } catch (ExceptionNonEqualLength e) {
+                       _vp.errorDialog(e);
+               } catch (ExceptionUnmatchedClosingParentheses e2) {
+               e2.printStackTrace();
+               } catch (ExceptionFileFormatOrSyntax e3) {
+               e3.printStackTrace();
+               }
+               _vp.setPreferredSize(new Dimension(400, 400));
+               _rnaList.add(_vp.getConfig().clone(),_RNA1,generateDefaultName(),true);
+
+               setBackground(_backgroundColor);
+               _vp.setBackground(_backgroundColor);
+
+               getContentPane().setLayout(new BorderLayout());
+               getContentPane().add(_vp, BorderLayout.CENTER);
+
+               setVisible(true);
+               _vp.addVARNAListener(this);
+       }
+
+       private void RNAPanelDemoInit() 
+       {
+           DefaultListModel dlm = new DefaultListModel(); 
+           
+
+               int marginTools = 40;
+
+           DefaultListSelectionModel m = new DefaultListSelectionModel();
+           m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+           m.setLeadAnchorNotificationEnabled(false);
+           
+           
+               _sideList = new ReorderableJList();
+               _sideList.setModel(dlm);
+               _sideList.addMouseListener(this);
+           _sideList.setSelectionModel(m);
+           _sideList.setPreferredSize(new Dimension(100, 0));
+           _sideList.addListSelectionListener( new ListSelectionListener(){
+                       public void valueChanged(ListSelectionEvent arg0) {
+                               //System.out.println(arg0);
+                               if (!_sideList.isSelectionEmpty() && !arg0.getValueIsAdjusting())
+                               {
+                                       FullBackup  sel = (FullBackup) _sideList.getSelectedValue();
+                                       Mapping map = Mapping.DefaultOutermostMapping(_vp.getRNA().getSize(), sel.rna.getSize());
+                                       _vp.showRNAInterpolated(sel.rna,sel.config,map);
+                                       _seq.setText(sel.rna.getSeq());
+                                       _str.setText(sel.rna.getStructDBN());
+                               }
+                       }
+           });
+
+           _rnaList = new BackupHolder(dlm,_sideList);
+               RNA _RNA1 = new RNA("User defined 1");
+               RNA _RNA2 = new RNA("User defined 2");
+               try {
+                       _vp = new VARNAPanel("0",".");
+                       _RNA1.setRNA(DEFAULT_SEQUENCE, DEFAULT_STRUCTURE1);
+                       _RNA1.drawRNARadiate(_vp.getConfig());
+                       _RNA2.setRNA(DEFAULT_SEQUENCE, DEFAULT_STRUCTURE2);
+                       _RNA2.drawRNARadiate(_vp.getConfig());
+               } catch (ExceptionNonEqualLength e) {
+                       _vp.errorDialog(e);
+               } catch (ExceptionUnmatchedClosingParentheses e2) {
+               e2.printStackTrace();
+               } catch (ExceptionFileFormatOrSyntax e3) {
+               e3.printStackTrace();
+               }
+               _vp.setPreferredSize(new Dimension(400, 400));
+           _rnaList.add(_vp.getConfig().clone(),_RNA2,generateDefaultName());
+           _rnaList.add(_vp.getConfig().clone(),_RNA1,generateDefaultName(),true);
+
+           JScrollPane listScroller = new JScrollPane(_sideList);
+           listScroller.setPreferredSize(new Dimension(150, 0));
+
+               setBackground(_backgroundColor);
+               _vp.setBackground(_backgroundColor);
+
+
+               Font textFieldsFont = Font.decode("MonoSpaced-PLAIN-12");
+
+               _seqLabel.setHorizontalTextPosition(JLabel.LEFT);
+               _seqLabel.setPreferredSize(new Dimension(marginTools, 15));
+               _seq.setFont(textFieldsFont);
+               _seq.setText(DEFAULT_SEQUENCE);
+
+               _createButton.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent e) {
+                               try {
+                               RNA nRNA = new RNA(generateDefaultName());
+                               nRNA.setRNA(_seq.getText(), _str.getText());
+                               nRNA.drawRNARadiate(_vp.getConfig());
+                               _rnaList.add(new VARNAConfig(),nRNA,true);
+                               } catch (ExceptionUnmatchedClosingParentheses e1) {
+                                       JOptionPane.showMessageDialog(_vp, e1.getMessage(),"Error", JOptionPane.ERROR_MESSAGE);
+                               } catch (ExceptionFileFormatOrSyntax e1) {
+                                       JOptionPane.showMessageDialog(_vp, e1.getMessage(),"Error", JOptionPane.ERROR_MESSAGE);
+                               }
+                       }
+               });
+
+
+               _seqPanel.setLayout(new BorderLayout());
+               _seqPanel.add(_seqLabel, BorderLayout.WEST);
+               _seqPanel.add(_seq, BorderLayout.CENTER);
+
+               _strLabel.setPreferredSize(new Dimension(marginTools, 15));
+               _strLabel.setHorizontalTextPosition(JLabel.LEFT);
+               _str.setFont(textFieldsFont);
+               _strPanel.setLayout(new BorderLayout());
+               _strPanel.add(_strLabel, BorderLayout.WEST);
+               _strPanel.add(_str, BorderLayout.CENTER);
+
+               _input.setLayout(new GridLayout(2, 0));
+               _input.add(_seqPanel);
+               _input.add(_strPanel);
+
+               JPanel goPanel = new JPanel();
+               goPanel.setLayout(new BorderLayout());
+
+               _tools.setLayout(new BorderLayout());
+               _tools.add(_input, BorderLayout.CENTER);
+               _tools.add(_info, BorderLayout.SOUTH);
+               _tools.add(goPanel, BorderLayout.EAST);
+
+               _deleteButton.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent e) {
+                               _rnaList.removeSelected();
+                       }
+               });
+               _duplicateButton.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent e) {
+                                       _rnaList.add((VARNAConfig)_vp.getConfig().clone(),_vp.getRNA().clone(),_vp.getRNA().getName()+"-"+DateFormat.getTimeInstance(DateFormat.LONG).format(new Date()),true); 
+                       }});
+               
+               JPanel ops = new JPanel();
+               ops.setLayout(new GridLayout(1,2));
+               ops.add(_deleteButton);
+               ops.add(_duplicateButton);
+
+               JLabel j = new JLabel("Structures Manager",JLabel.CENTER);
+               _listPanel.setLayout(new BorderLayout());
+               
+               _listPanel.add(ops,BorderLayout.SOUTH);
+               _listPanel.add(j,BorderLayout.NORTH);
+               _listPanel.add(listScroller,BorderLayout.CENTER);
+
+               goPanel.add(_createButton, BorderLayout.CENTER);
+
+               JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,_listPanel,_vp);
+               getContentPane().setLayout(new BorderLayout());
+               getContentPane().add(split, BorderLayout.CENTER);
+               getContentPane().add(_tools, BorderLayout.NORTH);
+
+               setVisible(true);
+               DropTarget dt = new DropTarget(_vp, this);
                
-       public void newVarnaGui(){
-               varnagui=new VARNAGUI();
-       }       
+               _vp.addVARNAListener(this);
+       }
+       
+       public static String generateDefaultName()
+       {
+               return "User file #"+_nextID++;
+       }
+
+       public RNA getRNA() {
+               return (RNA)_sideList.getSelectedValue();
+       }
+
+
+
+       public String[][] getParameterInfo() {
+               String[][] info = {
+                               // Parameter Name Kind of Value Description,
+                               { "sequenceDBN", "String", "A raw RNA sequence" },
+                               { "structureDBN", "String",
+                                               "An RNA structure in dot bracket notation (DBN)" },
+                               { errorOpt, "boolean", "To show errors" }, };
+               return info;
+       }
+
+       public void init() {
+               _vp.setBackground(_backgroundColor);
+               _error = true;
+       }
+
+       @SuppressWarnings("unused")
+       private Color getSafeColor(String col, Color def) {
+               Color result;
+               try {
+                       result = Color.decode(col);
+               } catch (Exception e) {
+                       try {
+                               result = Color.getColor(col, def);
+                       } catch (Exception e2) {
+                               return def;
+                       }
+               }
+               return result;
+       }
+
+       public VARNAPanel get_varnaPanel() {
+               return _vp;
+       }
+
+       public void set_varnaPanel(VARNAPanel surface) {
+               _vp = surface;
+       }
+
+
+       public String get_seq() {
+               return _seq.getText();
+       }
+
+       public void set_seq(String _seq) {
+               this._seq.setText(_seq);
+       }
        
+       public String get_str(){
+               return _str.getText();
+       }
        
+       public void set_str(String _str){
+               this._str.setText(_str);
+       }
+
+       public JLabel get_info() {
+               return _info;
+       }
+
+       public void set_info(JLabel _info) {
+               this._info = _info;
+       }
+
+       public static void main(String[] args) {
+               AppVarnaBinding d = new AppVarnaBinding();
+               d.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+               d.pack();
+               d.setVisible(true);
+       }
+       
+
+       public void dragEnter(DropTargetDragEvent arg0) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void dragExit(DropTargetEvent arg0) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void dragOver(DropTargetDragEvent arg0) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void drop(DropTargetDropEvent dtde) {
+           try {
+               Transferable tr = dtde.getTransferable();
+               DataFlavor[] flavors = tr.getTransferDataFlavors();
+               for (int i = 0; i < flavors.length; i++) {
+           if (flavors[i].isFlavorJavaFileListType()) {
+             dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
+             Object ob = tr.getTransferData(flavors[i]);
+             if (ob instanceof List)
+             {
+                 List list = (List) ob;
+                 for (int j = 0; j < list.size(); j++) {
+                 Object o = list.get(j);
+                 
+                 if (dtde.getSource() instanceof DropTarget)
+                 {
+                         DropTarget dt = (DropTarget) dtde.getSource();
+                         Component c = dt.getComponent();
+                         if (c instanceof VARNAPanel)
+                         {
+                                         String path = o.toString();
+                                 VARNAPanel vp = (VARNAPanel) c;
+                                         try{
+                                 FullBackup bck =  VARNAPanel.importSession(path);
+                                 _rnaList.add(bck.config, bck.rna,bck.name,true);
+                                         }
+                                         catch (ExceptionLoadingFailed e3)
+                                         {
+                                                 RNA r = new RNA();
+                                                 r.loadSecStr(path);
+                                                 r.drawRNA(vp.getConfig());
+                                                 String name =r.getName();
+                                                 if (name.equals(""))
+                                                 { 
+                                                         name = path.substring(path.lastIndexOf(File.separatorChar)+1);
+                                                 }
+                                                 _rnaList.add(vp.getConfig().clone(),r,name,true);
+                                         }                                       
+                         }
+                 }
+                 }
+             }
+             // If we made it this far, everything worked.
+             dtde.dropComplete(true);
+             return;
+           }
+               }
+               // Hmm, the user must not have dropped a file list
+               dtde.rejectDrop();
+             } catch (Exception e) {
+               e.printStackTrace();
+               dtde.rejectDrop();
+             }
+               
+       }
+
+       public void dropActionChanged(DropTargetDragEvent arg0) {
+       }
+
+       private class BackupHolder{
+               private DefaultListModel _rnaList;
+               private ArrayList<RNA> _rnas = new ArrayList<RNA>();
+               JList _l;
+               
+               public BackupHolder(DefaultListModel rnaList, JList l)
+               {
+                       _rnaList = rnaList;
+                       _l = l;
+               }
+               
+               public void add(VARNAConfig c, RNA r)
+               {
+                       add(c, r, r.getName(),false);
+               }
+
+               public void add(VARNAConfig c, RNA r,boolean select)
+               {
+                       add(c, r, r.getName(),select);
+               }
+
+               public void add(VARNAConfig c, RNA r, String name)
+               {
+                       add(c, r, name,false);                  
+               }
+               public void add(VARNAConfig c, RNA r, String name, boolean select)
+               {
+                       if (select){
+                               _l.removeSelectionInterval(0, _rnaList.size());
+                       }
+                       if (name.equals(""))
+                       {
+                               name = generateDefaultName();
+                       }
+                       FullBackup bck = new FullBackup(c,r,name);
+                       _rnas.add(0, r);
+                       _rnaList.add(0,bck);
+                       if (select){
+                         _l.setSelectedIndex(0);
+                       }
+               }
+
+               public void remove(int i)
+               {
+                       _rnas.remove(i);
+                       _rnaList.remove(i);
+                       
+               }
+               public DefaultListModel getModel()
+               {
+                       return _rnaList;
+               }
+               public boolean contains(RNA r)
+               {
+                       return _rnas.contains(r);
+               }
+               /*public int getSize()
+               {
+                       return _rnaList.getSize();
+               }*/
+               public FullBackup getElementAt(int i)
+               {
+                       return (FullBackup) _rnaList.getElementAt(i);
+               }
+               
+               public void removeSelected()
+               {
+                       int i = _l.getSelectedIndex();
+                       if (i!=-1)
+                       {
+                         if (_rnaList.getSize()==1)
+                         {
+                                 RNA r = new RNA();
+                                 try {
+                                       r.setRNA(" ", ".");
+                                 } catch (ExceptionUnmatchedClosingParentheses e1) {
+                                 } catch (ExceptionFileFormatOrSyntax e1) {
+                                 }
+                                 _vp.showRNA(r);
+                                 _vp.repaint();
+                         }
+                         else
+                         {  
+                                int newi = i+1;
+                                if (newi==_rnaList.getSize())
+                                {
+                                        newi = _rnaList.getSize()-2;
+                                }
+                                FullBackup bck = (FullBackup) _rnaList.getElementAt(newi);
+                                _l.setSelectedValue(bck,true);
+                         }
+                         _rnaList.remove(i);
+                       }
+
+               }
+       }
+
+       public void onLayoutChanged() {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void onUINewStructure(VARNAConfig v, RNA r) {
+               _rnaList.add(v, r,"",true);
+       }
+
+       public void onWarningEmitted(String s) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void mouseClicked(MouseEvent e) {
+                          if(e.getClickCount() == 2){
+                            int index = _sideList.locationToIndex(e.getPoint());
+                            ListModel dlm = _sideList.getModel();
+                            FullBackup item = (FullBackup) dlm.getElementAt(index);;
+                            _sideList.ensureIndexIsVisible(index);
+                            Object newName = JOptionPane.showInputDialog(
+                                           this,
+                                           "Specify a new name for this RNA",
+                                           "Rename RNA", 
+                                           JOptionPane.QUESTION_MESSAGE,
+                                           (Icon)null,
+                                           null,
+                                           item.toString());
+                            if (newName!=null)
+                            {
+                                item.name = newName.toString();
+                                this._sideList.repaint();
+                            }
+                            }
+       }
+
+       public void mouseEntered(MouseEvent arg0) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void mouseExited(MouseEvent arg0) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void mousePressed(MouseEvent arg0) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       public void mouseReleased(MouseEvent arg0) {
+               // TODO Auto-generated method stub
+               
+       }
+}
+
+
+/*
        public static void main(String[] args)
        {
+               JTextField str = new JTextField("ATGC");
+               
                AppVarnaBinding vab = new AppVarnaBinding();
+               vab.varnagui.set_seq(str);
                vab.varnagui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                vab.varnagui.pack();
                vab.varnagui.setVisible(true);  
        }
 }
+*/
\ No newline at end of file
index e85da7a..a2b4ee3 100644 (file)
@@ -254,7 +254,22 @@ public class PopupMenu extends JPopupMenu
       }
       else
       {
-        structureMenu.remove(viewStructureMenu);
+         //TODO: Something to check if it's an RNA
+         //like: if(seq.getAnnotation()[0].annotations[0].secondaryStructure == 'S')
+         menuItem = new JMenuItem();
+         menuItem.setText("RNA structure");
+          menuItem.addActionListener(new java.awt.event.ActionListener()
+          {
+            public void actionPerformed(ActionEvent e)
+            {
+               System.out.println("Call Varna");
+               new AppVarna();
+               
+            }
+          });
+          viewStructureMenu.add(menuItem);
+         
+        //JAN structureMenu.remove(viewStructureMenu);
         // structureMenu.remove(colStructureMenu);
       }