class MainDataObjectFieldEditor extends FieldEditor implements MainDataObjectFieldEditorView.Presenter {

    @Override
    protected void loadDataObjectField(DataObject dataObject,
                                       ObjectProperty objectField) {
        clear();
        setReadonly(true);
        if (dataObject != null && objectField != null) {
            this.dataObject = dataObject;
            this.objectField = objectField;
            initTypeList();

            view.setName(getObjectField().getName());

            Annotation annotation = objectField.getAnnotation(MainDomainAnnotations.LABEL_ANNOTATION);
            if (annotation != null) {
                view.setLabel(AnnotationValueHandler.getStringValue(annotation,
                                                                    MainDomainAnnotations.VALUE_PARAM));
            }

            annotation = objectField.getAnnotation(MainDomainAnnotations.DESCRIPTION_ANNOTATION);
            if (annotation != null) {
                view.setDescription(AnnotationValueHandler.getStringValue(annotation,
                                                                          MainDomainAnnotations.VALUE_PARAM));
            }

            setReadonly(getContext() == null || getContext().isReadonly());
        } else {
            initTypeList();
        }
    }

    @Inject public  MainDataObjectFieldEditor(MainDataObjectFieldEditorView view,
                                     DomainHandlerRegistry handlerRegistry,
                                     Event<DataModelerEvent> dataModelerEvent,
                                     DataModelCommandBuilder commandBuilder,
                                     ValidatorService validatorService,
                                     Caller<DataModelerService> modelerService,
                                     ShowAssetUsagesDisplayer showAssetUsagesDisplayer);

}