Search in sources :

Example 6 with Handle

use of org.cytoscape.view.presentation.property.values.Handle in project cytoscape-impl by cytoscape.

the class DEdgeView method selectInternal.

// Should synchronize around m_view.m_lock.
boolean selectInternal(boolean selectAnchors) {
    if (selected)
        return false;
    selected = true;
    graphView.m_edgeDetails.select(model);
    graphView.m_selectedEdges.insert(model.getSUID());
    List<Handle> handles = graphView.m_edgeDetails.getBend(model).getAllHandles();
    for (int j = 0; j < handles.size(); j++) {
        final Handle handle = handles.get(j);
        final Point2D newPoint = handle.calculateHandleLocation(graphView.getViewModel(), this);
        final double x = newPoint.getX();
        final double y = newPoint.getY();
        final double halfSize = graphView.getAnchorSize() / 2.0;
        graphView.m_spacialA.insert((model.getSUID() << 6) | j, (float) (x - halfSize), (float) (y - halfSize), (float) (x + halfSize), (float) (y + halfSize), 0.0);
        if (selectAnchors)
            graphView.m_selectedAnchors.insert((model.getSUID() << 6) | j);
    }
    return true;
}
Also used : Point2D(java.awt.geom.Point2D) Paint(java.awt.Paint) Handle(org.cytoscape.view.presentation.property.values.Handle)

Example 7 with Handle

use of org.cytoscape.view.presentation.property.values.Handle in project cytoscape-impl by cytoscape.

the class DEdgeView method getAnchor.

/**
 * Actual method to be used in the Graph Renderer.
 */
@Override
public void getAnchor(int anchorIndex, float[] anchorArr, int offset) {
    final Bend bend;
    if (isValueLocked(DVisualLexicon.EDGE_BEND))
        bend = this.getVisualProperty(DVisualLexicon.EDGE_BEND);
    else
        bend = graphView.m_edgeDetails.getBend(model);
    final Handle handle;
    if (graphView.m_edgeDetails.getLineCurved(model) == EdgeView.CURVED_LINES)
        handle = bend.getAllHandles().get(anchorIndex);
    else
        handle = bend.getAllHandles().get(anchorIndex / 2);
    final Point2D newPoint = handle.calculateHandleLocation(graphView.getViewModel(), this);
    anchorArr[offset] = (float) newPoint.getX();
    anchorArr[offset + 1] = (float) newPoint.getY();
}
Also used : Point2D(java.awt.geom.Point2D) Bend(org.cytoscape.view.presentation.property.values.Bend) Handle(org.cytoscape.view.presentation.property.values.Handle)

Example 8 with Handle

use of org.cytoscape.view.presentation.property.values.Handle in project cytoscape-impl by cytoscape.

the class DEdgeView method addHandleInternal.

/**
 * Insert a new handle to bend object.
 *
 * @param insertInx
 * @param handleLocation
 */
private void addHandleInternal(final int insertInx, final Point2D handleLocation) {
    synchronized (graphView.m_lock) {
        final Bend bend = graphView.m_edgeDetails.getBend(model);
        final Handle handle = handleFacgtory.createHandle(graphView, this, handleLocation.getX(), handleLocation.getY());
        bend.insertHandleAt(insertInx, handle);
        if (selected) {
            for (int j = bend.getAllHandles().size() - 1; j > insertInx; j--) {
                graphView.m_spacialA.exists((model.getSUID() << 6) | (j - 1), graphView.m_extentsBuff, 0);
                graphView.m_spacialA.delete((model.getSUID() << 6) | (j - 1));
                graphView.m_spacialA.insert((model.getSUID() << 6) | j, graphView.m_extentsBuff[0], graphView.m_extentsBuff[1], graphView.m_extentsBuff[2], graphView.m_extentsBuff[3], 0.0);
                if (graphView.m_selectedAnchors.delete((model.getSUID() << 6) | (j - 1)))
                    graphView.m_selectedAnchors.insert((model.getSUID() << 6) | j);
            }
            graphView.m_spacialA.insert((model.getSUID() << 6) | insertInx, (float) (handleLocation.getX() - (graphView.getAnchorSize() / 2.0d)), (float) (handleLocation.getY() - (graphView.getAnchorSize() / 2.0d)), (float) (handleLocation.getX() + (graphView.getAnchorSize() / 2.0d)), (float) (handleLocation.getY() + (graphView.getAnchorSize() / 2.0d)), 0.0);
        }
        graphView.setContentChanged();
    }
}
Also used : Bend(org.cytoscape.view.presentation.property.values.Bend) Paint(java.awt.Paint) Handle(org.cytoscape.view.presentation.property.values.Handle)

Example 9 with Handle

use of org.cytoscape.view.presentation.property.values.Handle in project cytoscape-impl by cytoscape.

the class EdgeBundlerTask method render.

