use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.
the class JSForm method getVariables.
/**
* An array consisting of all form variables for this form.
*
* @sample
* var frm = solutionModel.getForm("myForm");
* var variables = frm.getVariables();
* for (var i in variables)
* application.output(variables[i].name);
*
* @param returnInheritedElements boolean true to also return the elements from the parent form
* @return an array of all variables on this form
*/
@JSFunction
public JSVariable[] getVariables(boolean returnInheritedElements) {
List<JSVariable> variables = new ArrayList<JSVariable>();
Form form2use = returnInheritedElements ? getFlattenedContainer() : getForm();
Iterator<ScriptVariable> scriptVariables = form2use.getScriptVariables(true);
while (scriptVariables.hasNext()) {
variables.add(new JSVariable(application, this, scriptVariables.next(), false));
}
return variables.toArray(new JSVariable[variables.size()]);
}
use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.
the class JSForm method getEventHandler.
public static <T extends AbstractBase> JSMethod getEventHandler(IApplication application, T persist, int methodid, IJSParent<?> parent, String propertyName) {
if (methodid > 0) {
IJSScriptParent<?> scriptParent = null;
ScriptMethod scriptMethod = null;
if (parent instanceof JSForm) {
// form method
scriptMethod = ((JSForm) parent).getSupportChild().getScriptMethod(methodid);
if (scriptMethod == null) {
Form f = ((JSForm) parent).getSupportChild();
while (f != null && f.getExtendsID() > 0 && scriptMethod == null) {
f = application.getFlattenedSolution().getForm(f.getExtendsID());
if (f != null)
scriptMethod = f.getScriptMethod(methodid);
}
if (scriptMethod != null) {
scriptParent = application.getScriptEngine().getSolutionModifier().instantiateForm(f, false);
}
}
}
if (scriptMethod == null) {
// foundset method
if (parent instanceof JSDataSourceNode) {
scriptMethod = ((JSDataSourceNode) parent).getSupportChild().getFoundsetMethod(methodid);
} else if (parent instanceof JSForm && ((JSForm) parent).getForm().getDataSource() != null) {
Iterator<ScriptMethod> foundsetMethods = application.getFlattenedSolution().getFoundsetMethods(((JSForm) parent).getForm().getDataSource(), false);
scriptMethod = AbstractBase.selectById(foundsetMethods, methodid);
if (scriptMethod != null) {
scriptParent = new JSDataSourceNode(application, ((JSForm) parent).getForm().getDataSource());
}
}
}
if (scriptMethod == null) {
// global method
scriptMethod = application.getFlattenedSolution().getScriptMethod(methodid);
}
if (scriptMethod != null) {
if (scriptParent == null) {
if (scriptMethod.getParent() instanceof TableNode && parent instanceof JSDataSourceNode) {
scriptParent = (JSDataSourceNode) parent;
} else if (scriptMethod.getParent() instanceof Solution) {
// global
scriptParent = null;
} else {
// form method
scriptParent = getJSFormParent(parent);
}
}
List<Object> arguments = persist.getFlattenedMethodArguments(propertyName);
if (arguments == null || arguments.size() == 0) {
return new JSMethod(scriptParent, scriptMethod, application, false);
} else {
return new JSMethodWithArguments(application, scriptParent, scriptMethod, false, arguments.toArray());
}
}
} else if (methodid == 0 && BaseComponent.isCommandProperty(propertyName)) {
return (JSMethod) ISMDefaults.COMMAND_DEFAULT;
}
return null;
}
use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.
the class JSForm method checkModification.
@Override
public final void checkModification() {
// make copy if needed
if (!isCopy) {
setForm(application.getFlattenedSolution().createPersistCopy(getForm()));
application.getFormManager().addForm(getForm(), false);
// forms scope still uses the old copy of Script Providers
Form oldform = getForm();
List<IFormController> controllers = application.getFormManager().getCachedFormControllers(getForm());
for (IFormController formController : controllers) {
FormScope formScope = formController.getFormScope();
formScope.updateProviderswithCopy(oldform, getForm());
}
isCopy = true;
} else {
application.getFlattenedSolution().flushFlattendFormCache(getForm(), true);
}
getForm().setLastModified(System.currentTimeMillis());
application.getFlattenedSolution().registerChangedForm(getForm());
useFormCache = false;
}
use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.
the class JSForm method getForm.
private Form getForm() {
if (!isCopy) {
// as long as the form is not already a copy, we have to get the real one
// so that changes to other instances of JSForm that points to the same form are seen in this one.
Form frm = application.getFlattenedSolution().getForm(form.getName());
form = frm != null ? frm : form;
}
return form;
}
use of com.servoy.j2db.persistence.Form in project servoy-client by Servoy.
the class JSForm method getEventHandler.
public static <T extends AbstractBase> JSMethod getEventHandler(IApplication application, T persist, String uuidOrName, IJSParent<?> parent, String propertyName) {
if (uuidOrName != null) {
IJSScriptParent<?> scriptParent = null;
ScriptMethod scriptMethod = application.getFlattenedSolution().getScriptMethod(uuidOrName);
;
if (scriptMethod != null) {
if (scriptMethod.getParent() instanceof TableNode && parent instanceof JSDataSourceNode) {
scriptParent = (JSDataSourceNode) parent;
} else if (scriptMethod.getParent() instanceof Solution) {
// global
scriptParent = null;
} else {
// form method
scriptParent = getJSFormParent(parent);
if (scriptMethod.getParent() != scriptParent.getSupportChild() && scriptParent.getSupportChild() instanceof Form) {
scriptParent = application.getScriptEngine().getSolutionModifier().instantiateForm((Form) scriptParent.getSupportChild(), false);
}
}
List<Object> arguments = persist.getFlattenedMethodArguments(propertyName);
if (arguments == null || arguments.size() == 0) {
return new JSMethod(scriptParent, scriptMethod, application, false);
} else {
return new JSMethodWithArguments(application, scriptParent, scriptMethod, false, arguments.toArray());
}
}
}
return null;
}
Aggregations