Search in sources :

Example 6 with Node

use of prefuse.data.Node in project jo-client-platform by jo-source.

the class BeanRelationGraphImpl method contractExpandNodes.

private void contractExpandNodes(final Node node) {
    if (node.get("expanded") == Expand.FULL) {
        final Set<Node> outNodes = setEdges(node, false);
        node.set("expanded", Expand.NOT);
        final Iterator<Node> iteratorOutNodes = outNodes.iterator();
        while (iteratorOutNodes.hasNext()) {
            final Node elem = iteratorOutNodes.next();
            contractExpandNodes(elem, false);
            setNeighborEdges(elem, false);
            checkExpandLevel(elem);
        }
    } else if (node.get("expanded") == Expand.NOT) {
        final Set<Node> outNodes = setEdges(node, true);
        node.set("expanded", Expand.FULL);
        addNodeToCache(node);
        final Iterator<Node> iteratorNodes = outNodes.iterator();
        while (iteratorNodes.hasNext()) {
            final Node elem = iteratorNodes.next();
            loadModel(elem, false);
            setNeighborEdges(elem, true);
            checkExpandLevel(elem);
            if (expandedNodesCache.contains(elem)) {
                elem.set("expanded", Expand.NOT);
                contractExpandNodes(elem);
            }
        }
    }
}
Also used : Set(java.util.Set) LinkedHashSet(java.util.LinkedHashSet) TupleSet(prefuse.data.tuple.TupleSet) HashSet(java.util.HashSet) Node(prefuse.data.Node) Iterator(java.util.Iterator)

Example 7 with Node

use of prefuse.data.Node in project jo-client-platform by jo-source.

the class BeanRelationGraphImpl method setEdges.

private Set<Node> setEdges(final Node node, final boolean visible) {
    final Set<Node> outNodes = new HashSet<Node>();
    final Iterator<?> outEdges = node.outEdges();
    while (outEdges.hasNext()) {
        final Edge out = (Edge) outEdges.next();
        outNodes.add(out.getTargetNode());
        out.set("visible", visible);
    }
    return outNodes;
}
Also used : Node(prefuse.data.Node) Edge(prefuse.data.Edge) LinkedHashSet(java.util.LinkedHashSet) HashSet(java.util.HashSet)

Example 8 with Node

use of prefuse.data.Node in project jo-client-platform by jo-source.

the class BeanRelationGraphImpl method checkExpandLevel.

private void checkExpandLevel(final Node node) {
    final Iterator<?> parents = node.inNeighbors();
    while (parents.hasNext()) {
        final Node parent = (Node) parents.next();
        final int outEdges = parent.getOutDegree();
        int count = 0;
        final Iterator<?> itEdges = parent.outEdges();
        while (itEdges.hasNext()) {
            if ((Boolean) ((Edge) itEdges.next()).get("visible")) {
                count++;
            }
        }
        if (count == 0) {
            parent.set("expanded", Expand.NOT);
        } else if (count > 0 && count < outEdges) {
            parent.set("expanded", Expand.PARTIALLY);
        } else if (count == outEdges) {
            parent.set("expanded", Expand.FULL);
        }
    }
}
Also used : Node(prefuse.data.Node) IInputFieldBluePrint(org.jowidgets.api.widgets.blueprint.IInputFieldBluePrint) IComboBoxSelectionBluePrint(org.jowidgets.api.widgets.blueprint.IComboBoxSelectionBluePrint) Point(java.awt.Point)

Example 9 with Node

use of prefuse.data.Node in project jo-client-platform by jo-source.

the class BeanRelationGraphImpl method initializeDisplayControlListener.

