JAL-2446 merged to spike branch
[jalview.git] / src / jalview / gui / AppVarnaBinding.java
index 3ea8e4d..829fc3e 100644 (file)
  */
 package jalview.gui;
 
+import jalview.datamodel.SequenceI;
+import jalview.ext.varna.JalviewVarnaBinding;
+import jalview.structure.AtomSpec;
+import jalview.util.MessageManager;
+
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Dimension;
-import java.awt.Font;
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
 import java.awt.dnd.DnDConstants;
@@ -54,43 +58,16 @@ import javax.swing.event.ListSelectionListener;
 import fr.orsay.lri.varna.VARNAPanel;
 import fr.orsay.lri.varna.components.ReorderableJList;
 import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed;
+import fr.orsay.lri.varna.exceptions.ExceptionNAViewAlgorithm;
 import fr.orsay.lri.varna.exceptions.ExceptionNonEqualLength;
 import fr.orsay.lri.varna.models.FullBackup;
 import fr.orsay.lri.varna.models.VARNAConfig;
 import fr.orsay.lri.varna.models.rna.RNA;
 
-import jalview.datamodel.SequenceI;
-import jalview.ext.varna.JalviewVarnaBinding;
-import jalview.structure.AtomSpec;
-import jalview.util.MessageManager;
-
 public class AppVarnaBinding extends JalviewVarnaBinding
 {
   public VARNAPanel vp;
 
-  // remove unused (commented out) fields?
-  // protected JPanel _tools = new JPanel();
-  //
-  // private JPanel _input = new JPanel();
-  //
-  // private JPanel _strPanel = new JPanel();
-  //
-  // private JTextField _str = new JTextField();
-  //
-  // private JTextField _seq = new JTextField();
-  //
-  // private JLabel _strLabel = new JLabel(
-  // MessageManager.getString("label.str"));
-  //
-  // private JButton _updateButton = new JButton(
-  // MessageManager.getString("action.update"));
-  //
-  // private JButton _deleteButton = new JButton(
-  // MessageManager.getString("action.delete"));
-  //
-  // private JButton _duplicateButton = new JButton(
-  // MessageManager.getString("action.snapshot"));
-  //
   protected JPanel _listPanel = new JPanel();
 
   private ReorderableJList _sideList = null;
@@ -136,7 +113,8 @@ public class AppVarnaBinding extends JalviewVarnaBinding
     _sideList.addMouseListener(new MouseAdapter()
     {
       @Override
-      public void mouseClicked(MouseEvent e) {
+      public void mouseClicked(MouseEvent e)
+      {
         AppVarnaBinding.this.mouseClicked(e);
       }
     });
@@ -165,48 +143,6 @@ public class AppVarnaBinding extends JalviewVarnaBinding
 
     vp.setBackground(_backgroundColor);
 
-    Font textFieldsFont = Font.decode("MonoSpaced-PLAIN-12");
-
-    // MC commented out stuff not added to panel - remove?
-    // _seq.setFont(textFieldsFont);
-    // if (!rnaList.isEmpty())
-    // {
-    // _seq.setText(rnaList.get(0).getSeq());
-    // }
-
-    // _updateButton.addActionListener(new ActionListener()
-    // {
-    // public void actionPerformed(ActionEvent e)
-    // {
-    // FullBackup sel = (FullBackup) _sideList.getSelectedValue();
-    // sel.rna.setSequence("A");
-    // }
-    // });
-    //
-    // _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(1, 0));
-    // _input.add(_strPanel);
-    //
-    // JPanel goPanel = new JPanel();
-    // goPanel.setLayout(new BorderLayout());
-    //
-    // _tools.setLayout(new BorderLayout());
-    // _tools.add(_input, BorderLayout.CENTER);
-    // _tools.add(goPanel, BorderLayout.EAST);
-    //
-    // goPanel.add(_updateButton, BorderLayout.CENTER);
-    //
-    // JPanel ops = new JPanel();
-    // ops.setLayout(new GridLayout(1, 2));
-    // ops.add(_deleteButton);
-    // ops.add(_duplicateButton);
-
     JLabel j = new JLabel(
             MessageManager.getString("label.structures_manager"),
             JLabel.CENTER);
@@ -215,7 +151,8 @@ public class AppVarnaBinding extends JalviewVarnaBinding
     _listPanel.add(j, BorderLayout.NORTH);
     _listPanel.add(listScroller, BorderLayout.CENTER);
 
-    new DropTarget(vp, new DropTargetAdapter() {
+    new DropTarget(vp, new DropTargetAdapter()
+    {
       @Override
       public void drop(DropTargetDropEvent dtde)
       {
@@ -263,8 +200,7 @@ public class AppVarnaBinding extends JalviewVarnaBinding
 
   public String[][] getParameterInfo()
   {
-    String[][] info =
-    {
+    String[][] info = {
         // Parameter Name Kind of Value Description,
         { "sequenceDBN", "String", "A raw RNA sequence" },
         { "structureDBN", "String",
@@ -352,7 +288,8 @@ public class AppVarnaBinding extends JalviewVarnaBinding
                       {
                         name += " (Model " + mn++ + ")";
                       }
-                      _rnaList.add(varnaPanel.getConfig().clone(), r, name, true);
+                      _rnaList.add(varnaPanel.getConfig().clone(), r, name,
+                              true);
                     }
                   }
                 }
@@ -437,9 +374,9 @@ public class AppVarnaBinding extends JalviewVarnaBinding
 
       _sideList.ensureIndexIsVisible(index);
       /*
-       * TODO Object newName = JOptionPane.showInputDialog( this,
+       * TODO Object newName = JvOptionPane.showInputDialog( this,
        * "Specify a new name for this RNA", "Rename RNA",
-       * JOptionPane.QUESTION_MESSAGE, (Icon)null, null, item.toString()); if
+       * JvOptionPane.QUESTION_MESSAGE, (Icon)null, null, item.toString()); if
        * (newName!=null) { item.name = newName.toString();
        * this._sideList.repaint(); }
        */
@@ -447,7 +384,7 @@ public class AppVarnaBinding extends JalviewVarnaBinding
   }
 
   @Override
-  public String[] getPdbFile()
+  public String[] getStructureFiles()
   {
     return null;
   }
@@ -531,12 +468,9 @@ public class AppVarnaBinding extends JalviewVarnaBinding
     }
 
     /*
-     * switch display if not already shown
+     * switch display
      */
-    if (sel.rna != rna)
-    {
-      vp.showRNA(model.rna, model.config);
-    }
+    vp.showRNA(model.rna, model.config);
 
     try
     {
@@ -547,13 +481,10 @@ public class AppVarnaBinding extends JalviewVarnaBinding
       vp.toXML(filePath);
 
       /*
-       * restore the previous display if needed
+       * restore the previous display
        */
-      if (sel.rna != rna)
-      {
-        vp.showRNA(sel.rna, sel.config);
-      }
-      
+      vp.showRNA(sel.rna, sel.config);
+
       return filePath;
     } catch (IOException e)
     {
@@ -571,7 +502,8 @@ public class AppVarnaBinding extends JalviewVarnaBinding
    * 
    * @param evt
    */
-  protected void changeSelectedStructure_actionPerformed(ListSelectionEvent evt)
+  protected void changeSelectedStructure_actionPerformed(
+          ListSelectionEvent evt)
   {
     if (!evt.getValueIsAdjusting())
     {
@@ -596,7 +528,7 @@ public class AppVarnaBinding extends JalviewVarnaBinding
    * 
    * @param selectedRna
    */
-  public void setSelectedIndex(int selectedRna)
+  public void setSelectedIndex(final int selectedRna)
   {
     /*
      * note this does nothing if, say, selecting item 3 when only 1 has been
@@ -604,7 +536,6 @@ public class AppVarnaBinding extends JalviewVarnaBinding
      */
     _sideList.setSelectedIndex(selectedRna);
     // TODO ? need a worker thread to get this to happen properly
-    showSelectedStructure();
   }
 
   /**
@@ -622,9 +553,25 @@ public class AppVarnaBinding extends JalviewVarnaBinding
    * @param rna
    * @param config
    */
-  protected void addStructure(RNA rna, VARNAConfig config)
+  protected void addStructure(final RNA rna, final VARNAConfig config)
   {
-    rna.drawRNARadiate(config);
+    drawRna(rna, config);
     _rnaList.add(config, rna, rna.getName());
   }
+
+  /**
+   * @param rna
+   * @param config
+   */
+  protected void drawRna(final RNA rna, final VARNAConfig config)
+  {
+    try
+    {
+      rna.drawRNA(rna.getDrawMode(), config);
+    } catch (ExceptionNAViewAlgorithm e)
+    {
+      // only throwable for draw mode = 3 NAView
+      System.err.println("Error drawing RNA: " + e.getMessage());
+    }
+  }
 }