Search in sources :

Example 96 with Form

use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.

the class FoundsetTest method fillTestSolution.

@Override
protected void fillTestSolution() throws ServoyException {
    try {
        Form form = solution.createNewForm(validator, null, "test", "mem:test", false, new Dimension(600, 400));
        form.setNavigatorID(-1);
        form.createNewPart(IBaseSMPart.BODY, 5);
        WebComponent bean = form.createNewWebComponent("mycustombean", "my-component");
        bean.setProperty("myfoundset", new ServoyJSONObject("{foundsetSelector:'',dataproviders:{firstname:'test1',lastname:'test2'}}", false));
        bean.setProperty("myfoundsetWithAllow", new ServoyJSONObject("{foundsetSelector:'',dataproviders:{firstname:'test1',lastname:'test2'}}", false));
        WebComponent bean1 = form.createNewWebComponent("mydynamiccustombean", "my-dynamiccomponent");
        bean1.setProperty("myfoundset", new ServoyJSONObject("{foundsetSelector:'test_to_relatedtest', dataproviders:{dp1:'relatedtest1',dp2:'relatedtest2'}}", false));
        bean1.setProperty("myfoundsetWithAllow", new ServoyJSONObject("{foundsetSelector:'test_to_relatedtest', dataproviders:{dp1:'relatedtest1',dp2:'relatedtest2'}}", false));
        WebComponent bean2 = form.createNewWebComponent("mycustomseparatefoundsetbean", "my-component");
        bean2.setProperty("myfoundset", new ServoyJSONObject("{foundsetSelector: \"mem:testseparatefoundset\", loadAllRecords: true, dataproviders:{firstname:'test1',lastname:'test2'}}", false));
    } catch (JSONException e) {
        e.printStackTrace();
        throw new ServoyException();
    }
}
Also used : WebComponent(com.servoy.j2db.persistence.WebComponent) ServoyJSONObject(com.servoy.j2db.util.ServoyJSONObject) Form(com.servoy.j2db.persistence.Form) JSONException(org.json.JSONException) Dimension(java.awt.Dimension) ServoyException(com.servoy.j2db.util.ServoyException)

Example 97 with Form

use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.

the class PersistFieldInstanceTest method testCustomComponentWithFormProperty.

@Test
public void testCustomComponentWithFormProperty() throws RepositoryException, JSONException {
    // TODO this should become a test on form uuid in the inner html/bean xml instead of the form name..
    Form form = solution.getForm("test");
    Assert.assertNotNull(form);
    DataAdapterList dataAdapterList = new DataAdapterList(new TestFormController(form, client));
    Form tabForm = solution.createNewForm(validator, null, "tabform", null, false, new Dimension(600, 400));
    // as client's "inDesigner" == true we will generate an error bean because legacy Bean usage for custom web components with custom object/array types is depreacated and not fully working (in designer at least)
    // so we will check that it generates an error bean (that means no props are set)
    // TODO maybe this can be uncommented after https://support.servoy.com/browse/SVY-9459 is done
    // Bean bean = form.createNewBean("mycustombean", "my-component");
    // bean.setInnerHTML("{atype:{name:'name',form:'tabform'}}");
    List<FormElement> formElements = FormElementHelper.INSTANCE.getFormElements(form.getAllObjects(), new ServoyDataConverterContext(client));
    // Assert.assertEquals(1, formElements.size());
    // WebFormComponent wc = ComponentFactory.createComponent(client, dataAdapterList, formElements.get(0), null);
    @SuppressWarnings("unchecked") WebComponent // form.removeChild(bean);
    webComponent = form.createNewWebComponent("mycustombean", "my-component");
    webComponent.setProperty("atype", new ServoyJSONObject("{name:'name',form:'tabform'}", false));
    formElements = FormElementHelper.INSTANCE.getFormElements(form.getAllObjects(), new ServoyDataConverterContext(client));
    Assert.assertEquals(1, formElements.size());
    WebFormComponent wc = ComponentFactory.createComponent(client, dataAdapterList, formElements.get(0), null, form);
    Map<String, Object> type = (Map<String, Object>) wc.getProperty("atype");
    Assert.assertEquals("name", type.get("name"));
    Assert.assertEquals("tabform", type.get("form"));
    Assert.assertEquals(0, wc.getAndClearChanges().content.size());
    TypedData<Map<String, Object>> props = wc.getProperties();
    String json = JSONUtils.writeDataWithConversions(props.content, props.contentType, null);
    JSONAssert.assertEquals("{\"atype\":{\"rt\":\"my-component.mytype\",\"vEr\":2,\"v\":{\"form\":\"tabform\",\"name\":\"name\"}},\"svyMarkupId\":\"sf331d64ddc0c17747371b7740e3e3447\",\"svy_types\":{\"atype\":\"JSON_obj\"}}", json, true);
}
Also used : Form(com.servoy.j2db.persistence.Form) WebFormComponent(com.servoy.j2db.server.ngclient.WebFormComponent) IDataAdapterList(com.servoy.j2db.server.ngclient.IDataAdapterList) DataAdapterList(com.servoy.j2db.server.ngclient.DataAdapterList) Dimension(java.awt.Dimension) FormElement(com.servoy.j2db.server.ngclient.FormElement) WebComponent(com.servoy.j2db.persistence.WebComponent) ServoyJSONObject(com.servoy.j2db.util.ServoyJSONObject) ServoyDataConverterContext(com.servoy.j2db.server.ngclient.ServoyDataConverterContext) ServoyJSONObject(com.servoy.j2db.util.ServoyJSONObject) HashMap(java.util.HashMap) Map(java.util.Map) Test(org.junit.Test)

