package com.thingtrack.konekti.view.web.form; import org.osgi.framework.BundleContext; import org.osgi.framework.FrameworkUtil; import org.osgi.framework.ServiceReference; import com.thingtrack.konekti.domain.Area; import com.thingtrack.konekti.domain.Job; import com.thingtrack.konekti.domain.JobIntervalType; import com.thingtrack.konekti.domain.JobTriggerType; import com.thingtrack.konekti.service.api.AreaService; import com.thingtrack.konekti.service.api.JobIntervalTypeService; import com.thingtrack.konekti.service.api.JobTriggerTypeService; import com.thingtrack.konekti.view.addon.data.BindingSource; import com.thingtrack.konekti.view.addon.ui.AbstractViewForm; import com.thingtrack.konekti.view.web.form.field.JobTriggerCalendarField; import com.vaadin.annotations.AutoGenerated; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.Property.ValueChangeListener; import com.vaadin.data.util.BeanItemContainer; import com.vaadin.ui.AbsoluteLayout; import com.vaadin.ui.CheckBox; import com.vaadin.ui.ComboBox; import com.vaadin.ui.DateField; import com.vaadin.ui.Select; import com.vaadin.ui.TextField; @SuppressWarnings("serial") public class JobViewForm extends AbstractViewForm { @AutoGenerated private AbsoluteLayout mainLayout; @AutoGenerated private ComboBox jobIntervalTypeField; @AutoGenerated private JobTriggerCalendarField jobCalendarField; @AutoGenerated private ComboBox areaField; @AutoGenerated private DateField startTimeField; @AutoGenerated private TextField repeatCountField; @AutoGenerated private TextField future_timeField; @AutoGenerated private CheckBox futureField; @AutoGenerated private DateField endTimeField; @AutoGenerated private TextField descriptionField; @AutoGenerated private TextField cronExpressionField; @AutoGenerated private ComboBox jobTriggerTypeField; @AutoGenerated private TextField jobTriggerPriorityField; @AutoGenerated private TextField jobNameField; @AutoGenerated private TextField jobIntervalField; @AutoGenerated private TextField jobGroupField; /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */ // form services private AreaService areaService; private JobTriggerTypeService jobTriggerTypeService; private JobIntervalTypeService jobIntervalTypeService; // client type datasource private BeanItemContainer<Area> bcArea = new BindingSource<Area>(Area.class); private BeanItemContainer<JobTriggerType> bcJobTriggerType = new BindingSource<JobTriggerType>(JobTriggerType.class); private BeanItemContainer<JobIntervalType> bcJobIntervalType = new BindingSource<JobIntervalType>(JobIntervalType.class); /** * 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. * @throws Exception * @throws IllegalArgumentException */ public JobViewForm() throws IllegalArgumentException, Exception { buildMainLayout(); setCompositionRoot(mainLayout); // TODO add user code here initComponents(); cronExpressionField.setVisible(false); future_timeField.setEnabled(false); startTimeField.setResolution(DateField.RESOLUTION_SEC); endTimeField.setResolution(DateField.RESOLUTION_SEC); // configure Type data areaField.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY); areaField.setItemCaptionPropertyId("name"); jobTriggerTypeField.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY); jobTriggerTypeField.setItemCaptionPropertyId("description"); jobIntervalTypeField.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY); jobIntervalTypeField.setItemCaptionPropertyId("description"); // get form services from OSGi Service Registry getServices(); // load data sources loadData(); futureField.setImmediate(true); futureField.addListener(new ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { if (event.getProperty().getValue() == null) return; if ((Boolean)event.getProperty().getValue()) future_timeField.setEnabled(true); else { future_timeField.setValue(null); future_timeField.setEnabled(false); } } }); jobTriggerTypeField.setImmediate(true); jobTriggerTypeField.setNullSelectionAllowed(false); jobTriggerTypeField.addListener(new ValueChangeListener() { @Override public void valueChange(ValueChangeEvent event) { if (event.getProperty().getValue() == null) return; if (((JobTriggerType)event.getProperty().getValue()).getCode().equals(Job.JOB_TRIGGER_TYPE.SIMPLE.name())) { jobIntervalField.setVisible(true); jobIntervalTypeField.setVisible(true); repeatCountField.setVisible(true); cronExpressionField.setVisible(false); } else { jobIntervalField.setVisible(false); jobIntervalTypeField.setVisible(false); repeatCountField.setVisible(false); cronExpressionField.setVisible(true); } } }); } private void initComponents() { repeatCountField.setNullRepresentation(""); descriptionField.setNullRepresentation(""); cronExpressionField.setNullRepresentation(""); jobTriggerPriorityField.setNullRepresentation(""); jobNameField.setNullRepresentation(""); jobIntervalField.setNullRepresentation(""); jobGroupField.setNullRepresentation(""); future_timeField.setNullRepresentation(""); areaField.setNullSelectionAllowed(false); jobTriggerTypeField.setNullSelectionAllowed(false); jobIntervalTypeField.setNullSelectionAllowed(false); jobNameField.focus(); } @SuppressWarnings({ "unchecked", "rawtypes" }) private void getServices() { try { BundleContext bundleContext = FrameworkUtil.getBundle(JobViewForm.class).getBundleContext(); ServiceReference jobTriggerTypeServiceReference = bundleContext.getServiceReference(JobTriggerTypeService.class.getName()); jobTriggerTypeService = JobTriggerTypeService.class.cast(bundleContext.getService(jobTriggerTypeServiceReference)); ServiceReference jobIntervalTypeServiceReference = bundleContext.getServiceReference(JobIntervalTypeService.class.getName()); jobIntervalTypeService = JobIntervalTypeService.class.cast(bundleContext.getService(jobIntervalTypeServiceReference)); ServiceReference areaReference = bundleContext.getServiceReference(AreaService.class.getName()); areaService = AreaService.class.cast(bundleContext.getService(areaReference)); } catch (Exception e) { e.getMessage(); } } private void loadData() throws IllegalArgumentException, Exception { bcJobTriggerType.removeAllItems(); bcJobTriggerType.addAll(jobTriggerTypeService.getAll()); jobTriggerTypeField.setContainerDataSource(bcJobTriggerType); bcJobIntervalType.removeAllItems(); bcJobIntervalType.addAll(jobIntervalTypeService.getAll()); jobIntervalTypeField.setContainerDataSource(bcJobIntervalType); bcArea.removeAllItems(); bcArea.addAll(areaService.getAll()); areaField.setContainerDataSource(bcArea); } @Override protected void updateLabels() { jobNameField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.JobViewForm.jobNameField.caption")); jobGroupField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.JobViewForm.jobGroupField.caption")); startTimeField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.JobViewForm.startTimeField.caption")); endTimeField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.JobViewForm.endTimeField.caption")); areaField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.JobViewForm.areaField.caption")); descriptionField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.JobViewForm.descriptionField.caption")); jobTriggerTypeField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.JobViewForm.jobTriggerTypeField.caption")); jobTriggerPriorityField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.JobViewForm.jobTriggerPriorityField.caption")); future_timeField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.JobViewForm.future_timeField.caption")); futureField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.JobViewForm.futureField.caption")); jobIntervalField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.JobViewForm.jobIntervalField.caption")); repeatCountField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.JobViewForm.repeatCountField.caption")); //jobCalendarField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.JobViewForm.jobCalendarField.caption")); } @AutoGenerated private AbsoluteLayout buildMainLayout() { // common part: create layout mainLayout = new AbsoluteLayout(); mainLayout.setImmediate(false); mainLayout.setWidth("650px"); mainLayout.setHeight("220px"); mainLayout.setMargin(true); // top-level component properties setWidth("650px"); setHeight("220px"); // jobGroupField jobGroupField = new TextField(); jobGroupField.setCaption("Grupo"); jobGroupField.setImmediate(false); jobGroupField.setWidth("140px"); jobGroupField.setHeight("-1px"); jobGroupField.setRequired(true); mainLayout.addComponent(jobGroupField, "top:20.0px;left:180.0px;"); // jobIntervalField jobIntervalField = new TextField(); jobIntervalField.setCaption("Intervalo"); jobIntervalField.setImmediate(false); jobIntervalField.setWidth("60px"); jobIntervalField.setHeight("-1px"); mainLayout.addComponent(jobIntervalField, "top:180.0px;left:20.0px;"); // jobNameField jobNameField = new TextField(); jobNameField.setCaption("Nombre"); jobNameField.setImmediate(false); jobNameField.setWidth("140px"); jobNameField.setHeight("-1px"); jobNameField.setRequired(true); mainLayout.addComponent(jobNameField, "top:20.0px;left:20.0px;"); // jobTriggerPriorityField jobTriggerPriorityField = new TextField(); jobTriggerPriorityField.setCaption("Job Trigger Priority"); jobTriggerPriorityField.setImmediate(false); jobTriggerPriorityField.setWidth("160px"); jobTriggerPriorityField.setHeight("-1px"); mainLayout.addComponent(jobTriggerPriorityField, "top:140.0px;left:200.0px;"); // jobTriggerTypeField jobTriggerTypeField = new ComboBox(); jobTriggerTypeField.setCaption("Tipo Disparador"); jobTriggerTypeField.setImmediate(true); jobTriggerTypeField.setWidth("160px"); jobTriggerTypeField.setHeight("-1px"); jobTriggerTypeField.setRequired(true); mainLayout .addComponent(jobTriggerTypeField, "top:140.0px;left:20.0px;"); // cronExpressionField cronExpressionField = new TextField(); cronExpressionField.setCaption("Expresión Cron "); cronExpressionField.setImmediate(false); cronExpressionField.setWidth("340px"); cronExpressionField.setHeight("-1px"); mainLayout .addComponent(cronExpressionField, "top:180.0px;left:20.0px;"); // descriptionField descriptionField = new TextField(); descriptionField.setCaption("Descripción"); descriptionField.setImmediate(false); descriptionField.setWidth("620px"); descriptionField.setHeight("-1px"); mainLayout.addComponent(descriptionField, "top:100.0px;left:20.0px;"); // endTimeField endTimeField = new DateField(); endTimeField.setCaption("Fecha Finalización"); endTimeField.setImmediate(false); endTimeField.setWidth("-1px"); endTimeField.setHeight("-1px"); endTimeField.setInvalidAllowed(false); mainLayout.addComponent(endTimeField, "top:60.0px;left:225.0px;"); // futureField futureField = new CheckBox(); futureField.setCaption("Futuro"); futureField.setImmediate(false); futureField.setWidth("-1px"); futureField.setHeight("-1px"); mainLayout.addComponent(futureField, "top:140.0px;left:585.0px;"); // future_timeField future_timeField = new TextField(); future_timeField.setCaption("Future_time"); future_timeField.setImmediate(false); future_timeField.setWidth("160px"); future_timeField.setHeight("-1px"); mainLayout.addComponent(future_timeField, "top:140.0px;left:400.0px;"); // repeatCountField repeatCountField = new TextField(); repeatCountField.setCaption("Repeticiones"); repeatCountField.setImmediate(false); repeatCountField.setWidth("60px"); repeatCountField.setHeight("24px"); mainLayout.addComponent(repeatCountField, "top:180.0px;right:290.0px;"); // startTimeField startTimeField = new DateField(); startTimeField.setCaption("Fecha Comienzo"); startTimeField.setImmediate(false); startTimeField.setWidth("-1px"); startTimeField.setHeight("-1px"); startTimeField.setInvalidAllowed(false); mainLayout.addComponent(startTimeField, "top:60.0px;left:20.0px;"); // areaField areaField = new ComboBox(); areaField.setCaption("Area Trabajo"); areaField.setImmediate(false); areaField.setWidth("-1px"); areaField.setHeight("-1px"); areaField.setRequired(true); mainLayout.addComponent(areaField, "top:60.0px;left:420.0px;"); // jobCalendarField jobCalendarField = new JobTriggerCalendarField(); jobCalendarField.setImmediate(false); jobCalendarField.setWidth("-1px"); jobCalendarField.setHeight("-1px"); mainLayout.addComponent(jobCalendarField, "top:167.0px;left:397.0px;"); // jobIntervalTypeField jobIntervalTypeField = new ComboBox(); jobIntervalTypeField.setCaption("Tipo Intervalo"); jobIntervalTypeField.setImmediate(false); jobIntervalTypeField.setWidth("175px"); jobIntervalTypeField.setHeight("-1px"); mainLayout.addComponent(jobIntervalTypeField, "top:180.0px;left:100.0px;"); return mainLayout; } }