Encapsulate settings (#180)

This commit is contained in:
Carl-Robert 2023-08-27 18:16:08 +03:00 committed by GitHub
parent de971806d0
commit ef5fd5919f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
36 changed files with 697 additions and 369 deletions

View file

@ -50,7 +50,7 @@ public class ConfigurationComponent {
public ConfigurationComponent(Disposable parentDisposable, ConfigurationState configuration) {
table = new JBTable(new DefaultTableModel(
EditorActionsUtil.toArray(configuration.tableData),
EditorActionsUtil.toArray(configuration.getTableData()),
new String[] {
CodeGPTBundle.get("configurationConfigurable.table.header.actionColumnLabel"),
CodeGPTBundle.get("configurationConfigurable.table.header.promptColumnLabel")
@ -62,7 +62,7 @@ public class ConfigurationComponent {
tablePanel.setBorder(BorderFactory.createTitledBorder(CodeGPTBundle.get("configurationConfigurable.table.title")));
temperatureField = new JBTextField(12);
temperatureField.setText(String.valueOf(configuration.temperature));
temperatureField.setText(String.valueOf(configuration.getTemperature()));
var temperatureFieldValidator = createInputValidator(parentDisposable, temperatureField);
temperatureField.getDocument().addDocumentListener(new DocumentListener() {
@ -84,7 +84,7 @@ public class ConfigurationComponent {
maxTokensField = new IntegerField("max_tokens", 100, 2000);
maxTokensField.setColumns(12);
maxTokensField.setValue(configuration.maxTokens);
maxTokensField.setValue(configuration.getMaxTokens());
systemPromptTextArea = new JTextArea();
systemPromptTextArea.setLineWrap(true);

View file

@ -29,32 +29,32 @@ public class ConfigurationConfigurable implements Configurable, Disposable {
@Override
public boolean isModified() {
var configuration = ConfigurationState.getInstance();
return !configurationComponent.getTableData().equals(configuration.tableData) ||
configurationComponent.getMaxTokens() != configuration.maxTokens ||
configurationComponent.getTemperature() != configuration.temperature ||
!configurationComponent.getSystemPrompt().equals(configuration.systemPrompt) ||
configurationComponent.isCreateNewChatOnEachAction() != configuration.createNewChatOnEachAction;
return !configurationComponent.getTableData().equals(configuration.getTableData()) ||
configurationComponent.getMaxTokens() != configuration.getMaxTokens() ||
configurationComponent.getTemperature() != configuration.getTemperature() ||
!configurationComponent.getSystemPrompt().equals(configuration.getSystemPrompt()) ||
configurationComponent.isCreateNewChatOnEachAction() != configuration.isCreateNewChatOnEachAction();
}
@Override
public void apply() {
var configuration = ConfigurationState.getInstance();
configuration.tableData = configurationComponent.getTableData();
configuration.maxTokens = configurationComponent.getMaxTokens();
configuration.temperature = configurationComponent.getTemperature();
configuration.systemPrompt = configurationComponent.getSystemPrompt();
configuration.createNewChatOnEachAction = configurationComponent.isCreateNewChatOnEachAction();
configuration.setTableData(configurationComponent.getTableData());
configuration.setMaxTokens(configurationComponent.getMaxTokens());
configuration.setTemperature(configurationComponent.getTemperature());
configuration.setSystemPrompt(configurationComponent.getSystemPrompt());
configuration.setCreateNewChatOnEachAction(configurationComponent.isCreateNewChatOnEachAction());
EditorActionsUtil.refreshActions();
}
@Override
public void reset() {
var configuration = ConfigurationState.getInstance();
configurationComponent.setTableData(configuration.tableData);
configurationComponent.setMaxTokens(configuration.maxTokens);
configurationComponent.setTemperature(configuration.temperature);
configurationComponent.setSystemPrompt(configuration.systemPrompt);
configurationComponent.setCreateNewChatOnEachAction(configuration.createNewChatOnEachAction);
configurationComponent.setTableData(configuration.getTableData());
configurationComponent.setMaxTokens(configuration.getMaxTokens());
configurationComponent.setTemperature(configuration.getTemperature());
configurationComponent.setSystemPrompt(configuration.getSystemPrompt());
configurationComponent.setCreateNewChatOnEachAction(configuration.isCreateNewChatOnEachAction());
EditorActionsUtil.refreshActions();
}

View file

@ -16,12 +16,11 @@ import org.jetbrains.annotations.Nullable;
)
public class ConfigurationState implements PersistentStateComponent<ConfigurationState> {
public String systemPrompt = "";
public int maxTokens = 1000;
public double temperature = 0.2;
public boolean createNewChatOnEachAction;
public Map<String, String> tableData = EditorActionsUtil.DEFAULT_ACTIONS;
private String systemPrompt = "";
private int maxTokens = 1000;
private double temperature = 0.2;
private boolean createNewChatOnEachAction;
private Map<String, String> tableData = EditorActionsUtil.DEFAULT_ACTIONS;
public static ConfigurationState getInstance() {
return ApplicationManager.getApplication().getService(ConfigurationState.class);
@ -37,4 +36,44 @@ public class ConfigurationState implements PersistentStateComponent<Configuratio
public void loadState(@NotNull ConfigurationState state) {
XmlSerializerUtil.copyBean(state, this);
}
public String getSystemPrompt() {
return systemPrompt;
}
public void setSystemPrompt(String systemPrompt) {
this.systemPrompt = systemPrompt;
}
public int getMaxTokens() {
return maxTokens;
}
public void setMaxTokens(int maxTokens) {
this.maxTokens = maxTokens;
}
public double getTemperature() {
return temperature;
}
public void setTemperature(double temperature) {
this.temperature = temperature;
}
public boolean isCreateNewChatOnEachAction() {
return createNewChatOnEachAction;
}
public void setCreateNewChatOnEachAction(boolean createNewChatOnEachAction) {
this.createNewChatOnEachAction = createNewChatOnEachAction;
}
public Map<String, String> getTableData() {
return tableData;
}
public void setTableData(Map<String, String> tableData) {
this.tableData = tableData;
}
}