org.ednovo.gooru.client.mvp.gshelf.righttabs.MyCollectionsRightClusterPresenter.java Source code

Java tutorial

Introduction

Here is the source code for org.ednovo.gooru.client.mvp.gshelf.righttabs.MyCollectionsRightClusterPresenter.java

Source

/*******************************************************************************
 * Copyright 2013 Ednovo d/b/a Gooru. All rights reserved.
 *
 *  http://www.goorulearning.org/
 *
 *  Permission is hereby granted, free of charge, to any person obtaining
 *  a copy of this software and associated documentation files (the
 *  "Software"), to deal in the Software without restriction, including
 *  without limitation the rights to use, copy, modify, merge, publish,
 *  distribute, sublicense, and/or sell copies of the Software, and to
 *  permit persons to whom the Software is furnished to do so, subject to
 *  the following conditions:
 *
 *  The above copyright notice and this permission notice shall be
 *  included in all copies or substantial portions of the Software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 *  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 *  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 *  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 ******************************************************************************/
package org.ednovo.gooru.client.mvp.gshelf.righttabs;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.ednovo.gooru.application.client.gin.AppClientFactory;
import org.ednovo.gooru.application.shared.model.content.ClasspageDo;
import org.ednovo.gooru.application.shared.model.folder.FolderDo;
import org.ednovo.gooru.client.SimpleAsyncCallback;
import org.ednovo.gooru.client.mvp.gsearch.addResourcePopup.SearchAddResourceToCollectionPresenter;
import org.ednovo.gooru.client.mvp.gshelf.ShelfMainPresenter;
import org.ednovo.gooru.client.mvp.gshelf.collectioncontent.CollectionContentPresenter;
import org.ednovo.gooru.client.mvp.gshelf.collectiondetails.CollectionInfoPresenter;
import org.ednovo.gooru.client.mvp.gshelf.collectiondetails.CollectionShareTabPresenter;
import org.ednovo.gooru.client.mvp.gshelf.collectiondetails.ExternalAssessmentInfoPresenter;
import org.ednovo.gooru.client.mvp.gshelf.coursedetails.CourseInfoPresenter;
import org.ednovo.gooru.client.mvp.gshelf.coursedetails.CourseSharePresenter;
import org.ednovo.gooru.client.mvp.gshelf.lessondetails.LessonInfoPresenter;
import org.ednovo.gooru.client.mvp.gshelf.unitdetails.UnitInfoPresenter;
import org.ednovo.gooru.client.mvp.gshelf.util.AssessmentPopupWidget;
import org.ednovo.gooru.shared.util.StringUtil;

import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.PresenterWidget;

