package org.openflexo.view.controller;
import java.io.File;
import org.openflexo.ApplicationData;
import org.openflexo.components.NewProjectComponent;
import org.openflexo.components.OpenProjectComponent;
import org.openflexo.fib.model.FIBComponent;
import org.openflexo.foundation.utils.OperationCancelledException;
import org.openflexo.foundation.utils.ProjectInitializerException;
import org.openflexo.foundation.utils.ProjectLoadingCancelledException;
import org.openflexo.localization.FlexoLocalization;
import org.openflexo.module.Module;
import org.openflexo.module.ModuleLoader;
import org.openflexo.module.ModuleLoadingException;
import org.openflexo.module.ProjectLoader;
public class WelcomePanelController extends FlexoFIBController {
public WelcomePanelController(FIBComponent component) {
super(component);
}
@Override
public ApplicationData getDataObject() {
return (ApplicationData) super.getDataObject();
}
private ModuleLoader getModuleLoader() {
return getDataObject().getApplicationContext().getModuleLoader();
}
private ProjectLoader getProjectLoader() {
return getDataObject().getApplicationContext().getProjectLoader();
}
public void exit() {
try {
getModuleLoader().quit(false);
} catch (OperationCancelledException e) {
}
}
public void openModule(Module module) {
hide();
try {
getModuleLoader().switchToModule(module);
validateAndDispose();
} catch (ModuleLoadingException e) {
e.printStackTrace();
FlexoController.notify(FlexoLocalization.localizedForKey("could_not_load_module") + " " + e.getModule());
show();
}
}
public void openProject(File projectDirectory, Module module) {
if (projectDirectory == null) {
projectDirectory = OpenProjectComponent.getProjectDirectory();
if (projectDirectory == null) {
return;
}
}
hide();
try {
getModuleLoader().switchToModule(module);
} catch (ModuleLoadingException e) {
e.printStackTrace();
FlexoController.notify(FlexoLocalization.localizedForKey("could_not_load_module") + " " + e.getModule());
show();
}
try {
getProjectLoader().loadProject(projectDirectory);
validateAndDispose();
} catch (ProjectLoadingCancelledException e) {
} catch (ProjectInitializerException e) {
e.printStackTrace();
FlexoController.notify(FlexoLocalization.localizedForKey("could_not_open_project_located_at")
+ e.getProjectDirectory().getAbsolutePath());
}
}
public void newProject(Module module) {
File projectDirectory;
projectDirectory = NewProjectComponent.getProjectDirectory();
if (projectDirectory == null) {
return;
}
hide();
try {
getModuleLoader().switchToModule(module);
getProjectLoader().newProject(projectDirectory);
validateAndDispose();
} catch (ModuleLoadingException e) {
e.printStackTrace();
FlexoController.notify(FlexoLocalization.localizedForKey("could_not_load_module") + " " + e.getModule());
show();
}
}
}