Search in sources :

Example 6 with Edge

use of org.apache.airavata.workflow.model.graph.Edge in project airavata by apache.

the class S3InputNode method edgeWasRemoved.

/**
 * Called whan an Edge was removed from the parameter port. Change the name of the node.
 *
 * @see org.apache.airavata.workflow.model.graph.impl.NodeImpl#edgeWasRemoved(org.apache.airavata.workflow.model.graph.impl.EdgeImpl)
 */
@Override
protected void edgeWasRemoved(Edge removedEdge) {
    super.edgeWasRemoved(removedEdge);
    // TODO organize this.
    List<DataEdge> edges = getEdges();
    if (edges.size() == 0) {
        setParameterType(null);
        if (!isConfigured()) {
            // Reset
            setName(getComponent().getName());
            setDescription("");
            setDefaultValue(null);
            setMetadata(null);
        }
    } else {
        Edge edge = edges.get(0);
        Port toPort = edge.getToPort();
        WSPort toWsPort = (WSPort) toPort;
        DataType toType = toWsPort.getType();
        setParameterType(toType);
        if (!isConfigured()) {
            // Copy
            copyDefaultConfiguration(toWsPort);
        }
    }
}
Also used : WSPort(org.apache.airavata.workflow.model.graph.ws.WSPort) DataEdge(org.apache.airavata.workflow.model.graph.DataEdge) DataPort(org.apache.airavata.workflow.model.graph.DataPort) WSPort(org.apache.airavata.workflow.model.graph.ws.WSPort) WSComponentPort(org.apache.airavata.workflow.model.component.ws.WSComponentPort) Port(org.apache.airavata.workflow.model.graph.Port) DataType(org.apache.airavata.model.appcatalog.appinterface.DataType) Edge(org.apache.airavata.workflow.model.graph.Edge) DataEdge(org.apache.airavata.workflow.model.graph.DataEdge)

Example 7 with Edge

use of org.apache.airavata.workflow.model.graph.Edge in project airavata by apache.

the class DifferedInputNode method edgeWasRemoved.

/**
 * Called whan an Edge was removed from the parameter port. Change the name
 * of the node.
 *
 * @see edu.indiana.extreme.xbaya.graph.impl.NodeImpl#edgeWasRemoved(edu.indiana.extreme.xbaya.graph.impl.EdgeImpl)
 */
@Override
protected void edgeWasRemoved(Edge removedEdge) {
    super.edgeWasRemoved(removedEdge);
    // TODO organize this.
    List<DataEdge> edges = getEdges();
    if (edges.size() == 0) {
        setParameterType(null);
        if (!isConfigured()) {
            // Reset
            setName(getComponent().getName());
            setDescription("");
            setDefaultValue(null);
            setMetadata(null);
        }
    } else {
        Edge edge = edges.get(0);
        Port toPort = edge.getToPort();
        WSPort toWsPort = (WSPort) toPort;
        DataType toType = toWsPort.getType();
        setParameterType(toType);
        if (!isConfigured()) {
            // Copy
            copyDefaultConfiguration(toWsPort);
        }
    }
}
Also used : WSPort(org.apache.airavata.workflow.model.graph.ws.WSPort) DataEdge(org.apache.airavata.workflow.model.graph.DataEdge) DataPort(org.apache.airavata.workflow.model.graph.DataPort) WSPort(org.apache.airavata.workflow.model.graph.ws.WSPort) WSComponentPort(org.apache.airavata.workflow.model.component.ws.WSComponentPort) Port(org.apache.airavata.workflow.model.graph.Port) DataType(org.apache.airavata.model.application.io.DataType) Edge(org.apache.airavata.workflow.model.graph.Edge) DataEdge(org.apache.airavata.workflow.model.graph.DataEdge)

Example 8 with Edge

use of org.apache.airavata.workflow.model.graph.Edge in project airavata by apache.

the class GraphCanvas method mousePressed.