public class MyCollectionsRightClusterPresenter extends PresenterWidget<IsMyCollectionsRightClusterView>
        implements MyCollectionsRightClusterUiHandlers {

    public static final Object INNER_SLOT = new Object();

    CourseInfoPresenter courseInfoPresenter;

    LessonInfoPresenter lessonInfoPresenter;

    CollectionInfoPresenter collectionInfoPresenter;

    CourseSharePresenter courseSharePresenter;

    UnitInfoPresenter unitInfoPresenter;

    AssessmentPopupWidget assessmentPopup;

    ShelfMainPresenter shelfMainPresenter;

    ExternalAssessmentInfoPresenter externalAssessmentInfoPresenter;

    private HashMap<String, String> selectedWidgetsTitleType;

    CollectionContentPresenter collectionContentPresenter;

    CollectionShareTabPresenter collectionShareTabPresenter = null;

    SearchAddResourceToCollectionPresenter searchAddResourceToCollectionPresenter = null;

    List<FolderDo> folderListDoChild;

    final String COLLECTION = "collection";
    final String ASSESSMENT = "assessment";
    private static final String ASSESSMENT_URL = "assessment/url";

    private static final String O1_LEVEL = "o1";
    private static final String O2_LEVEL = "o2";
    private static final String O3_LEVEL = "o3";

    private static final String COURSE = "Course";
    private static final String UNIT = "Unit";
    private static final String LESSON = "Lesson";
    private static final String FOLDER = "Folder";
    private boolean isCopySelected = false;
    private boolean isMoveSelected = false;

    Map<Integer, Integer> firstSelectedData;

    /**
     * Constructor
     * @param eventBus
     * @param view
     */
    @Inject
    public MyCollectionsRightClusterPresenter(EventBus eventBus, IsMyCollectionsRightClusterView view,
            CollectionContentPresenter collectionContentPresenter, CourseInfoPresenter courseInfoPresenter,
            LessonInfoPresenter lessonInfoPresenter,
            ExternalAssessmentInfoPresenter externalAssessmentInfoPresenter, UnitInfoPresenter unitInfoPresenter,
            CollectionInfoPresenter collectionInfoPresenter,
            CollectionShareTabPresenter collectionShareTabPresenter,
            SearchAddResourceToCollectionPresenter searchAddResourceToCollectionPresenter,
            CourseSharePresenter courseSharePresenter) {
        super(eventBus, view);
        this.courseInfoPresenter = courseInfoPresenter;
        this.lessonInfoPresenter = lessonInfoPresenter;
        this.unitInfoPresenter = unitInfoPresenter;
        this.collectionInfoPresenter = collectionInfoPresenter;
        this.collectionContentPresenter = collectionContentPresenter;
        this.externalAssessmentInfoPresenter = externalAssessmentInfoPresenter;
        this.collectionShareTabPresenter = collectionShareTabPresenter;
        this.searchAddResourceToCollectionPresenter = searchAddResourceToCollectionPresenter;
        this.courseSharePresenter = courseSharePresenter;
        collectionShareTabPresenter.setMyCollectionRightClusterPresenter(this);
        collectionContentPresenter.setMyCollectionRightClusterPresenter(this);
        externalAssessmentInfoPresenter.setMyCollectionRightClusterPresenter(this);
        courseInfoPresenter.setMyCollectionRightClusterPresenter(this);
        collectionInfoPresenter.setMyCollectionRightClusterPresenter(this);
        unitInfoPresenter.setMyCollectionRightClusterPresenter(this);
        lessonInfoPresenter.setMyCollectionRightClusterPresenter(this);
        getView().setUiHandlers(this);
    }

    @Override
    public void setTabItems(int index, String type, FolderDo folderObj) {
        clearSlot(INNER_SLOT);
        if (folderObj == null) {
            selectedWidgetsTitleType = null;
        }
        String view = AppClientFactory.getPlaceManager().getRequestParameter("view", null);
        getView().setBreadCrumbSlot(folderObj, type, selectedWidgetsTitleType);
        getView().setDefaultActiveTab(index);
        getView().setCurrentTypeView(type);
        getView().enableAndHideTabs(!StringUtil.isEmpty(folderObj == null ? "" : folderObj.getGooruOid()));
        if (view != null && FOLDER.equalsIgnoreCase(view)) {
            getView().disableAndEnableBreadCums(false);
        } else {
            getView().disableAndEnableBreadCums(true);
        }
        if (index == 1 || ASSESSMENT_URL.equalsIgnoreCase(folderObj.getType())) {
            //For displaying template and data
            if (COURSE.equalsIgnoreCase(type)) {
                courseInfoPresenter.setData(folderObj);
                setInSlot(INNER_SLOT, courseInfoPresenter);
            } else if ("Unit".equalsIgnoreCase(type)) {
                unitInfoPresenter.setData(folderObj);
                setInSlot(INNER_SLOT, unitInfoPresenter);
            } else if ("Lesson".equalsIgnoreCase(type)) {
                lessonInfoPresenter.setLessonData(folderObj);
                setInSlot(INNER_SLOT, lessonInfoPresenter);
            } else if (ASSESSMENT.equalsIgnoreCase(type) || COLLECTION.equalsIgnoreCase(type)) {
                if (view != null && FOLDER.equalsIgnoreCase(view)) {
                    getView().disableAndEnableBreadCums(false);
                } else {
                    getView().disableAndEnableBreadCums(true);
                }
                collectionInfoPresenter.setCollectionType(type);
                collectionInfoPresenter.setData(folderObj, type);
                setInSlot(INNER_SLOT, collectionInfoPresenter);
            } else if (FOLDER.equalsIgnoreCase(type)) {
                //To disable bread cums
                getView().disableAndEnableBreadCums(false);
                getView().setFolderInfoWidget(folderObj, this);
            } else {
                if (view != null && FOLDER.equalsIgnoreCase(view)) {
                    getView().disableAndEnableBreadCums(false);
                } else {
                    getView().disableAndEnableBreadCums(true);
                }
                getView().enableAndHideTabs(false);
                getView().getPreviewLink().setVisible(true);
                externalAssessmentInfoPresenter.setData(folderObj);
                setInSlot(INNER_SLOT, externalAssessmentInfoPresenter);
            }
        } else if (index == 2) {
            if (view != null && FOLDER.equalsIgnoreCase(view)) {
                getView().disableAndEnableBreadCums(false);
            } else {
                getView().disableAndEnableBreadCums(true);
            }
            if (COLLECTION.equalsIgnoreCase(type) || ASSESSMENT.equalsIgnoreCase(type)
                    || COLLECTION.equalsIgnoreCase(folderObj.getType())
                    || ASSESSMENT.equalsIgnoreCase(folderObj.getType())) {
                collectionContentPresenter.getView().getResourceListPanel();
                collectionContentPresenter.setData(folderObj);
                setInSlot(INNER_SLOT, collectionContentPresenter);
            } else {
                shelfMainPresenter.getMyCollectionsListPresenter().getView().loadingImage();
                shelfMainPresenter.getMyCollectionsListPresenter().setData(type, getFolderListDoChild(), true, true,
                        folderObj);
                //shelfMainPresenter.getMyCollectionsListPresenter().setDataInContentSlot(type, folderObj.getGooruOid(),true,folderObj);
                setInSlot(INNER_SLOT, shelfMainPresenter.getMyCollectionsListPresenter());
            }
        } else if (index == 3) {
            if (COURSE.equalsIgnoreCase(folderObj.getType())) {
                courseSharePresenter.setData(folderObj);
                setInSlot(INNER_SLOT, courseSharePresenter);
            } else if (COLLECTION.equalsIgnoreCase(folderObj.getType())
                    || ASSESSMENT.equalsIgnoreCase(folderObj.getType())) {
                collectionShareTabPresenter.setData(folderObj);
                setInSlot(INNER_SLOT, collectionShareTabPresenter);
            }
            Window.scrollTo(0, 0);
        }
    }

    //This method is not using present
    @Override
    public void setDefaultActiveTab() {
        getView().resetHilightStyles();
        //getView().setDefaultActiveTab();
    }

    public void setUnitTemplate(String type, TreeItem currentShelfTreeWidget) {
        //shelfMainPresenter.getMyCollectionsListPresenter().setData(type, null, true, true, null);
        //setInSlot(INNER_SLOT, shelfMainPresenter.getMyCollectionsListPresenter());
        shelfMainPresenter.createNewUnitItem(type, currentShelfTreeWidget);
        folderListDoChild = null;
        getView().enableAndHideTabs(false);
    }

    /**
     * To set the shelfMainPresenter obj
     * @param shelfMainPresenter
     */
    public void setShelfMainPresenter(ShelfMainPresenter shelfMainPresenter) {
        this.shelfMainPresenter = shelfMainPresenter;
    }

    /**
     * To set the shelfMainPresenter obj
     * @param shelfMainPresenter
     */
    public ShelfMainPresenter getShelfMainPresenter() {
        return shelfMainPresenter;
    }

    public List<FolderDo> getFolderListDoChild() {
        return folderListDoChild;
    }

    public void setFolderListDoChild(List<FolderDo> folderListDoChild) {
        this.folderListDoChild = folderListDoChild;
    }

    public void updateBreadCrumbsTitle(FolderDo folderObj, String type) {
        getView().setBreadCrumbSlot(folderObj, type, null);
    }

    public void setMycontentBreadcrumbs(HashMap<String, String> selectedWidgetsTitleType) {
        this.selectedWidgetsTitleType = selectedWidgetsTitleType;
    }

    /**
     * To add new course/unit/lesson
     * @param type
     */
    public void addNewContent(String type) {
        if (type != null) {
            if (type.contains(COURSE)) {
                setTabItems(1, COURSE, null);
                setUnitTemplate(COURSE, null);
                //courseInfoPresenter.createAndSaveCourseDetails(courseInfoPresenter.getView().getCourseTitle(), false);
            } else if (type.contains(UNIT)) {
                setTabItems(1, UNIT, null);
                setUnitTemplate(UNIT, null);
                //courseInfoPresenter.createAndSaveCourseDetails(courseInfoPresenter.getView().getCourseTitle(), false);
            } else if (type.contains(LESSON)) {
                setTabItems(1, LESSON, null);
                setUnitTemplate(LESSON, null);
            } else if (type.toLowerCase().contains(FOLDER.toLowerCase())) {
                setTabItems(1, FOLDER, null);
                setUnitTemplate(FOLDER, null);
            } else if (type.toLowerCase().contains(COLLECTION.toLowerCase())) {
                setTabItems(1, COLLECTION, null);
                setUnitTemplate(COLLECTION, null);
            } else if (type.toLowerCase().contains(ASSESSMENT.toLowerCase())) {
                Window.enableScrolling(false);
                assessmentPopup = new AssessmentPopupWidget() {
                    @Override
                    public void clickOnNoramlAssessmentClick() {
                        Window.enableScrolling(true);
                        setTabItems(1, ASSESSMENT, null);
                        setUnitTemplate(ASSESSMENT, null);
                        assessmentPopup.hide();
                    }

                    @Override
                    public void clickOnExternalAssessmentClick() {
                        assessmentPopup.hide();
                        Window.enableScrolling(true);
                        //This will display the external assessment info
                        setTabItems(1, ASSESSMENT_URL, null);
                        setUnitTemplate(ASSESSMENT_URL, null);
                    }
                };
                assessmentPopup.setGlassEnabled(true);
                assessmentPopup.show();
                assessmentPopup.center();
            }
        }
    }

    /**
     * calls API to delete cousrse.
     */
    @Override
    public void deleteCourseContent(final String o1CourseId) {
        AppClientFactory.getInjector().getfolderService().deleteCourse(o1CourseId,
                new SimpleAsyncCallback<Integer>() {
                    @Override
                    public void onSuccess(Integer result) {
                        if (result == 200) {
                            getView().onDeleteCourseSuccess(o1CourseId);
                        }
                    }
                });
    }

    /**
     * Sets the right side view on delete of course.
     */
    @Override
    public void setRightClusterContent(String o1CourseId, String currentTypeView) {
        if (shelfMainPresenter != null) {
            shelfMainPresenter.setUserAllCourses(o1CourseId, currentTypeView);
        }
    }

    @Override
    public void getUserShelfData(String collectionId, String valuetype) {
        searchAddResourceToCollectionPresenter.getUserShelfCollectionsData(collectionId, valuetype, "");
        showAppPopup();
    }

    /**
     * calls API to delete Unit.
     */
    @Override
    public void deleteUnitContent(final String o1CourseId, final String o2UnitId) {
        AppClientFactory.getInjector().getfolderService().deleteUnit(o1CourseId, o2UnitId,
                new SimpleAsyncCallback<Integer>() {

                    @Override
                    public void onSuccess(Integer result) {
                        if (result == 200) {
                            getView().onDeleteUnitSuccess(o1CourseId, o2UnitId);
                        }
                    }
                });
    }

    /**
     * calls API to delete Lesson.
     */
    @Override
    public void deleteLessonContent(final String o1CourseId, final String o2UnitId, final String o3LessonId) {
        AppClientFactory.getInjector().getfolderService().deleteLesson(o1CourseId, o2UnitId, o3LessonId,
                new SimpleAsyncCallback<Integer>() {

                    @Override
                    public void onSuccess(Integer result) {
                        if (result == 200) {
                            getView().onDeleteLessonSuccess(o1CourseId, o2UnitId, o3LessonId);
                        }
                    }

                });
    }

    /**
     * calls API to delete Collection/Assessment.
     */
    @Override
    public void deleteCollectionContent(final String o1CourseId, final String o2UnitId, final String o3LessonId,
            final String assessmentCollectionId) {
        AppClientFactory.getInjector().getfolderService().deleteCollectionAssessment(o1CourseId, o2UnitId,
                o3LessonId, assessmentCollectionId, new SimpleAsyncCallback<Integer>() {
                    @Override
                    public void onSuccess(Integer result) {
                        if (result == 200) {
                            getView().onDeleteCollectionAssessmentSuccess(o1CourseId, o2UnitId, o3LessonId,
                                    assessmentCollectionId);
                        }
                    }
                });
    }

    /**
     * calls API to delete Collection/Assessment at Mycollections level(old view).
     */

    @Override
    public void deleteMyCollectionContent(final String id, final String type) {

        AppClientFactory.getInjector().getfolderService().deleteCollectionsFolder(id,
                new SimpleAsyncCallback<Void>() {

                    @Override
                    public void onSuccess(Void result) {
                        if (COURSE.equalsIgnoreCase(type)) {
                            getView().onDeleteCourseSuccess(id);
                        } else if (UNIT.equalsIgnoreCase(type)) {
                            getView().onDeleteUnitSuccess("", id);
                        } else {
                            getView().onDeleteLessonSuccess("", "", id);
                        }
                    }
                });

        /*if("folderCollection".equals(type)){
           AppClientFactory.getInjector().getfolderService().deleteCollectionsFolder(id, new SimpleAsyncCallback<Void>() {
            
        @Override
        public void onSuccess(Void result) {
           getView().onDeleteCollectionAssessmentSuccess("","","",id);
        }
           });
        }else{
               
        }*/
    }

    @Override
    public void deleteMyCollectionColl(final String id) {
        AppClientFactory.getInjector().getResourceService().deleteCollection(id, new SimpleAsyncCallback<Void>() {

            @Override
            public void onSuccess(Void result) {
                getView().onDeleteCollectionAssessmentSuccess("", "", "", id);
            }
        });
    }

    /**
     * Sets the right side view on delete of Unit.
     */
    @Override
    public void setUnitsListOnRightCluster(String o1CourseId, String o2DeletedUnitId, String currentTypeView) {
        shelfMainPresenter.setUserAllUnits(o1CourseId, o2DeletedUnitId, currentTypeView);
    }

    /**
     * Sets the right side view on delete of Lesson.
     */
    @Override
    public void setLessonsListOnRightCluster(String o1CourseId, String o2UnitId, String o3LessDeletedonId,
            String currentTypeView) {
        shelfMainPresenter.setUserAllLessons(o1CourseId, o2UnitId, o3LessDeletedonId, currentTypeView);
    }

    /**
     * Sets the right side view on delete of Collection/Assesssment.
     */
    @Override
    public void setCollectionsListOnRightCluster(String o1CourseId, String o2UnitId, String o3LessonId,
            String deletedAssessmentCollectionId, String currentTypeView) {
        shelfMainPresenter.setUserAllCollAssessment(o1CourseId, o2UnitId, o3LessonId, deletedAssessmentCollectionId,
                currentTypeView);
    }

    /**
     * Calls API to check weather Course is assigned to class or not.
     */
    @Override
    public void isAssignedToClassPage(String type, final String o1CourseId, final String o2UnitId,
            final String o3LessonId, final String collAssessmentId) {

        AppClientFactory.getInjector().getClasspageService().getClassesAssociatedWithCourse(o1CourseId,
                new SimpleAsyncCallback<ArrayList<ClasspageDo>>() {

                    @Override
                    public void onSuccess(ArrayList<ClasspageDo> result) {
                        getView().invokeContentDeletePopup(o1CourseId, o2UnitId, o3LessonId, collAssessmentId,
                                result);
                    }
                });
    }

    @Override
    public boolean checkCopyOrMoveStatus(boolean copySelected, boolean moveSelected) {
        // TODO Auto-generated method stub
        this.isCopySelected = copySelected;
        this.isMoveSelected = moveSelected;
        searchAddResourceToCollectionPresenter.selectedCopyOrMoveStatus(isCopySelected, isMoveSelected);
        return false;
    }

    @Override
    public void EnableMyCollectionsTreeData(String collectionId, String collectionTitle) {
        searchAddResourceToCollectionPresenter.getLoadingImage();
        searchAddResourceToCollectionPresenter.getUserShelfCollectionsData(collectionId, "coursebuilder",
                collectionTitle);
        searchAddResourceToCollectionPresenter.setCollectionTitle(collectionTitle);
        searchAddResourceToCollectionPresenter.DisableMyCollectionsPanelData(false);
        shelfMainPresenter.SetDefaultTypeAndVersion();
        showAppPopup();
    }

    @Override
    public void DisableMyCollectionsTreeData(String collectionId, String collectionTitle) {
        searchAddResourceToCollectionPresenter.getLoadingImage();
        searchAddResourceToCollectionPresenter.getUserShelfCollectionsData(collectionId, "coursebuilder",
                collectionTitle);
        searchAddResourceToCollectionPresenter.setCollectionTitle(collectionTitle);
        searchAddResourceToCollectionPresenter.DisableMyCollectionsPanelData(true);
        shelfMainPresenter.SetDefaultTypeAndVersion();
        showAppPopup();
    }

    public void showAppPopup() {
        searchAddResourceToCollectionPresenter.getView().getAppPopUp().show();
        searchAddResourceToCollectionPresenter.getView().getAppPopUp().center();
        searchAddResourceToCollectionPresenter.getView().getAppPopUp().setGlassEnabled(true);
        searchAddResourceToCollectionPresenter.getView().getAppPopUp().setGlassStyleName("setGlassPanelZIndex");
    }

    public Map<Integer, Integer> getFirstSelectedData() {
        return firstSelectedData;
    }

    @Override
    public void setFirstSelectedData(Map<Integer, Integer> firstSelectedData) {
        this.firstSelectedData = firstSelectedData;
    }

    @Override
    public void enableAddButton() {
        searchAddResourceToCollectionPresenter.enableAddButton();
    }

    public void disableCollabaratorOptions(boolean isHide) {
        getView().disableCollabaratorOptions(isHide);
        getView().setIsCollaboratorValue(isHide);
    }

    /**
     * This handles the display of respective view title and respective type icon.
     */
    @Override
    public void setViewTitleWthicon(String title, String type) {
        shelfMainPresenter.setTileIcon(title, type);
    }

    public TreeItem getCurrentTreeItem() {
        return shelfMainPresenter.getEditingWidget();
    }

}