package org.openflexo; import java.io.File; import org.openflexo.foundation.FlexoEditor; import org.openflexo.foundation.FlexoEditor.FlexoEditorFactory; import org.openflexo.foundation.resource.FlexoResourceCenterService; import org.openflexo.foundation.rm.FlexoProject.FlexoProjectReferenceLoader; import org.openflexo.foundation.utils.ProjectLoadingHandler; import org.openflexo.model.exceptions.ModelDefinitionException; import org.openflexo.module.ModuleLoader; import org.openflexo.module.ProjectLoader; public abstract class ApplicationContext implements FlexoEditorFactory { private ModuleLoader moduleLoader; private ProjectLoader projectLoader; private FlexoEditor applicationEditor; private FlexoProjectReferenceLoader projectReferenceLoader; private FlexoResourceCenterService resourceCenterService; public ApplicationContext() { applicationEditor = createApplicationEditor(); try { projectLoader = new ProjectLoader(this); } catch (ModelDefinitionException e) { e.printStackTrace(); throw new RuntimeException(e); } moduleLoader = new ModuleLoader(this); projectReferenceLoader = createProjectReferenceLoader(); resourceCenterService = createResourceCenterService(); } public ModuleLoader getModuleLoader() { return moduleLoader; } public ProjectLoader getProjectLoader() { return projectLoader; } public final FlexoProjectReferenceLoader getProjectReferenceLoader() { return projectReferenceLoader; } public final FlexoResourceCenterService getResourceCenterService() { return resourceCenterService; } public final FlexoEditor getApplicationEditor() { return applicationEditor; } public boolean isAutoSaveServiceEnabled() { return false; } public abstract ProjectLoadingHandler getProjectLoadingHandler(File projectDirectory); protected abstract FlexoEditor createApplicationEditor(); protected abstract FlexoProjectReferenceLoader createProjectReferenceLoader(); protected abstract FlexoResourceCenterService createResourceCenterService(); }