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;
}
}
Aggregations