@Override
 protected void createEditPolicies() {
   super.createEditPolicies();
   installEditPolicy(
       EditPolicy.CONNECTION_BENDPOINTS_ROLE, new OPPProceduralLinkBendpointEditPolicy());
   installEditPolicy(EditPolicy.CONNECTION_ROLE, new OPPDeleteLinkEditPolicy());
   installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, new OPPNamedEntityDirectEditPolicy());
   installEditPolicy(
       OPPProceduralLinkEditPolicy.PROCEDURAL_LINK_EDIT_ROLE,
       new OPPProceduralLinkEditPolicy(new OPPProceduralLinkValidator()));
 }
  @Override
  protected void refreshVisuals() {
    super.refreshVisuals();
    OPPProceduralLink model = (OPPProceduralLink) getModel();
    getFigure().getCenterDecorationLabel().setText(model.getCenterDecoration());
    if (model.getSubKinds().size() != 0) {
      String subKindLabel = model.getSubKinds().toString();
      subKindLabel = subKindLabel.substring(1, subKindLabel.length() - 1);
      subKindLabel = subKindLabel.replace(" ", "");
      getFigure().setSubKindLabelText(subKindLabel);
    } else {
      getFigure().setSubKindLabelText("");
    }

    Connection connection = getConnectionFigure();
    List<OPPPoint> modelConstraint = getModel().getBendpoints();
    List<AbsoluteBendpoint> figureConstraint = new ArrayList<AbsoluteBendpoint>();
    for (OPPPoint p : modelConstraint) {
      figureConstraint.add(new AbsoluteBendpoint(p.getX(), p.getY()));
    }
    connection.setRoutingConstraint(figureConstraint);
  }