JAL-3390 Chimera showStructures() respects visible/chain selections
[jalview.git] / src / jalview / jbgui / GStructureViewer.java
index daba592..418e413 100644 (file)
 package jalview.jbgui;
 
 import jalview.api.structures.JalviewStructureDisplayI;
-import jalview.gui.UserDefinedColours;
-import jalview.schemes.UserColourScheme;
+import jalview.gui.ColourMenuHelper.ColourChangeListener;
 import jalview.util.MessageManager;
 
 import java.awt.BorderLayout;
 import java.awt.GridLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.List;
 
-import javax.swing.ButtonGroup;
+import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JInternalFrame;
 import javax.swing.JLabel;
 import javax.swing.JMenu;
@@ -40,8 +40,8 @@ import javax.swing.JMenuItem;
 import javax.swing.JPanel;
 import javax.swing.JRadioButtonMenuItem;
 
-public abstract class GStructureViewer extends JInternalFrame implements
-        JalviewStructureDisplayI
+public abstract class GStructureViewer extends JInternalFrame
+        implements JalviewStructureDisplayI, ColourChangeListener
 {
   // private AAStructureBindingModel bindingModel;
 
@@ -57,6 +57,8 @@ public abstract class GStructureViewer extends JInternalFrame implements
 
   protected JMenuItem alignStructs;
 
+  protected JCheckBoxMenuItem showAlignmentOnly;
+
   protected JMenuItem fitToWindow;
 
   protected JRadioButtonMenuItem seqColour;
@@ -65,26 +67,6 @@ public abstract class GStructureViewer extends JInternalFrame implements
 
   protected JRadioButtonMenuItem chargeColour;
 
-  protected JRadioButtonMenuItem zappoColour;
-
-  protected JRadioButtonMenuItem taylorColour;
-
-  protected JRadioButtonMenuItem hydroColour;
-
-  protected JRadioButtonMenuItem strandColour;
-
-  protected JRadioButtonMenuItem helixColour;
-
-  protected JRadioButtonMenuItem turnColour;
-
-  protected JRadioButtonMenuItem buriedColour;
-
-  protected JRadioButtonMenuItem nucleotideColour;
-
-  protected JRadioButtonMenuItem purinePyrimidineColour;
-
-  protected JRadioButtonMenuItem userColour;
-
   protected JRadioButtonMenuItem viewerColour;
 
   protected JMenuItem helpItem;
@@ -116,7 +98,8 @@ public abstract class GStructureViewer extends JInternalFrame implements
     fileMenu.setText(MessageManager.getString("action.file"));
 
     savemenu = new JMenu();
-    savemenu.setActionCommand(MessageManager.getString("action.save_image"));
+    savemenu.setActionCommand(
+            MessageManager.getString("action.save_image"));
     savemenu.setText(MessageManager.getString("action.save_as"));
 
     JMenuItem pdbFile = new JMenuItem();
@@ -193,8 +176,8 @@ public abstract class GStructureViewer extends JInternalFrame implements
       }
     });
     alignStructs = new JMenuItem();
-    alignStructs
-            .setText(MessageManager.getString("label.align_structures"));
+    alignStructs.setText(
+            MessageManager.getString("label.superpose_structures"));
     alignStructs.addActionListener(new ActionListener()
     {
       @Override
@@ -204,11 +187,11 @@ public abstract class GStructureViewer extends JInternalFrame implements
       }
     });
 
-    viewerActionMenu = new JMenu(MessageManager.getString("label.jmol"));
+    viewerActionMenu = new JMenu(); // text set in sub-classes
     viewerActionMenu.setVisible(false);
     viewerActionMenu.add(alignStructs);
     colourMenu = new JMenu();
-    buildColourMenu();
+    colourMenu.setText(MessageManager.getString("label.colours"));
     fileMenu.add(savemenu);
     fileMenu.add(viewMapping);
     savemenu.add(pdbFile);
@@ -230,233 +213,6 @@ public abstract class GStructureViewer extends JInternalFrame implements
     statusPanel.add(statusBar, null);
   }
 
