package jetbrains.mps.ide.refactoring;
/*Generated by MPS */
import jetbrains.mps.ide.platform.refactoring.RenameDialog;
import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;
import jetbrains.mps.project.AbstractModule;
import jetbrains.mps.project.MPSProject;
import java.awt.HeadlessException;
import org.jetbrains.mps.openapi.module.SModule;
import jetbrains.mps.refactoring.Renamer;
import jetbrains.mps.project.DescriptorTargetFileAlreadyExistsException;
import org.apache.log4j.Level;
public class RenameModuleDialog extends RenameDialog {
private static final Logger LOG = LogManager.getLogger(RenameModuleDialog.class);
private final AbstractModule myModule;
private final MPSProject myProject;
public RenameModuleDialog(MPSProject project, AbstractModule module) throws HeadlessException {
super(project.getProject(), module.getModuleName(), "module");
myModule = module;
myProject = project;
setTitle("Rename Module");
}
@Override
protected void doRefactoringAction() {
myProject.getRepository().getModelAccess().executeCommand(new Runnable() {
public void run() {
final String fqName = getCurrentValue();
// FIXME why validation code is part of change command? Shall refactor into distinct read
for (final SModule module : myProject.getRepository().getModules()) {
// module.getModuleName() can be null
if (fqName.equals(module.getModuleName())) {
setErrorText("Duplicate module name");
return;
}
}
try {
Renamer.renameModule(myModule, fqName);
} catch (DescriptorTargetFileAlreadyExistsException e) {
if (LOG.isEnabledFor(Level.ERROR)) {
LOG.error("", e);
}
}
RenameModuleDialog.super.doRefactoringAction();
}
});
}
}