package _VisualDVM.Passes.All;
import Common.Passes.Pass;
import Common.Utils.Utils_;
import Common.Visual.UI;
import _VisualDVM.Current;
import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode;
import _VisualDVM.ProjectData.Files.DBProjectFile;
public class DeleteSelectedFiles extends Pass {
    @Override
    public String getIconPath() {
        return "/Common/icons/Delete.png";
    }
    @Override
    protected boolean canStart(Object... args) throws Exception {
        if (Global.mainModule.getProject().db.files.getSelectedCount() == 0) {
            Log.Writeln_("Не отмечено ни одного файла.");
            return false;
        }
        return UI.Warning("Удалить " + Global.mainModule.getProject().db.files.getSelectedCount() + " файлов.");
    }
    @Override
    protected void performPreparation() throws Exception {
        boolean hasCurrent = false;
        boolean hasSelected = false;
        if (Global.mainModule.HasFile()) {
            for (DBProjectFile file : Global.mainModule.getProject().db.files.getSelectedItems()) {
                if (Global.mainModule.getFile().file.equals(file.file))
                    hasCurrent = true;
                if (Global.mainModule.getSelectedFile().file.equals(file.file))
                    hasSelected = true;
            }
        }
        if (hasCurrent)
            Global.mainModule.getPass(PassCode.CloseCurrentFile).Do();
        if (hasSelected) {
            Global.mainModule.set(Current.SelectedFile, null);
            Global.mainModule.set(Current.ProjectNode, null);
        }
    }
    @Override
    protected boolean needsAnimation() {
        return true;
    }
    @Override
    protected void body() throws Exception {
        for (DBProjectFile file : Global.mainModule.getProject().db.files.getSelectedItems()) {
            ShowMessage1(file.name);
            Global.mainModule.getUI().getMainWindow().getProjectWindow().getFilesTreeForm().getTree().RemoveNode(file.node);
            Global.mainModule.getProject().db.Delete(file);
            Utils_.forceDeleteWithCheck(file.file);
        }
    }
}
