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;
}
}