private void mousePressed(MouseEvent event) {
    Point point = event.getPoint();
    // Get focus to handle key board events
    this.panel.requestFocusInWindow();
    // Get select item
    GraphPiece selected = NodeController.getGUI(this.graph).getGraphPieceAt(point);
    /*
         * Doing Nothing if pressed is on the selected node
         */
    if (this.multipleSelectedNodes != null) {
        maybeShowPopup(event);
        if (this.crtlPressed && this.multipleSelectedNodes.contains(selected)) {
            deselectNode((Node) selected);
            return;
        } else if (this.multipleSelectedNodes.contains(selected)) {
            this.mousePoint = point;
            this.panel.setCursor(SwingUtil.MOVE_CURSOR);
            return;
        } else if ((selected instanceof Node) && this.crtlPressed) {
            this.mousePoint = point;
            this.multipleSelectedNodes.add((Node) selected);
            this.panel.setCursor(SwingUtil.MOVE_CURSOR);
            selectNodes(this.multipleSelectedNodes);
            return;
        }
    }
    // control selection
    if ((selected instanceof Node) && this.crtlPressed) {
        this.multipleSelectedNodes = new ArrayList<Node>();
        if (this.selectedNode != null) {
            this.multipleSelectedNodes.add(this.selectedNode);
        }
        this.multipleSelectedNodes.add((Node) selected);
        this.panel.setCursor(SwingUtil.MOVE_CURSOR);
        selectNodes(this.multipleSelectedNodes);
        return;
    }
    deselectNode();
    deselectEdge();
    if (selected instanceof Node) {
        Node node = (Node) selected;
        selectNode(node);
        if (!NodeController.getGUI(node).isInConfig(point)) {
            this.draggedNode = node;
            NodeController.getGUI(node).setDraggedFlag(true);
            this.panel.setCursor(SwingUtil.MOVE_CURSOR);
        }
    } else if (selected instanceof Port) {
        Port port = (Port) selected;
        NodeController.getGUI(port).setSelectedFlag(true);
        switch(port.getKind()) {
            case DATA_IN:
            case CONTROL_IN:
                selectInputPort(port);
                break;
            case CONTROL_OUT:
            case DATA_OUT:
            case EPR:
                selectOutputPort(port);
                break;
        }
        this.draggedPort = port;
    } else if (selected instanceof Edge) {
        Edge edge = (Edge) selected;
        selectEdge(edge);
    } else {
        /*
             * If nothing is selected
             */
        this.mousePointForSelection = event.getPoint();
    }
    maybeShowPopup(event);
    this.mousePoint = point;
    this.panel.repaint();
    event.consume();
}
Also used : GraphPiece(org.apache.airavata.workflow.model.graph.GraphPiece) InputNode(org.apache.airavata.workflow.model.graph.system.InputNode) DynamicNode(org.apache.airavata.workflow.model.graph.dynamic.DynamicNode) Node(org.apache.airavata.workflow.model.graph.Node) StreamSourceNode(org.apache.airavata.workflow.model.graph.system.StreamSourceNode) DataPort(org.apache.airavata.workflow.model.graph.DataPort) Port(org.apache.airavata.workflow.model.graph.Port) Point(java.awt.Point) Edge(org.apache.airavata.workflow.model.graph.Edge)

Example 9 with Edge

use of org.apache.airavata.workflow.model.graph.Edge in project airavata by apache.

the class GraphGUI method getGraphPieceAt.

/**
 * Returns the visible object at the specified location. The object is either a Node, a Port, or an Edge.
 *
 * @param point
 *            The location
 * @return The visible object a the specified location
 */
