package _VisualDVM.Passes.All;
import Common.Passes.Pass;
import Common.Utils.Utils_;
import Common.Visual.Windows.Dialog.Dialog;
import _VisualDVM.Global;
import _VisualDVM.GlobalData.FileObject.DirInfo;
import _VisualDVM.GlobalData.FileObject.DirInfosDataSet;
import _VisualDVM.GlobalData.FileObject.UI.DirInfosFields;
import _VisualDVM.Passes.PassCode;

import javax.swing.*;
public class DeleteDownloadedBugReports extends Pass<DirInfosDataSet> {
    @Override
    protected boolean needsAnimation() {
        return true;
    }
    @Override
    protected boolean canStart(Object... args) throws Exception {
        target = null;
        if (Global.mainModule.getPass(PassCode.GetOldBugReports).Do()) {
            target = (DirInfosDataSet) Global.mainModule.getPass(PassCode.GetOldBugReports).target;
            if (target.Data.isEmpty()) {
                Log.Writeln_("Не найдено отчетов, не использовавшихся " +
                        Global.normalProperties.BugReportsAgeLimit +
                        " месяцев и более!");
                return false;
            }
            //-
            Dialog<Object, DirInfosFields> dialog = new Dialog<Object, DirInfosFields>(DirInfosFields.class) {
                @Override
                public int getDefaultHeight() {
                    return 300;
                }
                @Override
                public int getDefaultWidth() {
                    return 600;
                }
                @Override
                public void Init(Object... params) {
                    target.mountUI((JPanel) content);
                    target.ShowUI();
                }
                @Override
                public void validateFields() {
                }
            };
            if (dialog.ShowDialog("Найдено " + target.size() + " отчетов, не использовавшихся " +
                    Global.normalProperties.BugReportsAgeLimit +
                    " месяцев и более. Удалить?")) {
                return true;
            }
        }
        return false;
    }
    @Override
    protected void performPreparation() throws Exception {
        if (Global.mainModule.HasProject())
            Global.mainModule.getPass(PassCode.CloseCurrentProject).Do();
    }
    @Override
    protected void body() throws Exception {
        for (DirInfo dir : target.Data.values()) {
            ShowMessage1(dir.getPK().toString());
            Utils_.forceDeleteWithCheck(dir.getFile());
        }
    }
}
