JAL-3390 Chimera showStructures() respects visible/chain selections
[jalview.git] / src / jalview / jbgui / GStructureViewer.java
index cee8b93..418e413 100644 (file)
@@ -28,7 +28,10 @@ import java.awt.BorderLayout;
 import java.awt.GridLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.List;
 
+import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JInternalFrame;
 import javax.swing.JLabel;
 import javax.swing.JMenu;
@@ -37,8 +40,8 @@ import javax.swing.JMenuItem;
 import javax.swing.JPanel;
 import javax.swing.JRadioButtonMenuItem;
 
-public abstract class GStructureViewer extends JInternalFrame implements
-        JalviewStructureDisplayI, ColourChangeListener
+public abstract class GStructureViewer extends JInternalFrame
+        implements JalviewStructureDisplayI, ColourChangeListener
 {
   // private AAStructureBindingModel bindingModel;
 
@@ -54,6 +57,8 @@ public abstract class GStructureViewer extends JInternalFrame implements
 
   protected JMenuItem alignStructs;
 
+  protected JCheckBoxMenuItem showAlignmentOnly;
+
   protected JMenuItem fitToWindow;
 
   protected JRadioButtonMenuItem seqColour;
@@ -93,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();
@@ -170,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
@@ -219,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)
   {
@@ -267,4 +272,27 @@ public abstract class GStructureViewer extends JInternalFrame implements
   {
 
   }
+
+  /**
+   * 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);
+  }
 }