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.Invoice; import com.thingtrack.konekti.domain.InvoiceLineStatus; import com.thingtrack.konekti.domain.Tax; import com.thingtrack.konekti.service.api.InvoiceLineStatusService; import com.thingtrack.konekti.service.api.InvoiceService; import com.thingtrack.konekti.service.api.TaxService; 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 InvoiceLineViewForm extends CustomComponent { @AutoGenerated private AbsoluteLayout mainLayout; @AutoGenerated private ServiceCollectionField servicesField; @AutoGenerated private TextField priceFinalField; @AutoGenerated private TextField priceField; @AutoGenerated private TextField numberField; @AutoGenerated private ComboBox taxField; @AutoGenerated private ComboBox invoiceLineStatusField; @AutoGenerated private DateField invoiceLineDateField; @AutoGenerated private ComboBox invoiceField; @AutoGenerated private TextField discountField; @AutoGenerated private TextField commentField; /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */ /*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */ // form services private InvoiceLineStatusService invoiceLineStatusService; private InvoiceService invoiceService; private TaxService ivaService; // organization type datasource private BeanItemContainer<InvoiceLineStatus> bcInvoiceLineStatus = new BindingSource<InvoiceLineStatus>(InvoiceLineStatus.class); private BeanItemContainer<Invoice> bcInvoice = new BindingSource<Invoice>(Invoice.class); private BeanItemContainer<Tax> bcIva = new BindingSource<Tax>(Tax.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 InvoiceLineViewForm() throws IllegalArgumentException, Exception { buildMainLayout(); setCompositionRoot(mainLayout); // TODO add user code here initComponents(); // configure Organization Type data invoiceLineStatusField.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY); invoiceLineStatusField.setItemCaptionPropertyId("description"); invoiceField.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY); invoiceField.setItemCaptionPropertyId("code"); taxField.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY); taxField.setItemCaptionPropertyId("description"); // get form services from OSGi Service Registry getServices(); // load data sources loadData(); } private void initComponents() { priceFinalField.setNullRepresentation(""); priceField.setNullRepresentation(""); numberField.setNullRepresentation(""); discountField.setNullRepresentation(""); commentField.setNullRepresentation(""); } @SuppressWarnings({ "unchecked", "rawtypes" }) private void getServices() { try { BundleContext bundleContext = FrameworkUtil.getBundle(InvoiceLineViewForm.class).getBundleContext(); ServiceReference invoiceLineStatusServiceReference = bundleContext.getServiceReference(InvoiceLineStatusService.class.getName()); invoiceLineStatusService = InvoiceLineStatusService.class.cast(bundleContext.getService(invoiceLineStatusServiceReference)); ServiceReference invoiceServiceReference = bundleContext.getServiceReference(InvoiceService.class.getName()); invoiceService = InvoiceService.class.cast(bundleContext.getService(invoiceServiceReference)); ServiceReference ivaServiceReference = bundleContext.getServiceReference(TaxService.class.getName()); ivaService = TaxService.class.cast(bundleContext.getService(ivaServiceReference)); } catch (Exception e) { e.getMessage(); } } private void loadData() throws IllegalArgumentException, Exception { bcIva.removeAllItems(); bcIva.addAll(ivaService.getAll()); taxField.setContainerDataSource(bcIva); bcInvoiceLineStatus.removeAllItems(); bcInvoiceLineStatus.addAll(invoiceLineStatusService.getAll()); invoiceLineStatusField.setContainerDataSource(bcInvoiceLineStatus); bcInvoice.removeAllItems(); bcInvoice.addAll(invoiceService.getAll()); invoiceField.setContainerDataSource(bcInvoice); } @AutoGenerated private AbsoluteLayout buildMainLayout() { // common part: create layout mainLayout = new AbsoluteLayout(); mainLayout.setImmediate(false); mainLayout.setWidth("540px"); mainLayout.setHeight("400px"); mainLayout.setMargin(true); // top-level component properties setWidth("540px"); setHeight("400px"); // commentField commentField = new TextField(); commentField.setCaption("Comentarios"); commentField.setImmediate(false); commentField.setWidth("400px"); commentField.setHeight("140px"); mainLayout.addComponent(commentField, "top:100.0px;left:20.0px;"); // discountField discountField = new TextField(); discountField.setCaption("Descuento"); discountField.setImmediate(false); discountField.setWidth("80px"); discountField.setHeight("-1px"); mainLayout.addComponent(discountField, "top:140.0px;left:440.0px;"); // invoiceField invoiceField = new ComboBox(); invoiceField.setCaption("Código Factura"); invoiceField.setImmediate(false); invoiceField.setWidth("200px"); invoiceField.setHeight("-1px"); invoiceField.setRequired(true); mainLayout.addComponent(invoiceField, "top:20.0px;left:200.0px;"); // invoiceLineDateField invoiceLineDateField = new DateField(); invoiceLineDateField.setCaption("Fecha"); invoiceLineDateField.setImmediate(false); invoiceLineDateField.setWidth("100px"); invoiceLineDateField.setHeight("-1px"); invoiceLineDateField.setInvalidAllowed(false); invoiceLineDateField.setRequired(true); invoiceLineDateField.setResolution(4); mainLayout.addComponent(invoiceLineDateField, "top:20.0px;left:420.0px;"); // invoiceLineStatusField invoiceLineStatusField = new ComboBox(); invoiceLineStatusField.setCaption("Estado"); invoiceLineStatusField.setImmediate(false); invoiceLineStatusField.setWidth("240px"); invoiceLineStatusField.setHeight("-1px"); invoiceLineStatusField.setRequired(true); mainLayout.addComponent(invoiceLineStatusField, "top:58.0px;left:281.0px;"); // taxField taxField = new ComboBox(); taxField.setCaption("Iva"); taxField.setImmediate(false); taxField.setWidth("80px"); taxField.setHeight("-1px"); mainLayout.addComponent(taxField, "top:176.0px;left:440.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;"); // priceField priceField = new TextField(); priceField.setCaption("Precio"); priceField.setImmediate(false); priceField.setWidth("80px"); priceField.setHeight("-1px"); mainLayout.addComponent(priceField, "top:100.0px;left:440.0px;"); // priceFinalField priceFinalField = new TextField(); priceFinalField.setCaption("Precio Final"); priceFinalField.setImmediate(false); priceFinalField.setWidth("80px"); priceFinalField.setHeight("-1px"); mainLayout.addComponent(priceFinalField, "top:216.0px;left:440.0px;"); // servicesField servicesField = new ServiceCollectionField(); servicesField.setImmediate(false); servicesField.setWidth("500px"); servicesField.setHeight("122px"); mainLayout.addComponent(servicesField, "top:260.0px;left:20.0px;"); return mainLayout; } }