/**
   * {@inheritDoc}
   *
   * @see
   *     org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent#initPart(java.lang.Object,
   *     int, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.resource.ResourceSet)
   */
  public void initPart(Object key, int kind, EObject elt, ResourceSet allResource) {
    setInitializing(true);
    if (editingPart != null && key == partKey) {
      editingPart.setContext(elt, allResource);
      final InputPin inputPin = (InputPin) elt;
      final InputPinPropertiesEditionPart basePart = (InputPinPropertiesEditionPart) editingPart;
      // init values
      if (inputPin.getName() != null && isAccessible(UmlViewsRepository.InputPin.Properties.name))
        basePart.setName(
            EEFConverterUtil.convertToString(UMLPackage.eINSTANCE.getString(), inputPin.getName()));

      if (isAccessible(UmlViewsRepository.InputPin.Properties.visibility)) {
        basePart.initVisibility(
            (EEnum) UMLPackage.eINSTANCE.getNamedElement_Visibility().getEType(),
            inputPin.getVisibility());
      }
      if (isAccessible(UmlViewsRepository.InputPin.Properties.clientDependency)) {
        clientDependencySettings =
            new ReferencesTableSettings(
                inputPin, UMLPackage.eINSTANCE.getNamedElement_ClientDependency());
        basePart.initClientDependency(clientDependencySettings);
      }
      basePart.setIsLeaf(inputPin.isLeaf());

      if (isAccessible(UmlViewsRepository.InputPin.Properties.inStructuredNode)) {
        // init part
        inStructuredNodeSettings =
            new EObjectFlatComboSettings(
                inputPin, UMLPackage.eINSTANCE.getActivityNode_InStructuredNode());
        basePart.initInStructuredNode(inStructuredNodeSettings);
        // set the button mode
        basePart.setInStructuredNodeButtonMode(ButtonsModeEnum.BROWSE);
      }
      if (isAccessible(UmlViewsRepository.InputPin.Properties.activity)) {
        // init part
        activitySettings =
            new EObjectFlatComboSettings(inputPin, UMLPackage.eINSTANCE.getActivityNode_Activity());
        basePart.initActivity(activitySettings);
        // set the button mode
        basePart.setActivityButtonMode(ButtonsModeEnum.BROWSE);
      }
      if (isAccessible(UmlViewsRepository.InputPin.Properties.outgoing)) {
        outgoingSettings =
            new ReferencesTableSettings(inputPin, UMLPackage.eINSTANCE.getActivityNode_Outgoing());
        basePart.initOutgoing(outgoingSettings);
      }
      if (isAccessible(UmlViewsRepository.InputPin.Properties.incoming)) {
        incomingSettings =
            new ReferencesTableSettings(inputPin, UMLPackage.eINSTANCE.getActivityNode_Incoming());
        basePart.initIncoming(incomingSettings);
      }
      if (isAccessible(UmlViewsRepository.InputPin.Properties.inPartition)) {
        inPartitionSettings =
            new ReferencesTableSettings(
                inputPin, UMLPackage.eINSTANCE.getActivityNode_InPartition());
        basePart.initInPartition(inPartitionSettings);
      }
      if (isAccessible(UmlViewsRepository.InputPin.Properties.inInterruptibleRegion)) {
        inInterruptibleRegionSettings =
            new ReferencesTableSettings(
                inputPin, UMLPackage.eINSTANCE.getActivityNode_InInterruptibleRegion());
        basePart.initInInterruptibleRegion(inInterruptibleRegionSettings);
      }
      if (isAccessible(UmlViewsRepository.InputPin.Properties.redefinedNode)) {
        redefinedNodeSettings =
            new ReferencesTableSettings(
                inputPin, UMLPackage.eINSTANCE.getActivityNode_RedefinedNode());
        basePart.initRedefinedNode(redefinedNodeSettings);
      }
      if (isAccessible(UmlViewsRepository.InputPin.Properties.type)) {
        // init part
        typeSettings =
            new EObjectFlatComboSettings(inputPin, UMLPackage.eINSTANCE.getTypedElement_Type());
        basePart.initType(typeSettings);
        // set the button mode
        basePart.setTypeButtonMode(ButtonsModeEnum.BROWSE);
      }
      if (isAccessible(UmlViewsRepository.InputPin.Properties.ordering)) {
        basePart.initOrdering(
            (EEnum) UMLPackage.eINSTANCE.getObjectNode_Ordering().getEType(),
            inputPin.getOrdering());
      }
      basePart.setIsControlType(inputPin.isControlType());

      if (isAccessible(UmlViewsRepository.InputPin.Properties.inState)) {
        inStateSettings =
            new ReferencesTableSettings(inputPin, UMLPackage.eINSTANCE.getObjectNode_InState());
        basePart.initInState(inStateSettings);
      }
      if (isAccessible(UmlViewsRepository.InputPin.Properties.selection)) {
        // init part
        selectionSettings =
            new EObjectFlatComboSettings(inputPin, UMLPackage.eINSTANCE.getObjectNode_Selection());
        basePart.initSelection(selectionSettings);
        // set the button mode
        basePart.setSelectionButtonMode(ButtonsModeEnum.BROWSE);
      }
      basePart.setIsOrdered(inputPin.isOrdered());

      basePart.setIsUnique(inputPin.isUnique());

      basePart.setIsControl(inputPin.isControl());

      // init filters

      basePart.addFilterToClientDependency(
          new ViewerFilter() {

            /**
             * {@inheritDoc}
             *
             * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer,
             *     java.lang.Object, java.lang.Object)
             */
            public boolean select(Viewer viewer, Object parentElement, Object element) {
              if (element instanceof EObject)
                return (!basePart.isContainedInClientDependencyTable((EObject) element));
              return element instanceof Resource;
            }
          });
      basePart.addFilterToClientDependency(new EObjectFilter(UMLPackage.eINSTANCE.getDependency()));
      // Start of user code for additional businessfilters for clientDependency
      // End of user code

      basePart.addFilterToInStructuredNode(
          new ViewerFilter() {

            /**
             * {@inheritDoc}
             *
             * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer,
             *     java.lang.Object, java.lang.Object)
             */
            public boolean select(Viewer viewer, Object parentElement, Object element) {
              return (element instanceof String && element.equals(""))
                  || (element instanceof StructuredActivityNode); // $NON-NLS-1$
            }
          });
      // Start of user code for additional businessfilters for inStructuredNode
      // End of user code

      basePart.addFilterToActivity(
          new ViewerFilter() {

            /**
             * {@inheritDoc}
             *
             * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer,
             *     java.lang.Object, java.lang.Object)
             */
            public boolean select(Viewer viewer, Object parentElement, Object element) {
              return (element instanceof String && element.equals(""))
                  || (element instanceof Activity); // $NON-NLS-1$
            }
          });
      // Start of user code for additional businessfilters for activity
      // End of user code

      basePart.addFilterToOutgoing(
          new ViewerFilter() {

            /**
             * {@inheritDoc}
             *
             * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer,
             *     java.lang.Object, java.lang.Object)
             */
            public boolean select(Viewer viewer, Object parentElement, Object element) {
              if (element instanceof EObject)
                return (!basePart.isContainedInOutgoingTable((EObject) element));
              return element instanceof Resource;
            }
          });
      basePart.addFilterToOutgoing(new EObjectFilter(UMLPackage.eINSTANCE.getActivityEdge()));
      // Start of user code for additional businessfilters for outgoing
      // End of user code

      basePart.addFilterToIncoming(
          new ViewerFilter() {

            /**
             * {@inheritDoc}
             *
             * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer,
             *     java.lang.Object, java.lang.Object)
             */
            public boolean select(Viewer viewer, Object parentElement, Object element) {
              if (element instanceof EObject)
                return (!basePart.isContainedInIncomingTable((EObject) element));
              return element instanceof Resource;
            }
          });
      basePart.addFilterToIncoming(new EObjectFilter(UMLPackage.eINSTANCE.getActivityEdge()));
      // Start of user code for additional businessfilters for incoming
      // End of user code

      basePart.addFilterToInPartition(
          new ViewerFilter() {

            /**
             * {@inheritDoc}
             *
             * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer,
             *     java.lang.Object, java.lang.Object)
             */
            public boolean select(Viewer viewer, Object parentElement, Object element) {
              if (element instanceof EObject)
                return (!basePart.isContainedInInPartitionTable((EObject) element));
              return element instanceof Resource;
            }
          });
      basePart.addFilterToInPartition(
          new EObjectFilter(UMLPackage.eINSTANCE.getActivityPartition()));
      // Start of user code for additional businessfilters for inPartition
      // End of user code

      basePart.addFilterToInInterruptibleRegion(
          new ViewerFilter() {

            /**
             * {@inheritDoc}
             *
             * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer,
             *     java.lang.Object, java.lang.Object)
             */
            public boolean select(Viewer viewer, Object parentElement, Object element) {
              if (element instanceof EObject)
                return (!basePart.isContainedInInInterruptibleRegionTable((EObject) element));
              return element instanceof Resource;
            }
          });
      basePart.addFilterToInInterruptibleRegion(
          new EObjectFilter(UMLPackage.eINSTANCE.getInterruptibleActivityRegion()));
      // Start of user code for additional businessfilters for inInterruptibleRegion
      // End of user code

      basePart.addFilterToRedefinedNode(
          new ViewerFilter() {

            /**
             * {@inheritDoc}
             *
             * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer,
             *     java.lang.Object, java.lang.Object)
             */
            public boolean select(Viewer viewer, Object parentElement, Object element) {
              if (element instanceof EObject)
                return (!basePart.isContainedInRedefinedNodeTable((EObject) element));
              return element instanceof Resource;
            }
          });
      basePart.addFilterToRedefinedNode(new EObjectFilter(UMLPackage.eINSTANCE.getActivityNode()));
      // Start of user code for additional businessfilters for redefinedNode
      // End of user code

      basePart.addFilterToType(
          new ViewerFilter() {

            /**
             * {@inheritDoc}
             *
             * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer,
             *     java.lang.Object, java.lang.Object)
             */
            public boolean select(Viewer viewer, Object parentElement, Object element) {
              return (element instanceof String && element.equals(""))
                  || (element instanceof Type); // $NON-NLS-1$
            }
          });
      // Start of user code for additional businessfilters for type
      // End of user code

      basePart.addFilterToInState(
          new ViewerFilter() {

            /**
             * {@inheritDoc}
             *
             * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer,
             *     java.lang.Object, java.lang.Object)
             */
            public boolean select(Viewer viewer, Object parentElement, Object element) {
              if (element instanceof EObject)
                return (!basePart.isContainedInInStateTable((EObject) element));
              return element instanceof Resource;
            }
          });
      basePart.addFilterToInState(new EObjectFilter(UMLPackage.eINSTANCE.getState()));
      // Start of user code for additional businessfilters for inState
      // End of user code

      basePart.addFilterToSelection(
          new ViewerFilter() {

            /**
             * {@inheritDoc}
             *
             * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer,
             *     java.lang.Object, java.lang.Object)
             */
            public boolean select(Viewer viewer, Object parentElement, Object element) {
              return (element instanceof String && element.equals(""))
                  || (element instanceof Behavior); // $NON-NLS-1$
            }
          });
      // Start of user code for additional businessfilters for selection
      // End of user code

      // init values for referenced views

      // init filters for referenced views

    }
    setInitializing(false);
  }