Search in sources :

Example 1 with Type

use of org.knime.core.node.workflow.WorkflowEvent.Type in project knime-core by knime.

the class NodeOutputView method workflowChanged.

/**
 * {@inheritDoc}
 */
@Override
public void workflowChanged(final WorkflowEvent event) {
    if (event.getType() == Type.NODE_REMOVED) {
        // unregister from the node removed
        Object oldValue = event.getOldValue();
        if (oldValue instanceof NodeContainer) {
            NodeContainer oldNode = (NodeContainer) oldValue;
            if (oldNode.getID().equals(m_workflow.getID())) {
                // our flow got removed (i.e. the editor or the workbench is closed)
                disconnectFromWFM();
                m_lastNode = null;
                m_workflow = null;
                m_parentWfm = null;
                updateNCinfoInSWT(null);
                return;
            }
            if (oldNode.getID().equals(m_lastNode)) {
                oldNode.removeNodeStateChangeListener(this);
                // pinned node is gone: unpin
                m_pinButton.setChecked(false);
            }
        }
        return;
    }
    if (!m_pinned || (m_pinned && !m_branchLocked)) {
        return;
    }
    Type type = event.getType();
    if (type == Type.CONNECTION_ADDED) {
        ConnectionContainer cc = (ConnectionContainer) event.getNewValue();
        if (cc.getSource().equals(m_lastNode)) {
            if (m_workflow.getOutgoingConnectionsFor(m_lastNode).size() == 1) {
                if (m_workflow.containsNodeContainer(cc.getDest())) {
                    // could be an outgoing metanode connection
                    // first connection: follow this new branch extension
                    updateNCinfoInSWT(cc.getDest());
                }
            }
        }
    } else if (type == Type.CONNECTION_REMOVED) {
        ConnectionContainer cc = (ConnectionContainer) event.getOldValue();
        if (cc.getDest().equals(m_lastNode)) {
            if (m_workflow.containsNodeContainer(m_lastNode)) {
                if (m_workflow.getOutgoingConnectionsFor(m_lastNode).size() == 0) {
                    updateNCinfoInSWT(cc.getSource());
                }
            } else {
                updateNCinfoInSWT(cc.getSource());
            }
        }
    } else {
        return;
    }
}
Also used : Type(org.knime.core.node.workflow.WorkflowEvent.Type) ConnectionContainer(org.knime.core.node.workflow.ConnectionContainer) PortObject(org.knime.core.node.port.PortObject) NodeContainer(org.knime.core.node.workflow.NodeContainer) NativeNodeContainer(org.knime.core.node.workflow.NativeNodeContainer) SingleNodeContainer(org.knime.core.node.workflow.SingleNodeContainer)

Aggregations

PortObject (org.knime.core.node.port.PortObject)1 ConnectionContainer (org.knime.core.node.workflow.ConnectionContainer)1 NativeNodeContainer (org.knime.core.node.workflow.NativeNodeContainer)1 NodeContainer (org.knime.core.node.workflow.NodeContainer)1 SingleNodeContainer (org.knime.core.node.workflow.SingleNodeContainer)1 Type (org.knime.core.node.workflow.WorkflowEvent.Type)1