protected GraphPiece getGraphPieceAt(Point point) {
    GraphPiece piece = null;
    // Starts from edge because it is drawn first, which means it's at the
    // bottom.
    double minEdgeDist = Double.MAX_VALUE;
    Edge closestEdge = null;
    for (Edge edge : this.graph.getEdges()) {
        double dist = NodeController.getGUI(edge).getMiddlePosition().distance(point);
        if (dist < minEdgeDist) {
            closestEdge = edge;
            minEdgeDist = dist;
        }
    }
    if (minEdgeDist < 20) {
        piece = closestEdge;
    }
    // Then, each node and ports of it.
    for (Node node : this.graph.getNodes()) {
        // Check the node first
        if (NodeController.getGUI(node).isIn(point)) {
            piece = node;
        }
        // Find the closest port of this node.
        double minPortDist = Double.MAX_VALUE;
        Port closestPort = null;
        for (Port port : node.getAllPorts()) {
            double dist = NodeController.getGUI(port).getPosition().distance(point);
            if (dist < minPortDist) {
                closestPort = port;
                minPortDist = dist;
            }
        }
        if (minPortDist <= PortGUI.DATA_PORT_SIZE) {
            piece = closestPort;
        }
    // Don't break from this loop because the later ones are drawn at
    // the top of other nodes.
    }
    return piece;
}
Also used : GraphPiece(org.apache.airavata.workflow.model.graph.GraphPiece) MemoNode(org.apache.airavata.workflow.model.graph.system.MemoNode) StreamSourceNode(org.apache.airavata.workflow.model.graph.system.StreamSourceNode) Node(org.apache.airavata.workflow.model.graph.Node) Port(org.apache.airavata.workflow.model.graph.Port) Edge(org.apache.airavata.workflow.model.graph.Edge)

Example 10 with Edge

use of org.apache.airavata.workflow.model.graph.Edge in project airavata by apache.

the class MonitorEventHandler method finishPredecessorNodes.

/**
 * Make preceding nodes done. This helps the monitoring GUI when a user subscribes from the middle of the workflow
 * execution.
 *
 * @param node
 */
private void finishPredecessorNodes(Node node) {
    for (Port inputPort : node.getInputPorts()) {
        for (Edge edge : inputPort.getEdges()) {
            Port fromPort = edge.getFromPort();
            if (!(fromPort instanceof EPRPort)) {
                Node fromNode = fromPort.getNode();
                finishNode(fromNode);
                finishPredecessorNodes(fromNode);
            }
        }
    }
    Port controlInPort = node.getControlInPort();
    if (controlInPort != null) {
        for (Node fromNode : controlInPort.getFromNodes()) {
            finishNode(fromNode);
            finishPredecessorNodes(fromNode);
        }
    }
}
Also used : EPRPort(org.apache.airavata.workflow.model.graph.EPRPort) Port(org.apache.airavata.workflow.model.graph.Port) EPRPort(org.apache.airavata.workflow.model.graph.EPRPort) InputNode(org.apache.airavata.workflow.model.graph.system.InputNode) Node(org.apache.airavata.workflow.model.graph.Node) OutputNode(org.apache.airavata.workflow.model.graph.system.OutputNode) Edge(org.apache.airavata.workflow.model.graph.Edge)

Aggregations

Edge (org.apache.airavata.workflow.model.graph.Edge)11 Port (org.apache.airavata.workflow.model.graph.Port)6 DataEdge (org.apache.airavata.workflow.model.graph.DataEdge)5 Node (org.apache.airavata.workflow.model.graph.Node)5 DataPort (org.apache.airavata.workflow.model.graph.DataPort)4 StreamSourceNode (org.apache.airavata.workflow.model.graph.system.StreamSourceNode)4 WSPort (org.apache.airavata.workflow.model.graph.ws.WSPort)4 WSComponentPort (org.apache.airavata.workflow.model.component.ws.WSComponentPort)3 GraphPiece (org.apache.airavata.workflow.model.graph.GraphPiece)3 InputNode (org.apache.airavata.workflow.model.graph.system.InputNode)3 DataType (org.apache.airavata.model.appcatalog.appinterface.DataType)2 DataType (org.apache.airavata.model.application.io.DataType)2 GraphException (org.apache.airavata.workflow.model.graph.GraphException)2 DynamicNode (org.apache.airavata.workflow.model.graph.dynamic.DynamicNode)2 MemoNode (org.apache.airavata.workflow.model.graph.system.MemoNode)2 Point (java.awt.Point)1 ArrayList (java.util.ArrayList)1 LinkedList (java.util.LinkedList)1 WorkflowRuntimeException (org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException)1 EPRPort (org.apache.airavata.workflow.model.graph.EPRPort)1