package _VisualDVM.Passes.All;
import Common.MainModule_;
import Common.Passes.Pass;
import Common.Visual.Windows.ReadOnlyMultilineTextForm;
import _VisualDVM.Global;
import _VisualDVM.GlobalData.Compiler.Compiler;
import _VisualDVM.GlobalData.Machine.Machine;
import _VisualDVM.GlobalData.Machine.MachineType;
import _VisualDVM.Passes.PassCode;
public class ShowCompilerVersion extends Pass<String> {
    Pass<String> subpass;
    boolean needsShow = true;
    Compiler compiler;
    //-
    @Override
    public String getIconPath() {
        return "/icons/versions/Version.png";
    }
    @Override
    public String getButtonText() {
        return "";
    }
    @Override
    protected boolean canStart(Object... args) throws Exception {
        target = null;
        if (args.length == 0) {
            if (MainModule_.instance.getDb().getTable(Compiler.class).getUI().CheckCurrent(Log)) {
                compiler = MainModule_.instance.getDb().getTable(Compiler.class).getUI().getCurrent();
                needsShow = true;
                return true;
            }
        } else if (args.length == 2) {
            compiler = (Compiler) args[0];
            needsShow = (boolean) args[1];
            return true;
        }
        return false;
    }
    @Override
    protected void body() throws Exception {
        subpass = null;
        compiler.ResetVersion();
        if (MainModule_.instance.getDb().getTable(Machine.class).getUI().getCurrent().type.equals(MachineType.Local)) {
            subpass = Global.mainModule.getPass(PassCode.LocalSingleCommand);
        } else {
            subpass = Global.mainModule.getPass(PassCode.RemoteSingleCommand);
        }
        if (subpass != null) {
            if (compiler.versionLoaded = subpass.Do(compiler.getVersionCommand())) {
                target = subpass.target;
                compiler.versionText = target;
                compiler.ParseVersion();
            }
        }
    }
    @Override
    protected boolean validate() {
        return (subpass != null) && (target != null);
    }
    @Override
    protected void showDone() throws Exception {
        if (needsShow) {
            (Global.mainModule.getDb()).compilers.getUI().RedrawControl();
            ReadOnlyMultilineTextForm ff = new ReadOnlyMultilineTextForm();
            ff.ShowDialog("Версия", target);
        }
    }
}
