
com.github.hexffff0.eggs.settings.ExecuteUnitConfigurable Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of Eggs Show documentation
Show all versions of Eggs Show documentation
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