use of org.knime.workbench.editor2.editparts.AbstractPortEditPart in project knime-core by knime.
the class SnapToPortGeometry method populateRowsAndCols.
/**
* Updates the cached row and column Entries using the provided parts.
* Columns are only the center of a node figure while rows are all ports of
* a node.
*
* @param parts a List of EditParts
*/
protected void populateRowsAndCols(final List parts, final List dragedParts) {
// add the port edit parts to a list
List<AbstractPortEditPart> portList = getPorts(parts);
// create all row relevant points fromt the port list
List<Entry> rowVector = new ArrayList<Entry>();
for (int i = 0; i < portList.size(); i++) {
GraphicalEditPart child = portList.get(i);
Rectangle bounds = getFigureBounds(child);
// get information is this is an inport
boolean inport = false;
if (portList.get(i) instanceof NodeInPortEditPart || portList.get(i) instanceof WorkflowInPortEditPart) {
inport = true;
}
// get information is this is a model port
rowVector.add(new Entry(0, bounds.y + (bounds.height - 1) / 2, inport, portList.get(i).getType()));
}
// add the port edit parts to a list
List<AbstractPortEditPart> dargedPortList = getPorts(dragedParts);
for (int i = 0; i < dargedPortList.size(); i++) {
// for each port get a possible connection (if connected)
AbstractPortEditPart portPart = dargedPortList.get(i);
List sourceConnections = portPart.getSourceConnections();
for (int j = 0; j < sourceConnections.size(); j++) {
ConnectionContainerEditPart conPart = (ConnectionContainerEditPart) sourceConnections.get(j);
Point p = ((Connection) conPart.getFigure()).getPoints().getPoint(2);
rowVector.add(new Entry(0, p.y, true, portPart.getType()));
}
List targetConnections = portPart.getTargetConnections();
for (int j = 0; j < targetConnections.size(); j++) {
ConnectionContainerEditPart conPart = (ConnectionContainerEditPart) targetConnections.get(j);
PointList pList = ((Connection) conPart.getFigure()).getPoints();
Point p = pList.getPoint(pList.size() - 3);
rowVector.add(new Entry(0, p.y, false, portPart.getType()));
}
}
List<Entry> colVector = new ArrayList<Entry>();
for (int i = 0; i < parts.size(); i++) {
GraphicalEditPart child = (GraphicalEditPart) parts.get(i);
Rectangle bounds = getFigureBounds(child);
colVector.add(new Entry(0, bounds.x + (bounds.width - 1) / 2));
}
m_rows = rowVector.toArray(new Entry[rowVector.size()]);
m_cols = colVector.toArray(new Entry[colVector.size()]);
}
use of org.knime.workbench.editor2.editparts.AbstractPortEditPart in project knime-core by knime.
the class PortGraphicalRoleEditPolicy method getConnectionCompleteCommand.
/**
* This tries to complete the command to create a connection.
*
* {@inheritDoc}
*/
@Override
protected Command getConnectionCompleteCommand(final CreateConnectionRequest request) {
// get the previously started command
CreateConnectionCommand cmd = (CreateConnectionCommand) request.getStartCommand();
if (cmd == null) {
return null;
}
EditPart target = request.getTargetEditPart();
if ((target instanceof NodeOutPortEditPart) || target instanceof WorkflowInPortEditPart) {
return null;
} else if (target instanceof NodeInPortEditPart || target instanceof WorkflowOutPortEditPart) {
cmd.setTargetPortID(((AbstractPortEditPart) target).getIndex());
cmd.setTargetNode((ConnectableEditPart) target.getParent());
} else if (target instanceof NodeContainerEditPart) {
if (cmd.wasStartedOnOutPort()) {
cmd.setTargetPortID(-1);
cmd.setTargetNode((NodeContainerEditPart) target);
} else {
cmd.setSourcePortID(-1);
cmd.setSourceNode((NodeContainerEditPart) target);
}
} else {
return null;
}
return cmd;
}
use of org.knime.workbench.editor2.editparts.AbstractPortEditPart in project knime-core by knime.
the class WorkflowSelectionDragEditPartsTracker method getEmbracedConnections.
/**
* Returns the connections whose source and target is contained in the argument list.
* @param parts list of selected nodes
* @return the connections whose source and target is contained in the argument list.
*/
public static ConnectionContainerEditPart[] getEmbracedConnections(final List<EditPart> parts) {
// result list
List<ConnectionContainerEditPart> result = new ArrayList<ConnectionContainerEditPart>();
for (EditPart part : parts) {
if (part instanceof NodeContainerEditPart || part instanceof AbstractWorkflowPortBarEditPart) {
EditPart containerPart = part;
ConnectionContainerEditPart[] outPortConnectionParts = getOutportConnections(containerPart);
// selected list, the connections bendpoints must be adapted
for (ConnectionContainerEditPart connectionPart : outPortConnectionParts) {
// get the in-port-node part of the connection and check
AbstractPortEditPart inPortPart = null;
if (connectionPart.getTarget() != null && ((AbstractPortEditPart) connectionPart.getTarget()).isInPort()) {
inPortPart = (AbstractPortEditPart) connectionPart.getTarget();
} else if (connectionPart.getSource() != null) {
inPortPart = (AbstractPortEditPart) connectionPart.getSource();
}
if (inPortPart != null && isPartInList(inPortPart.getParent(), parts)) {
result.add(connectionPart);
}
}
}
}
return result.toArray(new ConnectionContainerEditPart[result.size()]);
}
use of org.knime.workbench.editor2.editparts.AbstractPortEditPart in project knime-core by knime.
the class WorkflowSelectionDragEditPartsTracker method getOutportConnections.
@SuppressWarnings("unchecked")
private static ConnectionContainerEditPart[] getOutportConnections(final EditPart containerPart) {
// result list
List<ConnectionContainerEditPart> result = new ArrayList<ConnectionContainerEditPart>();
List<EditPart> children = containerPart.getChildren();
for (EditPart part : children) {
if (part instanceof AbstractPortEditPart) {
AbstractPortEditPart outPortPart = (AbstractPortEditPart) part;
// append all connection edit parts
result.addAll(outPortPart.getSourceConnections());
}
}
return result.toArray(new ConnectionContainerEditPart[result.size()]);
}
use of org.knime.workbench.editor2.editparts.AbstractPortEditPart in project knime-core by knime.
the class PortGraphicalRoleEditPolicy method getReconnectTargetCommand.
/**
* {@inheritDoc}
*/
@Override
protected Command getReconnectTargetCommand(final ReconnectRequest req) {
// only connect to inports
if (!(getHost() instanceof NodeInPortEditPart || getHost() instanceof WorkflowOutPortEditPart)) {
return null;
}
// get new target in port
AbstractPortEditPart target = (AbstractPortEditPart) req.getTarget();
ReconnectConnectionCommand reconnectCmd = new ReconnectConnectionCommand((ConnectionContainerEditPart) req.getConnectionEditPart(), (AbstractPortEditPart) req.getConnectionEditPart().getSource(), target);
return reconnectCmd;
}
Aggregations