Search in sources :

Example 26 with Port

use of org.apache.airavata.workflow.model.graph.Port 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 27 with Port

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

the class NodeGUI method setPortPositions.

/**
 * Sets up the position of ports
 */
protected void setPortPositions() {
    // inputs
    List<? extends Port> inputPorts = getNode().getInputPorts();
    for (int i = 0; i < inputPorts.size(); i++) {
        Port port = inputPorts.get(i);
        Point offset = new Point(PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * i);
        NodeController.getGUI(port).setOffset(offset);
    }
    // outputs
    List<? extends Port> outputPorts = getNode().getOutputPorts();
    for (int i = 0; i < outputPorts.size(); i++) {
        Port port = outputPorts.get(i);
        // Use getBounds() instead of this.dimension because subclass might
        // overwrite getBounds() to have different shape.
        Point offset = new Point(this.getBounds().width - PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * i);
        NodeController.getGUI(port).setOffset(offset);
    }
    // control-in
    Port controlInPort = getNode().getControlInPort();
    if (controlInPort != null) {
        NodeController.getGUI(controlInPort).setOffset(new Point(0, 0));
    }
    // control-outs
    for (Port controlOutPort : getNode().getControlOutPorts()) {
        // By default, all ports will be drawn at the same place. Subclass
        // should rearrange them if there are more than one control-out
        // ports.
        NodeController.getGUI(controlOutPort).setOffset(new Point(getBounds().width, getBounds().height));
    }
}
Also used : DataPort(org.apache.airavata.workflow.model.graph.DataPort) Port(org.apache.airavata.workflow.model.graph.Port) Point(java.awt.Point) Point(java.awt.Point)

Example 28 with Port

use of org.apache.airavata.workflow.model.graph.Port 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)

Example 29 with Port

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

the class BlockNodeGUI method setPortPositions.

/**
 * Sets up the position of ports
 */
@Override
protected void setPortPositions() {
    // No input ports
    Port controlInPort = this.node.getControlInPort();
    if (controlInPort != null) {
        NodeController.getGUI(controlInPort).setOffset(new Point(0, 0));
    }
    // There are two controlOutPorts.
    List<? extends Port> controlOutPorts = this.node.getControlOutPorts();
    Port controlOutPort1 = controlOutPorts.get(0);
    Point offset = new Point(getBounds().width, +getBounds().height / 2);
    NodeController.getGUI(controlOutPort1).setOffset(offset);
    Port controlOutPort2 = controlOutPorts.get(1);
    offset = new Point(this.getBounds().width, getBounds().height);
    NodeController.getGUI(controlOutPort2).setOffset(offset);
// No outputs
}
Also used : Port(org.apache.airavata.workflow.model.graph.Port) Point(java.awt.Point)

Example 30 with Port

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

the class EndBlockNodeGUI method setPortPositions.

/**
 * @see org.apache.airavata.xbaya.ui.graph.NodeGUI#setPortPositions()
 */
@Override
protected void setPortPositions() {
    // inputs
    List<? extends Port> inputPorts = this.node.getInputPorts();
    for (int i = 0; i < inputPorts.size(); i++) {
        Port port = inputPorts.get(i);
        Point offset;
        if (i < inputPorts.size() / 2) {
            offset = new Point(PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * i);
        } else {
            offset = new Point(PortGUI.DATA_PORT_SIZE / 2, this.headHeight + PORT_INITIAL_GAP + PORT_GAP * (i + 1));
        }
        NodeController.getGUI(port).setOffset(offset);
    }
    // outputs
    List<? extends Port> outputPorts = this.node.getOutputPorts();
    for (int i = 0; i < outputPorts.size(); i++) {
        Port port = outputPorts.get(i);
        Point offset = new Point(this.getBounds().width - PortGUI.DATA_PORT_SIZE / 2, (int) (this.headHeight + PORT_INITIAL_GAP + PORT_GAP * (outputPorts.size() / 2.0 + i)));
        NodeController.getGUI(port).setOffset(offset);
    }
    // control-in
    Port controlInPort = this.node.getControlInPort();
    if (controlInPort != null) {
        NodeController.getGUI(controlInPort).setOffset(new Point(0, 0));
    }
    // control-out
    for (Port controlOutPort : this.node.getControlOutPorts()) {
        NodeController.getGUI(controlOutPort).setOffset(new Point(getBounds().width, getBounds().height - this.headHeight / 2));
        // Has only one
        break;
    }
}
Also used : Port(org.apache.airavata.workflow.model.graph.Port) Point(java.awt.Point) Point(java.awt.Point)

Aggregations

Port (org.apache.airavata.workflow.model.graph.Port)44 DataPort (org.apache.airavata.workflow.model.graph.DataPort)21 Node (org.apache.airavata.workflow.model.graph.Node)20 Point (java.awt.Point)18 InputNode (org.apache.airavata.workflow.model.graph.system.InputNode)18 WSNode (org.apache.airavata.workflow.model.graph.ws.WSNode)12 DataEdge (org.apache.airavata.workflow.model.graph.DataEdge)11 EPRPort (org.apache.airavata.workflow.model.graph.EPRPort)11 WSPort (org.apache.airavata.workflow.model.graph.ws.WSPort)10 GraphException (org.apache.airavata.workflow.model.graph.GraphException)9 OutputNode (org.apache.airavata.workflow.model.graph.system.OutputNode)9 WorkflowRuntimeException (org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException)8 StreamSourceNode (org.apache.airavata.workflow.model.graph.system.StreamSourceNode)8 WSComponentPort (org.apache.airavata.workflow.model.component.ws.WSComponentPort)7 MemoNode (org.apache.airavata.workflow.model.graph.system.MemoNode)7 DataType (org.apache.airavata.model.application.io.DataType)6 Edge (org.apache.airavata.workflow.model.graph.Edge)6 GraphPiece (org.apache.airavata.workflow.model.graph.GraphPiece)6 ConstantNode (org.apache.airavata.workflow.model.graph.system.ConstantNode)6 EndifNode (org.apache.airavata.workflow.model.graph.system.EndifNode)6