JAL-1588 refactoring prior to 'save Chimera project'
[jalview.git] / src / jalview / jbgui / GStructureViewer.java
index 58b2eb1..4471bbb 100644 (file)
  */
 package jalview.jbgui;
 
+import jalview.api.structures.JalviewStructureDisplayI;
+import jalview.gui.AlignmentPanel;
 import jalview.util.MessageManager;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.Vector;
 
 import javax.swing.ButtonGroup;
 import javax.swing.JInternalFrame;
@@ -32,8 +36,70 @@ import javax.swing.JMenuBar;
 import javax.swing.JMenuItem;
 import javax.swing.JRadioButtonMenuItem;
 
-public class GStructureViewer extends JInternalFrame
+public abstract class GStructureViewer extends JInternalFrame implements
+        JalviewStructureDisplayI
 {
+  // private AAStructureBindingModel bindingModel;
+
+  protected JMenu savemenu = new JMenu();
+
+  protected JMenu viewMenu = new JMenu();
+
+  protected JMenu chainMenu = new JMenu();
+
+  protected JMenu viewerActionMenu = new JMenu();
+
+  protected JMenuItem alignStructs = new JMenuItem();
+
+  protected JRadioButtonMenuItem seqColour = new JRadioButtonMenuItem();
+
+  protected JRadioButtonMenuItem chainColour = new JRadioButtonMenuItem();
+
+  protected JRadioButtonMenuItem chargeColour = new JRadioButtonMenuItem();
+
+  protected JRadioButtonMenuItem zappoColour = new JRadioButtonMenuItem();
+
+  protected JRadioButtonMenuItem taylorColour = new JRadioButtonMenuItem();
+
+  protected JRadioButtonMenuItem hydroColour = new JRadioButtonMenuItem();
+
+  protected JRadioButtonMenuItem strandColour = new JRadioButtonMenuItem();
+
+  protected JRadioButtonMenuItem helixColour = new JRadioButtonMenuItem();
+
+  protected JRadioButtonMenuItem turnColour = new JRadioButtonMenuItem();
+
+  protected JRadioButtonMenuItem buriedColour = new JRadioButtonMenuItem();
+
+  protected JRadioButtonMenuItem purinePyrimidineColour = new JRadioButtonMenuItem();
+
+  protected JRadioButtonMenuItem userColour = new JRadioButtonMenuItem();
+
+  protected JRadioButtonMenuItem viewerColour = new JRadioButtonMenuItem();
+
+  protected JMenuItem helpItem = new JMenuItem();
+
+  /**
+   * list of sequenceSet ids associated with the view
+   */
+  protected ArrayList<String> _aps = new ArrayList<String>();
+
+  /**
+   * list of alignment panels to use for superposition
+   */
+  protected Vector<AlignmentPanel> _alignwith = new Vector<AlignmentPanel>();
+
+  /**
+   * list of alignment panels that are used for colouring structures by aligned
+   * sequences
+   */
+  protected Vector<AlignmentPanel> _colourwith = new Vector<AlignmentPanel>();
+
+  private String viewId = null;
+
+  /**
+   * Constructor
+   */
   public GStructureViewer()
   {
     try
@@ -47,10 +113,16 @@ public class GStructureViewer extends JInternalFrame
 
   private void jbInit() throws Exception
   {
+    JMenuBar menuBar = new JMenuBar();
     this.setJMenuBar(menuBar);
+
+    JMenu fileMenu = new JMenu();
     fileMenu.setText(MessageManager.getString("action.file"));
+
     savemenu.setActionCommand(MessageManager.getString("action.save_image"));
     savemenu.setText(MessageManager.getString("action.save_as"));
+
+    JMenuItem pdbFile = new JMenuItem();
     pdbFile.setText(MessageManager.getString("label.pdb_file"));
     pdbFile.addActionListener(new ActionListener()
     {
@@ -59,6 +131,8 @@ public class GStructureViewer extends JInternalFrame
         pdbFile_actionPerformed(actionEvent);
       }
     });
+
+    JMenuItem png = new JMenuItem();
     png.setText("PNG");
     png.addActionListener(new ActionListener()
     {
@@ -67,6 +141,8 @@ public class GStructureViewer extends JInternalFrame
         png_actionPerformed(actionEvent);
       }
     });
+
+    JMenuItem eps = new JMenuItem();
     eps.setText("EPS");
     eps.addActionListener(new ActionListener()
     {
@@ -75,6 +151,8 @@ public class GStructureViewer extends JInternalFrame
         eps_actionPerformed(actionEvent);
       }
     });
+
+    JMenuItem viewMapping = new JMenuItem();
     viewMapping.setText(MessageManager.getString("label.view_mapping"));
     viewMapping.addActionListener(new ActionListener()
     {
@@ -85,7 +163,11 @@ public class GStructureViewer extends JInternalFrame
     });
     viewMenu.setText(MessageManager.getString("action.view"));
     chainMenu.setText(MessageManager.getString("action.show_chain"));
