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