package com.thingtrack.konekti.view.module.alarm.internal;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.thingtrack.konekti.domain.Alarm;
import com.thingtrack.konekti.service.api.AlarmService;
import com.thingtrack.konekti.view.addon.data.BindingSource;
import com.thingtrack.konekti.view.addon.ui.AbstractView;
import com.thingtrack.konekti.view.addon.ui.BoxToolbar;
import com.thingtrack.konekti.view.addon.ui.BoxToolbar.ClickFilterButtonListener;
import com.thingtrack.konekti.view.addon.ui.BoxToolbar.ClickNavigationEvent;
import com.thingtrack.konekti.view.addon.ui.BoxToolbar.ClickPrintButtonListener;
import com.thingtrack.konekti.view.addon.ui.DataGridView;
import com.thingtrack.konekti.view.addon.ui.NavigationToolbar;
import com.thingtrack.konekti.view.addon.ui.NavigationToolbar.ClickDownButtonListener;
import com.thingtrack.konekti.view.addon.ui.NavigationToolbar.ClickRefreshButtonListener;
import com.thingtrack.konekti.view.kernel.IWorkbenchContext;
import com.thingtrack.konekti.view.kernel.ui.layout.IViewContainer;
import com.thingtrack.konekti.view.module.alarm.addon.AlarmToolbar;
import com.thingtrack.konekti.view.module.alarm.addon.AlarmToolbar.ClickConfirmAlarmButtonListener;
import com.vaadin.annotations.AutoGenerated;
import com.vaadin.data.Property;
import com.vaadin.ui.VerticalLayout;
@SuppressWarnings("serial")
public class AlarmView extends AbstractView implements ClickDownButtonListener,
ClickRefreshButtonListener, ClickFilterButtonListener, ClickPrintButtonListener,
ClickConfirmAlarmButtonListener {
@AutoGenerated
private VerticalLayout mainLayout;
@AutoGenerated
private DataGridView dgAlarm;
/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
private AlarmService alarmService;
private BindingSource<Alarm> bsAlarm = new BindingSource<Alarm>(Alarm.class, 0);
private NavigationToolbar navigationToolbar;
private BoxToolbar boxToolbar;
private AlarmToolbar alarmToolbar;
private IWorkbenchContext context;
private IViewContainer viewContainer;
/**
* The constructor should first build the main layout, set the composition
* root and then do any custom initialization.
*
* The constructor will not be automatically regenerated by the visual
* editor.
*/
public AlarmView(IWorkbenchContext context, IViewContainer viewContainer) {
buildMainLayout();
setCompositionRoot(mainLayout);
// TODO add user code here
this.context = context;
// set Slide View Services and ViewContainer to navigate
this.viewContainer = viewContainer;
this.alarmService = AlarmViewContainer.getAlarmService();
// initialize datasource views
initView();
}
private void initView() {
try {
dgAlarm.setImmediate(true);
dgAlarm.setSelectable(true);
bsAlarm.addNestedContainerProperty("alarmType.description");
bsAlarm.addNestedContainerProperty("alarmStatus.description");
bsAlarm.addNestedContainerProperty("area.description");
dgAlarm.setBindingSource(bsAlarm);
dgAlarm.setVisibleColumns(new String[] { "area.description", "alarmGroup", "alarmName","alarmType.description", "message", "alarmStatus.description", "alarmDate" });
dgAlarm.setColumnHeaders(new String[] { "Area Trabajo", "Grupo Alarma", "Nombre Alarma", "Tipo", "Mensaje", "Estado", "Fecha Alarma" });
} catch (Exception ex) {
ex.getMessage();
}
refreshAlarmBindindSource();
injectAlarmBindingSource();
}
private void refreshAlarmBindindSource() {
try {
bsAlarm.removeAllItems();
bsAlarm.addAll(alarmService.getAll(context.getUser()));
// select the first item if exist
if (bsAlarm.size() > 0)
bsAlarm.setItemId(bsAlarm.getIdByIndex(0));
} catch (IllegalArgumentException e) {
throw new RuntimeException("¡No se pudo refrescar las Alarmas!", e);
} catch (Exception e) {
throw new RuntimeException("¡No se pudo refrescar las Alarmas!", e);
}
}
private void injectAlarmBindingSource() {
navigationToolbar = new NavigationToolbar(0, bsAlarm, viewContainer);
boxToolbar = new BoxToolbar(1, bsAlarm);
alarmToolbar = new AlarmToolbar(1, bsAlarm, viewContainer);
navigationToolbar.addListenerRefreshButton(this);
navigationToolbar.addListenerDownButton(this);
boxToolbar.addListenerFilterButton(this);
boxToolbar.addListenerPrintButton(this);
alarmToolbar.addListenerConfirmAlarmButton(this);
removeAllToolbar();
addToolbar(navigationToolbar);
addToolbar(boxToolbar);
addToolbar(alarmToolbar);
}
@Override
public void refreshButtonClick(NavigationToolbar.ClickNavigationEvent event) {
refreshAlarmBindindSource();
}
@Override
public void confirmAlarmButtonClick(AlarmToolbar.ClickNavigationEvent event) {
Alarm alarm = (Alarm) event.getRegister();
try {
alarmService.delete(alarm);
refreshAlarmBindindSource();
} catch (Exception e) {
throw new RuntimeException("¡No se confirmar la alarma!", e);
}
}
@Override
public void downButtonClick(NavigationToolbar.ClickNavigationEvent event) {
// roll to the detail Location View
viewContainer.getSliderView().rollNext();
}
@Override
public void filterButtonClick(ClickNavigationEvent event) {
dgAlarm.setFilterBarVisible();
}
@Override
public void printButtonClick(ClickNavigationEvent event) {
try {
dgAlarm.print("Listado Alarmas");
}
catch (Exception e) {
throw new RuntimeException("¡No se pudo imprimir el informe!", e);
}
}
@AutoGenerated
private VerticalLayout buildMainLayout() {
// common part: create layout
mainLayout = new VerticalLayout();
mainLayout.setImmediate(false);
mainLayout.setWidth("100%");
mainLayout.setHeight("100%");
mainLayout.setMargin(false);
// top-level component properties
setWidth("100.0%");
setHeight("100.0%");
// dgEmployee
dgAlarm = new DataGridView() {
@Override
protected String formatPropertyValue(Object rowId, Object colId, Property property) {
// Format by property type
if (property.getType() == Date.class) {
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
if (property.getValue() != null)
return df.format((Date) property.getValue());
}
return super.formatPropertyValue(rowId, colId, property);
}
};
dgAlarm.setImmediate(false);
dgAlarm.setWidth("100.0%");
dgAlarm.setHeight("100.0%");
mainLayout.addComponent(dgAlarm);
mainLayout.setExpandRatio(dgAlarm, 1.0f);
return mainLayout;
}
@Override
protected void updateLabels() {
dgAlarm.setColumnHeaders(new String[] { getI18N().getMessage("com.thingtrack.konekti.view.module.alarm.internal.AlarmView.dgAlarm.column.area.description"),
getI18N().getMessage("com.thingtrack.konekti.view.module.alarm.internal.AlarmView.dgAlarm.column.alarmGroup"),
getI18N().getMessage("com.thingtrack.konekti.view.module.alarm.internal.AlarmView.dgAlarm.column.alarmName"),
getI18N().getMessage("com.thingtrack.konekti.view.module.alarm.internal.AlarmView.dgAlarm.column.alarmType.description"),
getI18N().getMessage("com.thingtrack.konekti.view.module.alarm.internal.AlarmView.dgAlarm.column.message"),
getI18N().getMessage("com.thingtrack.konekti.view.module.alarm.internal.AlarmView.dgAlarm.column.alarmStatus.description"),
getI18N().getMessage("com.thingtrack.konekti.view.module.alarm.internal.AlarmView.dgAlarm.column.alarmDate")});
}
}