summaryrefslogtreecommitdiff
path: root/src/main/java/sevenUnitsGUI/TabbedView.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/sevenUnitsGUI/TabbedView.java')
-rw-r--r--src/main/java/sevenUnitsGUI/TabbedView.java77
1 files changed, 55 insertions, 22 deletions
diff --git a/src/main/java/sevenUnitsGUI/TabbedView.java b/src/main/java/sevenUnitsGUI/TabbedView.java
index 098c374..c8e69ee 100644
--- a/src/main/java/sevenUnitsGUI/TabbedView.java
+++ b/src/main/java/sevenUnitsGUI/TabbedView.java
@@ -543,39 +543,49 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
.setBorder(new TitledBorder("Prefix Repetition Settings"));
prefixRepetitionPanel.setLayout(new GridBagLayout());
+ final var prefixRule = this.getPresenterPrefixRule()
+ .orElseThrow(() -> new AssertionError(
+ "Presenter loaded non-standard prefix rule"));
+
// prefix rules
final ButtonGroup prefixRuleButtons = new ButtonGroup();
final JRadioButton noRepetition = new JRadioButton("No Repetition");
-// if (this.presenter.prefixRule == DefaultPrefixRepetitionRule.NO_REPETITION) {
-// noRepetition.setSelected(true);
-// }
-// noRepetition
-// .addActionListener(e -> this.presenter.setPrefixRepetitionRule(
-// DefaultPrefixRepetitionRule.NO_REPETITION));
+ if (prefixRule == DefaultPrefixRepetitionRule.NO_REPETITION) {
+ noRepetition.setSelected(true);
+ }
+ noRepetition.addActionListener(e -> {
+ this.presenter.setPrefixRepetitionRule(
+ DefaultPrefixRepetitionRule.NO_REPETITION);
+ this.presenter.saveSettings();
+ });
prefixRuleButtons.add(noRepetition);
prefixRepetitionPanel.add(noRepetition, new GridBagBuilder(0, 0)
.setAnchor(GridBagConstraints.LINE_START).build());
final JRadioButton noRestriction = new JRadioButton("No Restriction");
-// if (this.presenter.prefixRule == DefaultPrefixRepetitionRule.NO_RESTRICTION) {
-// noRestriction.setSelected(true);
-// }
-// noRestriction
-// .addActionListener(e -> this.presenter.setPrefixRepetitionRule(
-// DefaultPrefixRepetitionRule.NO_RESTRICTION));
+ if (prefixRule == DefaultPrefixRepetitionRule.NO_RESTRICTION) {
+ noRestriction.setSelected(true);
+ }
+ noRestriction.addActionListener(e -> {
+ this.presenter.setPrefixRepetitionRule(
+ DefaultPrefixRepetitionRule.NO_RESTRICTION);
+ this.presenter.saveSettings();
+ });
prefixRuleButtons.add(noRestriction);
prefixRepetitionPanel.add(noRestriction, new GridBagBuilder(0, 1)
.setAnchor(GridBagConstraints.LINE_START).build());
final JRadioButton customRepetition = new JRadioButton(
"Complex Repetition");
-// if (this.presenter.prefixRule == DefaultPrefixRepetitionRule.COMPLEX_REPETITION) {
-// customRepetition.setSelected(true);
-// }
-// customRepetition
-// .addActionListener(e -> this.presenter.setPrefixRepetitionRule(
-// DefaultPrefixRepetitionRule.COMPLEX_REPETITION));
+ if (prefixRule == DefaultPrefixRepetitionRule.COMPLEX_REPETITION) {
+ customRepetition.setSelected(true);
+ }
+ customRepetition.addActionListener(e -> {
+ this.presenter.setPrefixRepetitionRule(
+ DefaultPrefixRepetitionRule.COMPLEX_REPETITION);
+ this.presenter.saveSettings();
+ });
prefixRuleButtons.add(customRepetition);
prefixRepetitionPanel.add(customRepetition, new GridBagBuilder(0, 2)
.setAnchor(GridBagConstraints.LINE_START).build());
@@ -628,16 +638,22 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
final JCheckBox oneWay = new JCheckBox("Convert One Way Only");
oneWay.setSelected(this.presenter.oneWayConversionEnabled());
- oneWay.addItemListener(e -> this.presenter.setOneWayConversionEnabled(
- e.getStateChange() == ItemEvent.SELECTED));
+ oneWay.addItemListener(e -> {
+ this.presenter.setOneWayConversionEnabled(
+ e.getStateChange() == ItemEvent.SELECTED);
+ this.presenter.saveSettings();
+ });
miscPanel.add(oneWay, new GridBagBuilder(0, 0)
.setAnchor(GridBagConstraints.LINE_START).build());
final JCheckBox showAllVariations = new JCheckBox(
"Show Duplicate Units & Prefixes");
showAllVariations.setSelected(this.presenter.duplicatesShown());
- showAllVariations.addItemListener(e -> this.presenter
- .setShowDuplicates(e.getStateChange() == ItemEvent.SELECTED));
+ showAllVariations.addItemListener(e -> {
+ this.presenter
+ .setShowDuplicates(e.getStateChange() == ItemEvent.SELECTED);
+ this.presenter.saveSettings();
+ });
miscPanel.add(showAllVariations, new GridBagBuilder(0, 1)
.setAnchor(GridBagConstraints.LINE_START).build());
@@ -678,6 +694,11 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
return this.valueInput.getText();
}
+ @Override
+ public Presenter getPresenter() {
+ return this.presenter;
+ }
+
/**
* @return the precision of the presenter's rounding rule, if that is
* meaningful
@@ -698,6 +719,17 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
}
/**
+ * @return presenter's prefix repetition rule
+ * @since 2022-04-19
+ */
+ private Optional<DefaultPrefixRepetitionRule> getPresenterPrefixRule() {
+ final var prefixRule = this.presenter.getPrefixRepetitionRule();
+ return prefixRule instanceof DefaultPrefixRepetitionRule
+ ? Optional.of((DefaultPrefixRepetitionRule) prefixRule)
+ : Optional.empty();
+ }
+
+ /**
* Determines which rounding type the presenter is currently using, if any.
*
* @since 2022-04-18
@@ -830,5 +862,6 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
throw new AssertionError();
}
this.presenter.setNumberDisplayRule(roundingRule);
+ this.presenter.saveSettings();
}
}