-  /**
-   * Builds the colour menu
-   */
-  protected void buildColourMenu()
-  {
-    colourMenu.removeAll();
-    colourMenu.setText(MessageManager.getString("label.colours"));
-
-    JMenuItem backGround = new JMenuItem();
-    backGround
-            .setText(MessageManager.getString("action.background_colour"));
-    backGround.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        backGround_actionPerformed(actionEvent);
-      }
-    });
-    seqColour = new JRadioButtonMenuItem();
-    seqColour.setSelected(false);
-    seqColour.setText(MessageManager.getString("action.by_sequence"));
-    seqColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        seqColour_actionPerformed(actionEvent);
-      }
-    });
-    chainColour = new JRadioButtonMenuItem();
-    chainColour.setText(MessageManager.getString("action.by_chain"));
-    chainColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        chainColour_actionPerformed(actionEvent);
-      }
-    });
-    chargeColour = new JRadioButtonMenuItem();
-    chargeColour.setText(MessageManager.getString("label.charge_cysteine"));
-    chargeColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        chargeColour_actionPerformed(actionEvent);
-      }
-    });
-    zappoColour = new JRadioButtonMenuItem();
-    zappoColour.setText(MessageManager.getString("label.zappo"));
-    zappoColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        zappoColour_actionPerformed(actionEvent);
-      }
-    });
-    taylorColour = new JRadioButtonMenuItem();
-    taylorColour.setText(MessageManager.getString("label.taylor"));
-    taylorColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        taylorColour_actionPerformed(actionEvent);
-      }
-    });
-    hydroColour = new JRadioButtonMenuItem();
-    hydroColour.setText(MessageManager.getString("label.hydrophobicity"));
-    hydroColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        hydroColour_actionPerformed(actionEvent);
-      }
-    });
-    strandColour = new JRadioButtonMenuItem();
-    strandColour.setText(MessageManager
-            .getString("label.strand_propensity"));
-    strandColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        strandColour_actionPerformed(actionEvent);
-      }
-    });
-    helixColour = new JRadioButtonMenuItem();
-    helixColour.setText(MessageManager.getString("label.helix_propensity"));
-    helixColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        helixColour_actionPerformed(actionEvent);
-      }
-    });
-    turnColour = new JRadioButtonMenuItem();
-    turnColour.setText(MessageManager.getString("label.turn_propensity"));
-    turnColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        turnColour_actionPerformed(actionEvent);
-      }
-    });
-    buriedColour = new JRadioButtonMenuItem();
-    buriedColour.setText(MessageManager.getString("label.buried_index"));
-    buriedColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        buriedColour_actionPerformed(actionEvent);
-      }
-    });
-    nucleotideColour = new JRadioButtonMenuItem();
-    nucleotideColour.setText(MessageManager.getString("label.nucleotide"));
-    nucleotideColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        nucleotideColour_actionPerformed(actionEvent);
-      }
-    });
-    purinePyrimidineColour = new JRadioButtonMenuItem();
-    purinePyrimidineColour.setText(MessageManager
-            .getString("label.purine_pyrimidine"));
-    purinePyrimidineColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        purinePyrimidineColour_actionPerformed(actionEvent);
-      }
-    });
-    userColour = new JRadioButtonMenuItem();
-    userColour.setText(MessageManager.getString("action.user_defined"));
-    userColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        userColour_actionPerformed(actionEvent);
-      }
-    });
-    viewerColour = new JRadioButtonMenuItem();
-    viewerColour.setSelected(false);
-    viewerColour
-            .setText(MessageManager.getString("label.colour_with_jmol"));
-    viewerColour.setToolTipText(MessageManager
-            .getString("label.let_jmol_manage_structure_colours"));
-    viewerColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent actionEvent)
-      {
-        viewerColour_actionPerformed(actionEvent);
-      }
-    });
-
-    /*
-     * add colour buttons to a group so their selection
-     * is mutually exclusive
-     */
-    ButtonGroup colourButtons = new ButtonGroup();
-
-    colourMenu.add(seqColour);
-    colourMenu.add(chainColour);
-    colourMenu.add(chargeColour);
-    colourMenu.add(zappoColour);
-    colourMenu.add(taylorColour);
-    colourMenu.add(hydroColour);
-    colourMenu.add(helixColour);
-    colourMenu.add(strandColour);
-    colourMenu.add(turnColour);
-    colourMenu.add(buriedColour);
-    colourMenu.add(purinePyrimidineColour);
-
-    /*
-     * add any user-defined colours that are loaded
-     */
-    Map<String, UserColourScheme> userColourSchemes = UserDefinedColours
-            .getUserColourSchemes();
-    if (userColourSchemes != null)
-    {
-      for (String schemeName : userColourSchemes.keySet())
-      {
-        final JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem(
-                schemeName);
-        radioItem.addActionListener(new ActionListener()
-        {
-          @Override
-          public void actionPerformed(ActionEvent evt)
-          {
-            userColour_actionPerformed(evt);
-          }
-        });
-        colourMenu.add(radioItem);
-        colourButtons.add(radioItem);
-      }
-    }
-    colourMenu.add(userColour);
-    colourMenu.add(viewerColour);
-    colourMenu.add(backGround);
-
-    colourButtons.add(seqColour);
-    colourButtons.add(chainColour);
-    colourButtons.add(chargeColour);
-    colourButtons.add(zappoColour);
-    colourButtons.add(taylorColour);
-    colourButtons.add(hydroColour);
-    colourButtons.add(helixColour);
-    colourButtons.add(strandColour);
-    colourButtons.add(turnColour);
-    colourButtons.add(buriedColour);
-    colourButtons.add(purinePyrimidineColour);
-    colourButtons.add(userColour);
-    colourButtons.add(viewerColour);
-  }
-
   protected void fitToWindow_actionPerformed()
   {
   }
