Skip to content

Commit

Permalink
gradle build fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
smklimenko committed Feb 20, 2024
1 parent ac24563 commit e1d6e86
Show file tree
Hide file tree
Showing 16 changed files with 518 additions and 121 deletions.
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
# KdbInsideBrains Changelog

## [5.4.0]

### Added

- Issue #91: Support for scientific notation in table output (disabled by default. Can be enabled in the Settings)
- Decimal Rounding Mode added with Half-Even by default as before (can be changed in the Settings)

### Changed

- Numerical Format settings moved into a separate configuration section in the Settings

## [5.3.0]

### Added
Expand Down
1 change: 1 addition & 0 deletions src/main/java/icons/KdbIcons.java
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ public static final class Console {
public static final @NotNull Icon FlipTable = load("/org/kdb/inside/brains/icons/console/flipTable.svg");
public static final @NotNull Icon TableIndex = load("/org/kdb/inside/brains/icons/console/tableIndex.svg");
public static final @NotNull Icon TableThousands = load("/org/kdb/inside/brains/icons/console/thousandsSeparator.svg");
public static final @NotNull Icon TableScientific = load("/org/kdb/inside/brains/icons/console/scientificNotation.svg");

public static final @NotNull Icon SelectAll = AllIcons.Actions.Selectall;
public static final @NotNull Icon UnselectAll = AllIcons.Actions.Unselectall;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@
import org.jetbrains.annotations.Nullable;
import org.kdb.inside.brains.core.ExecutionOptionsPanel;
import org.kdb.inside.brains.view.console.ConsoleOptionsPanel;
import org.kdb.inside.brains.view.console.NumericalOptionsPanel;
import org.kdb.inside.brains.view.console.TableOptionsPanel;
import org.kdb.inside.brains.view.inspector.InspectorOptionsPanel;

import javax.swing.*;

public class KdbSettingsConfigurable extends KdbConfigurable {
private final TableOptionsPanel tableOptionsPanel = new TableOptionsPanel();
private final NumericalOptionsPanel numericalOptionsPanel = new NumericalOptionsPanel();
private final ConsoleOptionsPanel consoleOptionsPanel = new ConsoleOptionsPanel();
private final ExecutionOptionsPanel executionOptionsPanel = new ExecutionOptionsPanel();
private final InspectorOptionsPanel inspectorOptionsPanel = new InspectorOptionsPanel();
Expand All @@ -35,7 +37,12 @@ public JComponent createComponent() {
.addComponent(consoleOptionsPanel)

.setFormLeftIndent(0)
.addComponent(new TitledSeparator("Table View Options"))
.addComponent(new TitledSeparator("Numerical Format"))
.setFormLeftIndent(FORM_LEFT_INDENT)
.addComponent(numericalOptionsPanel)

.setFormLeftIndent(0)
.addComponent(new TitledSeparator("Table Options"))
.setFormLeftIndent(FORM_LEFT_INDENT)
.addComponent(tableOptionsPanel)

Expand All @@ -60,6 +67,10 @@ public boolean isModified() {
return true;
}

if (!Comparing.equal(settingsService.getNumericalOptions(), numericalOptionsPanel.getOptions())) {
return true;
}

if (!Comparing.equal(settingsService.getTableOptions(), tableOptionsPanel.getOptions())) {
return true;
}
Expand All @@ -80,6 +91,7 @@ public void apply() {
settingsService.setConsoleOptions(consoleOptionsPanel.getOptions());
settingsService.setExecutionOptions(executionOptionsPanel.getOptions());
settingsService.setInspectorOptions(inspectorOptionsPanel.getOptions());
settingsService.setNumericalOptions(numericalOptionsPanel.getOptions());
}

@Override
Expand All @@ -88,5 +100,6 @@ public void reset() {
consoleOptionsPanel.setOptions(settingsService.getConsoleOptions());
executionOptionsPanel.setOptions(settingsService.getExecutionOptions());
inspectorOptionsPanel.setOptions(settingsService.getInspectorOptions());
numericalOptionsPanel.setOptions(settingsService.getNumericalOptions());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@
import com.intellij.openapi.components.PersistentStateComponent;
import com.intellij.openapi.components.State;
import com.intellij.openapi.components.Storage;
import com.intellij.util.xmlb.annotations.Transient;
import org.jetbrains.annotations.Nullable;
import org.kdb.inside.brains.core.ExecutionOptions;
import org.kdb.inside.brains.core.InstanceOptions;
import org.kdb.inside.brains.view.chart.ChartOptions;
import org.kdb.inside.brains.view.console.ConsoleOptions;
import org.kdb.inside.brains.view.console.NumericalOptions;
import org.kdb.inside.brains.view.console.TableOptions;
import org.kdb.inside.brains.view.inspector.InspectorOptions;

Expand All @@ -19,7 +21,7 @@
import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;

@State(name = "KdbSettings", storages = {@Storage("kdb-settings.xml")})
@State(name = "KdbSettings", storages = {@Storage(value = "kdb-settings.xml")})
public class KdbSettingsService implements PersistentStateComponent<KdbSettingsService.State> {
private final State myState = new State();

Expand Down Expand Up @@ -124,6 +126,17 @@ public void setChartOptions(ChartOptions options) {
}
}

public NumericalOptions getNumericalOptions() {
return myState.numericalOptions;
}

public void setNumericalOptions(NumericalOptions options) {
if (!myState.numericalOptions.equals(options)) {
myState.numericalOptions.copyFrom(options);
notifySettingsChanged(myState.numericalOptions);
}
}

private void notifySettingsChanged(SettingsBean<?> bean) {
listeners.forEach(l -> l.settingsChanged(this, bean));
}
Expand All @@ -143,6 +156,12 @@ public void loadState(State state) {
myState.setInstanceOptions(state.instanceOptions);
myState.setCredentialPlugins(state.credentialPlugins);
myState.setInspectorOptions(state.inspectorOptions);
myState.setNumericalOptions(state.numericalOptions);

// Legacy migration. To be removed one day
if (state.legacyConsoleOptions.floatPrecision != -1) {
myState.numericalOptions.setFloatPrecision(state.legacyConsoleOptions.floatPrecision);
}
}

public static KdbSettingsService getInstance() {
Expand All @@ -152,14 +171,23 @@ public static KdbSettingsService getInstance() {
return instance;
}

static class State {
private static final class LegacyConsoleOptions {
private int floatPrecision;
}

public static class State {
private final List<String> credentialPlugins = new ArrayList<>();
private final ChartOptions chartOptions = new ChartOptions();
private final TableOptions tableOptions = new TableOptions();
private final ConsoleOptions consoleOptions = new ConsoleOptions();
private final InstanceOptions instanceOptions = new InstanceOptions();
private final ExecutionOptions executionOptions = new ExecutionOptions();
private final InspectorOptions inspectorOptions = new InspectorOptions();
private final NumericalOptions numericalOptions = new NumericalOptions();

@Transient
// Collection of all legacy options for migration copied from other options
private final LegacyConsoleOptions legacyConsoleOptions = new LegacyConsoleOptions();

public List<String> getCredentialPlugins() {
return credentialPlugins;
Expand All @@ -186,6 +214,7 @@ public ConsoleOptions getConsoleOptions() {

public void setConsoleOptions(ConsoleOptions consoleOptions) {
this.consoleOptions.copyFrom(consoleOptions);
legacyConsoleOptions.floatPrecision = consoleOptions.getLegacyFloatPrecision();
}

public InstanceOptions getInstanceOptions() {
Expand Down Expand Up @@ -219,5 +248,13 @@ public ChartOptions getChartOptions() {
public void setChartOptions(ChartOptions options) {
chartOptions.copyFrom(options);
}

public NumericalOptions getNumericalOptions() {
return numericalOptions;
}

public void setNumericalOptions(NumericalOptions options) {
numericalOptions.copyFrom(options);
}
}
}
72 changes: 64 additions & 8 deletions src/main/java/org/kdb/inside/brains/view/FormatterOptions.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,71 @@
package org.kdb.inside.brains.view;

public interface FormatterOptions {
int getFloatPrecision();
import org.kdb.inside.brains.settings.KdbSettingsService;
import org.kdb.inside.brains.view.console.ConsoleOptions;
import org.kdb.inside.brains.view.console.NumericalOptions;

boolean isWrapStrings();
import java.math.RoundingMode;
import java.util.function.BooleanSupplier;

boolean isPrefixSymbols();
public class FormatterOptions {
private final ConsoleOptions consoleOptions;
private final NumericalOptions numericalOptions;

boolean isEnlistArrays();
private final BooleanSupplier thousandsSupplier;
private final BooleanSupplier scientificSupplier;

default boolean isThousandsSeparator() {
return false;
public FormatterOptions() {
this(KdbSettingsService.getInstance().getConsoleOptions(), KdbSettingsService.getInstance().getNumericalOptions());
}
}

public FormatterOptions(ConsoleOptions consoleOptions, NumericalOptions numericalOptions) {
this(consoleOptions, numericalOptions, () -> false, numericalOptions::isScientificNotation);
}

private FormatterOptions(ConsoleOptions consoleOptions, NumericalOptions numericalOptions, BooleanSupplier thousandsSupplier, BooleanSupplier scientificSupplier) {
this.consoleOptions = consoleOptions;
this.numericalOptions = numericalOptions;
this.thousandsSupplier = thousandsSupplier;
this.scientificSupplier = scientificSupplier;
}

public boolean isWrapStrings() {
return consoleOptions.isWrapStrings();
}

public boolean isPrefixSymbols() {
return consoleOptions.isPrefixSymbols();
}

public boolean isEnlistArrays() {
return consoleOptions.isEnlistArrays();
}

public int getFloatPrecision() {
return numericalOptions.getFloatPrecision();
}

public RoundingMode getRoundingMode() {
return numericalOptions.getRoundingMode();
}

public boolean isScientificNotation() {
return scientificSupplier.getAsBoolean();
}

public boolean isThousandsSeparator() {
return thousandsSupplier.getAsBoolean();
}

public FormatterOptions withThousandsSeparator(BooleanSupplier thousands) {
return new FormatterOptions(consoleOptions, numericalOptions, thousands, scientificSupplier);
}

public FormatterOptions withScientificNotation(BooleanSupplier scientific) {
return new FormatterOptions(consoleOptions, numericalOptions, thousandsSupplier, scientific);
}

public FormatterOptions withThousandAndScientific(BooleanSupplier thousands, BooleanSupplier scientific) {
return new FormatterOptions(consoleOptions, numericalOptions, thousands, scientific);
}
}
Loading

0 comments on commit e1d6e86

Please sign in to comment.