package _VisualDVM.GlobalData.CompilerOption;
import Common.Database.Tables.DataSet;
import Common.Visual.DataSetControlForm;
import _VisualDVM.GlobalData.CompilerOption.Json.OptionJson;
import _VisualDVM.GlobalData.CompilerOption.Json.OptionsJson;
import _VisualDVM.GlobalData.CompilerOption.UI.CompilerOptionsForm;

import javax.swing.*;
//нужно для опций компиляции получаемых из хелпа
public class RawCompilerOptionsSet extends DataSet<String, CompilerOption> {
    public RawCompilerOptionsSet() {
        super(String.class, CompilerOption.class);
    }
    @Override
    protected DataSetControlForm createUI(JPanel mountPanel) {
        return new CompilerOptionsForm(this, mountPanel);
    }
    @Override
    public String getPluralDescription() {
        return "опции компиляции";
    }
    @Override
    public String getSingleDescription() {
        return "опция компиляции";
    }
    public CompilerOption findByJson(OptionJson json) {
        for (CompilerOption compilerOption : Data.values()) {
            if (json.name.equals(compilerOption.name + compilerOption.parameterSeparator))
                return compilerOption;
        }
        return null;
    }
    public void Reset() {
        for (CompilerOption option : Data.values()) {
            option.select(false);
            option.parameterValue = "";
        }
    }
    public void Synchronize(OptionsJson json) {
        for (OptionJson option_json : json.values) {
            // найти опцию по началу
            CompilerOption compilerOption = findByJson(option_json);
            if (compilerOption != null) {
                compilerOption.select(true);
                compilerOption.parameterValue = option_json.value;
            }
        }
    }
}
