package _VisualDVM.TestingSystem.DVM.DVMSettings.UI;
import Common.MainModule_;
import Common.Visual.TextField.StyledTextField;
import Common.Visual.Windows.Dialog.DialogFields;
import _VisualDVM.GlobalData.CompilerEnvironment.EnvironmentsLinesSet;
import _VisualDVM.GlobalData.CompilerEnvironment.Json.EnvironmentsSetJson;
import _VisualDVM.GlobalData.CompilerOption.Json.OptionsSetJson;
import _VisualDVM.GlobalData.CompilerOption.OptionsLinesSet;

import javax.swing.*;
import java.awt.*;
public class DVMSettingsFields implements DialogFields {
    public JTextField tfName;
    public JSpinner sMinDimProc;
    public JSpinner sMaxDimProc;
    public JSpinner sMaxProc;
    public JCheckBox cbCube;
    public JTextField tfEnvironments;
    public JCheckBox cbDvmStat;
    public JButton bAddFlags;
    public JButton bAddEnvironments;
    public JButton bDeleteFlags;
    public JButton bDeleteEnvironment;
    //-------------
    public OptionsLinesSet optionsLines;
    public EnvironmentsLinesSet environmentsLines;
    //-------------
    private JPanel content;
    private JPanel optionsLinesPanel;
    private JPanel environmentsLinesPanel;
    private JSplitPane SC1;
    private JSplitPane SC2;
    public DVMSettingsFields() {
        sMinDimProc.setModel(new SpinnerNumberModel(1, 0, 128, 1));
        sMaxDimProc.setModel(new SpinnerNumberModel(1, 0, 128, 1));
        sMaxProc.setModel(new SpinnerNumberModel(0, 0, 128, 1));
        //-
    }
    //
    public void fillOptionsLines(OptionsSetJson optionsSetJson) {
        optionsLines = new OptionsLinesSet(optionsSetJson);
        //-Это нужно для того, чтобы старый меню бар был пересоздан. бары создаются один раз в целях экономии памяти.
        // В противном случае бар его проходы добавления редактирования и удаления
        // привязаны к старому источнику данных и возникает БАГ!!!
        if (MainModule_.instance.getUI().menuBars.containsKey(OptionsLinesSet.class))
            MainModule_.instance.getUI().menuBars.remove(OptionsLinesSet.class);
        //-
        optionsLines.mountUI(optionsLinesPanel);
        optionsLines.ShowUI();
    }
    public void fillEnvironmentsLines(EnvironmentsSetJson environmentsSetJson) {
        environmentsLines = new EnvironmentsLinesSet(environmentsSetJson);
        //-
        if (MainModule_.instance.getUI().menuBars.containsKey(EnvironmentsLinesSet.class))
            MainModule_.instance.getUI().menuBars.remove(EnvironmentsLinesSet.class);
        environmentsLines.mountUI(environmentsLinesPanel);
        environmentsLines.ShowUI();
    }
    @Override
    public Component getContent() {
        return content;
    }
    private void createUIComponents() {
        // TODO: place custom component creation code here
        tfName = new StyledTextField();
    }
}
