package com.intellij.lang.javascript.flex.projectStructure.conversion;
import com.intellij.conversion.*;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.roots.impl.ProjectRootManagerImpl;
import org.jdom.Element;
import org.jetbrains.annotations.Nullable;
import java.io.File;
class FlexProjectConverter extends ProjectConverter {
private ConversionParams myParams;
private final ConversionContext myContext;
FlexProjectConverter(ConversionContext context) {
myContext = context;
}
private boolean _isConversionNeeded() {
for (File file : myContext.getModuleFiles()) {
try {
ModuleSettings moduleSettings = myContext.getModuleSettings(file);
if (FlexModuleConverter.isConversionNeededStatic(moduleSettings)) return true;
}
catch (CannotConvertException ignored) {
}
}
return false;
}
@Override
public ConversionProcessor<ModuleSettings> createModuleFileConverter() {
return new FlexModuleConverter(getParams());
}
@Nullable
public ConversionProcessor<WorkspaceSettings> createWorkspaceFileConverter() {
return _isConversionNeeded() ? new FlexWorkspaceConverter(getParams()) : null;
}
public ConversionParams getParams() {
if (myParams == null) {
myParams = new ConversionParams(myContext);
}
return myParams;
}
@Override
public void preProcessingFinished() throws CannotConvertException {
ComponentManagerSettings projectRootManagerSettings = myContext.getProjectRootManagerSettings();
if (projectRootManagerSettings == null) return;
Element projectRootManager = projectRootManagerSettings.getComponentElement(ProjectRootManager.class.getSimpleName());
if (projectRootManager == null) return;
getParams().projectSdkName = projectRootManager.getAttributeValue(ProjectRootManagerImpl.PROJECT_JDK_NAME_ATTR);
ConversionParams.convertFlexSdks();
}
@Override
public void postProcessingFinished() throws CannotConvertException {
getParams().apply();
}
public ConversionProcessor<ProjectLibrariesSettings> createProjectLibrariesConverter() {
return new FlexLibrariesConverter(myContext, myParams);
}
}