@Override
  protected void createContent(
      IManagedForm mform, Composite body, DataBindingContext bindingContext) {
    Result notReferenced = ValidationUtil.isFreeOfReferences(port);
    boolean multiplicityAnyAllowed = true;
    ActorContainerClass parent = (ActorContainerClass) port.eContainer();
    if (parent instanceof ActorClass) {
      if (ValidationUtil.isReferencedAsReplicatedInModel((ActorClass) parent))
        multiplicityAnyAllowed = false;
    }
    NameValidator nv = new NameValidator();
    ProtocolValidator pv = new ProtocolValidator();
    MultiplicityValidator mv =
        new MultiplicityValidator(
            newPort || notReferenced.isOk(), port.getMultiplicity(), multiplicityAnyAllowed);

    ArrayList<IEObjectDescription> protocols = new ArrayList<IEObjectDescription>();
    Iterator<IEObjectDescription> it = scope.getAllElements().iterator();
    while (it.hasNext()) {
      IEObjectDescription desc = it.next();
      EObject obj = desc.getEObjectOrProxy();
      if (obj instanceof GeneralProtocolClass) protocols.add(desc);
    }

    Text name = createText(body, "&Name:", port, RoomPackage.eINSTANCE.getInterfaceItem_Name(), nv);
    Combo protocol =
        createComboUsingDesc(
            body,
            "&Protocol:",
            port,
            GeneralProtocolClass.class,
            RoomPackage.eINSTANCE.getPort_Protocol(),
            protocols,
            RoomPackage.eINSTANCE.getRoomClass_Name(),
            pv);
    Button conj =
        createCheck(body, "&Conjugated:", port, RoomPackage.eINSTANCE.getPort_Conjugated());
    if (!internal && !refitem && (acc instanceof ActorClass))
      createRelayCheck(body, notReferenced, mform.getToolkit());

    Multiplicity2StringConverter m2s = new Multiplicity2StringConverter();
    String2MultiplicityConverter s2m = new String2MultiplicityConverter();
    Text multi =
        createText(
            body,
            "&Multiplicity:",
            port,
            RoomPackage.eINSTANCE.getPort_Multiplicity(),
            mv,
            s2m,
            m2s,
            false);

    if (!newPort) {
      if (!notReferenced.isOk()) {
        protocol.setEnabled(false);
        createInfoDecorator(protocol, notReferenced.getMsg());
        conj.setEnabled(false);
        createInfoDecorator(conj, notReferenced.getMsg());
        if (port.getMultiplicity() == 1) {
          multi.setEnabled(false);
          createInfoDecorator(multi, notReferenced.getMsg());
        }
      }

      if (refitem) {
        name.setEnabled(false);
        createInfoDecorator(name, "inherited");
        protocol.setEnabled(false);
        createInfoDecorator(protocol, "inherited");
        conj.setEnabled(false);
        createInfoDecorator(conj, "inherited");
        multi.setEnabled(false);
        createInfoDecorator(multi, "inherited");
      }
    }

    createDecorator(name, "invalid name");
    createDecorator(protocol, "no protocol selected");
    createDecorator(multi, "multiplicity must be greater 1");

    name.selectAll();
    name.setFocus();
  }