/* * Copyright 2013, Cristiano Costantini, Giuseppe Gerla, Michele Ficarra, Sergio Ciampi, Stefano * Cigheri. * * 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.google.developers.gdgfirenze.admin.client; import com.google.developers.gdgfirenze.admin.client.event.NumberDetectedEvent; import com.google.developers.gdgfirenze.admin.client.event.NumberDetectedEvent.TypeOfNumberDetected; import com.google.developers.gdgfirenze.admin.client.service.GwtSensormixServiceAsync; import com.google.developers.gdgfirenze.admin.client.tree.SensorTreeModel; import com.google.developers.gdgfirenze.model.Sensor; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.cellview.client.CellBrowser; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.view.client.TreeViewModel; import com.google.web.bindery.event.shared.EventBus; import java.util.List; /** * The Class SensormixAdminUi. */ public class SensormixAdminUi extends Composite { /** * The Interface SensormixAdminUiUiBinder. */ interface SensormixAdminUiUiBinder extends UiBinder<Widget, SensormixAdminUi> { } private static final int PERIODREFRESHING = 5000; /** The ui binder. */ private static SensormixAdminUiUiBinder uiBinder = GWT.create(SensormixAdminUiUiBinder.class); /** The navigator. */ @UiField(provided = true) CellBrowser navigator; /** The num of samples. */ @UiField Label numOfSamples; /** The num of sensors. */ @UiField Label numOfSensors; private GwtSensormixServiceAsync sensormixService; private EventBus eventBus; private static boolean init = true; /** * Instantiates a new sensormix admin ui. * * @param eventBus * the event bus * @param sensormixService */ public SensormixAdminUi(EventBus eventBus, GwtSensormixServiceAsync sensormixService) { this.sensormixService = sensormixService; this.eventBus = eventBus; final TreeViewModel model = new SensorTreeModel(eventBus, sensormixService); navigator = new CellBrowser.Builder<Object>(model, null).build(); navigator.setDefaultColumnWidth(600); initWidget(uiBinder.createAndBindUi(this)); final Timer timer = new Timer() { @Override public void run() { refreshHeaderCounters(); } }; timer.scheduleRepeating(PERIODREFRESHING); } private void refreshHeaderCounters() { sensormixService.getSensors(null, null, null, new AsyncCallback<List<Sensor>>() { @Override public void onFailure(Throwable caught) { // TODO Error handling caught.printStackTrace(); } @Override public void onSuccess(List<Sensor> result) { if (result != null) { if (!init) { if (numOfSensors.getText().equals("" + result.size())) { eventBus.fireEventFromSource(new NumberDetectedEvent(TypeOfNumberDetected.SENSOR, result.size()), this); } } init = false; numOfSensors.setText("" + result.size()); } } }); sensormixService.countSamples(null, null, null, null, new AsyncCallback<Long>() { @Override public void onFailure(Throwable caught) { // TODO Error handling caught.printStackTrace(); } @Override public void onSuccess(Long result) { if (result != null) { numOfSamples.setText("" + result); } } }); } }