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(); } }); } }