use of org.eclipse.draw2d.ConnectionEndpointLocator in project netxms by netxms.
the class MapLabelProvider method selfStyleConnection.
/*
* (non-Javadoc)
*
* @see
* org.eclipse.gef4.zest.core.viewers.ISelfStyleProvider#selfStyleConnection(java
* .lang.Object, org.eclipse.gef4.zest.core.widgets.GraphConnection)
*/
@Override
public void selfStyleConnection(Object element, GraphConnection connection) {
connection.setVisible(connectionsVisible);
NetworkMapLink link = (NetworkMapLink) connection.getData();
if (link.getType() == NetworkMapLink.VPN) {
connection.setLineStyle(Graphics.LINE_DOT);
}
if (link.hasConnectorName1() && connectionLabelsVisible) {
ConnectionEndpointLocator sourceEndpointLocator = new ConnectionEndpointLocator(connection.getConnectionFigure(), false);
sourceEndpointLocator.setVDistance(0);
final Label label = new ConnectorLabel(link.getConnectorName1());
label.setFont(fontLabel);
connection.getConnectionFigure().add(label, sourceEndpointLocator);
}
if (link.hasConnectorName2() && connectionLabelsVisible) {
ConnectionEndpointLocator targetEndpointLocator = new ConnectionEndpointLocator(connection.getConnectionFigure(), true);
targetEndpointLocator.setVDistance(0);
final Label label = new ConnectorLabel(link.getConnectorName2());
label.setFont(fontLabel);
connection.getConnectionFigure().add(label, targetEndpointLocator);
}
if (showLinkDirection)
((PolylineConnection) connection.getConnectionFigure()).setSourceDecoration(new PolylineDecoration());
IFigure owner = ((PolylineConnection) connection.getConnectionFigure()).getTargetAnchor().getOwner();
((PolylineConnection) connection.getConnectionFigure()).setTargetAnchor(new MultiConnectionAnchor(owner, link));
owner = ((PolylineConnection) connection.getConnectionFigure()).getSourceAnchor().getOwner();
((PolylineConnection) connection.getConnectionFigure()).setSourceAnchor(new MultiConnectionAnchor(owner, link));
boolean hasDciData = link.hasDciData();
boolean hasName = link.hasName();
if (link.getStatusObject() != null && link.getStatusObject().size() != 0) {
ObjectStatus status = ObjectStatus.UNKNOWN;
for (Long id : link.getStatusObject()) {
AbstractObject object = session.findObjectById(id);
if (object != null) {
ObjectStatus s = object.getStatus();
if ((s.compareTo(ObjectStatus.UNKNOWN) < 0) && ((status.compareTo(s) < 0) || (status == ObjectStatus.UNKNOWN))) {
status = s;
if (status == ObjectStatus.CRITICAL)
break;
}
}
}
connection.setLineColor(StatusDisplayInfo.getStatusColor(status));
} else if (link.getColor() >= 0) {
connection.setLineColor(colors.create(ColorConverter.rgbFromInt(link.getColor())));
} else if (link.getType() == NetworkMapLink.AGENT_TUNEL) {
connection.setLineColor(COLOR_AGENT_TUNNEL);
} else if (link.getType() == NetworkMapLink.AGENT_PROXY) {
connection.setLineColor(COLOR_AGENT_PROXY);
} else if (link.getType() == NetworkMapLink.ICMP_PROXY) {
connection.setLineColor(COLOR_ICMP_PROXY);
} else if (link.getType() == NetworkMapLink.SNMP_PROXY) {
connection.setLineColor(COLOR_SNMP_PROXY);
} else if (link.getType() == NetworkMapLink.SSH_PROXY) {
connection.setLineColor(COLOR_SSH_PROXY);
} else if (link.getType() == NetworkMapLink.ZONE_PROXY) {
connection.setLineColor(COLOR_ZONE_PROXY);
} else if (defaultLinkColor != null) {
connection.setLineColor(defaultLinkColor);
}
if ((hasName || hasDciData) && connectionLabelsVisible) {
MultiLabelConnectionLocator nameLocator = new MultiLabelConnectionLocator(connection.getConnectionFigure(), link);
// $NON-NLS-1$
String labelString = "";
if (hasName)
labelString += link.getName();
if (hasName && hasDciData)
// $NON-NLS-1$
labelString += "\n";
if (hasDciData) {
labelString += dciValueProvider.getDciDataAsString(link);
}
final Label label;
if (link.getType() == NetworkMapLink.AGENT_TUNEL || link.getType() == NetworkMapLink.AGENT_PROXY || link.getType() == NetworkMapLink.ICMP_PROXY || link.getType() == NetworkMapLink.SNMP_PROXY || link.getType() == NetworkMapLink.SSH_PROXY || link.getType() == NetworkMapLink.ZONE_PROXY)
label = new ConnectorLabel(labelString, connection.getLineColor());
else
label = new ConnectorLabel(labelString);
label.setFont(fontLabel);
connection.getConnectionFigure().add(label, nameLocator);
}
switch(link.getRouting()) {
case NetworkMapLink.ROUTING_DIRECT:
connection.setRouter(ConnectionRouter.NULL);
break;
case NetworkMapLink.ROUTING_MANHATTAN:
connection.setRouter(manhattanRouter);
break;
case NetworkMapLink.ROUTING_BENDPOINTS:
connection.setRouter(bendpointRouter);
// $NON-NLS-1$
connection.setData("ROUTER", bendpointRouter);
Object bp = getConnectionPoints(link);
bendpointRouter.setConstraint(connection.getConnectionFigure(), bp);
connection.getConnectionFigure().setRoutingConstraint(bp);
break;
default:
connection.setRouter(null);
break;
}
connection.setLineWidth(2);
}
Aggregations