Example 98 with Form

use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.

the class PersistFieldInstanceTest method fillTestSolution.

@Override
protected void fillTestSolution() throws RepositoryException {
    Form form = solution.createNewForm(validator, null, "test", null, false, new Dimension(600, 400));
    form.setNavigatorID(-1);
    ValueList valuelist = solution.createNewValueList(validator, "test");
    valuelist.setValueListType(IValueListConstants.CUSTOM_VALUES);
    valuelist = solution.createNewValueList(validator, "test_items");
    valuelist.setValueListType(IValueListConstants.CUSTOM_VALUES);
    valuelist.setAddEmptyValue(IValueListConstants.EMPTY_VALUE_NEVER);
}
Also used : Form(com.servoy.j2db.persistence.Form) ValueList(com.servoy.j2db.persistence.ValueList) CustomValueList(com.servoy.j2db.dataprocessing.CustomValueList) IValueList(com.servoy.j2db.dataprocessing.IValueList) Dimension(java.awt.Dimension)

Example 99 with Form

use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.

the class PersistFieldInstanceTest method testCustomComponentWithI18NProperty.

@Test
public void testCustomComponentWithI18NProperty() throws RepositoryException, JSONException {
    Form form = solution.getForm("test");
    Assert.assertNotNull(form);
    DataAdapterList dataAdapterList = new DataAdapterList(new TestFormController(form, client));
    WebComponent bean = form.createNewWebComponent("mycustombean", "my-component");
    bean.setProperty("atype", new ServoyJSONObject("{name:'name',text:'i18n:servoy.button.ok'}", false));
    List<FormElement> formElements = FormElementHelper.INSTANCE.getFormElements(form.getAllObjects(), new ServoyDataConverterContext(client));
    Assert.assertEquals(1, formElements.size());
    WebFormComponent wc = ComponentFactory.createComponent(client, dataAdapterList, formElements.get(0), null, form);
    BrowserConverterContext allowBrowserConverterContext = new BrowserConverterContext(wc, PushToServerEnum.allow);
    Map<String, Object> type = (Map<String, Object>) wc.getProperty("atype");
    Assert.assertEquals("name", type.get("name"));
    // it gets automatically translated to a static string
    Assert.assertEquals("OK", ((BasicTagStringTypeSabloValue) type.get("text")).getDesignValue());
    Assert.assertEquals("OK", ((BasicTagStringTypeSabloValue) type.get("text")).getTagReplacedValue());
    Assert.assertEquals(0, wc.getAndClearChanges().content.size());
    TypedData<Map<String, Object>> props = wc.getProperties();
    String json = JSONUtils.writeDataWithConversions(props.content, props.contentType, allowBrowserConverterContext);
    JSONAssert.assertEquals("{\"atype\":{\"rt\":\"my-component.mytype\",\"vEr\":2,\"v\":{\"text\":\"OK\",\"name\":\"name\"}},\"svyMarkupId\":\"sf331d64ddc0c17747371b7740e3e3447\",\"svy_types\":{\"atype\":\"JSON_obj\"}}", json, true);
}
Also used : Form(com.servoy.j2db.persistence.Form) WebFormComponent(com.servoy.j2db.server.ngclient.WebFormComponent) IDataAdapterList(com.servoy.j2db.server.ngclient.IDataAdapterList) DataAdapterList(com.servoy.j2db.server.ngclient.DataAdapterList) FormElement(com.servoy.j2db.server.ngclient.FormElement) WebComponent(com.servoy.j2db.persistence.WebComponent) ServoyJSONObject(com.servoy.j2db.util.ServoyJSONObject) ServoyDataConverterContext(com.servoy.j2db.server.ngclient.ServoyDataConverterContext) BrowserConverterContext(org.sablo.specification.property.BrowserConverterContext) ServoyJSONObject(com.servoy.j2db.util.ServoyJSONObject) HashMap(java.util.HashMap) Map(java.util.Map) Test(org.junit.Test)

