X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=blobdiff_plain;f=src%2Fjalview%2Fext%2Frbvi%2Fchimera%2FJalviewChimeraBinding.java;h=82f5e5ce9c36544e91a4f7fc7f024c602c041792;hp=7033ba77e135c11865e340c31a3da979ed423ecd;hb=2273eba5668e5340354da60fed329c6c716cc439;hpb=497958b4e5217efaa3ddeece38f38c3a6e98cb96 diff --git a/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java b/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java index 7033ba7..82f5e5c 100644 --- a/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java +++ b/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java @@ -74,13 +74,14 @@ public abstract class JalviewChimeraBinding extends private boolean loadingFromArchive = false; /** - * second flag to indicate if the jmol viewer should ignore sequence colouring - * events from the structure manager because the GUI is still setting up + * second flag to indicate if the Chimera viewer should ignore sequence + * colouring events from the structure manager because the GUI is still + * setting up */ private boolean loadingFinished = true; /** - * state flag used to check if the Jmol viewer's paint method can be called + * state flag used to check if the Chimera viewer's paint method can be called */ private boolean finishedInit = false; @@ -173,7 +174,7 @@ public abstract class JalviewChimeraBinding extends } catch (Error e) { } - // Explicitly map to the filename used by Jmol ; + // Explicitly map to the filename used by Chimera ; // pdbentry[pe].getFile(), protocol); if (ssm != null) @@ -236,13 +237,6 @@ public abstract class JalviewChimeraBinding extends } viewer = new ChimeraManager( csm = new ext.edu.ucsf.rbvi.strucviz2.StructureManager(true)); - /* - * viewer = JmolViewer.allocateViewer(renderPanel, new SmarterJmolAdapter(), - * "jalviewJmol", ap.av.applet .getDocumentBase(), - * ap.av.applet.getCodeBase(), "", this); - * - * jmolpopup = JmolPopup.newJmolPopup(viewer, true, "Jmol", true); - */ } public JalviewChimeraBinding(StructureSelectionManager ssm, @@ -335,15 +329,13 @@ public abstract class JalviewChimeraBinding extends { viewer.exitChimera(); } - // viewer.evalStringQuiet("zap"); - // viewer.setJmolStatusListener(null); lastCommand = null; viewer = null; releaseUIResources(); } /** - * called by JalviewJmolbinding after closeViewer is called - release any + * called by JalviewChimerabinding after closeViewer is called - release any * resources and references so they can be garbage collected. */ protected abstract void releaseUIResources(); @@ -351,17 +343,15 @@ public abstract class JalviewChimeraBinding extends public void colourByChain() { colourBySequence = false; - // TODO: colour by chain should colour each chain distinctly across all - // visible models - // TODO: http://issues.jalview.org/browse/JAL-628 - evalStateCommand("select *;color chain",false); + evalStateCommand("rainbow chain", false); } public void colourByCharge() { colourBySequence = false; - evalStateCommand("colour *;color white;select ASP,GLU;color red;" - + "select LYS,ARG;color blue;select CYS;color yellow", false); + evalStateCommand( + "color white;color red ::ASP;color red ::GLU;color blue ::LYS;color blue ::ARG;color yellow ::CYS", + false); } /** @@ -411,7 +401,7 @@ public abstract class JalviewChimeraBinding extends assert (_alignment.length == _refStructure.length && _alignment.length != _hiddenCols.length); StringBuilder allComs = new StringBuilder(128); // Chimera superposition cmd String[] files = getPdbFile(); - // check to see if we are still waiting for Jmol files + // check to see if we are still waiting for Chimera files long starttime = System.currentTimeMillis(); boolean waiting = true; do @@ -792,7 +782,7 @@ public abstract class JalviewChimeraBinding extends private void waitForChimera() { - while (viewer.isBusy()) + while (viewer != null && viewer.isBusy()) { try { Thread.sleep(15); @@ -964,7 +954,7 @@ public abstract class JalviewChimeraBinding extends } } - boolean debug = true; + boolean debug = false; private void log(String message) { @@ -973,8 +963,8 @@ public abstract class JalviewChimeraBinding extends private void viewerCommandHistory(boolean enable) { - log("(Not yet implemented) History " - + ((debug || enable) ? "on" : "off")); + // log("(Not yet implemented) History " + // + ((debug || enable) ? "on" : "off")); } public void loadInline(String string) @@ -1225,10 +1215,13 @@ public abstract class JalviewChimeraBinding extends String res; int index; Color col; + // Chimera expects RBG values in the range 0-1 + final double normalise = 255D; viewerCommandHistory(false); // TODO: Switch between nucleotide or aa selection expressions Enumeration en = ResidueProperties.aa3Hash.keys(); - StringBuffer command = new StringBuffer("select *;color white;"); + StringBuilder command = new StringBuilder(128); + command.append("color white;"); while (en.hasMoreElements()) { res = en.nextElement().toString(); @@ -1239,32 +1232,19 @@ public abstract class JalviewChimeraBinding extends } col = cs.findColour(ResidueProperties.aa[index].charAt(0)); - // TODO: need colour string function and res selection here - command.append("select " + res + ";color[" + col.getRed() + "," - + col.getGreen() + "," + col.getBlue() + "];"); + command.append("color " + col.getRed() / normalise + "," + + col.getGreen() / normalise + "," + col.getBlue() + / normalise + " ::" + res + ";"); } evalStateCommand(command.toString(),false); viewerCommandHistory(true); } - public void showHelp() - { - // chimera help - showUrl("http://jmol.sourceforge.net/docs/JmolUserGuide/", "jmolHelp"); - } - /** - * open the URL somehow - * - * @param target - */ - public abstract void showUrl(String url, String target); - - /** - * called when the binding thinks the UI needs to be refreshed after a Jmol + * called when the binding thinks the UI needs to be refreshed after a Chimera * state change. this could be because structures were loaded, or because an - * error has occured. + * error has occurred. */ public abstract void refreshGUI(); @@ -1293,8 +1273,8 @@ public abstract class JalviewChimeraBinding extends /** * - * @return true if Jmol is still restoring state or loading is still going on - * (see setFinsihedLoadingFromArchive) + * @return true if Chimeral is still restoring state or loading is still going + * on (see setFinsihedLoadingFromArchive) */ public boolean isLoadingFromArchive() { @@ -1312,13 +1292,22 @@ public abstract class JalviewChimeraBinding extends loadingFinished = finishedLoading; } - public void setBackgroundColour(java.awt.Color col) + /** + * Send the Chimera 'background solid " command. + * + * @see https + * ://www.cgl.ucsf.edu/chimera/current/docs/UsersGuide/midas/background + * .html + * @param col + */ + public void setBackgroundColour(Color col) { viewerCommandHistory(false); - // todo set background colour - viewer.sendChimeraCommand( - "background [" + col.getRed() + "," + col.getGreen() + "," - + col.getBlue() + "];", false); + double normalise = 255D; + final String command = "background solid " + col.getRed() / normalise + "," + + col.getGreen() / normalise + "," + col.getBlue() + / normalise + ";"; + viewer.sendChimeraCommand(command, false); viewerCommandHistory(true); }