package _VisualDVM.Visual.Menus.ProjectMenuBar;
import Common.Visual.Menus.VisualiserMenu;
import _VisualDVM.Global;
import _VisualDVM.ProjectData.Files.LanguageStyle;
import _VisualDVM.ProjectData.LanguageName;
import _VisualDVM.Visual.Menus.LanguagesSubmenu;
import _VisualDVM.Visual.Menus.PropertiesSubmenu;
import _VisualDVM.Visual.Menus.StylesSubmenu;

import javax.swing.*;
public class ProjectSettingsMenu extends VisualiserMenu {
    JMenu mLanguage;
    JMenu mStyle;
    public ProjectSettingsMenu() {
        super("Настройки проекта", "/Common/icons/Settings.png");
        add(mLanguage = new LanguagesSubmenu() {
            @Override
            public void action(LanguageName languageName) {
                if (Global.mainModule.getProject().UpdateLanguage(languageName)) {
                    Global.mainModule.getSapfor().ResetAllAnalyses();
                    ShowLanguage();
                }
            }
        });
        ShowLanguage();
        //--
        add(mStyle = new StylesSubmenu() {
            @Override
            public void action(LanguageStyle languageStyle) {
                if (Global.mainModule.getProject().UpdateStyle(languageStyle))
                    ShowStyle();
            }
        });
        ShowStyle();
        addSeparator();
        add(new PropertiesSubmenu("Анализ", null,
                Global.mainModule.getProject().sapforProperties,
                "Precompilation",
                "KEEP_DVM_DIRECTIVES",
                "IGNORE_IO_SAPFOR",
                "MPI_PROGRAM",
                "ANALYSIS_OPTIONS"
        ));
        addSeparator();
        add(new PropertiesSubmenu("Построение системы интервалов", null,
                Global.mainModule.getProject().sapforProperties,
                "KEEP_LOOPS_CLOSE_NESTING",
                "KEEP_GCOV"
        ));
        addSeparator();
        add(new PropertiesSubmenu("Построение версий", null,
                Global.mainModule.getProject().sapforProperties,
                "FREE_FORM",
                "KEEP_SPF_DIRECTIVES",
                "KEEP_SPF_DIRECTIVES_AMONG_TRANSFORMATIONS",
                "OUTPUT_UPPER",
                "MAX_SHADOW_WIDTH",
                "DVMConvertationOptions",
                "SaveModifications"
        ));
        addSeparator();
        add(Global.mainModule.getProject().sapforProperties.getMenuItem("TRANSLATE_MESSAGES"));
        add(Global.mainModule.getProject().sapforProperties.getMenuItem("DEBUG_PRINT_ON"));
        add(Global.mainModule.getProject().sapforProperties.getMenuItem("GCOVLimit"));
    }
    public void ShowLanguage() {
        mLanguage.setText("Язык: " + Global.mainModule.getProject().languageName.getDescription());
    }
    public void ShowStyle() {
        mStyle.setText("Стиль: " + Global.mainModule.getProject().style.getDescription());
    }
}