@@ -469,9 +225,8 @@ public abstract class GStructureViewer extends JInternalFrame implements
   {
   }
 
-  protected void alignStructs_actionPerformed(ActionEvent actionEvent)
-  {
-  }
+  protected abstract String alignStructs_actionPerformed(
+          ActionEvent actionEvent);
 
   public void pdbFile_actionPerformed(ActionEvent actionEvent)
   {
@@ -508,73 +263,36 @@ public abstract class GStructureViewer extends JInternalFrame implements
 
   }
 
-  public void zappoColour_actionPerformed(ActionEvent actionEvent)
-  {
-
-  }
-
-  public void taylorColour_actionPerformed(ActionEvent actionEvent)
-  {
-
-  }
-
-  public void hydroColour_actionPerformed(ActionEvent actionEvent)
+  public void background_actionPerformed(ActionEvent actionEvent)
   {
 
   }
 
-  public void helixColour_actionPerformed(ActionEvent actionEvent)
-  {
-
-  }
-
-  public void strandColour_actionPerformed(ActionEvent actionEvent)
-  {
-
-  }
-
-  public void turnColour_actionPerformed(ActionEvent actionEvent)
-  {
-
-  }
-
-  public void buriedColour_actionPerformed(ActionEvent actionEvent)
-  {
-
-  }
-
-  public void nucleotideColour_actionPerformed(ActionEvent actionEvent)
-  {
-
-  }
-
-  public void purinePyrimidineColour_actionPerformed(ActionEvent actionEvent)
-  {
-
-  }
-
-  public void userColour_actionPerformed(ActionEvent actionEvent)
-  {
-
-  }
-
-  public void backGround_actionPerformed(ActionEvent actionEvent)
+  public void showHelp_actionPerformed(ActionEvent actionEvent)
   {
 
   }
 
-  public void showHelp_actionPerformed(ActionEvent actionEvent)
+  /**
+   * Saves the selected entries in the 'View Chain' menu into a list. Entries are
+   * formatted as "pdbid:chainid". Only the selected chains should be drawn in the
+   * structure display.
+   */
+  protected void setSelectedChains()
   {
-
+    List<String> chains = new ArrayList<>();
+    for (int i = 0; i < chainMenu.getItemCount(); i++)
+    {
+      JMenuItem menuItem = chainMenu.getItem(i);
+      if (menuItem instanceof JCheckBoxMenuItem)
+      {
+        JCheckBoxMenuItem item = (JCheckBoxMenuItem) menuItem;
+        if (item.isSelected())
+        {
+          chains.add(item.getText());
+        }
+      }
+    }
+    getBinding().setChainsToShow(chains);
   }
-
-  // {
-  // return bindingModel;
-  // }
-
-  // public void setBindingModel(AAStructureBindingModel bindingModel)
-  // {
-  // this.bindingModel = bindingModel;
-  // }
-
 }