class ArchetypeItemPresenter extends ListItemPresenter<ArchetypeItem, AbstractArchetypeTablePresenter, ArchetypeItemPresenter.View> implements HasBusyIndicator {

    @Override
    public ArchetypeItemPresenter setup(final ArchetypeItem archetypeItem,
                                        final AbstractArchetypeTablePresenter parentPresenter) {
        final Archetype archetype = archetypeItem.getArchetype();

        this.archetypeItem = archetypeItem;
        this.parentPresenter = parentPresenter;

        view.init(this);

        view.setIncluded(archetypeItem.isSelected());
        view.setGroupId(archetype.getGav().getGroupId());
        view.setArtifactId(archetype.getGav().getArtifactId());
        view.setVersion(archetype.getGav().getVersion());
        view.setCreatedDate(DATE_FORMAT.format(archetype.getCreatedDate()));

        view.showInclude(parentPresenter.isShowIncludeColumn());
        view.showStatus(parentPresenter.isShowStatusColumn());
        view.showDeleteAction(parentPresenter.isShowDeleteAction());
        view.showValidateAction(parentPresenter.isShowValidateAction());
        view.showDefaultBadge(archetypeItem.isDefaultValue());

        view.enableIncludeCheckbox(isValid());
        view.enableSetDefault(isValid());

        if (parentPresenter.isShowDeleteAction()) {
            view.setDeleteCommand(createDeleteCommand(archetypeItem));
        }

        if (archetypeItem.isDefaultValue()) {
            view.setDefaultBadgeTooltip(ts.getTranslation(ArchetypeManagementConstants.ArchetypeManagement_DefaultMessage));
        }

        resolveStatus(archetype);

        return this;
    }

    @Inject public  ArchetypeItemPresenter(final View view,
                                  final TranslationService ts,
                                  final Caller<ArchetypeService> archetypeService,
                                  final BusyIndicatorView busyIndicatorView);

}