package com.eas.form; public class JsForms { public native static void init()/*-{ function predefine(aDeps, aName, aDefiner){ @com.eas.core.Predefine::predefine(Lcom/google/gwt/core/client/JavaScriptObject;Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(aDeps, aName, aDefiner); } predefine(['boxing', 'ui', 'forms/form'], 'forms', function(B, Ui, Form){ function readFormDocument(aDocumnet, aModuleName, aModel, aTarget){ var factory = @com.eas.form.store.XmlDom2Form::transform(Lcom/google/gwt/xml/client/Document;Ljava/lang/String;Lcom/google/gwt/core/client/JavaScriptObject;)(aDocumnet, aModuleName, aModel); if(factory){ var nativeForm = factory.@com.eas.form.FormReader::getForm()(); if(aTarget) Form.call(aTarget, null, null, nativeForm); else aTarget = new Form(null, null, nativeForm); var nwList = factory.@com.eas.form.FormReader::getWidgetsList()(); for(var i = 0; i < nwList.@java.util.List::size()(); i++){ var nWidget = nwList.@java.util.List::get(I)(i); var pWidget = nWidget.@com.eas.core.HasPublished::getPublished()(); if(pWidget.name){ aTarget[pWidget.name] = pWidget; } } return aTarget; }else{ return null; } } function loadForm(aModuleName, aModel, aTarget) { var aClient = @com.eas.client.AppClient::getInstance()(); var layoutDoc = aClient.@com.eas.client.AppClient::getFormDocument(Ljava/lang/String;)(aModuleName); if(layoutDoc){ var form = readFormDocument(layoutDoc, aModuleName, aModel, aTarget); if (!form.title) form.title = aModuleName; form.formKey = aModuleName; return form; } else { throw "UI definition for module '" + aModuleName + "' is not found. May be it hasn't been prefetched"; } } function readForm(aFormContent, aModel, aTarget){ var doc = @com.google.gwt.xml.client.XMLParser::parse(Ljava/lang/String;)(aFormContent + ''); return readFormDocument(doc, null, aModel, aTarget); } var module = {}; Object.defineProperty(module, 'loadForm', { enumerable: true, value : loadForm }); Object.defineProperty(module, 'loadWidgets', { enumerable: true, value : Ui.loadWidgets }); Object.defineProperty(module, 'readForm', { enumerable: true, value : readForm }); Object.defineProperty(module, 'readWidgets', { enumerable: true, value : Ui.readWidgets }); return module; }); }-*/; }