package _VisualDVM.Passes.All;
import Common.Passes.Pass;
import Common.Utils.Utils_;
import Common.Visual.UI;
import _VisualDVM.Global;
import _VisualDVM.TestingSystem.SAPFOR.SapforPackage.SapforPackage;

import java.util.Vector;
public class CompareSapforPackages extends Pass<Vector<SapforPackage>> {
    protected SapforPackage master;
    protected SapforPackage slave;
    @Override
    public String getIconPath() {
        return "/icons/Comparsion.png";
    }
    @Override
    public String getButtonText() {
        return "";
    }
    @Override
    protected boolean needsAnimation() {
        return true;
    }
    @Override
    protected boolean canStart(Object... args) throws Exception {
        master = null;
        slave = null;
        //--
        target = Global.testingServer.db.sapforPackages.getUI().getSelectedItems();
        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 true;
        } else if ((target.size() == 0) && ((Global.testingServer.db.sapforPackages.getUI().getCurrent() != null))) {
            master = Global.testingServer.db.sapforPackages.getUI().getCurrent();
            slave = null;
            return true;
        } else {
            Log.Writeln_("Для сравнения требуется отметить два пакета.\nДля отображения требуется отметить один пакет,или выделить его");
            return false;
        }
    }
    @Override
    protected void body() throws Exception {
        if (slave != null)
            Global.mainModule.getUI().getMainWindow().getTestingWindow().CompareSapforPackages(master, slave);
        else
            Global.mainModule.getUI().getMainWindow().getTestingWindow().ShowSapforPackage(master);
    }
}

