package _VisualDVM.Passes.All;
import Common.Passes.Pass;
import Common.Utils.Utils_;
import Common.Visual.UI_;
import _VisualDVM.Global;
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMRunTask;
import _VisualDVM.Visual.UI;

import java.util.Vector;
public class CompareDVMRunTasks extends Pass<Vector<DVMRunTask>> {
    DVMRunTask master;
    DVMRunTask slave;
    @Override
    public String getIconPath() {
        return "/icons/Comparsion.png";
    }
    @Override
    public String getButtonText() {
        return "";
    }
    @Override
    protected boolean canStart(Object... args) throws Exception {
        master = null;
        slave = null;
        //--
        target = Global.testingServer.db.dvmRunTasks.getCheckedItems();
        if (target.size() == 2) {
            if (UI_.Question("Назначить задачу " + Utils_.Brackets(target.get(0).getPK()) + " эталоном" +
                    "\n(в случае отказа, будет назначена задача " + Utils_.Brackets(target.get(1).getPK()) + ")")) {
                master = target.get(0);
                slave = target.get(1);
            } else {
                master = target.get(1);
                slave = target.get(0);
            }
            return true;
        } else if (target.size() == 1) {
            master = target.get(0);
            slave = null;
            return UI_.Question("Отобразить задачу " + Utils_.Brackets(master.getPK()));
        } else if ((target.size() == 0) && (Global.mainModule.HasDVMRunTask())) {
            master = Global.mainModule.getDVMRunTask();
            slave = null;
            return UI_.Question("Отобразить задачу " + Utils_.Brackets(master.getPK()));
        } else {
            Log.Writeln_("Для сравнения требуется отметить две задачи.\nДля отображения требуется отметить одну задачу,или выделить её.");
            return false;
        }
    }
    @Override
    protected void body() throws Exception {
        if (slave != null)
            UI.getMainWindow().getTestingWindow().CompareDVMRunTasks(master, slave);
        else
            UI.getMainWindow().getTestingWindow().ShowDVMRunTask(master);
    }
}
