Skip to content

Instantly share code, notes, and snippets.

@heuermh
Created December 17, 2013 19:14
Show Gist options
  • Save heuermh/8010881 to your computer and use it in GitHub Desktop.
Save heuermh/8010881 to your computer and use it in GitHub Desktop.
Cy3 task which updates the current visual style but has threading issues
final class MyTask extends AbstractTask
{
private final CyNetworkView networkView;
private final VisualStyle style;
private boolean lockedNodeView = false;
private boolean lockedEdgeView = false;
@Override
public void run(final TaskMonitor taskMonitor)
{
decorateNode(node);
decorateEdge(edge);
// ...
undecorateNode(node);
undecorateEdge(edge);
}
//...
private void decorateNode(final CyNode node)
{
View<CyNode> nodeView = networkView.getNodeView(node);
if (!nodeView.isValueLocked(BasicVisualLexicon.NODE_FILL_COLOR))
{
lockedNodeView = true;
nodeView.setLockedValue(BasicVisualLexicon.NODE_FILL_COLOR, decorate);
style.apply(networkView);
networkView.updateView();
}
}
private void undecorateNode(final CyNode node)
{
View<CyNode> nodeView = networkView.getNodeView(node);
if (lockedNodeView && nodeView.isValueLocked(BasicVisualLexicon.NODE_FILL_COLOR))
{
lockedNodeView = false;
nodeView.clearValueLock(BasicVisualLexicon.NODE_FILL_COLOR);
style.apply(networkView);
networkView.updateView();
}
}
private void decorateEdge(final CyEdge edge)
{
View<CyEdge> edgeView = networkView.getEdgeView(edge);
if (!edgeView.isValueLocked(BasicVisualLexicon.EDGE_STROKE_UNSELECTED_PAINT))
{
lockedEdgeView = true;
edgeView.setLockedValue(BasicVisualLexicon.EDGE_STROKE_UNSELECTED_PAINT, decorate);
style.apply(networkView);
networkView.updateView();
}
}
private void undecorateEdge(final CyEdge edge)
{
View<CyEdge> edgeView = networkView.getEdgeView(edge);
if (lockedEdgeView && edgeView.isValueLocked(BasicVisualLexicon.EDGE_STROKE_UNSELECTED_PAINT))
{
lockedEdgeView = false;
edgeView.clearValueLock(BasicVisualLexicon.EDGE_STROKE_UNSELECTED_PAINT);
style.apply(networkView);
networkView.updateView();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment