summaryrefslogtreecommitdiff
path: root/src/main/java/org/unitConverter/converterGUI/UnitConverterGUI.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/unitConverter/converterGUI/UnitConverterGUI.java')
-rw-r--r--src/main/java/org/unitConverter/converterGUI/UnitConverterGUI.java46
1 files changed, 36 insertions, 10 deletions
diff --git a/src/main/java/org/unitConverter/converterGUI/UnitConverterGUI.java b/src/main/java/org/unitConverter/converterGUI/UnitConverterGUI.java
index ee1bcc3..17ec5f9 100644
--- a/src/main/java/org/unitConverter/converterGUI/UnitConverterGUI.java
+++ b/src/main/java/org/unitConverter/converterGUI/UnitConverterGUI.java
@@ -216,6 +216,9 @@ final class UnitConverterGUI {
private RoundingType roundingType = RoundingType.SIGNIFICANT_DIGITS;
+ // The "include duplicate units" setting
+ private boolean includeDuplicateUnits = true;
+
/**
* Creates the presenter.
*
@@ -291,7 +294,7 @@ final class UnitConverterGUI {
};
this.unitNames = new ArrayList<>(
- this.database.unitMapPrefixless().keySet());
+ this.database.unitMapPrefixless(true).keySet());
this.unitNames.sort(null); // sorts it using Comparable
this.prefixNames = new ArrayList<>(this.database.prefixMap().keySet());
@@ -309,10 +312,10 @@ final class UnitConverterGUI {
// print out unit counts
System.out.printf(
"Successfully loaded %d units with %d unit names (%d base units).%n",
- new HashSet<>(this.database.unitMapPrefixless().values()).size(),
- this.database.unitMapPrefixless().size(),
- new HashSet<>(this.database.unitMapPrefixless().values())
- .stream().filter(isFullBase).count());
+ this.database.unitMapPrefixless(false).size(),
+ this.database.unitMapPrefixless(true).size(),
+ this.database.unitMapPrefixless(false).values().stream()
+ .filter(isFullBase).count());
}
/**
@@ -586,6 +589,12 @@ final class UnitConverterGUI {
this.toExistenceCondition.setPredicate(unitName -> true);
}
break;
+ case "include_duplicates":
+ this.includeDuplicateUnits = Boolean.valueOf(value);
+ if (this.view.presenter != null) {
+ this.view.update();
+ }
+ break;
default:
System.err.printf("Warning: unrecognized setting \"%s\".",
param);
@@ -638,6 +647,8 @@ final class UnitConverterGUI {
String.format("rounding_type=%s\n", this.roundingType));
writer.write(String.format("prefix_rule=%s\n", this.prefixRule));
writer.write(String.format("one_way=%s\n", this.oneWay));
+ writer.write(String.format("include_duplicates=%s\n",
+ this.includeDuplicateUnits));
} catch (final IOException e) {
e.printStackTrace();
this.view.showErrorDialog("I/O Error",
@@ -646,6 +657,14 @@ final class UnitConverterGUI {
}
}
+ public final void setIncludeDuplicateUnits(
+ boolean includeDuplicateUnits) {
+ this.includeDuplicateUnits = includeDuplicateUnits;
+
+ this.view.update();
+ this.saveSettings();
+ }
+
/**
* Enables or disables one-way conversion.
*
@@ -760,8 +779,9 @@ final class UnitConverterGUI {
* @since 2019-04-14
* @since v0.2.0
*/
- private final Set<String> unitNameSet() {
- return this.database.unitMapPrefixless().keySet();
+ public final Set<String> unitNameSet() {
+ return this.database.unitMapPrefixless(this.includeDuplicateUnits)
+ .keySet();
}
}
@@ -1385,9 +1405,11 @@ final class UnitConverterGUI {
.setAnchor(GridBagConstraints.LINE_START).build());
final JCheckBox showAllVariations = new JCheckBox(
- "Show Symbols in \"Convert Units\"");
- showAllVariations.setSelected(true);
- showAllVariations.setEnabled(false);
+ "Show Duplicates in \"Convert Units\"");
+ showAllVariations
+ .setSelected(this.presenter.includeDuplicateUnits);
+ showAllVariations.addItemListener(e -> this.presenter
+ .setIncludeDuplicateUnits(e.getStateChange() == 1));
miscPanel.add(showAllVariations, new GridBagBuilder(0, 1)
.setAnchor(GridBagConstraints.LINE_START).build());
@@ -1459,6 +1481,10 @@ final class UnitConverterGUI {
}
public void update() {
+ this.unitNameList.setItems(this.presenter.unitNameSet());
+ this.fromSearch.setItems(this.presenter.fromEntries());
+ this.toSearch.setItems(this.presenter.toEntries());
+
switch (this.getActivePane()) {
case UNIT_CONVERTER:
this.fromSearch.updateList();