Search in sources :

Example 51 with CyEdge

use of org.cytoscape.model.CyEdge in project cytoscape-impl by cytoscape.

the class DGraphView method syncFilterAndView.

// This is expensive and should only be called at initialization!!!
private void syncFilterAndView() {
    final List<CyNode> flaggedNodes = CyTableUtil.getNodesInState(getModel(), CyNetwork.SELECTED, true);
    final List<CyEdge> flaggedEdges = CyTableUtil.getEdgesInState(getModel(), CyNetwork.SELECTED, true);
    final List<CyNode> selectedNodes = getSelectedNodes();
    final List<CyEdge> selectedEdges = getSelectedEdges();
    // select all nodes that are flagged but not currently selected
    for (final CyNode node : flaggedNodes) {
        final NodeView nv = getDNodeView(node);
        if ((nv == null) || nv.isSelected())
            continue;
        nv.setSelected(true);
    }
    // select all edges that are flagged but not currently selected
    for (final CyEdge edge : flaggedEdges) {
        final EdgeView ev = getDEdgeView(edge);
        if ((ev == null) || ev.isSelected())
            continue;
        ev.setSelected(true);
    }
    // flag all nodes that are selected but not currently flagged
    select(selectedNodes, CyNode.class, true);
    // flag all edges that are selected but not currently flagged
    select(selectedEdges, CyEdge.class, true);
}
Also used : EdgeView(org.cytoscape.ding.EdgeView) CyNode(org.cytoscape.model.CyNode) NodeView(org.cytoscape.ding.NodeView) CyEdge(org.cytoscape.model.CyEdge)

Example 52 with CyEdge

use of org.cytoscape.model.CyEdge in project cytoscape-impl by cytoscape.

the class DGraphView method updateSelection.

private void updateSelection(Class<? extends CyIdentifiable> type, Collection<RowSetRecord> records) {
    if (type == null)
        return;
    synchronized (m_lock) {
        nodeSelectionList.clear();
        edgeSelectionList.clear();
    }
    if (type == CyNode.class) {
        for (RowSetRecord rec : records) {
            // Get the SUID
            Long suid = rec.getRow().get(CyNetwork.SUID, Long.class);
            CyNode node = getModel().getNode(suid);
            if (node == null)
                continue;
            DNodeView nv = (DNodeView) getNodeView(node);
            if (nv == null)
                continue;
            Boolean value = rec.getRow().get(CyNetwork.SELECTED, Boolean.class);
            synchronized (m_lock) {
                if (Boolean.TRUE.equals(value))
                    nv.selectInternal();
                else
                    nv.unselectInternal();
                nodeSelectionList.add(node);
            }
        }
    } else if (type == CyEdge.class) {
        for (RowSetRecord rec : records) {
            // Get the SUID
            Long suid = rec.getRow().get(CyNetwork.SUID, Long.class);
            CyEdge edge = getModel().getEdge(suid);
            if (edge == null)
                continue;
            DEdgeView ev = (DEdgeView) getEdgeView(edge);
            if (ev == null)
                continue;
            Boolean value = rec.getRow().get(CyNetwork.SELECTED, Boolean.class);
            synchronized (m_lock) {
                if (Boolean.TRUE.equals(value))
                    ev.selectInternal(false);
                else
                    ev.unselectInternal();
                edgeSelectionList.add(edge);
            }
        }
    }
    if (nodeSelectionList.size() > 0 || edgeSelectionList.size() > 0) {
        // Update renderings
        m_networkCanvas.updateSubgraph(nodeSelectionList, edgeSelectionList);
        if (m_navigationCanvas != null)
            m_navigationCanvas.updateSubgraph(nodeSelectionList, edgeSelectionList);
    }
}
Also used : RowSetRecord(org.cytoscape.model.events.RowSetRecord) CyNode(org.cytoscape.model.CyNode) CyEdge(org.cytoscape.model.CyEdge)

Example 53 with CyEdge

use of org.cytoscape.model.CyEdge in project cytoscape-impl by cytoscape.

the class DGraphView method showGraphObjectInternal.

private boolean showGraphObjectInternal(Object obj, boolean fireListenerEvents) {
    if (obj instanceof DNodeView) {
        long nodeInx;
        final DNodeView nView = (DNodeView) obj;
        synchronized (m_lock) {
            nodeInx = nView.getCyNode().getSUID();
            CyNode nnode = model.getNode(nodeInx);
            if (nnode == null || !m_drawPersp.addNode(nnode))
                return false;
            m_spacial.insert(nodeInx, nView.m_hiddenXMin, nView.m_hiddenYMin, nView.m_hiddenXMax, nView.m_hiddenYMax, nView.getZPosition());
            setContentChanged();
        }
        return true;
    } else if (obj instanceof DEdgeView) {
        CyNode sourceNode;
        CyNode targetNode;
        CyEdge newEdge;
        synchronized (m_lock) {
            final CyEdge edge = model.getEdge(((DEdgeView) obj).getCyEdge().getSUID());
            if (edge == null)
                return false;
            // The edge exists in m_structPersp, therefore its source and target
            // node views must also exist.
            sourceNode = edge.getSource();
            targetNode = edge.getTarget();
            final DNodeView srcDnv = getDNodeView(sourceNode);
            final DNodeView tgtDnv = getDNodeView(targetNode);
            if (isHidden(srcDnv) || isHidden(tgtDnv))
                return false;
            if (!showGraphObjectInternal(srcDnv, false))
                sourceNode = null;
            if (!showGraphObjectInternal(tgtDnv, false))
                targetNode = null;
            newEdge = edge;
            if (!m_drawPersp.addEdge(newEdge))
                return false;
            setContentChanged();
        }
        return true;
    } else {
        return false;
    }
}
Also used : CyNode(org.cytoscape.model.CyNode) CyEdge(org.cytoscape.model.CyEdge)

