All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.hexffff0.eggs.settings.ExecuteUnitConfigurable Maven / Gradle / Ivy

Go to download

Eggs是一个强大的Intellij IDEA 插件,它允许你在运行时编写Java代码与IDEA进行交互,最终得到你想要的效果,例如生成代码。

The newest version!
package com.github.hexffff0.eggs.settings;

import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import javax.swing.JComponent;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import com.github.hexffff0.eggs.persistence.ExecuteUnit;
import com.github.hexffff0.eggs.persistence.ExecuteUnitRepository;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.SearchableConfigurable;
/**
 * @author hyc
 * @since 2021/2/2
 */
public class ExecuteUnitConfigurable implements SearchableConfigurable {

    private final ExecuteUnitRepository executeUnitRepository;

    private ExecuteUnitConfigPanel executeUnitConfigPanel;

    public ExecuteUnitConfigurable() {
        this.executeUnitRepository = ServiceManager.getService(ExecuteUnitRepository.class);
    }

    @Override
    public @NotNull String getId() {
        return "0118-0125";
    }

    @Override
    public String getDisplayName() {
        return "EggsSettings";
    }

    @Override
    public @Nullable JComponent createComponent() {
        if (executeUnitConfigPanel == null) {
            executeUnitConfigPanel = new ExecuteUnitConfigPanel(executeUnitRepository);
        }
        return executeUnitConfigPanel.getRootPanel();
    }

    @Override
    public boolean isModified() {

        if (executeUnitConfigPanel == null) {
            return false;
        }

        List curExecuteUnitList = executeUnitConfigPanel.getExecuteUnitList();
        if (executeUnitRepository.size() != curExecuteUnitList.size()) {
            return true;
        }

        for (ExecuteUnit curExecuteUnit : curExecuteUnitList) {
            ExecuteUnit oldExecuteUnit = executeUnitRepository.getExecuteUnit(curExecuteUnit.uuid);
            if (oldExecuteUnit == null || !Objects.equals(curExecuteUnit, oldExecuteUnit)) {
                return true;
            }
        }

        return false;
    }

    @Override
    public void apply() throws ConfigurationException {
        List curExecuteUnitList = executeUnitConfigPanel.getExecuteUnitList();
        Map curExecuteUnitMap = curExecuteUnitList.stream().collect(Collectors.toConcurrentMap(x -> x.uuid, x -> x));
        executeUnitRepository.setExecuteUnitMap(curExecuteUnitMap);
        executeUnitConfigPanel.refresh(curExecuteUnitList);
        curExecuteUnitList.stream().map(executeUnit -> executeUnit.uuid)
                          .forEach(actionId -> ActionManager.getInstance().unregisterAction(actionId));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy