package org.openrosa.client.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.openrosa.client.Context;
import org.openrosa.client.model.FormDef;
import org.openrosa.client.model.IFormElement;
import org.openrosa.client.util.ItextLocale;
import org.openrosa.client.view.CenterPanel;
import org.openrosa.client.view.SaveFileDialog;
import org.openrosa.client.view.Toolbar;
import org.openrosa.client.xforms.XformBuilder;
import org.openrosa.client.xforms.XformParser;
import org.openrosa.client.xforms.XhtmlBuilder;
import org.openrosa.client.PurcConstants;
import org.openrosa.client.controller.IFormDesignerListener;
import org.openrosa.client.controller.IFormSaveListener;
import org.openrosa.client.controller.OpenFileDialogEventListener;
import org.openrosa.client.locale.LocaleText;
import org.openrosa.client.model.ModelConstants;
import org.openrosa.client.util.FormDesignerUtil;
import org.openrosa.client.util.FormUtil;
import org.openrosa.client.util.Itext;
import org.openrosa.client.util.LanguageUtil;
import org.openrosa.client.view.FormsTreeView;
import org.openrosa.client.xforms.XformUtil;
import org.openrosa.client.xforms.XmlUtil;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;
import com.google.gwt.xml.client.Document;
import com.google.gwt.xml.client.XMLParser;
/**
* Controls the interactions between the menu, tool bar and
* various views (eg Left and Center panels) for the form designer.
*
*
*/
public class FormDesignerController implements IFormDesignerListener, OpenFileDialogEventListener{
/** The panel on the right hand side of the form designer. */
private static CenterPanel centerPanel;
/** The panel on the left hand side of the form designer. */
private FormsTreeView formsTreeView;
private Toolbar toolbar;
/**
* The identifier of the loaded or opened form.
*/
private Integer formId;
/**
* The listener to form save events.
*/
private IFormSaveListener formSaveListener;
/** Action for saving form. */
private static final byte CA_SAVE_FORM = 2;
/** Action for refreshing a form. */
private static final byte CA_REFRESH_FORM = 3;
public static byte currentAction = 0;
/** The object that is being refreshed. */
private Object refreshObject;
private static FormDesignerController fdc;
/**
* Constructs a new instance of the form designer controller.
*
* @param centerPanel the right hand side panel.
* @param leftPanel the left hand side panel.
*/
public FormDesignerController(CenterPanel centerPanel, FormsTreeView treeView){
this.formsTreeView = treeView;
this.centerPanel = centerPanel;
this.centerPanel.setFormDesignerListener(this);
fdc = this;
}
public void setToolbar(Toolbar toolbar){
this.toolbar = toolbar;
}
public void alertToolbarQuestionAdded(IFormElement question){
toolbar.checkEnableAddSelect(question);
}
public void changePropertiesViewSelection(IFormElement objectDef){
centerPanel.getPropertiesView().changeSelectedObject(objectDef);
toolbar.checkEnableAddSelect(objectDef);
}
public static FormDesignerController getFormDesignerController(){
return fdc;
}
/**
* @see org.openrosa.client.controller.IFormActionListener#addNewItem()
*/
public void addNewItem() {
formsTreeView.addNewItem();
}
public void refreshTreeView(){
formsTreeView.refreshForm(Context.getFormDef());
}
/**
* @see org.openrosa.client.controller.IFormActionListener#addNewChildItem()
*/
public void addNewChildItem() {
formsTreeView.addNewChildItem();
}
/**
* @see org.openrosa.client.controller.IFormActionListener#addNewQuestion()
*/
public void addNewQuestion(int dataType){
formsTreeView.addNewQuestion(dataType);
}
/**
* @see org.openrosa.client.controller.IFormDesignerController#printForm()
*/
public void printForm(){
FormDef formDef = centerPanel.getFormDef();
if(formDef != null)
openForm(formDef.getName(), centerPanel.getFormInnerHtml());
}
/**
* Opens a new browser window with a given title and html contents.
*
* @param title the window title.
* @param html the window html contents.
*/
public static native void openForm(String title,String html) /*-{
var win =window.open('','purcforms','width=350,height=250,menubar=1,toolbar=1,status=1,scrollbars=1,resizable=1');
win.document.open("text/html","replace");
win.document.writeln('<html><head><title>' + title + '</title></head><body bgcolor=white onLoad="self.focus()">'+html+'</body></html>');
win.document.close();
}-*/;
/**
* @see org.openrosa.client.controller.IFormDesignerController#closeForm()
*/
public void closeForm() {
String url = FormUtil.getCloseUrl();
if(url != null && url.trim().length() > 0)
Window.Location.replace(url);
}
/**
* @see org.openrosa.client.controller.IFormActionListener#deleteSelectedItems()
*/
public void deleteSelectedItem() {
if(Context.getCurrentMode() == Context.MODE_QUESTION_PROPERTIES)
formsTreeView.deleteSelectedItem();
else
centerPanel.deleteSelectedItem();
}
/**
* @see org.openrosa.client.controller.IFormActionListener#moveItemDown()
*/
public void moveItemDown() {
formsTreeView.moveItemDown();
}
/**
* @see org.openrosa.client.controller.IFormActionListener#moveItemUp()
*/
public void moveItemUp() {
formsTreeView.moveItemUp();
}
// /**
// * @see org.openrosa.client.controller.IFormActionListener#newForm()
// */
// public void newForm() {
// if(isOfflineMode())
// formsTreeView.addNewForm();
// }
// /**
// * Loads a form from the Xforms Source tab, in a deferred command.
// *
// * @param id the form identifier.
// * @param readonly set to true to load the form in read only mode.
// */
// public void openFormDeffered(int id, boolean readonly) {
// final int tempFormId = id;
// final boolean tempReadonly = readonly;
//
// FormUtil.dlg.setText(LocaleText.get("openingForm"));
// FormUtil.dlg.center();
//
// DeferredCommand.addCommand(new Command(){
// public void execute() {
// try{
// String xml = centerPanel.getXformsSource().trim();
// if(xml.length() > 0){
// FormDef formDef = XformParser.fromXform2FormDef(xml,Context.getLanguageText());
// formDef.setReadOnly(tempReadonly);
//
// if(tempFormId != ModelConstants.NULL_ID)
// formDef.setId(tempFormId);
//
// if(formDef.getLayoutXml() != null)
// centerPanel.setLayoutXml(formDef.getLayoutXml(), false);
// else{
// //Could be from form runner which puts these contents in center panel
// //because it does not yet have a formdef by the time it has this data.
// formDef.setXformXml(centerPanel.getXformsSource());
// formDef.setLayoutXml(centerPanel.getLayoutXml());
// }
//
// if(formDef.getJavaScriptSource() != null)
// centerPanel.setJavaScriptSource(formDef.getJavaScriptSource());
// else
// formDef.setJavaScriptSource(centerPanel.getJavaScriptSource());
//
// //TODO May also need to refresh UI if form was not stored in default lang.
// HashMap<String,String> locales = Context.getLanguageText().get(formDef.getId());
// if(locales != null){
// formDef.setLanguageXml(FormUtil.formatXml(locales.get(Context.getLocale())));
// centerPanel.setLanguageXml(formDef.getLanguageXml(), false);
// }
//
// leftPanel.loadForm(formDef);
// centerPanel.loadForm(formDef,formDef.getLayoutXml());
// centerPanel.format();
// }
// FormUtil.dlg.hide();
// }
// catch(Exception ex){
// FormUtil.dlg.hide();
// FormUtil.displayException(ex);
// }
// }
// });
// }
/**
* Loads the form widget layout in the Layout Xml tab.
*
* @param selectTabs set to true to select the layout xml tab.
*/
public void openFormLayout(boolean selectTabs) {
openFormLayoutDeffered(selectTabs);
}
/**
* Loads the form widget layout in the Layout Xml tab, in a deferred command.
*
* @param selectTabs set to true to select the layout xml tab.
*/
public void openFormLayoutDeffered(boolean selectTabs) {
final boolean selectTbs = selectTabs;
FormUtil.dlg.setText(LocaleText.get("openingFormLayout"));
FormUtil.dlg.center();
DeferredCommand.addCommand(new Command(){
public void execute() {
try{
centerPanel.openFormLayout(selectTbs);
FormUtil.dlg.hide();
}
catch(Exception ex){
FormUtil.dlg.hide();
FormUtil.displayException(ex);
}
}
});
}
// /**
// * @see org.openrosa.client.controller.IFormDesignerController#saveForm()
// */
// public void saveForm(){
// saveTheForm();
// }
// private void saveTheForm() {
// final FormDef obj = formsTreeView.getSelectedForm();
//
// if(obj == null){
// Window.alert(LocaleText.get("selectSaveItem"));
// return;
// }
//
// if(Context.inLocalizationMode()){
// saveLanguageText();
// return;
// }
//
// FormUtil.dlg.setText(LocaleText.get("savingForm"));
// FormUtil.dlg.center();
//
// DeferredCommand.addCommand(new Command(){
// public void execute() {
// try{
// centerPanel.commitChanges();
//
// //TODO Need to preserve user's model and any others.
// String xml = null;
// FormDef formDef = obj;
// if(formDef.getDoc() == null)
// xml = XformBuilder.fromFormDef2Xform(formDef);
// else{
// formDef.updateDoc(false);
// xml = XmlUtil.fromDoc2String(formDef.getDoc());
// }
//
// xml = XformUtil.normalizeNameSpace(formDef.getDoc(), xml);
//
// xml = FormDesignerUtil.formatXml(xml);
//
// formDef.setXformXml(xml);
// /*centerPanel.setXformsSource(xml,formSaveListener == null && isOfflineMode());
// centerPanel.buildLayoutXml();
// formDef.setLayout(centerPanel.getLayoutXml());
//
// centerPanel.saveLanguageText(false);
// setLocaleText(formDef.getId(),Context.getLocale(), centerPanel.getLanguageXml());
//
// centerPanel.saveJavaScriptSource();
//
// if(!isOfflineMode() && formSaveListener == null)
// saveForm(xml,centerPanel.getLayoutXml(),PurcFormBuilder.getCombinedLanguageText(languageText.get(formDef.getId())),centerPanel.getJavaScriptSource());
//
// boolean saveLocaleText = false;
// if(formSaveListener != null)
// saveLocaleText = formSaveListener.onSaveForm(formDef.getId(), xml, centerPanel.getLayoutXml());*/
//
// if(isOfflineMode() || formSaveListener != null)
// FormUtil.dlg.hide();
//
// //Save text for the current language
// //if(saveLocaleText)
// // saveTheLanguageText(false,false);
// }
// catch(Exception ex){
// FormUtil.dlg.hide();
// FormUtil.displayException(ex);
// return;
// }
// }
// });
// }
// public void saveFormAs() {
// if(isOfflineMode()){
// final Object obj = formsTreeView.getSelectedForm();
// if(obj == null){
// Window.alert(LocaleText.get("selectSaveItem"));
// return;
// }
//
// FormUtil.dlg.setText(LocaleText.get("savingForm"));
// FormUtil.dlg.center();
//
// DeferredCommand.addCommand(new Command(){
// public void execute() {
// try{
// String xml = null;
// xml = XformBuilder.fromFormDef2Xform((FormDef)obj);
// xml = FormDesignerUtil.formatXml(xml);
// centerPanel.setXformsSource(xml,formSaveListener == null && isOfflineMode());
// FormUtil.dlg.hide();
// }
// catch(Exception ex){
// FormUtil.dlg.hide();
// FormUtil.displayException(ex);
// }
// }
// });
// }
// else
// saveAs();
// }
public void showAboutInfo() {
// AboutDialog dlg = new AboutDialog();
// dlg.setAnimationEnabled(true);
// dlg.center();
}
/**
* @see org.openrosa.client.controller.IFormDesignerController#alignLeft()
*/
public void showHelpContents() {
// TODO Auto-generated method stub
}
/**
* @see org.openrosa.client.controller.IFormDesignerController#showLanguages()
*/
public void showLanguages() {
// LocalesDialog dlg = new LocalesDialog();
// dlg.center();
//Appears unused
}
/**
* @see org.openrosa.client.controller.IFormDesignerController#showOptions()
*/
public void showOptions() {
// TODO Auto-generated method stub
}
/**
* @see org.openrosa.client.controller.IFormDesignerController#viewToolbar()
*/
public void viewToolbar() {
// TODO Auto-generated method stub
}
/**
* @see org.openrosa.client.controller.IFormDesignerController#alignLeft()
*/
public void alignLeft() {
centerPanel.alignLeft();
}
/**
* @see org.openrosa.client.controller.IFormDesignerController#alignRight()
*/
public void alignRight() {
centerPanel.alignRight();
}
/**
* @see org.openrosa.client.controller.IFormDesignerController#alignTop()
*/
public void alignTop() {
centerPanel.alignTop();
}
/**
* @see org.openrosa.client.controller.IFormDesignerController#alignBottom()
*/
public void alignBottom() {
centerPanel.alignBottom();
}
/**
* @see org.openrosa.client.controller.IFormDesignerController#makeSameHeight()
*/
public void makeSameHeight() {
centerPanel.makeSameHeight();
}
/**
* @see org.openrosa.client.controller.IFormDesignerController#makeSameSize()
*/
public void makeSameSize() {
centerPanel.makeSameSize();
}
/**
* @see org.openrosa.client.controller.IFormDesignerController#makeSameWidth()
*/
public void makeSameWidth() {
centerPanel.makeSameWidth();
}
/**
* @see org.openrosa.client.controller.IFormActionListener#copyItem()
*/
public void copyItem() {
if(!Context.isStructureReadOnly()){
if(Context.getCurrentMode() == Context.MODE_QUESTION_PROPERTIES)
formsTreeView.copyItem();
else
centerPanel.copyItem();
}
}
/**
* @see org.openrosa.client.controller.IFormActionListener#cutItem()
*/
public void cutItem() {
if(!Context.isStructureReadOnly()){
if(Context.getCurrentMode() == Context.MODE_QUESTION_PROPERTIES)
formsTreeView.cutItem();
else
centerPanel.cutItem();
}
}
/**
* @see org.openrosa.client.controller.IFormActionListener#pasteItem()
*/
public void pasteItem() {
if(!Context.isStructureReadOnly()){
if(Context.getCurrentMode() == Context.MODE_QUESTION_PROPERTIES)
formsTreeView.pasteItem();
else
centerPanel.pasteItem();
}
}
// /**
// * @see org.openrosa.client.controller.IFormActionListener#refreshItem()
// */
// public void refreshItem(){
// if(!Context.isStructureReadOnly())
// formsTreeView.refreshItem();
// }
/**
* @see org.openrosa.client.controller.IFormDesignerController#format()
*/
public void format() {
centerPanel.format();
}
// private void refreshObject() {
//
// //If the center panel's current mode does not allow refreshes
// //or the forms tree view is the one which has requested a refresh.
// if(!centerPanel.allowsRefresh() || refreshObject instanceof FormsTreeView ||
// Context.getCurrentMode() == Context.MODE_XFORMS_SOURCE){ //TODO This controller should not know about LeftPanel implementation details.
//
// if(formId != null){
// FormUtil.dlg.setText(LocaleText.get("refreshingForm"));
// FormUtil.dlg.center();
//
// DeferredCommand.addCommand(new Command(){
// public void execute() {
// refreshForm();
// FormUtil.dlg.hide();
// }
// });
// }
// else
// refreshFormDeffered();
// }
// else
// centerPanel.refresh();
// }
// public void refresh(Object sender) {
// refreshObject = sender;
//
// if(isOfflineMode())
// refreshObject();
// else{
// currentAction = CA_REFRESH_FORM;
// FormUtil.isAuthenticated();
// }
// }
public void saveForm(String xformXml, String layoutXml, String languageXml, String javaScriptSrc){
String url = FormUtil.getHostPageBaseURL();
url += FormUtil.getFormDefUploadUrlSuffix();
url += FormUtil.getFormIdName()+"="+this.formId;
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST,URL.encode(url));
try{
String xml = xformXml;
if(layoutXml != null && layoutXml.trim().length() > 0)
xml += PurcConstants.PURCFORMS_FORMDEF_LAYOUT_XML_SEPARATOR + layoutXml;
if(languageXml != null && languageXml.trim().length() > 0)
xml += PurcConstants.PURCFORMS_FORMDEF_LOCALE_XML_SEPARATOR + languageXml;
if(javaScriptSrc != null && javaScriptSrc.trim().length() > 0)
xml += PurcConstants.PURCFORMS_FORMDEF_JAVASCRIPT_SRC_SEPARATOR + javaScriptSrc;
builder.sendRequest(xml, new RequestCallback(){
public void onResponseReceived(Request request, Response response){
FormUtil.dlg.hide();
Window.alert(LocaleText.get("formSaveSuccess"));
}
public void onError(Request request, Throwable exception){
FormUtil.dlg.hide();
FormUtil.displayException(exception);
}
});
}
catch(RequestException ex){
FormUtil.dlg.hide();
FormUtil.displayException(ex);
}
}
public void saveLocaleText(String languageXml){
String url = FormUtil.getHostPageBaseURL();
url += FormUtil.getFormDefUploadUrlSuffix();
url += FormUtil.getFormIdName()+"="+this.formId;
url += "&localeXml=true";
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST,URL.encode(url));
try{
builder.sendRequest(languageXml, new RequestCallback(){
public void onResponseReceived(Request request, Response response){
FormUtil.dlg.hide();
Window.alert(LocaleText.get("formSaveSuccess"));
}
public void onError(Request request, Throwable exception){
FormUtil.dlg.hide();
FormUtil.displayException(exception);
}
});
}
catch(RequestException ex){
FormUtil.dlg.hide();
FormUtil.displayException(ex);
}
}
// /**
// * Checks if the form designer is in offline mode.
// *
// * @return true if in offline mode, else false.
// */
// public boolean isOfflineMode(){
// return formId == null;
// }
// private void refreshForm(){
// String url = FormUtil.getHostPageBaseURL();
// url += FormUtil.getFormDefRefreshUrlSuffix();
// url += FormUtil.getFormIdName()+"="+this.formId;
//
// //url += "&uname=Guyzb&pw=daniel123";
//
// RequestBuilder builder = new RequestBuilder(RequestBuilder.GET,URL.encode(url));
//
// try{
// builder.sendRequest(null, new RequestCallback(){
// public void onResponseReceived(Request request, Response response){
// String xml = response.getText();
// if(xml == null || xml.length() == 0){
// Window.alert(LocaleText.get("noDataFound"));
// return;
// }
//
// centerPanel.setXformsSource(xml,false);
// refreshFormDeffered();
// }
//
// public void onError(Request request, Throwable exception){
// FormUtil.displayException(exception);
// }
// });
// }
// catch(RequestException ex){
// FormUtil.displayException(ex);
// }
// }
// /**
// * Refreshes the selected from in a deferred command.
// */
// private void refreshFormDeffered(){
// FormUtil.dlg.setText(LocaleText.get("refreshingForm"));
// FormUtil.dlg.center();
//
// DeferredCommand.addCommand(new Command(){
// public void execute() {
// try{
// String xml = centerPanel.getXformsSource();
// if(xml != null && xml.trim().length() > 0){
// FormDef formDef = XformParser.fromXform2FormDef(xml);
//
// FormDef oldFormDef = centerPanel.getFormDef();
//
// //If we are in offline mode, we completely overwrite the form
// //with the contents of the xforms source tab.
// if(!isOfflineMode())
// formDef.refresh(oldFormDef);
//
// formDef.updateDoc(false);
// xml = formDef.getDoc().toString();
//
// formDef.setXformXml(FormUtil.formatXml(xml));
//
// formDef.setLayoutXml(oldFormDef.getLayoutXml());
// formDef.setLanguageXml(oldFormDef.getLanguageXml());
//
// formsTreeView.refreshForm(formDef);
// centerPanel.refresh();
// }
// FormUtil.dlg.hide();
// }
// catch(Exception ex){
// FormUtil.dlg.hide();
// FormUtil.displayException(ex);
// }
// }
// });
// }
/**
* Sets the listener to form save events.
*
* @param formSaveListener the listener.
*/
public void setFormSaveListener(IFormSaveListener formSaveListener){
this.formSaveListener = formSaveListener;
}
/**
* @see org.openrosa.client.controller.IFormActionListener#moveUp()
*/
public void moveUp(){
formsTreeView.moveUp();
}
/**
* @see org.openrosa.client.controller.IFormActionListener#moveDown()
*/
public void moveDown(){
formsTreeView.moveUp();
}
/**
* @see org.openrosa.client.controller.IFormActionListener#moveToParent()
*/
public void moveToParent(){
formsTreeView.moveToParent();
}
/**
* @see org.openrosa.client.controller.IFormActionListener#moveToChild()
*/
public void moveToChild(){
formsTreeView.moveToChild();
}
public void saveAs(){
try{
String data = (centerPanel.isInLayoutMode() ? centerPanel.getLayoutXml() : centerPanel.getXformsSource());
if(data == null || data.trim().length() == 0)
return;
FormDef formDef = formsTreeView.getFormDef();
String fileName = "filename";
if(formDef != null)
fileName = formDef.getName();
if(centerPanel.isInLayoutMode())
fileName += "-" + LocaleText.get("layout");
SaveFileDialog dlg = new SaveFileDialog(FormUtil.getFileSaveUrl(),data,fileName);
dlg.center();
}
catch(Exception ex){
FormUtil.displayException(ex);
}
}
public void openLanguageText(){
FormUtil.dlg.setText(LocaleText.get("translatingFormLanguage"));
FormUtil.dlg.center();
DeferredCommand.addCommand(new Command(){
public void execute() {
try{
int selFormId = -1; String xml = null;
FormDef formDef = formsTreeView.getFormDef();
if(formDef != null)
selFormId = formDef.getId();
List<FormDef> forms = formsTreeView.getForms();
if(forms != null && forms.size() > 0){
List<FormDef> newForms = new ArrayList<FormDef>();
for(FormDef form : forms){
xml = null;//getFormLocaleText(form.getId(),Itext.currentLocale.getName());
if(xml != null){
String xform = FormUtil.formatXml(LanguageUtil.translate(form.getDoc(), xml, true));
FormDef newFormDef = XformParser.fromXform2FormDef(xform);
newFormDef.setXformXml(xform);
newFormDef.setLayoutXml(FormUtil.formatXml(LanguageUtil.translate(form.getLayoutXml(), xml, false)));
newFormDef.setLanguageXml(xml);
newForms.add(newFormDef);
if(newFormDef.getId() == selFormId)
formDef = newFormDef;
}
else{
newForms.add(form);
if(form.getId() == selFormId)
formDef = form;
}
}
formsTreeView.loadForms(newForms, formDef.getId());
}
FormUtil.dlg.hide();
String layoutXml = centerPanel.getLayoutXml();
if(layoutXml != null && layoutXml.trim().length() > 0)
openFormLayout(false);
}
catch(Exception ex){
FormUtil.dlg.hide();
FormUtil.displayException(ex);
}
}
});
}
/**
* Saves locale text for the selected form, in a deferred command.
*
* @param selectTab set to true to select the language tab.
*/
public void saveLanguageText(){
FormUtil.dlg.setText(LocaleText.get("savingLanguageText"));
FormUtil.dlg.center();
DeferredCommand.addCommand(new Command(){
public void execute() {
saveTheLanguageText();
}
});
}
/**
* Saves locale text for the selected form, in a non deferred command.
*
* @param selectTab set to true to select the language tab.
* @param rebuild set to true to rebuild the language xml.
*/
public void saveTheLanguageText(){
// throw new Exception("Implement me!!");
// FormUtil.displayException(ex);
}
// /**
// * Reloads forms in a given locale.
// *
// * @param locale the locale.
// */
// public boolean changeLocale(final ItextLocale locale){
//
// final FormDef formDef = centerPanel.getFormDef();
// if(formDef == null)
// return false;
//
// //We need to have saved a form in order to translate it.
// if(formDef.getDoc() == null)
// saveForm();
// else if(!Window.confirm(LocaleText.get("localeChangePrompt")))
// return false;
//
// //We need to do the translation in a differed command such that it happens after form saving,
// //just in case form hadn't yet been saved.
// DeferredCommand.addCommand(new Command(){
// public void execute() {
//
// //Store the new locale.
// Itext.setCurrentLocale(locale);
//
// HashMap<String,String> map = Context.getLanguageText().get(formDef.getId());
//
// String xml = null;
// //Get text for this locale, if we have it.
// if(map != null)
// xml = map.get(locale.getName());
//
// //If we don't, then get text for the default locale.
// if(xml == null && map != null)
// xml = map.get(Itext.getDefaultLocale().getName());
//
// //Now reload the forms in this selected locale.
// centerPanel.setLanguageXml(xml, false);
// openLanguageText();
// }
// });
//
// return true;
// }
// /**
// * Sets locale text for a given form.
// *
// * @param formId the form identifier.
// * @param locale the locale key.
// * @param text the form locale text.
// */
// private void setLocaleText(Integer formId, String locale, String text){
// HashMap<String,String> map = Context.getLanguageText().get(formId);
// if(map == null){
// map = new HashMap<String,String>();
// Context.getLanguageText().put(formId, map);
// }
//
// map.put(locale, text);
// }
// /**
// * Gets locale text for a given form.
// *
// * @param formId the form identifier.
// * @param locale the locale key.
// * @return the form locale text.
// */
// private String getFormLocaleText(int formId, String locale){
// HashMap<String,String> map = Context.getLanguageText().get(formId);
// if(map != null)
// return map.get(locale);
// return null;
// }
//
// /**
// * Sets xforms and layout locale text for a given form.
// *
// * @param formId the form identifier.
// * @param locale the locale key.
// * @param xform the xforms locale text.
// * @param layout the layout locale text.
// */
// public void setLocaleText(Integer formId, String locale, String xform, String layout){
// setLocaleText(formId,locale, LanguageUtil.getLocaleText(xform, layout));
// }
// /**
// * Embeds the selected xform into xhtml.
// */
// public void saveAsXhtml(){
// if(!isOfflineMode())
// return;
//
// final Object obj = formsTreeView.getSelectedForm();
// if(obj == null){
// Window.alert(LocaleText.get("selectSaveItem"));
// return;
// }
//
// FormUtil.dlg.setText(LocaleText.get("savingForm"));
// FormUtil.dlg.center();
//
// DeferredCommand.addCommand(new Command(){
// public void execute() {
// try{
// FormDef formDef = new FormDef((FormDef)obj);
// formDef.setDoc(((FormDef)obj).getDoc()); //We want to copy the model xml
// String xml = XhtmlBuilder.fromFormDef2Xhtml(formDef);
// xml = FormDesignerUtil.formatXml(xml);
// centerPanel.setXformsSource(xml,formSaveListener == null && isOfflineMode());
// FormUtil.dlg.hide();
// }
// catch(Exception ex){
// FormUtil.dlg.hide();
// FormUtil.displayException(ex);
// }
// }
// });
// }
// public void saveAsPurcForm(){
// //if(!isOfflineMode())
// // return;
//
// /*if(isOfflineMode())
// saveTheForm();
//
// DeferredCommand.addCommand(new Command(){
// public void execute() {
//
// FormUtil.dlg.setText(LocaleText.get("savingForm"));
// FormUtil.dlg.center();
//
// DeferredCommand.addCommand(new Command(){
// public void execute() {
// try{
// FormDef formDef = leftPanel.getSelectedForm();
// String xml = PurcFormBuilder.build(formDef, languageText.get(formDef.getId()));
// xml = FormDesignerUtil.formatXml(xml);
//
// FormUtil.dlg.hide();
//
// if(isOfflineMode())
// centerPanel.setXformsSource(xml,formSaveListener == null && isOfflineMode());
// else{
// SaveFileDialog dlg = new SaveFileDialog(FormUtil.getFileSaveUrl(),xml,formDef.getName());
// dlg.center();
// }
// }
// catch(Exception ex){
// FormUtil.dlg.hide();
// FormUtil.displayException(ex);
// }
// }
// });
//
// }
// });*/
// }
@Override
public boolean handleKeyBoardEvent(Event event) {
// TODO Auto-generated method stub
return false;
}
@Override
public void openFormLayout() {
// TODO Auto-generated method stub
}
@Override
public void onSetFileContents(String contents) {
// TODO Auto-generated method stub
}
@Override
public void openForm() {
// TODO Auto-generated method stub
}
@Override
public void saveFormLayout() {
// TODO Auto-generated method stub
}
@Override
public boolean changeLocale(ItextLocale locale) {
// TODO Auto-generated method stub
return false;
}
@Override
public void refresh(Object sender) {
// TODO Auto-generated method stub
}
@Override
public void saveAsPurcForm() {
// TODO Auto-generated method stub
}
@Override
public void saveAsXhtml() {
// TODO Auto-generated method stub
}
@Override
public void saveForm() {
// TODO Auto-generated method stub
}
@Override
public void saveFormAs() {
// TODO Auto-generated method stub
}
@Override
public void refreshItem() {
// TODO Auto-generated method stub
}
public void addYesNoQuestion() {
formsTreeView.addYesNoQuestion();
}
}