+
+    JMenu colourMenu = new JMenu();
     colourMenu.setText(MessageManager.getString("label.colours"));
+
+    JMenuItem backGround = new JMenuItem();
     backGround.setText(MessageManager.getString("label.background_colour")
             + "...");
     backGround.addActionListener(new ActionListener()
@@ -207,6 +289,8 @@ public class GStructureViewer extends JInternalFrame
         viewerColour_actionPerformed(actionEvent);
       }
     });
+
+    JMenu helpMenu = new JMenu();
     helpMenu.setText(MessageManager.getString("action.help"));
     helpItem.setText(MessageManager.getString("label.jmol_help"));
     helpItem.addActionListener(new ActionListener()
@@ -254,6 +338,8 @@ public class GStructureViewer extends JInternalFrame
     colourMenu.add(viewerColour);
     colourMenu.add(backGround);
 
+    ButtonGroup colourButtons = new ButtonGroup();
+
     colourButtons.add(seqColour);
     colourButtons.add(chainColour);
     colourButtons.add(chargeColour);
@@ -279,66 +365,6 @@ public class GStructureViewer extends JInternalFrame
   {
   }
 
-  JMenuBar menuBar = new JMenuBar();
-
-  JMenu fileMenu = new JMenu();
-
-  protected JMenu savemenu = new JMenu();
-
-  JMenuItem pdbFile = new JMenuItem();
-
-  JMenuItem png = new JMenuItem();
-
-  JMenuItem eps = new JMenuItem();
-
-  JMenuItem viewMapping = new JMenuItem();
-
-  protected JMenu viewMenu = new JMenu();
-
-  protected JMenu chainMenu = new JMenu();
-
-  JMenu jMenu1 = new JMenu();
-
-  protected JMenu colourMenu = new JMenu();
-
-  protected JMenu viewerActionMenu = new JMenu();
-
-  protected JMenuItem alignStructs = new JMenuItem();
-
-  JMenuItem backGround = new JMenuItem();
-
-  protected JRadioButtonMenuItem seqColour = new JRadioButtonMenuItem();
-
-  protected JRadioButtonMenuItem chainColour = new JRadioButtonMenuItem();
-
-  protected JRadioButtonMenuItem chargeColour = new JRadioButtonMenuItem();
-
-  protected JRadioButtonMenuItem zappoColour = new JRadioButtonMenuItem();
-
-  protected JRadioButtonMenuItem taylorColour = new JRadioButtonMenuItem();
-
-  protected JRadioButtonMenuItem hydroColour = new JRadioButtonMenuItem();
-
-  protected JRadioButtonMenuItem strandColour = new JRadioButtonMenuItem();
-
-  protected JRadioButtonMenuItem helixColour = new JRadioButtonMenuItem();
-
-  protected JRadioButtonMenuItem turnColour = new JRadioButtonMenuItem();
-
-  protected JRadioButtonMenuItem buriedColour = new JRadioButtonMenuItem();
-
-  protected JRadioButtonMenuItem purinePyrimidineColour = new JRadioButtonMenuItem();
-
-  protected JRadioButtonMenuItem userColour = new JRadioButtonMenuItem();
-
-  protected JRadioButtonMenuItem viewerColour = new JRadioButtonMenuItem();
-
-  protected ButtonGroup colourButtons = new ButtonGroup();
-
-  JMenu helpMenu = new JMenu();
-
-  protected JMenuItem helpItem = new JMenuItem();
-
   public void pdbFile_actionPerformed(ActionEvent actionEvent)
   {
 
@@ -428,4 +454,62 @@ public class GStructureViewer extends JInternalFrame
   {
 
   }
+
+  // {
+  // return bindingModel;
+  // }
+
+  // public void setBindingModel(AAStructureBindingModel bindingModel)
+  // {
+  // this.bindingModel = bindingModel;
+  // }
+
+  /**
+   * 
+   * @param ap2
+   * @return true if this Jmol instance is linked with the given alignPanel
+   */
+  public boolean isLinkedWith(AlignmentPanel ap2)
+  {
+    return _aps.contains(ap2.av.getSequenceSetId());
+  }
+
+  public boolean isUsedforaligment(AlignmentPanel ap2)
+  {
+  
+    return (_alignwith != null) && _alignwith.contains(ap2);
+  }
+
+  public boolean isUsedforcolourby(AlignmentPanel ap2)
+  {
+    return (_colourwith != null) && _colourwith.contains(ap2);
+  }
+
+  /**
+   * 
+   * @return TRUE if the view is NOT being coloured by the alignment colours.
+   */
+  public boolean isColouredByViewer()
+  {
+    return !getBinding().isColourBySequence();
+  }
+
+  public String getViewId()
+  {
+    if (viewId == null)
+    {
+      viewId = System.currentTimeMillis() + "." + this.hashCode();
+    }
+    return viewId;
+  }
+
+  protected void setViewId(String viewId)
+  {
+    this.viewId = viewId;
+  }
+
+  public String getStateInfo()
+  {
+    return null;
+  }
 }