com.appspot.socialinquirer.client.view.ActivityViewImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.appspot.socialinquirer.client.view.ActivityViewImpl.java

Source

/*
 * Copyright 2012 Nabeel Mukhtar 
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 *  http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and
 * limitations under the License. 
 * 
 */
package com.appspot.socialinquirer.client.view;

import java.util.ArrayList;

import com.appspot.socialinquirer.client.HistoryToken;
import com.appspot.socialinquirer.client.KeyProvider;
import com.appspot.socialinquirer.client.constant.EverScribeConstants;
import com.appspot.socialinquirer.client.util.UiUtils;
import com.appspot.socialinquirer.shared.dto.Message;
import com.appspot.socialinquirer.shared.dto.NamedBean;
import com.appspot.socialinquirer.shared.dto.Page;
import com.appspot.socialinquirer.shared.dto.Poll;
import com.appspot.socialinquirer.shared.dto.Quiz;
import com.appspot.socialinquirer.shared.dto.Task;
import com.google.gwt.cell.client.CheckboxCell;
import com.google.gwt.cell.client.ClickableTextCell;
import com.google.gwt.cell.client.SafeHtmlCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.uibinder.client.UiTemplate;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.SimplePager;
import com.google.gwt.user.cellview.client.SimplePager.TextLocation;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.DefaultSelectionEventManager;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.SelectionModel;
import com.google.gwt.view.client.SingleSelectionModel;

/**
 * The Class ActivityViewImpl.
 */
public class ActivityViewImpl extends Composite implements ActivityView {

    /** The ui binder. */
    private static ActivityViewUiBinder uiBinder = GWT.create(ActivityViewUiBinder.class);

    /** The presenter. */
    private Presenter presenter;

    /** The name. */
    private String name;

    /** The constants. */
    private EverScribeConstants constants;

    /** The activities table. */
    @UiField(provided = true)
    CellTable<NamedBean> activitiesTable;

    /** The activities paginator. */
    @UiField(provided = true)
    SimplePager activitiesPaginator;

    /** The data provider. */
    private ListDataProvider<NamedBean> dataProvider;

    /**
     * The Interface ActivityViewUiBinder.
     */
    @UiTemplate("ActivityView.ui.xml")
    interface ActivityViewUiBinder extends UiBinder<Widget, ActivityViewImpl> {
    }

