Java tutorial
/* * 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() { } }; }