import jalview.schemes.*;
-public class AppletJmol extends EmbmenuFrame implements
+public class AppletJmol extends EmbmenuFrame implements
// StructureListener,
KeyListener, ActionListener, ItemListener, SequenceStructureBinding
* datasource protocol for access to PDBEntry
*/
String protocol = null;
-
+ /**
+ * Load a bunch of pdb entries associated with sequences in the alignment and display them - aligning them if necessary.
+ * @param pdbentries each pdb file (at least one needed)
+ * @param boundseqs each set of sequences for each pdb file (must match number of pdb files)
+ * @param boundchains the target pdb chain corresponding with each sequence associated with each pdb file (may be null at any level)
+ * @param align true/false
+ * @param ap associated alignment
+ * @param protocol how to get pdb data
+ */
+ public AppletJmol(PDBEntry[] pdbentries, SequenceI[][] boundseqs, String[][] boundchains, boolean align, AlignmentPanel ap, String protocol)
+ {
+ throw new Error("Not yet implemented.");
+ }
public AppletJmol(PDBEntry pdbentry, SequenceI[] seq, String[] chains,
AlignmentPanel ap, String protocol)
{
this.ap = ap;
jmb = new AppletJmolBinding(this, new PDBEntry[]
- { pdbentry }, seq, chains, protocol);
+ { pdbentry }, new SequenceI[][]{seq}, new String[][]{ chains }, protocol);
jmb.setColourBySequence(true);
if (pdbentry.getId() == null || pdbentry.getId().length() < 1)
{
coloursMenu.add(user);
helpMenu.add(jmolHelp);
+ this.setLayout(new BorderLayout());
setMenuBar(menuBar);
renderPanel = new RenderPanel();
embedMenuIfNeeded(renderPanel);
this.add(renderPanel, BorderLayout.CENTER);
- jmb.allocateViewer(renderPanel,
- "jalviewJmol", ap.av.applet.getDocumentBase(), ap.av.applet
- .getCodeBase(), "");
+ scriptWindow = new Panel();
+ scriptWindow.setVisible(false);
+ // this.add(scriptWindow, BorderLayout.SOUTH);
+
+ try
+ {
+ jmb.allocateViewer(renderPanel, true, ap.av.applet.getName()+"_jmol_",
+ ap.av.applet.getDocumentBase(), ap.av.applet.getCodeBase(),
+ "-applet", scriptWindow, null);
+ } catch (Exception e)
+ {
+ System.err
+ .println("Couldn't create a jmol viewer. Args to allocate viewer were:\nDocumentBase="
+ + ap.av.applet.getDocumentBase()
+ + "\nCodebase="
+ + ap.av.applet.getCodeBase());
+ e.printStackTrace();
+ dispose();
+ return;
+ }
jmb.newJmolPopup(true, "Jmol", true);
this.addWindowListener(new WindowAdapter()
closeViewer();
}
});
-
+ if (pdbentry.getProperty()==null)
+ {
+ pdbentry.setProperty(new Hashtable());
+ pdbentry.getProperty().put("protocol", protocol);
+ }
if (pdbentry.getFile() != null)
{
// import structure data from pdbentry.getFile based on given protocol
if (protocol.equals(AppletFormatAdapter.PASTE))
{
+ // TODO: JAL-623 : correctly record file contents for matching up later
+ // pdbentry.getProperty().put("pdbfilehash",""+pdbentry.getFile().hashCode());
loadInline(pdbentry.getFile());
}
else if (protocol.equals(AppletFormatAdapter.FILE)
throw new Exception(
"Invalid datasource. Could not obtain Reader.");
}
- jmb.viewer.openReader(pdbentry.getFile(), pdbentry.getId(), freader);
+ jmb.viewer.openReader(pdbentry.getFile(), pdbentry.getId(),
+ freader);
} catch (Exception e)
{
// give up!
jalview.bin.JalviewLite.addFrame(this, jmb.getViewerTitle(), 400, 400);
}
- /**
- * create a new binding between structures in an existing jmol viewer instance
- * and an alignpanel with sequences that have existing PDBFile entries. Note,
- * this does not open a new Jmol window, or modify the display of the
- * structures in the original jmol window.
- *
- * @param viewer2
- * @param alignPanel
- * @param seqs
- * - sequences to search for associations
- */
- public AppletJmol(JmolViewer viewer2, AlignmentPanel alignPanel,
- SequenceI[] seqs)
- {
-
- // TODO Auto-generated constructor stub
- }
-
public void loadInline(String string)
{
loadedInline = true;
- jmb.viewer.openStringInline(string);
+ jmb.loadInline(string);
}
void setChainMenuItems(Vector chains)
Frame frame = new Frame();
frame.add(cap);
- jalview.bin.JalviewLite.addFrame(frame, "PDB - Sequence Mapping",
- 550, 600);
StringBuffer sb = new StringBuffer();
+ try {
for (int s = 0; s < jmb.pdbentry.length; s++)
{
sb.append(StructureSelectionManager.getStructureSelectionManager()
.printMapping(jmb.pdbentry[s].getFile()));
sb.append("\n");
}
+ cap.setText(sb.toString());
+ }
+ catch (OutOfMemoryError ex)
+ {
+ frame.dispose();
+ System.err.println("Out of memory when trying to create dialog box with sequence-structure mapping.");
+ return;
+ }
+ jalview.bin.JalviewLite.addFrame(frame, "PDB - Sequence Mapping",
+ 550, 600);
}
else if (evt.getSource() == charge)
{
}
/**
- * tick or untick the seqColour menu entry depending upon if it was selected or not.
+ * tick or untick the seqColour menu entry depending upon if it was selected
+ * or not.
+ *
* @param itm
*/
private void setEnabled(MenuItem itm)
{
- seqColour.setState(itm==seqColour);
- jmb.setColourBySequence(itm==seqColour);
+ seqColour.setState(itm == seqColour);
+ jmb.setColourBySequence(itm == seqColour);
}
public void itemStateChanged(ItemEvent evt)
if (evt.getSource() == seqColour)
{
setEnabled(seqColour);
- jmb
- .colourBySequence(ap.av.getShowSequenceFeatures(),
- ap.av.alignment);
+ jmb.colourBySequence(ap.av.getShowSequenceFeatures(), ap.av.alignment);
}
else if (!allChainsSelected)
centerViewer();
{
}
}
-
+ Panel splitPane=null;
public void showConsole(boolean showConsole)
{
- if (scriptWindow == null)
+ if (showConsole)
{
- scriptWindow = new Panel(new BorderLayout());
- inputLine = new TextField();
- history = new TextArea(5, 40);
- scriptWindow.add(history, BorderLayout.CENTER);
- scriptWindow.add(inputLine, BorderLayout.SOUTH);
- add(scriptWindow, BorderLayout.SOUTH);
+ remove(renderPanel);
+ splitPane = new Panel();
+
+ splitPane.setLayout(new java.awt.GridLayout(2,1));
+ splitPane.add(renderPanel);
+ splitPane.add(scriptWindow);
+ scriptWindow.setVisible(true);
+ this.add(splitPane, BorderLayout.CENTER);
+ splitPane.setVisible(true);
+ splitPane.validate();
+ } else {
scriptWindow.setVisible(false);
- history.setEditable(false);
- inputLine.addKeyListener(this);
+ remove(splitPane);
+ add(renderPanel, BorderLayout.CENTER);
+ splitPane=null;
}
-
- scriptWindow.setVisible(!scriptWindow.isVisible());
validate();
}
}
}
}
-/*
- @Override
- public Color getColour(int atomIndex, int pdbResNum, String chain,
- String pdbId)
- {
- return jmb.getColour(atomIndex, pdbResNum, chain, pdbId);
- }
-
- @Override
- public String[] getPdbFile()
- {
- return jmb.getPdbFile();
- }
- @Override
- public void highlightAtom(int atomIndex, int pdbResNum, String chain,
- String pdbId)
- {
- jmb.highlightAtom(atomIndex, pdbResNum, chain, pdbId);
-
- }
-
- @Override
- public void mouseOverStructure(int atomIndex, String strInfo)
- {
- jmb.mouseOverStructure(atomIndex, strInfo);
-
- }
-*/
+ /*
+ * @Override public Color getColour(int atomIndex, int pdbResNum, String
+ * chain, String pdbId) { return jmb.getColour(atomIndex, pdbResNum, chain,
+ * pdbId); }
+ *
+ * @Override public String[] getPdbFile() { return jmb.getPdbFile(); }
+ *
+ * @Override public void highlightAtom(int atomIndex, int pdbResNum, String
+ * chain, String pdbId) { jmb.highlightAtom(atomIndex, pdbResNum, chain,
+ * pdbId);
+ *
+ * }
+ *
+ * @Override public void mouseOverStructure(int atomIndex, String strInfo) {
+ * jmb.mouseOverStructure(atomIndex, strInfo);
+ *
+ * }
+ */
public void setJalviewColourScheme(UserColourScheme ucs)
{
jmb.setJalviewColourScheme(ucs);