org.traccar.web.client.view.PersonalManagementView.java Source code

Java tutorial

Introduction

Here is the source code for org.traccar.web.client.view.PersonalManagementView.java

Source

/*
 * Copyright 2013 Anton Tananaev (anton.tananaev@gmail.com)
 *
 * 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 org.traccar.web.client.view;

import java.util.Date;
import java.util.LinkedList;
import java.util.List;

import org.traccar.web.client.ApplicationContext;
import org.traccar.web.client.model.BaseStoreHandlers;
import org.traccar.web.client.model.PersonalHistoryProperties;
import org.traccar.web.shared.model.Device;
import org.traccar.web.shared.model.PersonalHistory;

import com.google.gwt.cell.client.DateCell;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction;
import com.sencha.gxt.core.client.Style.SelectionMode;
import com.sencha.gxt.data.rebind.LabelProviderCreator;
import com.sencha.gxt.data.shared.ListStore;
import com.sencha.gxt.data.shared.StringLabelProvider;
import com.sencha.gxt.data.shared.event.StoreHandlers;
import com.sencha.gxt.widget.core.client.ContentPanel;
import com.sencha.gxt.widget.core.client.form.SimpleComboBox;
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;
import com.sencha.gxt.widget.core.client.grid.ColumnModel;
import com.sencha.gxt.widget.core.client.grid.Grid;
import com.sencha.gxt.widget.core.client.selection.SelectionChangedEvent;

public class PersonalManagementView implements SelectionChangedEvent.SelectionChangedHandler<PersonalHistory> {

    private static PersonalManagementViewUiBinder uiBinder = GWT.create(PersonalManagementViewUiBinder.class);

    interface PersonalManagementViewUiBinder extends UiBinder<Widget, PersonalManagementView> {
    }

    public interface PersonalManagementHandler {
        public void onSelected(PersonalHistory personalHistory);

        public void onLoad(Device device, Date from, Date to);

        public void onClear();

        public void loadLatestPositions(int hoursAgo);
    }

    private PersonalManagementHandler personalManagementHandler;

    @UiField
    ContentPanel contentPanel;

    @UiField(provided = true)
    ColumnModel<PersonalHistory> columnModel;

    public ContentPanel getView() {
        return contentPanel;
    }

    @UiField(provided = true)
    ListStore<PersonalHistory> personalHistoryStore;

    @UiField
    Grid<PersonalHistory> grid;

    @UiField(provided = true)
    SimpleComboBox<String> filter;

    public PersonalManagementView(PersonalManagementHandler personalManagementHandler,
            ListStore<PersonalHistory> personalHistoryStore, PersonalHistoryProperties personalHistoryProperties) {
        this.personalManagementHandler = personalManagementHandler;
        this.personalHistoryStore = personalHistoryStore;
        personalHistoryStore.addStoreHandlers(personalHistoryStoreHandler);

        List<ColumnConfig<PersonalHistory, ?>> columnConfigList = new LinkedList<ColumnConfig<PersonalHistory, ?>>();

        columnConfigList
                .add(new ColumnConfig<PersonalHistory, String>(personalHistoryProperties.name(), 0, "Name"));

        columnConfigList.add(new ColumnConfig<PersonalHistory, Integer>(personalHistoryProperties.age(), 0, "Age"));

        columnConfigList
                .add(new ColumnConfig<PersonalHistory, String>(personalHistoryProperties.weight(), 0, "Weight"));

        columnConfigList
                .add(new ColumnConfig<PersonalHistory, String>(personalHistoryProperties.height(), 0, "Height"));

        ColumnConfig<PersonalHistory, Date> columnConfigDate = new ColumnConfig<PersonalHistory, Date>(
                personalHistoryProperties.activeTime(), 0, "Active Time");
        columnConfigDate.setCell(new DateCell(ApplicationContext.getInstance().getFormatterUtil().getDateFormat()));
        columnConfigList.add(columnConfigDate);

        columnConfigList.add(new ColumnConfig<PersonalHistory, String>(personalHistoryProperties.totalKilometers(),
                0, "Total Kilometers"));

        columnConfigList.add(new ColumnConfig<PersonalHistory, String>(
                personalHistoryProperties.uphillInclination(), 0, "Uphill Inclination"));

        columnConfigList.add(new ColumnConfig<PersonalHistory, String>(
                personalHistoryProperties.downhillInclination(), 0, "Downhill Inclination"));

        columnConfigList.add(new ColumnConfig<PersonalHistory, String>(personalHistoryProperties.totalInclination(),
                0, "Total Inclination"));

        columnConfigList.add(
                new ColumnConfig<PersonalHistory, Integer>(personalHistoryProperties.heartRate(), 0, "Heart Rate"));

        columnConfigList.add(
                new ColumnConfig<PersonalHistory, String>(personalHistoryProperties.activity(), 0, "Activity"));

        columnConfigList
                .add(new ColumnConfig<PersonalHistory, String>(personalHistoryProperties.skin(), 0, "Skin"));

        columnConfigList.add(new ColumnConfig<PersonalHistory, String>(personalHistoryProperties.bloodOxygen(), 0,
                "Blood Oxygen"));

        columnConfigList.add(new ColumnConfig<PersonalHistory, String>(personalHistoryProperties.fireDepartment(),
                0, "Fire Department"));

        columnModel = new ColumnModel<PersonalHistory>(columnConfigList);

        StringLabelProvider<String> labelProvider = new StringLabelProvider<String>();
        filter = new SimpleComboBox<String>(labelProvider);
        filter.setTriggerAction(TriggerAction.ALL);
        filter.setEditable(false);
        filter.setWidth(200);
        filter.add("No Filter");
        filter.add("Last 12 hours");
        filter.add("Last 24 hours");
        filter.add("Last 36 hours");
        filter.setValue("From the beginning");
        // we want to change selection model on select, not value change which fires on blur
        filter.addSelectionHandler(new SelectionHandler<String>() {

            @Override
            public void onSelection(SelectionEvent<String> event) {
                if (event.getSelectedItem().equalsIgnoreCase("No Filter")) {
                    PersonalManagementView.this.personalManagementHandler.loadLatestPositions(-1);
                } else if (event.getSelectedItem().equalsIgnoreCase("Last 12 hours")) {
                    PersonalManagementView.this.personalManagementHandler.loadLatestPositions(12);
                } else if (event.getSelectedItem().equalsIgnoreCase("Last 24 hours")) {
                    PersonalManagementView.this.personalManagementHandler.loadLatestPositions(24);
                } else if (event.getSelectedItem().equalsIgnoreCase("Last 36 hours")) {
                    PersonalManagementView.this.personalManagementHandler.loadLatestPositions(36);
                }
            }

        });

        uiBinder.createAndBindUi(this);
        grid.getSelectionModel().addSelectionChangedHandler(this);
        grid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
    }

    @Override
    public void onSelectionChanged(SelectionChangedEvent<PersonalHistory> event) {
        // TODO Auto-generated method stub

    }

    private StoreHandlers<PersonalHistory> personalHistoryStoreHandler = new BaseStoreHandlers<PersonalHistory>() {

        @Override
        public void onAnything() {

        }
    };
}