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