package _VisualDVM.Passes.All;
import Common.Passes.PassException;
import Common.Utils.Utils_;
import _VisualDVM.Constants;
import _VisualDVM.Global;
import _VisualDVM.Passes.Project.ChangeFilePass;
import _VisualDVM.Visual.Windows.FileNameForm;

import javax.swing.tree.DefaultMutableTreeNode;
import java.io.File;
import java.nio.file.Paths;
public class CreateEmptyDirectory extends ChangeFilePass {
    @Override
    protected boolean canStart(Object... args) {
        resetArgs();
        if ((ff = new FileNameForm()).ShowDialog("Введите имя создаваемой папки")) {
            fileName = ff.Result;
            //->
            parent_node = Global.mainModule.getProjectCurrentParentNode();
            target_dir = (File) parent_node.getUserObject();
            //->
            dst = Paths.get(target_dir.getAbsolutePath(), fileName).toFile();
            if (dst.exists()) {
                Log.Writeln("Файл с именем " + Utils_.Brackets(fileName) + " уже существует");
                return false;
            }
            if (fileName.equalsIgnoreCase(Constants.data)) {
                Log.Writeln(Utils_.Brackets(Constants.data) + " является зарезервированным именем!");
                return false;
            }
            return true;
        }
        return false;
    }
    @Override
    protected void body() throws Exception {
        if (!dst.mkdir()) throw new PassException("Не удалось создать папку.");
        Global.mainModule.getUI().getMainWindow().getProjectWindow().getFilesTreeForm().getTree().AddNode(parent_node, dst_node = new DefaultMutableTreeNode(dst));
    }
}