private final void render(final Collection<View<CyEdge>> edges, final HandleFactory hf, final BendFactory bf, final VisualMappingManager vmm, final VisualMappingFunctionFactory discreteFactory) {
    final VisualStyle style = vmm.getVisualStyle(view);
    // Check existing mapping
    VisualMappingFunction<?, Bend> bendMapping = style.getVisualMappingFunction(EDGE_BEND);
    final Map<Long, Bend> mappingValues;
    Map<Long, Bend> existingMap = null;
    if (bendMapping != null && bendMapping instanceof DiscreteMapping) {
        final String columnName = bendMapping.getMappingColumnName();
        if (columnName.equals(BEND_MAP_COLUMN)) {
            existingMap = ((DiscreteMapping<Long, Bend>) bendMapping).getAll();
        } else {
            bendMapping = (DiscreteMapping<Long, Bend>) discreteFactory.createVisualMappingFunction(BEND_MAP_COLUMN, Long.class, EDGE_BEND);
        }
    }
    mappingValues = new HashMap<>();
    final CyNetwork network = view.getModel();
    final CyTable edgeTable = network.getTable(CyEdge.class, CyNetwork.LOCAL_ATTRS);
    final CyColumn bendMapColumn = edgeTable.getColumn(BEND_MAP_COLUMN);
    if (bendMapColumn == null) {
        edgeTable.createColumn(BEND_MAP_COLUMN, Long.class, false);
    }
    int ei = 0;
    for (final View<CyEdge> edge : edges) {
        final Long edgeId = edge.getModel().getSUID();
        final View<CyNode> eSource = view.getNodeView(edge.getModel().getSource());
        final View<CyNode> eTarget = view.getNodeView(edge.getModel().getTarget());
        network.getRow(edge.getModel()).set(BEND_MAP_COLUMN, edgeId);
        // Ignore self-edge
        if (eSource.getSUID().equals(eTarget.getSUID()))
            continue;
        final Bend bend = bf.createBend();
        final List<Handle> hlist = bend.getAllHandles();
        for (int ni = 0; ni < numNubs; ni++) {
            final double x = nubs[ni][0][ei];
            final double y = nubs[ni][1][ei];
            final Handle h = hf.createHandle(view, edge, x, y);
            hlist.add(h);
        }
        mappingValues.put(edgeId, bend);
        ei++;
    }
    if (bendMapping == null) {
        // Create new discrete mapping for edge SUID to Edge Bend
        final DiscreteMapping<Long, Bend> function = (DiscreteMapping<Long, Bend>) discreteFactory.createVisualMappingFunction(BEND_MAP_COLUMN, Long.class, EDGE_BEND);
        style.addVisualMappingFunction(function);
        function.putAll(mappingValues);
    } else {
        if (existingMap != null) {
            mappingValues.putAll(existingMap);
        }
        ((DiscreteMapping<Long, Bend>) bendMapping).putAll(mappingValues);
    }
}
Also used : Bend(org.cytoscape.view.presentation.property.values.Bend) DiscreteMapping(org.cytoscape.view.vizmap.mappings.DiscreteMapping) CyColumn(org.cytoscape.model.CyColumn) CyNetwork(org.cytoscape.model.CyNetwork) CyEdge(org.cytoscape.model.CyEdge) Handle(org.cytoscape.view.presentation.property.values.Handle) CyTable(org.cytoscape.model.CyTable) CyNode(org.cytoscape.model.CyNode) VisualStyle(org.cytoscape.view.vizmap.VisualStyle)

Example 10 with Handle

use of org.cytoscape.view.presentation.property.values.Handle in project cytoscape-impl by cytoscape.

the class GenericXGMMLReader method setEdgeViewProperties.

protected void setEdgeViewProperties(final CyNetworkView netView, final View<CyEdge> edgeView) {
    final CyEdge edge = edgeView.getModel();
    final Map<String, String> atts = readDataMgr.getGraphicsAttributes(edge);
    setVisualProperties(netView, edgeView, atts);
    // For 2.x compatibility
    final Bend bend = edgeView.getVisualProperty(BasicVisualLexicon.EDGE_BEND);
    if (bend != null && bend != EdgeBendVisualProperty.DEFAULT_EDGE_BEND) {
        final List<Handle> handles = bend.getAllHandles();
        for (final Handle handle : handles) handle.defineHandle(netView, edgeView, Double.NaN, Double.NaN);
    }
}
Also used : Bend(org.cytoscape.view.presentation.property.values.Bend) CyEdge(org.cytoscape.model.CyEdge) Handle(org.cytoscape.view.presentation.property.values.Handle)

Aggregations

Handle (org.cytoscape.view.presentation.property.values.Handle)10 Bend (org.cytoscape.view.presentation.property.values.Bend)8 Point2D (java.awt.geom.Point2D)5 Paint (java.awt.Paint)3 CyEdge (org.cytoscape.model.CyEdge)3 CyNode (org.cytoscape.model.CyNode)2 Point (java.awt.Point)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 LinkedList (java.util.LinkedList)1 CyColumn (org.cytoscape.model.CyColumn)1 CyNetwork (org.cytoscape.model.CyNetwork)1 CyTable (org.cytoscape.model.CyTable)1 LongEnumerator (org.cytoscape.util.intr.LongEnumerator)1 CyNetworkView (org.cytoscape.view.model.CyNetworkView)1 View (org.cytoscape.view.model.View)1 BendFactory (org.cytoscape.view.presentation.property.values.BendFactory)1 HandleFactory (org.cytoscape.view.presentation.property.values.HandleFactory)1 VisualStyle (org.cytoscape.view.vizmap.VisualStyle)1 DiscreteMapping (org.cytoscape.view.vizmap.mappings.DiscreteMapping)1