Example 54 with CyEdge

use of org.cytoscape.model.CyEdge in project cytoscape-impl by cytoscape.

the class DGraphView method actionPerformed.

/**
 ****************************************************
 * Animation handling.  Currently, this only supports *
 * edge marquee, but could be extended in the future  *
 * to support other kinds of animations.              *
 ****************************************************
 */
@Override
public void actionPerformed(ActionEvent e) {
    // If we're not even drawing dashed edges, no sense in trying to do marquee
    if ((m_networkCanvas.getLastRenderDetail() & GraphRenderer.LOD_DASHED_EDGES) == 0) {
        return;
    }
    List<DEdgeView> removeMe = new ArrayList<>();
    for (DEdgeView edgeView : animatedEdges) {
        CyEdge edge = edgeView.getModel();
        Stroke s = m_edgeDetails.getStroke(edge);
        if (s != null && s instanceof AnimatedStroke) {
            Stroke as = ((AnimatedStroke) s).newInstanceForNextOffset();
            synchronized (m_lock) {
                m_edgeDetails.overrideStroke(edge, as);
                setContentChanged();
            }
        } else if (s == null) {
            removeMe.add(edgeView);
        }
    }
    // We do this this way to avoid the overhead of concurrent maps since this should be relatively rare
    if (removeMe.size() != 0) {
        for (DEdgeView edgeView : removeMe) animatedEdges.remove(edgeView);
    }
    // Redraw?
    m_networkCanvas.repaint();
// updateView();
}
Also used : AnimatedStroke(org.cytoscape.ding.impl.strokes.AnimatedStroke) Stroke(java.awt.Stroke) ArrayList(java.util.ArrayList) AnimatedStroke(org.cytoscape.ding.impl.strokes.AnimatedStroke) CyEdge(org.cytoscape.model.CyEdge)

Example 55 with CyEdge

use of org.cytoscape.model.CyEdge in project cytoscape-impl by cytoscape.

the class DGraphView method getSelectedEdgeNodes.

/**
 * @return An LongEnumerator listing the nodes that are endpoints of the currently selected edges.
 */
private LongEnumerator getSelectedEdgeNodes() {
    synchronized (m_lock) {
        final LongEnumerator selectedEdges = m_selectedEdges.searchRange(Integer.MIN_VALUE, Integer.MAX_VALUE, false);
        final LongHash nodeIds = new LongHash();
        while (selectedEdges.numRemaining() > 0) {
            final long edge = selectedEdges.nextLong();
            CyEdge currEdge = model.getEdge(edge);
            CyNode source = currEdge.getSource();
            long sourceId = source.getSUID();
            nodeIds.put(sourceId);
            CyNode target = currEdge.getTarget();
            long targetId = target.getSUID();
            nodeIds.put(targetId);
        }
        return nodeIds.elements();
    }
}
Also used : LongEnumerator(org.cytoscape.util.intr.LongEnumerator) LongHash(org.cytoscape.util.intr.LongHash) CyNode(org.cytoscape.model.CyNode) CyEdge(org.cytoscape.model.CyEdge)

Aggregations

CyEdge (org.cytoscape.model.CyEdge)302 CyNode (org.cytoscape.model.CyNode)231 CyNetwork (org.cytoscape.model.CyNetwork)103 ArrayList (java.util.ArrayList)77 Test (org.junit.Test)71 CyNetworkView (org.cytoscape.view.model.CyNetworkView)55 HashSet (java.util.HashSet)42 CyRow (org.cytoscape.model.CyRow)41 CyIdentifiable (org.cytoscape.model.CyIdentifiable)29 HashMap (java.util.HashMap)26 CySubNetwork (org.cytoscape.model.subnetwork.CySubNetwork)25 CyTable (org.cytoscape.model.CyTable)21 DummyCyEdge (org.cytoscape.model.DummyCyEdge)21 VisualStyle (org.cytoscape.view.vizmap.VisualStyle)18 DummyCyNode (org.cytoscape.model.DummyCyNode)17 View (org.cytoscape.view.model.View)16 List (java.util.List)13 CyEventHelper (org.cytoscape.event.CyEventHelper)12 CyGroup (org.cytoscape.group.CyGroup)12 VisualMappingManager (org.cytoscape.view.vizmap.VisualMappingManager)12