class RelationshipEditionDialog implements PropertyEditionPopup {

    @Override
    @SuppressWarnings("unchecked")
    public void show() {
        DataModelerPropertyEditorFieldInfo fieldInfo = (DataModelerPropertyEditorFieldInfo) property;

        RelationType relationTypeValue = (RelationType) fieldInfo.getCurrentValue(RELATION_TYPE);
        if (relationTypeValue != null) {
            view.setRelationType(relationTypeValue.name());
        } else {
            view.setRelationType(UIUtil.NOT_SELECTED);
        }

        enableRelationDependentFields(relationTypeValue);

        cascadeAllWasClicked = false;
        setCascadeTypes((List<CascadeType>) fieldInfo.getCurrentValue(CASCADE));
        enableCascadeTypes(true, true);

        FetchMode fetchModeValue = (FetchMode) fieldInfo.getCurrentValue(FETCH);

        if (fetchModeValue != null) {
            view.setFetchMode(fetchModeValue.name());
        } else {
            view.setFetchMode(UIUtil.NOT_SELECTED);
        }

        Boolean optionalValue = (Boolean) fieldInfo.getCurrentValue(OPTIONAL);
        if (optionalValue != null) {
            view.setOptional(optionalValue);
        }

        String mappedBy = (String) fieldInfo.getCurrentValue(MAPPED_BY);
        view.setMappedBy(mappedBy);

        Boolean orphanRemovalValue = (Boolean) fieldInfo.getCurrentValue(ORPHAN_REMOVAL);
        if (orphanRemovalValue != null) {
            view.setOrphanRemoval(orphanRemovalValue);
        }

        view.setEnabled(!fieldInfo.isDisabled());
        view.show();
    }

    @Inject public  RelationshipEditionDialog(View view);

}