Example 100 with Form

use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.

the class RelatedFormsTest method testRelatedFormsInTabPanels.

@Test
public void testRelatedFormsInTabPanels() throws RepositoryException {
    // f1 is the main
    // 
    // 3 forms on that main
    // 
    // f2 "relation2"
    // f3 "relation2.relation3"
    // f4 "relation2.relation3.relation4"
    Form f1 = solution.createNewForm(validator, null, "f1", null, false, new Dimension(600, 400));
    IWebFormController f1Controller = new TestFormController(f1, client);
    IDataAdapterList dataAdapterListF1 = f1Controller.getFormUI().getDataAdapterList();
    Form f2 = solution.createNewForm(validator, null, "f2", null, false, new Dimension(600, 400));
    IWebFormController f2Controller = new TestFormController(f2, client);
    IDataAdapterList dataAdapterListF2 = f2Controller.getFormUI().getDataAdapterList();
    Form f3 = solution.createNewForm(validator, null, "f3", null, false, new Dimension(600, 400));
    IWebFormController f3Controller = new TestFormController(f3, client);
    IDataAdapterList dataAdapterListF3 = f3Controller.getFormUI().getDataAdapterList();
    Form f4 = solution.createNewForm(validator, null, "f4", null, false, new Dimension(600, 400));
    IWebFormController f4Controller = new TestFormController(f4, client);
    IDataAdapterList dataAdapterListF4 = f4Controller.getFormUI().getDataAdapterList();
    TabPanel tabpanelF2 = f1.createNewTabPanel("tabpanelF2");
    tabpanelF2.createNewTab("tab1", "relation2", f2);
    TabPanel tabpanelF3 = f1.createNewTabPanel("tabpanelF3");
    tabpanelF3.createNewTab("tab1", "relation2.relation3", f3);
    TabPanel tabpanelF4 = f1.createNewTabPanel("tabpanelF4");
    tabpanelF4.createNewTab("tab1", "relation2.relation3.relation4", f4);
    dataAdapterListF1.addVisibleChildForm(f2Controller, "relation2", true);
    // relatedForms of f1 has now f2
    Assert.assertEquals(1, dataAdapterListF1.getRelatedForms().size());
    Assert.assertEquals("relation2", dataAdapterListF1.getRelatedForms().get(f2Controller));
    dataAdapterListF1.addVisibleChildForm(f3Controller, "relation2.relation3", true);
    // relatedForms of f1 has now f2 and f3
    Assert.assertEquals(2, dataAdapterListF1.getRelatedForms().size());
    Assert.assertEquals("relation2.relation3", dataAdapterListF1.getRelatedForms().get(f3Controller));
    // also f2 relatedForms has f3
    Assert.assertEquals(1, dataAdapterListF2.getRelatedForms().size());
    Assert.assertEquals("relation3", dataAdapterListF2.getRelatedForms().get(f3Controller));
    // and f3 relatedParentsForms has f2
    Assert.assertEquals(1, dataAdapterListF3.getParentRelatedForms().size());
    Assert.assertEquals(dataAdapterListF3.getParentRelatedForms().toString() + " should have:" + f2Controller, 0, dataAdapterListF3.getParentRelatedForms().indexOf(f2Controller));
    Assert.assertNotEquals(dataAdapterListF3.getParentRelatedForms().toString() + " should have:" + f2Controller, -1, dataAdapterListF3.getParentRelatedForms().indexOf(f2Controller));
    dataAdapterListF1.addVisibleChildForm(f4Controller, "relation2.relation3.relation4", true);
    // relatedForms of f1 has now f2 and f3 and f4
    Assert.assertEquals(3, dataAdapterListF1.getRelatedForms().size());
    Assert.assertEquals("relation2.relation3.relation4", dataAdapterListF1.getRelatedForms().get(f4Controller));
    // relatedForms of f2 has now f3 and f4
    Assert.assertEquals(2, dataAdapterListF2.getRelatedForms().size());
    Assert.assertEquals("relation3", dataAdapterListF2.getRelatedForms().get(f3Controller));
    Assert.assertEquals("relation3.relation4", dataAdapterListF2.getRelatedForms().get(f4Controller));
    // and f4 relatedParentsForms has f2 and f3
    Assert.assertEquals(2, dataAdapterListF4.getParentRelatedForms().size());
    Assert.assertTrue(dataAdapterListF4.getParentRelatedForms() + " should have " + f2Controller, dataAdapterListF4.getParentRelatedForms().indexOf(f2Controller) >= 0);
    Assert.assertTrue(dataAdapterListF4.getParentRelatedForms() + " should have " + f3Controller, dataAdapterListF4.getParentRelatedForms().indexOf(f3Controller) >= 0);
    dataAdapterListF1.removeVisibleChildForm(f4Controller, true);
    // relatedForms of f1 has now f2 and f3
    Assert.assertEquals(2, dataAdapterListF1.getRelatedForms().size());
    Assert.assertEquals("relation2", dataAdapterListF1.getRelatedForms().get(f2Controller));
    Assert.assertEquals("relation2.relation3", dataAdapterListF1.getRelatedForms().get(f3Controller));
    // relatedForms of f2 has now f3
    Assert.assertEquals(1, dataAdapterListF2.getRelatedForms().size());
    Assert.assertEquals("relation3", dataAdapterListF2.getRelatedForms().get(f3Controller));
    dataAdapterListF2.removeVisibleChildForm(f3Controller, true);
    // relatedForms of f1 has now f2 and f3
    Assert.assertEquals(2, dataAdapterListF1.getRelatedForms().size());
    Assert.assertEquals("relation2", dataAdapterListF1.getRelatedForms().get(f2Controller));
    Assert.assertEquals("relation2.relation3", dataAdapterListF1.getRelatedForms().get(f3Controller));
    // relatedForms of f2 has no related forms
    Assert.assertEquals(0, dataAdapterListF2.getRelatedForms().size());
}
Also used : TabPanel(com.servoy.j2db.persistence.TabPanel) Form(com.servoy.j2db.persistence.Form) IDataAdapterList(com.servoy.j2db.server.ngclient.IDataAdapterList) Dimension(java.awt.Dimension) IWebFormController(com.servoy.j2db.server.ngclient.IWebFormController) Test(org.junit.Test)

Aggregations

Form (com.servoy.j2db.persistence.Form)146 FlattenedForm (com.servoy.j2db.persistence.FlattenedForm)35 ArrayList (java.util.ArrayList)32 Point (java.awt.Point)26 FlattenedSolution (com.servoy.j2db.FlattenedSolution)24 IPersist (com.servoy.j2db.persistence.IPersist)22 ISMForm (com.servoy.j2db.solutionmodel.ISMForm)20 JSONObject (org.json.JSONObject)20 Solution (com.servoy.j2db.persistence.Solution)16 Dimension (java.awt.Dimension)15 Part (com.servoy.j2db.persistence.Part)14 RepositoryException (com.servoy.j2db.persistence.RepositoryException)14 FormController (com.servoy.j2db.FormController)13 WebFormComponent (com.servoy.j2db.server.ngclient.WebFormComponent)12 IMobileSMForm (com.servoy.base.solutionmodel.mobile.IMobileSMForm)11 IForm (com.servoy.j2db.IForm)11 ScriptMethod (com.servoy.j2db.persistence.ScriptMethod)11 FormElement (com.servoy.j2db.server.ngclient.FormElement)11 HashMap (java.util.HashMap)11 JSFunction (org.mozilla.javascript.annotations.JSFunction)11