package org.openflexo.foundation.action;
import java.util.Vector;
import org.openflexo.foundation.FlexoEditor;
import org.openflexo.foundation.FlexoException;
import org.openflexo.foundation.FlexoModelObject;
import org.openflexo.foundation.rm.FlexoPamelaResource;
import org.openflexo.foundation.rm.FlexoProject;
import org.openflexo.foundation.rm.FlexoProjectReference;
import org.openflexo.foundation.rm.ProjectData;
import org.openflexo.foundation.wkf.FlexoProcess;
import org.openflexo.foundation.wkf.FlexoWorkflow;
public class ImportProject extends FlexoAction<ImportProject, FlexoModelObject, FlexoModelObject> {
public static final FlexoActionType<ImportProject, FlexoModelObject, FlexoModelObject> actionType = new FlexoActionType<ImportProject, FlexoModelObject, FlexoModelObject>(
"import_project") {
@Override
public ImportProject makeNewAction(FlexoModelObject focusedObject, Vector<FlexoModelObject> globalSelection, FlexoEditor editor) {
return new ImportProject(focusedObject, globalSelection, editor);
}
@Override
public boolean isVisibleForSelection(FlexoModelObject object, Vector<FlexoModelObject> globalSelection) {
return object != null && object.getProject() != null;
}
@Override
public boolean isEnabledForSelection(FlexoModelObject object, Vector<FlexoModelObject> globalSelection) {
return object != null && object.getProject() != null;
}
};
static {
FlexoModelObject.addActionForClass(actionType, FlexoWorkflow.class);
FlexoModelObject.addActionForClass(actionType, FlexoProcess.class);
FlexoModelObject.addActionForClass(actionType, FlexoProject.class);
}
private FlexoProject projectToImport;
public ImportProject(FlexoModelObject focusedObject, Vector<FlexoModelObject> globalSelection, FlexoEditor editor) {
super(actionType, focusedObject, globalSelection, editor);
}
@Override
protected void doAction(Object context) throws FlexoException {
FlexoProject project = getImportingProject();
FlexoPamelaResource<ProjectData> resource = (FlexoPamelaResource<ProjectData>) project.getProjectData(true).getFlexoResource();
FlexoProjectReference projectReference = resource.getModelFactory().newInstance(FlexoProjectReference.class).init(projectToImport);
project.getProjectData(true).addToImportedProjects(projectReference);
}
public FlexoProject getImportingProject() {
return getFocusedObject().getProject();
}
public FlexoProject getProjectToImport() {
return projectToImport;
}
public void setProjectToImport(FlexoProject projectToImport) {
this.projectToImport = projectToImport;
}
}