use of org.cytoscape.view.model.View in project cytoscape-impl by cytoscape.
the class LayoutWrapperTask method run.
@Override
public void run(final TaskMonitor taskMonitor) {
if (network == null)
network = appMgr.getCurrentNetwork();
Collection<CyNetworkView> views = viewMgr.getNetworkViews(network);
nodes = nodeList.getValue();
for (CyNetworkView view : views) {
Set<View<CyNode>> nodeViews = new HashSet<View<CyNode>>();
if (nodes == null || nodes.size() == 0) {
nodeViews = CyLayoutAlgorithm.ALL_NODE_VIEWS;
} else {
for (CyNode node : nodes) nodeViews.add(view.getNodeView(node));
}
insertTasksAfterCurrentTask(algorithm.createTaskIterator(view, layoutContext, nodeViews, getLayoutAttribute()));
}
}
use of org.cytoscape.view.model.View in project cytoscape-impl by cytoscape.
the class ControlPanel method updatePanels.
private void updatePanels() {
final CyApplicationManager appMgr = serviceRegistrar.getService(CyApplicationManager.class);
final CyNetworkView view = appMgr.getCurrentNetworkView();
final Collection<View<CyNode>> selectedNodeViews = view != null ? findSelectedNodes(view) : null;
invokeOnEDT(() -> {
scalePanel.setEnabled(view != null);
rotatePanel.setEnabled(view != null);
final boolean enabled = selectedNodeViews != null && !selectedNodeViews.isEmpty();
alignPanel.setEnabled(enabled);
distPanel.setEnabled(enabled);
stackPanel.setEnabled(enabled);
});
}
use of org.cytoscape.view.model.View in project cytoscape-impl by cytoscape.
the class RangeSelectionListener method onUserSelection.
/**
* Indicates that the user has selected a text item within the QuickFind
* Search Box.
*
* @param network the current CyNetwork.
* @param hit hit value chosen by the user.
*/
public void onUserSelection(final CyNetwork network, Hit hit) {
SelectUtil.unselectAllNodes(network);
SelectUtil.unselectAllEdges(network);
// Assemble Hit Objects
final Object[] graphObjects = hit.getAssociatedObjects();
final List list = new ArrayList();
for (int i = 0; i < graphObjects.length; i++) {
list.add(graphObjects[i]);
}
// Fit Selected Content
SwingUtilities.invokeLater(new Runnable() {
public void run() {
final CyNetwork cyNetwork = applicationManager.getCurrentNetwork();
CyNetworkView networkView = applicationManager.getCurrentNetworkView();
GenericIndex index = quickFind.getIndex(cyNetwork);
if (index.getIndexType() == QuickFind.INDEX_NODES) {
SelectUtil.setSelectedNodeState(network, list, true);
final CyNetworkView currentView = applicationManager.getCurrentNetworkView();
if (currentView != null)
currentView.fitSelected();
} else {
SelectUtil.setSelectedEdgeState(network, list, true);
List<CyNode> nodeList = new ArrayList<CyNode>();
for (int i = 0; i < list.size(); i++) {
CyEdge edge = (CyEdge) list.get(i);
CyNode sourceNode = edge.getSource();
CyNode targetNode = edge.getTarget();
nodeList.add(sourceNode);
nodeList.add(targetNode);
}
SelectUtil.setSelectedNodeState(network, nodeList, true);
networkView.fitSelected();
}
// so that node does not take up whole screen.
if (graphObjects.length == 1) {
if (graphObjects[0] instanceof CyNode) {
CyNode node = (CyNode) graphObjects[0];
// Obtain dimensions of current InnerCanvas
RenderingEngine<CyNetwork> engine = applicationManager.getCurrentRenderingEngine();
VisualLexicon lexicon = engine.getVisualLexicon();
Double networkWidth = VisualPropertyUtil.get(lexicon, networkView, "NETWORK_WIDTH", BasicVisualLexicon.NETWORK, Double.class);
Double networkHeight = VisualPropertyUtil.get(lexicon, networkView, "NETWORK_HEIGHT", BasicVisualLexicon.NETWORK, Double.class);
View<CyNode> nodeView = networkView.getNodeView(node);
Double nodeWidth = VisualPropertyUtil.get(lexicon, nodeView, "NODE_WIDTH", BasicVisualLexicon.NODE, Double.class);
Double nodeHeight = VisualPropertyUtil.get(lexicon, nodeView, "NODE_HEIGHT", BasicVisualLexicon.NODE, Double.class);
double width = nodeWidth * NODE_SIZE_MULTIPLER;
double height = nodeHeight * NODE_SIZE_MULTIPLER;
double scaleFactor = Math.min(networkWidth / width, (networkHeight / height));
// TODO: How do we set the zoom in the new API?
// networkView.setZoom(scaleFactor);
}
}
networkView.updateView();
}
});
}
use of org.cytoscape.view.model.View in project cytoscape-impl by cytoscape.
the class RowsSetViewUpdater method updateView.
private final void updateView(final RowsSetEvent e) {
boolean refreshView = false;
boolean refreshOtherViews = false;
// Acquire services once to avoid performance overhead of repeated lookup
final CyApplicationManager applicationManager = serviceRegistrar.getService(CyApplicationManager.class);
final CyColumnIdentifierFactory columnIdentifierFactory = serviceRegistrar.getService(CyColumnIdentifierFactory.class);
final CyNetworkViewManager networkViewManager = serviceRegistrar.getService(CyNetworkViewManager.class);
final VisualMappingManager visualMappingManager = serviceRegistrar.getService(VisualMappingManager.class);
final RenderingEngine<CyNetwork> renderer = applicationManager.getCurrentRenderingEngine();
final CyNetwork network = applicationManager.getCurrentNetwork();
if (network == null)
return;
// 1: Update current network view
final Collection<CyNetworkView> views = networkViewManager.getNetworkViews(network);
CyNetworkView networkView = null;
if (views.isEmpty())
return;
else
networkView = views.iterator().next();
final VisualStyle vs = visualMappingManager.getVisualStyle(networkView);
Map<CyRow, View<? extends CyIdentifiable>> rowViewMap = tracker.getRowViewMap(networkView);
for (final RowSetRecord record : e.getPayloadCollection()) {
final CyRow row = record.getRow();
final String columnName = record.getColumn();
final CyColumn column = row.getTable().getColumn(columnName);
if (column == null)
continue;
final VirtualColumnInfo virtualColInfo = column.getVirtualColumnInfo();
final boolean virtual = virtualColInfo.isVirtual();
final View<? extends CyIdentifiable> v = rowViewMap.get(row);
if (v == null)
continue;
if (v.getModel() instanceof CyNode) {
final CyNode node = (CyNode) v.getModel();
if (network.containsNode(node) && isStyleAffected(vs, columnName, renderer, columnIdentifierFactory)) {
vs.apply(row, v);
refreshView = false;
}
} else if (v.getModel() instanceof CyEdge) {
final CyEdge edge = (CyEdge) v.getModel();
if (network.containsEdge(edge) && isStyleAffected(vs, columnName, renderer, columnIdentifierFactory)) {
vs.apply(row, v);
refreshView = false;
}
}
// If virtual, it may be used in other networks.
if (refreshView && virtual)
refreshOtherViews = true;
// if (refreshView)
// vs.apply(record.getRow(), (View<? extends CyIdentifiable>) v);
}
if (refreshView) {
vs.apply(networkView);
networkView.updateView();
if (refreshOtherViews) {
// Check other views. If update is required, set the flag.
for (final CyNetworkView view : networkViewManager.getNetworkViewSet()) {
if (view == networkView)
continue;
final VisualStyle style = visualMappingManager.getVisualStyle(view);
if (style == vs) {
// Same style is in use. Need to apply.
netViewMediator.setUpdateFlag(view);
}
}
}
}
}
use of org.cytoscape.view.model.View in project cytoscape-impl by cytoscape.
the class VisualStyleTest method runApplyLocal.
private long runApplyLocal(final CyNetworkView largeNetworkView) {
// Pick 5 random nodes in the network
final List<View<CyNode>> views = new ArrayList<View<CyNode>>(largeNetworkView.getNodeViews());
Set<View<CyNode>> targets = new HashSet<View<CyNode>>();
for (int i = 0; i < 5; i++) {
double rand = Math.random();
int index = (int) (NETWORK_SIZE * rand);
if (index < 0)
index = 0;
else if (index > NETWORK_SIZE - 1)
index = NETWORK_SIZE - 1;
targets.add(views.get(index));
}
// Apply to individual views
final long start2 = System.currentTimeMillis();
for (final View<CyNode> view : targets) style.apply(largeNetworkView.getModel().getRow(view.getModel()), view);
return System.currentTimeMillis() - start2;
}
Aggregations