Reorganize the class structure, unfortunately breaks the VARNA-Frame
[jalview.git] / src / jalview / gui / AppVarnaBinding.java
index ac9a880..54ca3b3 100644 (file)
@@ -33,6 +33,7 @@ import java.awt.dnd.DropTargetEvent;
 import java.awt.dnd.DropTargetListener;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.ComponentEvent;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.io.File;
@@ -72,22 +73,17 @@ 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 {
+public class AppVarnaBinding extends jalview.ext.varna.JalviewVarnaBinding implements DropTargetListener, InterfaceVARNAListener, MouseListener {
 
        /**
         * 
         */
        //private static final long serialVersionUID = -790155708306987257L;
 
-       private String DEFAULT_SEQUENCE = "CAGCACGACACUAGCAGUCAGUGUCAGACUGCAIACAGCACGACACUAGCAGUCAGUGUCAGACUGCAIACAGCACGACACUAGCAGUCAGUGUCAGACUGCAIA";
-
-       private String DEFAULT_STRUCTURE1 = "..(((((...(((((...(((((...(((((.....)))))...))))).....(((((...(((((.....)))))...))))).....)))))...)))))..";
-       private String DEFAULT_STRUCTURE2 = "..(((((...(((((...(((((........(((((...(((((.....)))))...)))))..................))))).....)))))...)))))..";
-       // private static final String DEFAULT_STRUCTURE1 = "((((....))))";
-       // private static final String DEFAULT_STRUCTURE2 =
-       // "((((..(((....)))..))))";
-
-       private VARNAPanel _vp;
+       //private String DEFAULT_SEQUENCE = "CAGCACGACACUAGCAGUCAGUGUCAGACUGCAIACAGCACGACACUAGCAGUCAGUGUCAGACUGCAIACAGCACGACACUAGCAGUCAGUGUCAGACUGCAIA";
+       //private String DEFAULT_STRUCTURE1 = "..(((((...(((((...(((((...(((((.....)))))...))))).....(((((...(((((.....)))))...))))).....)))))...)))))..";
+       //private String DEFAULT_STRUCTURE2 = "..(((((...(((((...(((((........(((((...(((((.....)))))...)))))..................))))).....)))))...)))))..";
+       public VARNAPanel vp;
 
        private JPanel _tools = new JPanel();
        private JPanel _input = new JPanel();
@@ -120,14 +116,24 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
        private BackupHolder _rnaList;
 
 
-       public AppVarnaBinding() {
-               super("VARNA in Jalview");
+       /*public AppVarnaBinding() {
+               //super("VARNA in Jalview");
                //this.set_seq("ATGC");
                //this.set_str(".().");
                //RNAPanelDemoInit();
                
                //initVarna("ATGCATGATATATATATAT","....((((...))))....");
                initVarna(this.DEFAULT_SEQUENCE,this.DEFAULT_STRUCTURE1);
+       }*/
+       
+       public AppVarnaBinding(String seq,String struc){
+               //super("VARNA in Jalview");
+               initVarna(seq,struc);
+       }
+       
+       public AppVarnaBinding(ArrayList<RNA> rnalist){
+               //super("VARNA in Jalview");
+               initVarnaEdit(rnalist);
        }
        
        
@@ -135,13 +141,11 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
        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 = new ReorderableJList();
                _sideList.setModel(dlm);
                _sideList.addMouseListener(this);
            _sideList.setSelectionModel(m);
@@ -151,8 +155,8 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
                                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);
+                                       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());
                                }
@@ -163,30 +167,168 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
                RNA _RNA1 = new RNA("User defined 1");
                
                try {
-                       _vp = new VARNAPanel("0",".");
+                       vp = new VARNAPanel("0",".");
                        _RNA1.setRNA(seq, str);
-                       _RNA1.drawRNARadiate(_vp.getConfig());
+                       _RNA1.drawRNARadiate(vp.getConfig());
                } catch (ExceptionNonEqualLength e) {
-                       _vp.errorDialog(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);
+               vp.setPreferredSize(new Dimension(400, 400));
+               _rnaList.add(vp.getConfig().clone(),_RNA1,generateDefaultName(),true);
 
-               setBackground(_backgroundColor);
-               _vp.setBackground(_backgroundColor);
+               //TODO setBackground(_backgroundColor);
+               vp.setBackground(_backgroundColor);
+
+               //TODO getContentPane().setLayout(new BorderLayout());
+               //TODO getContentPane().add(vp, BorderLayout.CENTER);
+
+               //setVisible(true);
+               vp.addVARNAListener(this);
+       }
+       
+       private void initVarnaEdit(ArrayList<RNA> rnaInList) 
+       {
+           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);
+               try {
+                       vp = new VARNAPanel("0",".");
+                       for(int i=0;i<rnaInList.size();i++){
+                               rnaInList.get(i).drawRNARadiate(vp.getConfig());
+                       }
+               } catch (ExceptionNonEqualLength e) {
+                       vp.errorDialog(e);
+               } 
+               vp.setPreferredSize(new Dimension(400, 400));
+               for(int i=0;i<rnaInList.size();i++){
+                       _rnaList.add(vp.getConfig().clone(),rnaInList.get(i),generateDefaultName(),true);
+               }
+           /*_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));
+
+               //TODO 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(rnaInList.get(0).getSeq());
+
+               _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);
+               /**TODO
                getContentPane().setLayout(new BorderLayout());
-               getContentPane().add(_vp, BorderLayout.CENTER);
+               getContentPane().add(split, BorderLayout.CENTER);
+               getContentPane().add(_tools, BorderLayout.NORTH);
+                */
 
-               setVisible(true);
-               _vp.addVARNAListener(this);
+               //TODO setVisible(true);
+               DropTarget dt = new DropTarget(vp, this);
+               
+               vp.addVARNAListener(this);
        }
 
-       private void RNAPanelDemoInit() 
+
+       /*private void RNAPanelDemoInit() 
        {
            DefaultListModel dlm = new DefaultListModel(); 
            
@@ -209,8 +351,8 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
                                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);
+                                       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());
                                }
@@ -221,27 +363,27 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
                RNA _RNA1 = new RNA("User defined 1");
                RNA _RNA2 = new RNA("User defined 2");
                try {
-                       _vp = new VARNAPanel("0",".");
+                       vp = new VARNAPanel("0",".");
                        _RNA1.setRNA(DEFAULT_SEQUENCE, DEFAULT_STRUCTURE1);
-                       _RNA1.drawRNARadiate(_vp.getConfig());
+                       _RNA1.drawRNARadiate(vp.getConfig());
                        _RNA2.setRNA(DEFAULT_SEQUENCE, DEFAULT_STRUCTURE2);
-                       _RNA2.drawRNARadiate(_vp.getConfig());
+                       _RNA2.drawRNARadiate(vp.getConfig());
                } catch (ExceptionNonEqualLength e) {
-                       _vp.errorDialog(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);
+               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);
+               vp.setBackground(_backgroundColor);
 
 
                Font textFieldsFont = Font.decode("MonoSpaced-PLAIN-12");
@@ -256,12 +398,12 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
                                try {
                                RNA nRNA = new RNA(generateDefaultName());
                                nRNA.setRNA(_seq.getText(), _str.getText());
-                               nRNA.drawRNARadiate(_vp.getConfig());
+                               nRNA.drawRNARadiate(vp.getConfig());
                                _rnaList.add(new VARNAConfig(),nRNA,true);
                                } catch (ExceptionUnmatchedClosingParentheses e1) {
-                                       JOptionPane.showMessageDialog(_vp, e1.getMessage(),"Error", JOptionPane.ERROR_MESSAGE);
+                                       JOptionPane.showMessageDialog(vp, e1.getMessage(),"Error", JOptionPane.ERROR_MESSAGE);
                                } catch (ExceptionFileFormatOrSyntax e1) {
-                                       JOptionPane.showMessageDialog(_vp, e1.getMessage(),"Error", JOptionPane.ERROR_MESSAGE);
+                                       JOptionPane.showMessageDialog(vp, e1.getMessage(),"Error", JOptionPane.ERROR_MESSAGE);
                                }
                        }
                });
@@ -297,7 +439,7 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
                });
                _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); 
+                                       _rnaList.add((VARNAConfig)vp.getConfig().clone(),vp.getRNA().clone(),vp.getRNA().getName()+"-"+DateFormat.getTimeInstance(DateFormat.LONG).format(new Date()),true); 
                        }});
                
                JPanel ops = new JPanel();
@@ -314,16 +456,16 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
 
                goPanel.add(_createButton, BorderLayout.CENTER);
 
-               JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,_listPanel,_vp);
+               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);
+               DropTarget dt = new DropTarget(vp, this);
                
-               _vp.addVARNAListener(this);
-       }
+               vp.addVARNAListener(this);
+       }*/
        
        public static String generateDefaultName()
        {
@@ -347,7 +489,7 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
        }
 
        public void init() {
-               _vp.setBackground(_backgroundColor);
+               vp.setBackground(_backgroundColor);
                _error = true;
        }
 
@@ -367,11 +509,11 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
        }
 
        public VARNAPanel get_varnaPanel() {
-               return _vp;
+               return vp;
        }
 
        public void set_varnaPanel(VARNAPanel surface) {
-               _vp = surface;
+               vp = surface;
        }
 
 
@@ -399,12 +541,12 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
                this._info = _info;
        }
 
-       public static void main(String[] args) {
+       /*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) {
@@ -559,8 +701,8 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
                                  } catch (ExceptionUnmatchedClosingParentheses e1) {
                                  } catch (ExceptionFileFormatOrSyntax e1) {
                                  }
-                                 _vp.showRNA(r);
-                                 _vp.repaint();
+                                 vp.showRNA(r);
+                                 vp.repaint();
                          }
                          else
                          {  
@@ -598,7 +740,7 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
                             ListModel dlm = _sideList.getModel();
                             FullBackup item = (FullBackup) dlm.getElementAt(index);;
                             _sideList.ensureIndexIsVisible(index);
-                            Object newName = JOptionPane.showInputDialog(
+                            /*TODO Object newName = JOptionPane.showInputDialog(
                                            this,
                                            "Specify a new name for this RNA",
                                            "Rename RNA", 
@@ -610,7 +752,7 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
                             {
                                 item.name = newName.toString();
                                 this._sideList.repaint();
-                            }
+                            }*/
                             }
        }
 
@@ -633,6 +775,68 @@ public class AppVarnaBinding extends JFrame implements DropTargetListener, Inter
                // TODO Auto-generated method stub
                
        }
+
+       @Override
+       public Color getColour(int atomIndex, int pdbResNum, String chain,
+                       String pdbId) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public String[] getPdbFile() {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       @Override
+       public void highlightAtom(int atomIndex, int pdbResNum, String chain,
+                       String pdbId) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       public void mouseOverStructure(int atomIndex, String strInfo) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       public void releaseReferences(Object svl) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       public void updateColours(Object source) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       public void componentHidden(ComponentEvent e) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       public void componentMoved(ComponentEvent e) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       public void componentResized(ComponentEvent e) {
+               // TODO Auto-generated method stub
+               
+       }
+
+       @Override
+       public void componentShown(ComponentEvent e) {
+               // TODO Auto-generated method stub
+               
+       }
 }