Idea 插件之项目级配置

项目级配置继承于PersistentStateComponent

import com.intellij.openapi.components.PersistentStateComponent;import com.intellij.util.xmlb.XmlSerializerUtil;import org.jetbrains.annotations.NotNull;import org.jetbrains.annotations.Nullable;import java.util.List;public abstract class ProjectConfiguration implements PersistentStateComponent {    /**     * 存储的对象必须有GET\SET方法     * 不能直接对该泛型GET或SET无法正常保存     * @return     */    public abstract List getEntrances();    /**     * 获取配置对象     * @return     */    @Override    public @Nullable T getState() {        return (T) this;    }    /**     * 加载配置对象     * @param t     */    @Override    public void loadState(@NotNull T t) {        XmlSerializerUtil.copyBean(t, this);    }}


import com.intellij.openapi.components.ServiceManager;import com.intellij.openapi.components.State;import com.intellij.openapi.components.Storage;import com.intellij.openapi.project.Project;import com.muy.common.configuration.ProjectConfiguration;import com.muy.view.window.sequence.bean.TreeNodeModelSequence;import lombok.Getter;import lombok.Setter;import java.util.LinkedList;import java.util.List;@State(        name = "SequenceConfiguration",        storages = {                @Storage(file = "$PROJECT_CONFIG_DIR$/sequenceSettings.xml")        })public class SequenceConfiguration extends ProjectConfiguration {    @Getter    @Setter    private List entrances = new LinkedList<>();    public static SequenceConfiguration getInstance(Project project) {        return ServiceManager.getService(project, SequenceConfiguration.class);    }}

关键属性对应关系

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章