class PopUpCoachMarkPresenter {

    protected void showCoachMark(@DialogDismissButtonPosition int dismissButtonPosition,
                               @PopUpPosition int popUpPosition) {

        switch (popUpPosition) {
            case PopUpPosition.LEFT:
                mPresentation.setPopUpViewPositionWithRespectToImage(
                        CoachMarkAlignPosition.ALIGN_RIGHT);
                break;
            case PopUpPosition.TOP:
                mPresentation.setPopUpViewPositionWithRespectToImage(
                        CoachMarkAlignPosition.ALIGN_BOTTOM);
                break;
            case PopUpPosition.RIGHT:
                mPresentation.setPopUpViewPositionWithRespectToImage(
                        CoachMarkAlignPosition.ALIGN_LEFT);
                break;
            case PopUpPosition.BOTTOM:
                mPresentation.setPopUpViewPositionWithRespectToImage(
                        CoachMarkAlignPosition.ALIGN_TOP);
                break;
            case PopUpPosition.NONE:
                Log.wtf(TAG, "This should not have happened here. No position found case already handled");
                break;
        }

        if(popUpPosition == PopUpPosition.NONE){
            return;
        }

        switch (dismissButtonPosition) {
            case DialogDismissButtonPosition.LEFT:
                mPresentation.setDismissButtonPositionLeft();
                break;
            case DialogDismissButtonPosition.RIGHT:
                mPresentation.setDismissButtonPositionRight();
                break;
        }
    }

    public  PopUpCoachMarkPresenter(final IStringResourceProvider stringResourceProvider,
                                   final IDimensionResourceProvider dimensionResourceProvider,
                                   final ITypeFaceProvider typeFaceProvider,
                                   final IScreenInfoProvider screenInfoProvider);

}