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.Client;
import com.thingtrack.konekti.domain.OfferStatus;
import com.thingtrack.konekti.domain.OfferType;
import com.thingtrack.konekti.domain.Organization;
import com.thingtrack.konekti.service.api.ClientService;
import com.thingtrack.konekti.service.api.OfferStatusService;
import com.thingtrack.konekti.service.api.OfferTypeService;
import com.thingtrack.konekti.service.api.OrganizationService;
import com.thingtrack.konekti.view.addon.data.BindingSource;
import com.thingtrack.konekti.view.kernel.IWorkbenchContext;
import com.thingtrack.konekti.view.web.form.field.OfferLineCollectionField;
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 OfferViewForm extends CustomComponent {
@AutoGenerated
private AbsoluteLayout mainLayout;
@AutoGenerated
private OfferLineCollectionField offerLinesField;
@AutoGenerated
private TextField revisionField;
@AutoGenerated
private TextField priceField;
@AutoGenerated
private ComboBox organizationField;
@AutoGenerated
private ComboBox offerTypeField;
@AutoGenerated
private ComboBox offerStatusField;
@AutoGenerated
private TextField offerRequestField;
@AutoGenerated
private DateField offerDateField;
@AutoGenerated
private ComboBox offerClientField;
@AutoGenerated
private TextField observationField;
@AutoGenerated
private TextField discountField;
@AutoGenerated
private TextField codeField;
/*- 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 OfferStatusService offerStatusService;
private OfferTypeService offerTypeService;
private OrganizationService organizationService;
private ClientService clientService;
// Offer type datasource
private BeanItemContainer<OfferStatus> bcOfferStatus = new BindingSource<OfferStatus>(OfferStatus.class);
private BeanItemContainer<OfferType> bcOfferType = new BindingSource<OfferType>(OfferType.class);
private BeanItemContainer<Organization> bcOrganization = new BindingSource<Organization>(Organization.class);
private BeanItemContainer<Client> bcClient = new BindingSource<Client>(Client.class);
private IWorkbenchContext context;
/**
* 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 OfferViewForm(IWorkbenchContext context) throws IllegalArgumentException, Exception {
this.context = context;
buildMainLayout();
setCompositionRoot(mainLayout);
// TODO add user code here
initComponents();
// configure Organization Type data
offerTypeField.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY);
offerTypeField.setItemCaptionPropertyId("description");
offerStatusField.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY);
offerStatusField.setItemCaptionPropertyId("description");
organizationField.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY);
organizationField.setItemCaptionPropertyId("description");
offerClientField.setItemCaptionMode(Select.ITEM_CAPTION_MODE_PROPERTY);
offerClientField.setItemCaptionPropertyId("description");
// get form services from OSGi Service Registry
getServices();
// load data sources
loadData();
}
private void initComponents() {
codeField.setNullRepresentation("");
revisionField.setNullRepresentation("");
priceField.setNullRepresentation("");
offerRequestField.setNullRepresentation("");
observationField.setNullRepresentation("");
discountField.setNullRepresentation("");
offerLinesField.setCaption("Líneas Oferta");
codeField.setRequiredError(codeField.getCaption() + " es un campo requerido");
}
@SuppressWarnings({ "unchecked", "rawtypes" })
private void getServices() {
try {
BundleContext bundleContext = FrameworkUtil.getBundle(OfferViewForm.class).getBundleContext();
ServiceReference offerTypeServiceReference = bundleContext.getServiceReference(OfferTypeService.class.getName());
offerTypeService = OfferTypeService.class.cast(bundleContext.getService(offerTypeServiceReference));
ServiceReference offerStatusServiceReference = bundleContext.getServiceReference(OfferStatusService.class.getName());
offerStatusService = OfferStatusService.class.cast(bundleContext.getService(offerStatusServiceReference));
ServiceReference organizationServiceReference = bundleContext.getServiceReference(OrganizationService.class.getName());
organizationService = OrganizationService.class.cast(bundleContext.getService(organizationServiceReference));
ServiceReference clientServiceReference = bundleContext.getServiceReference(ClientService.class.getName());
clientService = ClientService.class.cast(bundleContext.getService(clientServiceReference));
}
catch (Exception e) {
e.getMessage();
}
}
private void loadData() throws IllegalArgumentException, Exception {
bcOfferType.removeAllItems();
bcOfferType.addAll(offerTypeService.getAll());
offerTypeField.setContainerDataSource(bcOfferType);
bcOfferStatus.removeAllItems();
bcOfferStatus.addAll(offerStatusService.getAll());
offerStatusField.setContainerDataSource(bcOfferStatus);
bcOrganization.removeAllItems();
bcOrganization.addAll(organizationService.getAll());
organizationField.setContainerDataSource(bcOrganization);
bcClient.removeAllItems();
bcClient.addAll(clientService.getAll(context.getUser().getActiveOrganization()));
offerClientField.setContainerDataSource(bcClient);
}
@AutoGenerated
private AbsoluteLayout buildMainLayout() {
// common part: create layout
mainLayout = new AbsoluteLayout();
mainLayout.setImmediate(false);
mainLayout.setWidth("663px");
mainLayout.setHeight("418px");
mainLayout.setMargin(true);
// top-level component properties
setWidth("663px");
setHeight("418px");
// codeField
codeField = new TextField();
codeField.setCaption("Código");
codeField.setImmediate(false);
codeField.setWidth("107px");
codeField.setHeight("-1px");
codeField.setRequired(true);
mainLayout.addComponent(codeField, "top:20.0px;left:21.0px;");
// discountField
discountField = new TextField();
discountField.setCaption("Descuento");
discountField.setImmediate(false);
discountField.setWidth("114px");
discountField.setHeight("-1px");
mainLayout.addComponent(discountField, "top:100.0px;left:526.0px;");
// observationField
observationField = new TextField();
observationField.setCaption("Observaciones");
observationField.setImmediate(false);
observationField.setWidth("479px");
observationField.setHeight("100px");
mainLayout.addComponent(observationField, "top:140.0px;left:21.0px;");
// offerClientField
offerClientField = new ComboBox();
offerClientField.setCaption("Cliente");
offerClientField.setImmediate(false);
offerClientField.setWidth("479px");
offerClientField.setHeight("-1px");
offerClientField.setRequired(true);
mainLayout.addComponent(offerClientField, "top:100.0px;left:21.0px;");
// offerDateField
offerDateField = new DateField();
offerDateField.setCaption("Fecha Oferta");
offerDateField.setImmediate(false);
offerDateField.setWidth("180px");
offerDateField.setHeight("-1px");
offerDateField.setInvalidAllowed(false);
offerDateField.setRequired(true);
offerDateField.setResolution(4);
mainLayout.addComponent(offerDateField, "top:20.0px;left:460.0px;");
// offerRequestField
offerRequestField = new TextField();
offerRequestField.setCaption("Petición Oferta");
offerRequestField.setImmediate(false);
offerRequestField.setWidth("180px");
offerRequestField.setHeight("-1px");
offerRequestField.setRequired(true);
mainLayout.addComponent(offerRequestField, "top:20.0px;left:140.0px;");
// offerStatusField
offerStatusField = new ComboBox();
offerStatusField.setCaption("Estado");
offerStatusField.setImmediate(false);
offerStatusField.setWidth("180px");
offerStatusField.setHeight("-1px");
offerStatusField.setRequired(true);
mainLayout.addComponent(offerStatusField, "top:60.0px;left:460.0px;");
// offerTypeField
offerTypeField = new ComboBox();
offerTypeField.setCaption("Tipo");
offerTypeField.setImmediate(false);
offerTypeField.setWidth("160px");
offerTypeField.setHeight("-1px");
offerTypeField.setRequired(true);
mainLayout.addComponent(offerTypeField, "top:60.0px;left:280.0px;");
// organizationField
organizationField = new ComboBox();
organizationField.setCaption("Organización");
organizationField.setImmediate(false);
organizationField.setWidth("240px");
organizationField.setHeight("-1px");
organizationField.setRequired(true);
mainLayout.addComponent(organizationField, "top:60.0px;left:20.0px;");
// priceField
priceField = new TextField();
priceField.setCaption("Precio");
priceField.setImmediate(false);
priceField.setWidth("114px");
priceField.setHeight("-1px");
mainLayout.addComponent(priceField, "top:140.0px;left:526.0px;");
// revisionField
revisionField = new TextField();
revisionField.setCaption("Revisión");
revisionField.setImmediate(false);
revisionField.setWidth("100px");
revisionField.setHeight("-1px");
mainLayout.addComponent(revisionField, "top:20.0px;left:340.0px;");
// offerLinesField
offerLinesField = new OfferLineCollectionField();
offerLinesField.setImmediate(false);
offerLinesField.setWidth("620px");
offerLinesField.setHeight("133px");
mainLayout.addComponent(offerLinesField, "top:260.0px;left:20.0px;");
return mainLayout;
}
}