    /**
     * Instantiates a new activity view impl.
     *
     * @param constants the constants
     * @param master the master
     */
    public ActivityViewImpl(final EverScribeConstants constants, final boolean master) {
        this.constants = constants;
        activitiesTable = new CellTable<NamedBean>();
        SimplePager.Resources linkedHubPagerResources = GWT.create(SimplePager.Resources.class);
        activitiesPaginator = new SimplePager(TextLocation.CENTER, linkedHubPagerResources, false, 0, true);
        activitiesPaginator.setDisplay(activitiesTable);
        activitiesPaginator.setPageSize(5);
        activitiesTable.setPageSize(5);

        final SelectionModel<NamedBean> activitiesSelectionModel = new SingleSelectionModel<NamedBean>(
                new KeyProvider<NamedBean>());
        activitiesTable.setSelectionModel(activitiesSelectionModel,
                DefaultSelectionEventManager.<NamedBean>createCheckboxManager());
        initTableColumns(activitiesTable, activitiesSelectionModel);

        initWidget(uiBinder.createAndBindUi(ActivityViewImpl.this));
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.appspot.linkedhub.client.view.ProjectView#setName(java.lang.String)
     */
    @Override
    public void setName(String name) {
        this.name = name;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.appspot.linkedhub.client.view.ProjectView#setPresenter(com.appspot.linkedhub.client.view.ProjectView.Presenter)
     */
    @Override
    public void setPresenter(Presenter listener) {
        this.presenter = listener;
    }

    /**
     * On add clicked.
     *
     * @param e the e
     */
    @UiHandler("addButton")
    void onAddClicked(ClickEvent e) {
        if (name.equals(HistoryToken.Activity_Polls.token())) {
            presenter.onAddPollClicked();
        } else if (name.equals(HistoryToken.Activity_Quizzes.token())) {
            presenter.onAddQuizzClicked();
        } else if (name.equals(HistoryToken.Activity_Tasks.token())) {
            presenter.onAddTaskClicked();
        }
    }

    /**
     * On view clicked.
     *
     * @param e the e
     */
    @UiHandler("viewButton")
    void onViewClicked(ClickEvent e) {
        if (name.equals(HistoryToken.Activity_Polls.token())) {
            presenter.onViewPollClicked((Poll) getSelectedObject());
        } else if (name.equals(HistoryToken.Activity_Quizzes.token())) {
            presenter.onViewQuizzClicked((Quiz) getSelectedObject());
        } else if (name.equals(HistoryToken.Activity_Tasks.token())) {
            presenter.onViewTaskClicked((Task) getSelectedObject());
        } else if (name.equals(HistoryToken.Activity_Messages.token())
                || name.equals(HistoryToken.Activity_Endorsements.token())) {
            presenter.onViewMessageClicked((Message) getSelectedObject());
        }
    }

    /**
     * On remove clicked.
     *
     * @param e the e
     */
    void onRemoveClicked(ClickEvent e) {
        if (name.equals(HistoryToken.Activity_Tasks.token())) {
            presenter.onRemoveTaskClicked((Task) getSelectedObject());
        } else {
            UiUtils.showErrorDialog(constants, "You cannot remove this object.");
        }
    }

    /* (non-Javadoc)
     * @see com.appspot.socialinquirer.client.view.ActivityView#setTasks(java.util.ArrayList)
     */
    @Override
    public void setTasks(ArrayList<Task> tasks) {
        ArrayList<NamedBean> activities = new ArrayList<NamedBean>();
        for (Task task : tasks) {
            activities.add(task);
        }
        dataProvider = new ListDataProvider<NamedBean>(activities);
        dataProvider.addDataDisplay(activitiesTable);
    }

    /* (non-Javadoc)
     * @see com.appspot.socialinquirer.client.view.ActivityView#setPolls(java.util.ArrayList)
     */
    @Override
    public void setPolls(ArrayList<Poll> polls) {
        ArrayList<NamedBean> activities = new ArrayList<NamedBean>();
        for (Poll poll : polls) {
            activities.add(poll);
        }
        dataProvider = new ListDataProvider<NamedBean>(activities);
        dataProvider.addDataDisplay(activitiesTable);
    }

    /* (non-Javadoc)
     * @see com.appspot.socialinquirer.client.view.ActivityView#setQuizzes(java.util.ArrayList)
     */
    @Override
    public void setQuizzes(ArrayList<Quiz> quizzes) {
        ArrayList<NamedBean> activities = new ArrayList<NamedBean>();
        for (Quiz quiz : quizzes) {
            activities.add(quiz);
        }
        dataProvider = new ListDataProvider<NamedBean>(activities);
        dataProvider.addDataDisplay(activitiesTable);
    }

    /* (non-Javadoc)
     * @see com.appspot.socialinquirer.client.view.ActivityView#setPages(java.util.ArrayList)
     */
    @Override
    public void setPages(ArrayList<Page> pages) {
        ArrayList<NamedBean> activities = new ArrayList<NamedBean>();
        for (Page task : pages) {
            activities.add(task);
        }
        dataProvider = new ListDataProvider<NamedBean>(activities);
        dataProvider.addDataDisplay(activitiesTable);
    }

    /* (non-Javadoc)
     * @see com.appspot.socialinquirer.client.view.ActivityView#setMessages(java.util.ArrayList)
     */
    @Override
    public void setMessages(ArrayList<Message> message) {
        ArrayList<NamedBean> activities = new ArrayList<NamedBean>();
        for (Message quiz : message) {
            activities.add(quiz);
        }
        dataProvider = new ListDataProvider<NamedBean>(activities);
        dataProvider.addDataDisplay(activitiesTable);
    }

    /**
     * Gets the selected object.
     *
     * @return the selected object
     */
    private NamedBean getSelectedObject() {
        for (NamedBean object : activitiesTable.getVisibleItems()) {
            if (activitiesTable.getSelectionModel().isSelected(object)) {
                return object;
            }
        }
        return null;
    }

    /**
     * Inits the table columns.
     *
     * @param table the table
     * @param selectionModel the selection model
     */
    private void initTableColumns(CellTable<NamedBean> table, final SelectionModel<NamedBean> selectionModel) {
        // Checkbox column. This table will uses a checkbox column for
        // selection.
        // Alternatively, you can call cellTable.setSelectionEnabled(true) to
        // enable
        // mouse selection.
        Column<NamedBean, Boolean> checkColumn = new Column<NamedBean, Boolean>(new CheckboxCell(true, false)) {
            @Override
            public Boolean getValue(NamedBean object) {
                // Get the value from the selection model.
                return selectionModel.isSelected(object);
            }
        };
        table.addColumn(checkColumn, SafeHtmlUtils.fromSafeConstant("<br/>"));

        // Name.
        Column<NamedBean, String> nameColumn = new Column<NamedBean, String>(new ClickableTextCell()) {
            @Override
            public String getValue(NamedBean object) {
                return object.getName();
            }
        };
        table.addColumn(nameColumn, constants.templatesTableColumnName());
        // Headline.
        //       Column<NamedBean, String> tagsColumn = new Column<NamedBean, String>(
        //           new ClickableTextCell()) {
        //         @Override
        //         public String getValue(NamedBean object) {
        //            StringBuilder builder = new StringBuilder();
        //            for (String tag : object.getTags()) {
        //               builder.append(tag).append(" ");
        //            }
        //           return builder.toString();
        //           
        //         }
        //       };
        //       table.addColumn(tagsColumn, constants.templatesTableColumnTags());

        // Description
        Column<NamedBean, SafeHtml> descColumn = new Column<NamedBean, SafeHtml>(new SafeHtmlCell()) {
            @Override
            public SafeHtml getValue(NamedBean object) {
                SafeHtmlBuilder builder = new SafeHtmlBuilder();
                builder.appendHtmlConstant(object.getDescription());
                return builder.toSafeHtml();
            }
        };
        table.addColumn(descColumn, constants.templatesTableColumnSummary());
    }

    /* (non-Javadoc)
     * @see com.appspot.socialinquirer.client.view.ActivityView#addPolls(java.util.ArrayList)
     */
    @Override
    public void addPolls(ArrayList<Poll> polls) {
        dataProvider.getList().addAll(polls);
    }

    /* (non-Javadoc)
     * @see com.appspot.socialinquirer.client.view.ActivityView#addQuizzes(java.util.ArrayList)
     */
    @Override
    public void addQuizzes(ArrayList<Quiz> quizzes) {
        dataProvider.getList().addAll(quizzes);
    }

    /* (non-Javadoc)
     * @see com.appspot.socialinquirer.client.view.ActivityView#addTasks(java.util.ArrayList)
     */
    @Override
    public void addTasks(ArrayList<Task> tasks) {
        dataProvider.getList().addAll(tasks);
    }

    /* (non-Javadoc)
     * @see com.appspot.socialinquirer.client.view.ActivityView#removeTasks(java.util.ArrayList)
     */
    @Override
    public void removeTasks(ArrayList<Task> tasks) {
        dataProvider.getList().removeAll(tasks);
    }
}