JAL-3026 MCview -> mc_view
[jalview.git] / src / mc_view / AppletPDBViewer.java
diff --git a/src/mc_view/AppletPDBViewer.java b/src/mc_view/AppletPDBViewer.java
new file mode 100644 (file)
index 0000000..fa30021
--- /dev/null
@@ -0,0 +1,286 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+package mc_view;
+
+import jalview.appletgui.AlignmentPanel;
+import jalview.appletgui.EmbmenuFrame;
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
+import jalview.schemes.BuriedColourScheme;
+import jalview.schemes.HelixColourScheme;
+import jalview.schemes.HydrophobicColourScheme;
+import jalview.schemes.StrandColourScheme;
+import jalview.schemes.TaylorColourScheme;
+import jalview.schemes.TurnColourScheme;
+import jalview.schemes.ZappoColourScheme;
+import jalview.util.MessageManager;
+
+import java.awt.BorderLayout;
+import java.awt.CheckboxGroup;
+import java.awt.CheckboxMenuItem;
+import java.awt.Frame;
+import java.awt.Menu;
+import java.awt.MenuBar;
+import java.awt.MenuItem;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+
+public class AppletPDBViewer extends EmbmenuFrame
+        implements ActionListener, ItemListener
+{
+  AppletPDBCanvas pdbcanvas;
+
+  public AppletPDBViewer(PDBEntry pdbentry, SequenceI[] seq,
+          String[] chains, AlignmentPanel ap, DataSourceType protocol)
+  {
+    try
+    {
+      jbInit();
+    } catch (Exception ex)
+    {
+      ex.printStackTrace();
+    }
+
+    pdbcanvas = new AppletPDBCanvas(pdbentry, seq, chains, ap, protocol);
+
+    embedMenuIfNeeded(pdbcanvas);
+    add(pdbcanvas, BorderLayout.CENTER);
+
+    StringBuffer title = new StringBuffer(
+            seq[0].getName() + ":" + pdbcanvas.pdbentry.getFile());
+
+    jalview.bin.JalviewLite.addFrame(this, title.toString(), 400, 400);
+
+  }
+
+  @Override
+  public void actionPerformed(ActionEvent evt)
+  {
+    if (evt.getSource() == mapping)
+    {
+      jalview.appletgui.CutAndPasteTransfer cap = new jalview.appletgui.CutAndPasteTransfer(
+              false, null);
+      Frame frame = new Frame();
+      frame.add(cap);
+      jalview.bin.JalviewLite.addFrame(frame,
+              MessageManager.getString("label.pdb_sequence_mapping"), 500,
+              600);
+      cap.setText(pdbcanvas.mappingDetails.toString());
+
+    }
+    else if (evt.getSource() == charge)
+    {
+      pdbcanvas.bysequence = false;
+      pdbcanvas.pdb.setChargeColours();
+    }
+
+    else if (evt.getSource() == chain)
+    {
+      pdbcanvas.bysequence = false;
+      pdbcanvas.pdb.setChainColours();
+    }
+    else if (evt.getSource() == seqButton)
+    {
+      pdbcanvas.bysequence = true;
+      pdbcanvas.colourBySequence();
+
+    }
+    else if (evt.getSource() == zappo)
+    {
+      pdbcanvas.setColours(new ZappoColourScheme());
+    }
+    else if (evt.getSource() == taylor)
+    {
+      pdbcanvas.setColours(new TaylorColourScheme());
+    }
+    else if (evt.getSource() == hydro)
+    {
+      pdbcanvas.setColours(new HydrophobicColourScheme());
+    }
+    else if (evt.getSource() == helix)
+    {
+      pdbcanvas.setColours(new HelixColourScheme());
+    }
+    else if (evt.getSource() == strand)
+    {
+      pdbcanvas.setColours(new StrandColourScheme());
+    }
+    else if (evt.getSource() == turn)
+    {
+      pdbcanvas.setColours(new TurnColourScheme());
+    }
+    else if (evt.getSource() == buried)
+    {
+      pdbcanvas.setColours(new BuriedColourScheme());
+    }
+    else if (evt.getSource() == user)
+    {
+      pdbcanvas.bysequence = false;
+      new jalview.appletgui.UserDefinedColours(pdbcanvas);
+    }
+
+    pdbcanvas.redrawneeded = true;
+    pdbcanvas.repaint();
+
+  }
+
+  @Override
+  public void itemStateChanged(ItemEvent evt)
+  {
+    if (evt.getSource() == allchains)
+    {
+      pdbcanvas.setAllchainsVisible(allchains.getState());
+    }
+    else if (evt.getSource() == wire)
+    {
+      pdbcanvas.wire = !pdbcanvas.wire;
+    }
+    else if (evt.getSource() == depth)
+    {
+      pdbcanvas.depthcue = !pdbcanvas.depthcue;
+    }
+    else if (evt.getSource() == zbuffer)
+    {
+      pdbcanvas.zbuffer = !pdbcanvas.zbuffer;
+    }
+    pdbcanvas.redrawneeded = true;
+    pdbcanvas.repaint();
+  }
+
+  private void jbInit() throws Exception
+  {
+    setMenuBar(jMenuBar1);
+    fileMenu.setLabel(MessageManager.getString("action.file"));
+    coloursMenu.setLabel(MessageManager.getString("label.colours"));
+    mapping.setLabel(MessageManager.getString("label.view_mapping"));
+    mapping.addActionListener(this);
+    wire.setLabel(MessageManager.getString("label.wireframe"));
+    wire.addItemListener(this);
+    depth.setState(true);
+    depth.setLabel(MessageManager.getString("label.depthcue"));
+    depth.addItemListener(this);
+    zbuffer.setState(true);
+    zbuffer.setLabel(MessageManager.getString("label.z_buffering"));
+    zbuffer.addItemListener(this);
+    charge.setLabel(MessageManager.getString("label.charge_cysteine"));
+    charge.addActionListener(this);
+    hydro.setLabel(
+            MessageManager.getString("label.colourScheme_hydrophobic"));
+    hydro.addActionListener(this);
+    chain.setLabel(MessageManager.getString("action.by_chain"));
+    chain.addActionListener(this);
+    seqButton.setLabel(MessageManager.getString("action.by_sequence"));
+    seqButton.addActionListener(this);
+    allchains
+            .setLabel(MessageManager.getString("label.all_chains_visible"));
+    allchains.addItemListener(this);
+    viewMenu.setLabel(MessageManager.getString("action.view"));
+    zappo.setLabel(MessageManager.getString("label.colourScheme_zappo"));
+    zappo.addActionListener(this);
+    taylor.setLabel(MessageManager.getString("label.colourScheme_taylor"));
+    taylor.addActionListener(this);
+    helix.setLabel(MessageManager
+            .getString("label.colourScheme_helix_propensity"));
+    helix.addActionListener(this);
+    strand.setLabel(MessageManager
+            .getString("label.colourScheme_strand_propensity"));
+    strand.addActionListener(this);
+    turn.setLabel(
+            MessageManager.getString("label.colourScheme_turn_propensity"));
+    turn.addActionListener(this);
+    buried.setLabel(
+            MessageManager.getString("label.colourScheme_buried_index"));
+    buried.addActionListener(this);
+    user.setLabel(MessageManager.getString("action.user_defined"));
+    user.addActionListener(this);
+    jMenuBar1.add(fileMenu);
+    jMenuBar1.add(coloursMenu);
+    jMenuBar1.add(viewMenu);
+    fileMenu.add(mapping);
+    ;
+
+    coloursMenu.add(seqButton);
+    coloursMenu.add(chain);
+    coloursMenu.add(charge);
+    coloursMenu.add(zappo);
+    coloursMenu.add(taylor);
+    coloursMenu.add(hydro);
+    coloursMenu.add(helix);
+    coloursMenu.add(strand);
+    coloursMenu.add(turn);
+    coloursMenu.add(buried);
+    coloursMenu.add(user);
+    viewMenu.add(wire);
+    viewMenu.add(depth);
+    viewMenu.add(zbuffer);
+    viewMenu.add(allchains);
+    allchains.setState(true);
+  }
+
+  MenuBar jMenuBar1 = new MenuBar();
+
+  Menu fileMenu = new Menu();
+
+  Menu coloursMenu = new Menu();
+
+  MenuItem mapping = new MenuItem();
+
+  CheckboxGroup bg = new CheckboxGroup();
+
+  CheckboxMenuItem wire = new CheckboxMenuItem();
+
+  CheckboxMenuItem depth = new CheckboxMenuItem();
+
+  CheckboxMenuItem zbuffer = new CheckboxMenuItem();
+
+  MenuItem charge = new MenuItem();
+
+  MenuItem hydro = new MenuItem();
+
+  MenuItem chain = new MenuItem();
+
+  MenuItem seqButton = new MenuItem();
+
+  CheckboxMenuItem allchains = new CheckboxMenuItem();
+
+  Menu viewMenu = new Menu();
+
+  MenuItem turn = new MenuItem();
+
+  MenuItem strand = new MenuItem();
+
+  MenuItem helix = new MenuItem();
+
+  MenuItem taylor = new MenuItem();
+
+  MenuItem zappo = new MenuItem();
+
+  MenuItem buried = new MenuItem();
+
+  MenuItem user = new MenuItem();
+
+  // End StructureListener
+  // //////////////////////////
+
+}