com.esofthead.mycollab.mobile.module.project.view.task.TaskGroupReadViewImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.esofthead.mycollab.mobile.module.project.view.task.TaskGroupReadViewImpl.java

Source

/**
 * This file is part of mycollab-mobile.
 *
 * mycollab-mobile is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * mycollab-mobile is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with mycollab-mobile.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.esofthead.mycollab.mobile.module.project.view.task;

import com.esofthead.mycollab.common.CommentType;
import com.esofthead.mycollab.eventmanager.EventBusFactory;
import com.esofthead.mycollab.mobile.module.project.CurrentProjectVariables;
import com.esofthead.mycollab.mobile.module.project.ui.ProjectCommentListDisplay;
import com.esofthead.mycollab.mobile.module.project.ui.ProjectPreviewFormControlsGenerator;
import com.esofthead.mycollab.mobile.shell.events.ShellEvent;
import com.esofthead.mycollab.mobile.ui.AbstractBeanFieldGroupViewFieldFactory;
import com.esofthead.mycollab.mobile.ui.AbstractPreviewItemComp;
import com.esofthead.mycollab.mobile.ui.AdvancedPreviewBeanForm;
import com.esofthead.mycollab.mobile.ui.DefaultFormViewFieldFactory.FormViewField;
import com.esofthead.mycollab.mobile.ui.IconConstants;
import com.esofthead.mycollab.module.project.ProjectRolePermissionCollections;
import com.esofthead.mycollab.module.project.domain.SimpleTaskList;
import com.esofthead.mycollab.module.project.i18n.ProjectCommonI18nEnum;
import com.esofthead.mycollab.schedule.email.project.ProjectTaskGroupRelayEmailNotificationAction;
import com.esofthead.mycollab.vaadin.AppContext;
import com.esofthead.mycollab.vaadin.events.HasPreviewFormHandlers;
import com.esofthead.mycollab.vaadin.mvp.ViewComponent;
import com.esofthead.mycollab.vaadin.ui.GenericBeanForm;
import com.esofthead.mycollab.vaadin.ui.IFormLayoutFactory;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.ComponentContainer;
import com.vaadin.ui.Field;
import com.vaadin.ui.HorizontalLayout;

/**
 * @author MyCollab Ltd.
 *
 * @since 4.5.0
 */

@ViewComponent
public class TaskGroupReadViewImpl extends AbstractPreviewItemComp<SimpleTaskList> implements TaskGroupReadView {

    private static final long serialVersionUID = 8303226753169728418L;

    private ProjectCommentListDisplay associateComments;
    private Button relatedComments;

    @Override
    protected void afterPreviewItem() {
        associateComments.loadComments("" + beanItem.getId());
    }

    @Override
    protected String initFormTitle() {
        return this.beanItem.getName();
    }

    @Override
    protected AdvancedPreviewBeanForm<SimpleTaskList> initPreviewForm() {
        return new AdvancedPreviewBeanForm<SimpleTaskList>();
    }

    @Override
    protected void initRelatedComponents() {
        associateComments = new ProjectCommentListDisplay(CommentType.PRJ_TASK_LIST,
                CurrentProjectVariables.getProjectId(), true, true,
                ProjectTaskGroupRelayEmailNotificationAction.class);
        if (associateComments.getNumComments() > 0) {
            relatedComments.setCaption(
                    "<span aria-hidden=\"true\" data-icon=\"" + IconConstants.PROJECT_MESSAGE + "\" data-count=\""
                            + associateComments.getNumComments() + "\"></span><div class=\"screen-reader-text\">"
                            + AppContext.getMessage(ProjectCommonI18nEnum.TAB_COMMENT) + "</div>");
        } else {
            relatedComments.setCaption("<span aria-hidden=\"true\" data-icon=\"" + IconConstants.PROJECT_MESSAGE
                    + "\"></span><div class=\"screen-reader-text\">"
                    + AppContext.getMessage(ProjectCommonI18nEnum.TAB_COMMENT) + "</div>");
        }
    }

    @Override
    protected IFormLayoutFactory initFormLayoutFactory() {
        return new TaskGroupFormLayoutFactory();
    }

    @Override
    protected AbstractBeanFieldGroupViewFieldFactory<SimpleTaskList> initBeanFormFieldFactory() {
        return new TaskGroupBeanFieldGroupFactory(this.previewForm);
    }

    @Override
    protected ComponentContainer createButtonControls() {
        return new ProjectPreviewFormControlsGenerator<SimpleTaskList>(this.previewForm)
                .createButtonControls(ProjectRolePermissionCollections.TASKS);
    }

    @Override
    protected ComponentContainer createBottomPanel() {
        HorizontalLayout toolbarLayout = new HorizontalLayout();
        toolbarLayout.setDefaultComponentAlignment(Alignment.MIDDLE_LEFT);
        toolbarLayout.setSpacing(true);

        relatedComments = new Button();
        relatedComments.setCaption("<span aria-hidden=\"true\" data-icon=\"" + IconConstants.PROJECT_MESSAGE
                + "\"></span><div class=\"screen-reader-text\">"
                + AppContext.getMessage(ProjectCommonI18nEnum.TAB_COMMENT) + "</div>");
        relatedComments.setHtmlContentAllowed(true);
        relatedComments.addClickListener(new Button.ClickListener() {

            private static final long serialVersionUID = 2276465280812964681L;

            @Override
            public void buttonClick(ClickEvent arg0) {
                EventBusFactory.getInstance().post(new ShellEvent.PushView(this, associateComments));
            }
        });
        toolbarLayout.addComponent(relatedComments);

        return toolbarLayout;
    }

    private class TaskGroupBeanFieldGroupFactory extends AbstractBeanFieldGroupViewFieldFactory<SimpleTaskList> {

        private static final long serialVersionUID = 4554258685587024348L;

        public TaskGroupBeanFieldGroupFactory(GenericBeanForm<SimpleTaskList> form) {
            super(form);
        }

        @Override
        protected Field<?> onCreateField(Object propertyId) {
            if (propertyId.equals("milestoneid")) {
                return new FormViewField(beanItem.getMilestoneName());
            } else if (propertyId.equals("owner")) {
                return new FormViewField(beanItem.getOwnerFullName());
            } else if (propertyId.equals("percentageComplete")) {
                final FormViewField progressField = new FormViewField(
                        ((int) (beanItem.getPercentageComplete() * 100)) / 100 + "%");
                return progressField;
            } else if (propertyId.equals("description")) {
                return new FormViewField(beanItem.getDescription(), ContentMode.HTML);
            } else if (propertyId.equals("numOpenTasks")) {
                final FormViewField fieldContainer = new FormViewField(
                        "(" + beanItem.getNumOpenTasks() + "/" + beanItem.getNumAllTasks() + ")");
                return fieldContainer;
            }

            return null;
        }

    }

    @Override
    public HasPreviewFormHandlers<SimpleTaskList> getPreviewFormHandlers() {
        return this.previewForm;
    }

}