import java.util.ArrayList;\r
\r
/**\r
- * Routines for generating Jmol commands for Jalview/Jmol binding\r
- * another cruisecontrol test.\r
+ * Routines for generating Jmol commands for Jalview/Jmol binding another\r
+ * cruisecontrol test.\r
* \r
* @author JimP\r
- *\r
+ * \r
*/\r
public class VarnaCommands\r
{\r
\r
/**\r
- * Jmol utility which constructs the commands to colour chains by the given alignment\r
+ * Jmol utility which constructs the commands to colour chains by the given\r
+ * alignment\r
* \r
*/\r
- public static String[] getColourBySequenceCommand(StructureSelectionManager ssm, String[] files, SequenceI[][] sequence, SequenceRenderer sr, FeatureRenderer fr, AlignmentI alignment)\r
+ public static String[] getColourBySequenceCommand(\r
+ StructureSelectionManager ssm, String[] files,\r
+ SequenceI[][] sequence, SequenceRenderer sr, FeatureRenderer fr,\r
+ AlignmentI alignment)\r
{\r
ArrayList<String> str = new ArrayList<String>();\r
StringBuffer command = new StringBuffer();\r
- \r
+\r
for (int pdbfnum = 0; pdbfnum < files.length; pdbfnum++)\r
{\r
StructureMapping[] mapping = ssm.getMapping(files[pdbfnum]);\r
- \r
+\r
if (mapping == null || mapping.length < 1)\r
continue;\r
- \r
+\r
int lastPos = -1;\r
for (int s = 0; s < sequence[pdbfnum].length; s++)\r
{\r
continue;\r
}\r
int pos = mapping[m].getPDBResNum(asp.findPosition(r));\r
- \r
+\r
if (pos < 1 || pos == lastPos)\r
continue;\r
- \r
+\r
lastPos = pos;\r
- \r
+\r
Color col = sr.getResidueBoxColour(sequence[pdbfnum][s], r);\r
- \r
+\r
if (fr != null)\r
col = fr.findFeatureColour(col, sequence[pdbfnum][s], r);\r
String newSelcom = (mapping[m].getChain() != " " ? ":"\r
+ col.getGreen()\r
+ ","\r
+ col.getBlue() + "]";\r
- if (command.length()>newSelcom.length() && command.substring(command.length()-newSelcom.length()).equals(newSelcom))\r
+ if (command.length() > newSelcom.length()\r
+ && command.substring(\r
+ command.length() - newSelcom.length())\r
+ .equals(newSelcom))\r
{\r
command = VarnaCommands.condenseCommand(command, pos);\r
continue;\r
}\r
// TODO: deal with case when buffer is too large for Jmol to parse\r
// - execute command and flush\r
- \r
+\r
command.append(";");\r
- if (command.length()>51200)\r
+ if (command.length() > 51200)\r
{\r
// add another chunk\r
str.add(command.toString());\r
\r
public static StringBuffer condenseCommand(StringBuffer command, int pos)\r
{\r
- \r
+\r
// work back to last 'select'\r
- int p=command.length(),q=p;\r
- do {\r
- p-=6;\r
- if (p<1) { p=0; };\r
- } while ((q=command.indexOf("select",p))==-1 && p>0);\r
- \r
- StringBuffer sb = new StringBuffer(command.substring(0,q+7));\r
- \r
- command = command.delete(0,q+7);\r
- \r
+ int p = command.length(), q = p;\r
+ do\r
+ {\r
+ p -= 6;\r
+ if (p < 1)\r
+ {\r
+ p = 0;\r
+ }\r
+ ;\r
+ } while ((q = command.indexOf("select", p)) == -1 && p > 0);\r
+\r
+ StringBuffer sb = new StringBuffer(command.substring(0, q + 7));\r
+\r
+ command = command.delete(0, q + 7);\r
+\r
String start;\r
- \r
+\r
if (command.indexOf("-") > -1)\r
{\r
start = command.substring(0, command.indexOf("-"));\r
{\r
start = command.substring(0, command.indexOf(":"));\r
}\r
- \r
+\r
sb.append(start + "-" + pos + command.substring(command.indexOf(":")));\r
- \r
+\r
return sb;\r
}\r
\r