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.Offer; import com.thingtrack.konekti.domain.OfferLineStatus; import com.thingtrack.konekti.service.api.OfferLineStatusService; import com.thingtrack.konekti.service.api.OfferService; import com.thingtrack.konekti.view.addon.data.BindingSource; import com.thingtrack.konekti.view.web.form.field.ServiceCollectionField; import com.vaadin.annotations.AutoGenerated; import com.vaadin.data.util.BeanItemContainer; import com.vaadin.ui.AbsoluteLayout; import com.vaadin.ui.ComboBox; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.DateField; import com.vaadin.ui.Select; import com.vaadin.ui.TextField; @SuppressWarnings("serial") public class OfferLineViewForm extends CustomComponent { @AutoGenerated private AbsoluteLayout mainLayout; @AutoGenerated private ServiceCollectionField servicesField; @AutoGenerated private TextField priceField; @AutoGenerated private ComboBox offerLineStatusField; @AutoGenerated private DateField offerLineDateField; @AutoGenerated private ComboBox offerField; @AutoGenerated private TextField numberField; @AutoGenerated private TextField discountField; @AutoGenerated private TextField commentField; /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */ // form services private OfferService offerService; private OfferLineStatusService offerLineStatusService; // Offer Line type datasource private BeanItemContainer<Offer> bcOffer = new BindingSource<Offer>(Offer.class); private BeanItemContainer<OfferLineStatus> bcOfferLineStatus = new BindingSource<OfferLineStatus>(OfferLineStatus.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 OfferLineViewForm() throws IllegalArgumentException, Exception { buildMainLayout(); setCompositionRoot(mainLayout); // TODO add user code here initComponents(); // configure Organization Type data offerField.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY); offerField.setItemCaptionPropertyId("code"); offerLineStatusField.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY); offerLineStatusField.setItemCaptionPropertyId("description"); // get form services from OSGi Service Registry getServices(); // load data sources loadData(); } private void initComponents() { numberField.setNullRepresentation(""); priceField.setNullRepresentation(""); commentField.setNullRepresentation(""); servicesField.setCaption("Servicios"); numberField.setRequiredError(numberField.getCaption() + " es un campo requerido"); } @SuppressWarnings({ "unchecked", "rawtypes" }) private void getServices() { try { BundleContext bundleContext = FrameworkUtil.getBundle(OfferViewForm.class).getBundleContext(); ServiceReference offerServiceReference = bundleContext.getServiceReference(OfferService.class.getName()); offerService = OfferService.class.cast(bundleContext.getService(offerServiceReference)); ServiceReference offerLineStatusServiceReference = bundleContext.getServiceReference(OfferLineStatusService.class.getName()); offerLineStatusService = OfferLineStatusService.class.cast(bundleContext.getService(offerLineStatusServiceReference)); } catch (Exception e) { e.getMessage(); } } private void loadData() throws IllegalArgumentException, Exception { bcOffer.removeAllItems(); bcOffer.addAll(offerService.getAll()); offerField.setContainerDataSource(bcOffer); bcOfferLineStatus.removeAllItems(); bcOfferLineStatus.addAll(offerLineStatusService.getAll()); offerLineStatusField.setContainerDataSource(bcOfferLineStatus); } @AutoGenerated private AbsoluteLayout buildMainLayout() { // common part: create layout mainLayout = new AbsoluteLayout(); mainLayout.setImmediate(false); mainLayout.setWidth("540px"); mainLayout.setHeight("320px"); mainLayout.setMargin(true); // top-level component properties setWidth("540px"); setHeight("320px"); // commentField commentField = new TextField(); commentField.setCaption("Cometarios"); commentField.setImmediate(false); commentField.setWidth("500px"); commentField.setHeight("80px"); mainLayout.addComponent(commentField, "top:100.0px;left:20.0px;"); // discountField discountField = new TextField(); discountField.setCaption("Descuento"); discountField.setImmediate(false); discountField.setWidth("100px"); discountField.setHeight("-1px"); mainLayout.addComponent(discountField, "top:60.0px;left:160.0px;"); // numberField numberField = new TextField(); numberField.setCaption("NĂºmero"); numberField.setImmediate(false); numberField.setWidth("80px"); numberField.setHeight("-1px"); numberField.setRequired(true); mainLayout.addComponent(numberField, "top:20.0px;left:20.0px;"); // offerField offerField = new ComboBox(); offerField.setCaption("Oferta"); offerField.setImmediate(false); offerField.setWidth("200px"); offerField.setHeight("-1px"); offerField.setRequired(true); mainLayout.addComponent(offerField, "top:20.0px;left:200.0px;"); // offerLineDateField offerLineDateField = new DateField(); offerLineDateField.setCaption("Fecha"); offerLineDateField.setImmediate(false); offerLineDateField.setWidth("100px"); offerLineDateField.setHeight("-1px"); offerLineDateField.setInvalidAllowed(false); offerLineDateField.setRequired(true); offerLineDateField.setResolution(4); mainLayout.addComponent(offerLineDateField, "top:20.0px;left:420.0px;"); // offerLineStatusField offerLineStatusField = new ComboBox(); offerLineStatusField.setCaption("Estado"); offerLineStatusField.setImmediate(false); offerLineStatusField.setWidth("240px"); offerLineStatusField.setHeight("-1px"); offerLineStatusField.setRequired(true); mainLayout.addComponent(offerLineStatusField, "top:60.0px;left:280.0px;"); // priceField priceField = new TextField(); priceField.setCaption("Precio"); priceField.setImmediate(false); priceField.setWidth("120px"); priceField.setHeight("-1px"); mainLayout.addComponent(priceField, "top:60.0px;left:20.0px;"); // servicesField servicesField = new ServiceCollectionField(); servicesField.setImmediate(false); servicesField.setWidth("500px"); servicesField.setHeight("100px"); mainLayout.addComponent(servicesField, "top:200.0px;left:20.0px;"); return mainLayout; } }