private void initializeDisplayControlListener() {
    display.addControlListener(new DragControl() {

        @Override
        public void itemDragged(final VisualItem item, final MouseEvent e) {
            if (layoutManager.getLabelEdgeLayout() != null) {
                layoutManager.getLabelEdgeLayout().run();
                super.itemDragged(item, e);
            }
        }

        @Override
        public void itemReleased(final VisualItem item, final MouseEvent e) {
            item.set("position", new Point((int) item.getX(), (int) item.getY()));
            super.itemReleased(item, e);
        }
    });
    display.addControlListener(new PanControl());
    display.addControlListener(new ZoomControl());
    display.addControlListener(new WheelZoomControl());
    display.addControlListener(new ZoomToFitControl());
    display.addControlListener(new NeighborHighlightControl());
    display.addControlListener(new FocusControl(NODES, 1) {

        @Override
        public void itemClicked(final VisualItem item, final MouseEvent e) {
            if (item.isInGroup(EDGES)) {
                return;
            }
            final int row = item.getRow();
            final Node node = graph.getNode(row);
            final double scale = display.getScale();
            if ((Boolean) item.get("isParent")) {
                if (item.get("expanded") == Expand.PARTIALLY) {
                    if (checkExpandIconHit(false, item, e, scale)) {
                        item.set("expanded", Expand.FULL);
                        loadModel(node, true);
                        runFilter();
                        return;
                    } else if (checkExpandIconHit(true, item, e, scale)) {
                        item.set("expanded", Expand.NOT);
                        loadModel(node, true);
                        runFilter();
                        return;
                    }
                } else if (item.get("expanded") == Expand.FULL || item.get("expanded") == Expand.NOT) {
                    if (checkExpandIconHit(false, item, e, scale)) {
                        loadModel(node, true);
                        runFilter();
                        return;
                    }
                }
            }
            if ((Boolean) node.get("marked")) {
                node.set("marked", false);
                markedNode = null;
            } else {
                node.set("marked", true);
                markedNode = (NodeItem) item;
            }
            vis.run("marked");
            runFilter();
            runLayout(true);
        }
    });
    final ToolTipControl ttc = new ToolTipControl("tooltip");
    display.addControlListener(ttc);
}
Also used : NeighborHighlightControl(prefuse.controls.NeighborHighlightControl) DragControl(prefuse.controls.DragControl) MouseEvent(java.awt.event.MouseEvent) FocusControl(prefuse.controls.FocusControl) Node(prefuse.data.Node) VisualItem(prefuse.visual.VisualItem) Point(java.awt.Point) ZoomToFitControl(prefuse.controls.ZoomToFitControl) ToolTipControl(prefuse.controls.ToolTipControl) WheelZoomControl(prefuse.controls.WheelZoomControl) ZoomControl(prefuse.controls.ZoomControl) PanControl(prefuse.controls.PanControl) NodeItem(prefuse.visual.NodeItem) WheelZoomControl(prefuse.controls.WheelZoomControl)

Example 10 with Node

use of prefuse.data.Node in project jo-client-platform by jo-source.

the class BeanRelationGraphImpl method addNodeToCache.

private void addNodeToCache(final Node node) {
    if (expandedNodesCache.contains(node)) {
        return;
    }
    if (expandedNodesCache.size() > MAX_EXPANDED_NODES_CACHE) {
        final Node keyToRemove = expandedNodesCache.iterator().next();
        expandedNodesCache.remove(keyToRemove);
    }
    expandedNodesCache.remove(node);
    expandedNodesCache.add(node);
}
Also used : Node(prefuse.data.Node)

Aggregations

Node (prefuse.data.Node)19 Edge (prefuse.data.Edge)5 TupleSet (prefuse.data.tuple.TupleSet)4 VisualItem (prefuse.visual.VisualItem)4 LinkedHashSet (java.util.LinkedHashSet)3 Point (java.awt.Point)2 HashSet (java.util.HashSet)2 LayerDetailDescriptor (org.qi4j.tools.model.descriptor.LayerDetailDescriptor)2 MouseEvent (java.awt.event.MouseEvent)1 Iterator (java.util.Iterator)1 Set (java.util.Set)1 IComboBoxSelectionBluePrint (org.jowidgets.api.widgets.blueprint.IComboBoxSelectionBluePrint)1 IInputFieldBluePrint (org.jowidgets.api.widgets.blueprint.IInputFieldBluePrint)1 ModuleDetailDescriptor (org.qi4j.tools.model.descriptor.ModuleDetailDescriptor)1 DragControl (prefuse.controls.DragControl)1 FocusControl (prefuse.controls.FocusControl)1 NeighborHighlightControl (prefuse.controls.NeighborHighlightControl)1 PanControl (prefuse.controls.PanControl)1 ToolTipControl (prefuse.controls.ToolTipControl)1 WheelZoomControl (prefuse.controls.WheelZoomControl)1