// Path: src/main/java/ru/adelf/idea/dotenv/DotEnvSettings.java
// @State(name = "DotEnvSettings", storages = {@Storage("dot-env.xml")})
// public class DotEnvSettings implements PersistentStateComponent<DotEnvSettings> {
//     public boolean completionEnabled = true;
//     public boolean storeValues = true;
// 
//     @Nullable
//     @Override
//     public DotEnvSettings getState() {
//         return this;
//     }
// 
//     @Override
//     public void loadState(@NotNull DotEnvSettings state) {
//         XmlSerializerUtil.copyBean(state, this);
//     }
// 
//     public static DotEnvSettings getInstance(Project project) {
//         return project.getService(DotEnvSettings.class);
//     }
// }


import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import ru.adelf.idea.dotenv.DotEnvSettings;
import javax.swing.*;
import javax.swing.border.Border;

        JPanel rootPanel = new JPanel();
        rootPanel.setLayout(new BoxLayout(rootPanel, BoxLayout.PAGE_AXIS));
        rootPanel.add(completionEnabledCheckbox);
        rootPanel.add(storeValuesCheckbox);
        rootPanel.add(storeValuesInvalidateCachesLabel);

        return rootPanel;
    }

    @Override
    public boolean isModified() {
        return !completionEnabledCheckbox.isSelected() == getSettings().completionEnabled
            || !storeValuesCheckbox.isSelected() == getSettings().storeValues
            ;
    }

    @Override
    public void apply() {
        getSettings().completionEnabled = completionEnabledCheckbox.isSelected();
        getSettings().storeValues = storeValuesCheckbox.isSelected();
    }

    @Override
    public void reset() {
        completionEnabledCheckbox.setSelected(getSettings().completionEnabled);
        storeValuesCheckbox.setSelected(getSettings().storeValues);
    }

    private DotEnvSettings getSettings() {
// Path: src/main/java/ru/adelf/idea/dotenv/DotEnvSettings.java
// @State(name = "DotEnvSettings", storages = {@Storage("dot-env.xml")})
// public class DotEnvSettings implements PersistentStateComponent<DotEnvSettings> {
//     public boolean completionEnabled = true;
//     public boolean storeValues = true;
// 
//     @Nullable
//     @Override
//     public DotEnvSettings getState() {
//         return this;
//     }
// 
//     @Override
//     public void loadState(@NotNull DotEnvSettings state) {
//         XmlSerializerUtil.copyBean(state, this);
//     }
// 
//     public static DotEnvSettings getInstance(Project project) {
//         return project.getService(DotEnvSettings.class);
//     }
// }


// Path: src/main/java/ru/adelf/idea/dotenv/ui/DotEnvSettingsConfigurable.java
import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import ru.adelf.idea.dotenv.DotEnvSettings;
import javax.swing.*;
import javax.swing.border.Border;


        JPanel rootPanel = new JPanel();
        rootPanel.setLayout(new BoxLayout(rootPanel, BoxLayout.PAGE_AXIS));
        rootPanel.add(completionEnabledCheckbox);
        rootPanel.add(storeValuesCheckbox);
        rootPanel.add(storeValuesInvalidateCachesLabel);

        return rootPanel;
    }

    @Override
    public boolean isModified() {
        return !completionEnabledCheckbox.isSelected() == getSettings().completionEnabled
            || !storeValuesCheckbox.isSelected() == getSettings().storeValues
            ;
    }

    @Override
    public void apply() {
        getSettings().completionEnabled = completionEnabledCheckbox.isSelected();
        getSettings().storeValues = storeValuesCheckbox.isSelected();
    }

    @Override
    public void reset() {
        completionEnabledCheckbox.setSelected(getSettings().completionEnabled);
        storeValuesCheckbox.setSelected(getSettings().storeValues);
    }

    private DotEnvSettings getSettings() {
        return DotEnvSettings.getInstance(this.project);