import jalview.datamodel.SearchResultsI;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
-import jalview.datamodel.VisibleContigsIterator;
import jalview.httpserver.AbstractRequestHandler;
import jalview.io.DataSourceType;
import jalview.schemes.ColourSchemeI;
import java.util.BitSet;
import java.util.Collections;
import java.util.Hashtable;
+import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
}
/**
- * Tells Chimera to display only the specified chains
- *
- * @param toshow
- */
- public void showChains(List<String> toshow)
- {
- /*
- * Construct a chimera command like
- *
- * ~display #*;~ribbon #*;ribbon :.A,:.B
- */
- StringBuilder cmd = new StringBuilder(64);
- boolean first = true;
- for (String chain : toshow)
- {
- int modelNumber = getModelNoForChain(chain);
- String showChainCmd = modelNumber == -1 ? ""
- : modelNumber + ":." + chain.split(":")[1];
- if (!first)
- {
- cmd.append(",");
- }
- cmd.append(showChainCmd);
- first = false;
- }
-
- /*
- * could append ";focus" to this command to resize the display to fill the
- * window, but it looks more helpful not to (easier to relate chains to the
- * whole)
- */
- final String command = "~display #*; ~ribbon #*; ribbon :"
- + cmd.toString();
- sendChimeraCommand(command, false);
- }
-
- /**
* Close down the Jalview viewer and listener, and (optionally) the associated
* Chimera window.
*/
}
@Override
- public void showStructures(AlignViewportI av)
+ public void showStructures(AlignViewportI av, boolean refocus)
{
StringBuilder cmd = new StringBuilder(128);
cmd.append("~display; ~ribbon;");
- if (isShowAlignmentOnly())
+ String atomSpec = getMappedResidues(av);
+ cmd.append("ribbon ").append(atomSpec);
+ if (!isShowAlignmentOnly())
{
- String atomSpec = getMappedResidues(av);
- cmd.append("ribbon ").append(atomSpec);
+ cmd.append("chain @CA|P; ribbon");
}
- else
+ if (refocus)
{
- cmd.append("chain @CA|P; ribbon");
+ cmd.append("; focus");
}
- cmd.append("; focus");
sendChimeraCommand(cmd.toString(), false);
}
&& alignment.findIndex(theSequence) > -1)
{
String chainCd = mapping.getChain();
-
- // TODO only process sequence ranges within visible columns
- VisibleContigsIterator visible = alignment.getHiddenColumns()
+ if (!isShowChain(mapping.getPdbId(), chainCd))
+ {
+ continue;
+ }
+ Iterator<int[]> visible;
+ if (isShowAlignmentOnly())
+ {
+ visible = alignment.getHiddenColumns()
.getVisContigsIterator(0, width, true);
+ }
+ else
+ {
+ visible = Collections.singletonList(new int[] { 0, width })
+ .iterator();
+ }
while (visible.hasNext())
{
int[] visibleRegion = visible.next();