package de.jigp.plugin.actions.contextmenu.dto;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.util.Computable;
import com.intellij.psi.PsiClass;
import de.jigp.plugin.GeneratorPluginContext;
import de.jigp.plugin.actions.dto.DtoGenerator;
import de.jigp.plugin.actions.dto.DtoTargetClassChooser;
import de.jigp.plugin.actions.generator.CancelActionException;
import de.jigp.plugin.actions.menu.DetermineTargetClassChooser;
import de.jigp.plugin.actions.menu.PsiInfrastructureHolder;
import de.jigp.plugin.configuration.Configuration;
class DtoGeneratorComputable extends PsiInfrastructureHolder implements Computable<PsiClass> {
private PsiClass selectedInterface;
public DtoGeneratorComputable(DataContext dataContext, PsiClass selectedInterface) {
super(dataContext);
this.selectedInterface = selectedInterface;
}
public PsiClass compute() {
Configuration configuration = GeneratorPluginContext.getConfiguration();
String targetClassSuffix = null;
if (configuration.isSuffixQuestionSupressed) {
targetClassSuffix = configuration.dtoSuffix;
} else {
DetermineTargetClassChooser chooser = new DtoTargetClassChooser(dataContext);
try {
targetClassSuffix = chooser.invoke("Dto suffix");
} catch (CancelActionException e) {
return null;
}
}
if (targetClassSuffix != null) {
return new DtoGenerator(dataContext, selectedInterface, targetClassSuffix).build();
} else {
return null;
}
}
}