Changeset 1499
- Timestamp:
- 11/30/08 02:43:42 (5 weeks ago)
- Location:
- branches/dev-bdr/j2merosa/org.javarosa.formmanager/org.javarosa.formmanager/src/org/javarosa/formmanager/activity
- Files:
-
- 1 added
- 1 modified
-
FormEntryActivity.java (modified) (6 diffs)
-
FormLoadActivity.java (added)
Legend:
- Unmodified
- Added
- Removed
-
branches/dev-bdr/j2merosa/org.javarosa.formmanager/org.javarosa.formmanager/src/org/javarosa/formmanager/activity/FormEntryActivity.java
r1431 r1499 1 1 package org.javarosa.formmanager.activity; 2 2 3 import java.io.IOException;4 3 import java.util.Enumeration; 5 4 import java.util.Hashtable; … … 19 18 import org.javarosa.core.api.IView; 20 19 import org.javarosa.core.model.FormDef; 21 import org.javarosa.core.model.IFormDataModel;22 import org.javarosa.core.model.condition.EvaluationContext;23 import org.javarosa.core.model.condition.IFunctionHandler;24 import org.javarosa.core.model.instance.DataModelTree;25 import org.javarosa.core.model.storage.DataModelTreeRMSUtility;26 import org.javarosa.core.model.utils.ContextPreloadHandler;27 import org.javarosa.core.model.utils.IPreloadHandler;28 import org.javarosa.core.util.externalizable.DeserializationException;29 20 import org.javarosa.formmanager.controller.FormEntryController; 30 21 import org.javarosa.formmanager.controller.IControllerHost; 31 22 import org.javarosa.formmanager.model.FormEntryModel; 32 23 import org.javarosa.formmanager.properties.FormManagerProperties; 33 import org.javarosa.formmanager.utility.FormDefFetcher;34 24 import org.javarosa.formmanager.utility.IFormDefRetrievalMethod; 35 import org.javarosa.formmanager.utility.RMSRetreivalMethod;36 25 import org.javarosa.formmanager.view.IFormEntryView; 37 26 import org.javarosa.formmanager.view.IFormEntryViewFactory; 27 import org.javarosa.polish.activity.loadingscreen.LoadingScreenActivity; 38 28 39 public class FormEntryActivity implements IActivity, IControllerHost, CommandListener {29 public class FormEntryActivity implements IActivity, IControllerHost, CommandListener { 40 30 41 31 /** Alert if the form cannot load **/ … … 59 49 private IFormEntryViewFactory viewFactory; 60 50 61 private ContextPreloadHandler contextHandler;51 private FormLoadActivity formLoader = null; 62 52 63 FormDefFetcher fetcher; 64 53 private LoadingScreenActivity loadingScreen = null; 54 55 private int instanceID = -1; 65 56 66 57 /** Loading error string **/ … … 70 61 this.parent = parent; 71 62 this.viewFactory = viewFactory; 72 this.fetcher = new FormDefFetcher(); 73 this.fetcher.setFetcher(new RMSRetreivalMethod()); 63 64 this.formLoader = new FormLoadActivity(this); 65 this.loadingScreen = new LoadingScreenActivity(this.parent); 74 66 } 75 67 … … 86 78 } 87 79 88 public void start (Context context) { 89 FormDef theForm = null; 90 int instanceID = -1; 91 92 if (context instanceof FormEntryContext) { 93 this.context = (FormEntryContext) context; 94 instanceID = this.context.getInstanceID(); 95 } 80 public void returnFromLoading(FormEntryContext context) { 81 // Kill the thread for the loading screen 82 this.loadingScreen.halt(); 83 this.loadingScreen = null; 96 84 97 theForm = fetcher.getFormDef(context); 98 if (theForm != null) { 99 100 try { 101 if (instanceID != -1) { 102 DataModelTreeRMSUtility modelUtil = (DataModelTreeRMSUtility)JavaRosaServiceProvider.instance().getStorageManager().getRMSStorageProvider().getUtility(DataModelTreeRMSUtility.getUtilityName()); 103 IFormDataModel theModel = new DataModelTree(); 104 modelUtil.retrieveFromRMS(this.context.getInstanceID(), theModel); 105 theForm.setDataModel(theModel); 106 } 107 } catch (IOException e) { 108 e.printStackTrace(); 109 } catch (DeserializationException uee) { 110 uee.printStackTrace(); 111 } 112 113 theForm.setEvaluationContext(initEvaluationContext()); 114 initPreloadHandlers(theForm); // must always load; even if we won't preload, we may still post-process! 115 116 theForm.initialize(instanceID == -1); 117 118 model = new FormEntryModel(theForm, instanceID); 85 // get the form 86 FormDef theForm = (FormDef)context.getElement("theForm"); 87 context = null; 88 89 if( theForm != null){ 90 model = new FormEntryModel(theForm, this.instanceID); 119 91 controller = new FormEntryController(model, this); 120 92 String viewString = JavaRosaServiceProvider.instance().getPropertyManager().getSingularProperty(FormManagerProperties.VIEW_TYPE_PROPERTY); 93 System.out.println("making view! " + viewString + model + controller); 121 94 view = viewFactory.getFormEntryView(viewString, model, controller); 95 System.out.println("setting context"); 122 96 view.setContext(this.context); 123 97 controller.setView(view); 124 98 99 System.out.println("showing view!"); 125 100 view.show(); 126 127 101 } else { 128 102 displayError(LOAD_ERROR); 129 103 } 130 104 } 131 132 private void initPreloadHandlers (FormDef f) {133 Vector preloadHandlers = this.context.getPreloadHandlers();134 if(preloadHandlers != null) {135 Enumeration en = preloadHandlers.elements();136 while(en.hasMoreElements()) {137 f.getPreloader().addPreloadHandler((IPreloadHandler)en.nextElement());138 }139 }140 141 //set handler for preload context142 contextHandler = new ContextPreloadHandler(context);143 f.getPreloader().addPreloadHandler(contextHandler);144 }145 105 146 p rivate EvaluationContext initEvaluationContext () {147 EvaluationContext ec = new EvaluationContext();106 public void start (Context context) { 107 this.instanceID = -1; 148 108 149 Vector functionHandlers = this.context.getFunctionHandlers(); 150 if(functionHandlers != null) { 151 Enumeration en = functionHandlers.elements(); 152 while(en.hasMoreElements()) { 153 ec.addFunctionHandler((IFunctionHandler)en.nextElement()); 154 } 109 if (context instanceof FormEntryContext) { 110 this.context = (FormEntryContext) context; 111 this.instanceID = this.context.getInstanceID(); 155 112 } 156 113 157 return ec; 114 System.out.println("almost starting loading screen"); 115 // Start the loading screen 116 System.out.println("starting loading screen"); 117 this.loadingScreen.start(context); 118 119 // Start loading the form 120 this.formLoader.start(context); 158 121 } 159 122 … … 206 169 207 170 public void setRetrievalMethod(IFormDefRetrievalMethod method) { 208 fetcher.setFetcher(method);171 this.formLoader.setRetrievalMethod(method); 209 172 } 210 173
