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.java378
1 files changed, 189 insertions, 189 deletions
diff --git a/src/main/java/sevenUnitsGUI/TabbedView.java b/src/main/java/sevenUnitsGUI/TabbedView.java
index 1afaf33..8be58f5 100644
--- a/src/main/java/sevenUnitsGUI/TabbedView.java
+++ b/src/main/java/sevenUnitsGUI/TabbedView.java
@@ -81,7 +81,7 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
*/
private static final class JComboBoxItemSet<E> extends AbstractSet<E> {
private final JComboBox<E> comboBox;
-
+
/**
* @param comboBox combo box to get items from
* @since 2022-02-19
@@ -90,35 +90,34 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
public JComboBoxItemSet(JComboBox<E> comboBox) {
this.comboBox = comboBox;
}
-
+
@Override
public Iterator<E> iterator() {
return new Iterator<>() {
private int index = 0;
-
+
@Override
public boolean hasNext() {
return this.index < JComboBoxItemSet.this.size();
}
-
+
@Override
public E next() {
if (this.hasNext())
return JComboBoxItemSet.this.comboBox.getItemAt(this.index++);
- else
- throw new NoSuchElementException(
- "Iterator has finished iteration");
+ throw new NoSuchElementException(
+ "Iterator has finished iteration");
}
};
}
-
+
@Override
public int size() {
return this.comboBox.getItemCount();
}
-
+
}
-
+
/**
* The standard types of rounding, corresponding to the options on the
* TabbedView's settings panel.
@@ -126,7 +125,7 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
* @since 2022-04-18
* @since v0.4.0
*/
- private static enum StandardRoundingType {
+ private enum StandardRoundingType {
/**
* Rounds to a fixed number of significant digits. Precision is used,
* representing the number of significant digits to round to.
@@ -143,7 +142,7 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
*/
UNCERTAINTY;
}
-
+
/**
* Creates a TabbedView.
*
@@ -157,14 +156,14 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
@SuppressWarnings("unused")
final View view = new TabbedView();
}
-
+
/** The Presenter that handles this View */
final Presenter presenter;
/** The frame that this view lives on */
final JFrame frame;
/** The tabbed pane that contains all of the components */
final JTabbedPane masterPane;
-
+
// DIMENSION-BASED CONVERTER
/** The combo box that selects dimensions */
final JComboBox<String> dimensionSelector;
@@ -178,7 +177,7 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
final JButton convertUnitButton;
/** The output area in the dimension-based converter */
final JTextArea unitOutput;
-
+
// EXPRESSION-BASED CONVERTER
/** The "From" entry in the conversion panel */
final JTextField fromEntry;
@@ -188,7 +187,7 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
final JButton convertExpressionButton;
/** The output area in the conversion panel */
final JTextArea expressionOutput;
-
+
// UNIT AND PREFIX VIEWERS
/** The searchable list of unit names in the unit viewer */
private final SearchBoxList<String> unitNameList;
@@ -198,18 +197,18 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
private final JTextArea unitTextBox;
/** The text box for prefix data in the prefix viewer */
private final JTextArea prefixTextBox;
-
+
// INFO & SETTINGS STUFF
final JTextArea infoTextArea;
private final JComboBox<String> localeSelector;
private StandardRoundingType roundingType;
private int precision;
-
+
private final Map<String, Consumer<String>> localizedTextSetters;
-
+
/**
* Creates the view and makes it visible to the user
- *
+ *
* @since 2022-02-19
* @since v0.4.0
*/
@@ -223,180 +222,183 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
System.err.println("Failed to enable system look-and-feel.");
e.printStackTrace();
}
-
+
// initialize important components
this.presenter = new Presenter(this);
this.frame = new JFrame("7Units (Unlocalized)");
this.frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
-
+
// master components (those that contain everything else within them)
this.masterPane = new JTabbedPane();
this.frame.add(this.masterPane);
-
+
this.localizedTextSetters = new HashMap<>();
-
+
// ============ UNIT CONVERSION TAB ============
- final JPanel convertUnitPanel = new JPanel();
+ final var convertUnitPanel = new JPanel();
this.masterPane.addTab("Convert Units", convertUnitPanel);
this.localizedTextSetters.put("tv.convert_units.title",
txt -> this.masterPane.setTitleAt(0, txt));
this.masterPane.setMnemonicAt(0, KeyEvent.VK_U);
convertUnitPanel.setLayout(new BorderLayout());
-
+
{ // panel for input part
- final JPanel inputPanel = new JPanel();
+ final var inputPanel = new JPanel();
convertUnitPanel.add(inputPanel, BorderLayout.CENTER);
inputPanel.setLayout(new GridLayout(1, 3));
inputPanel.setBorder(new EmptyBorder(6, 6, 3, 6));
-
+
this.fromSearch = new SearchBoxList<>();
inputPanel.add(this.fromSearch);
-
- final JPanel inBetweenPanel = new JPanel();
+
+ final var inBetweenPanel = new JPanel();
inputPanel.add(inBetweenPanel);
inBetweenPanel.setLayout(new BorderLayout());
-
+
this.dimensionSelector = new JComboBox<>();
inBetweenPanel.add(this.dimensionSelector, BorderLayout.PAGE_START);
this.dimensionSelector
.addItemListener(e -> this.presenter.updateView());
-
- final JLabel arrowLabel = new JLabel("-->");
+
+ final var arrowLabel = new JLabel("-->");
inBetweenPanel.add(arrowLabel, BorderLayout.CENTER);
arrowLabel.setHorizontalAlignment(SwingConstants.CENTER);
-
+
this.toSearch = new SearchBoxList<>();
inputPanel.add(this.toSearch);
}
-
+
{ // panel for submit and output, and also value entry
- final JPanel outputPanel = new JPanel();
+ final var outputPanel = new JPanel();
convertUnitPanel.add(outputPanel, BorderLayout.PAGE_END);
outputPanel.setLayout(new BorderLayout());
outputPanel.setBorder(new EmptyBorder(3, 6, 6, 6));
-
- final JLabel valuePrompt = new JLabel();
- this.localizedTextSetters.put("tv.convert_units.value_prompt",
+
+ final var valuePrompt = new JLabel();
+ this.localizedTextSetters.put("tv.convert_units.value_prompt",
valuePrompt::setText);
outputPanel.add(valuePrompt, BorderLayout.LINE_START);
-
+
this.valueInput = new JTextField();
outputPanel.add(this.valueInput, BorderLayout.CENTER);
-
+
// conversion button
this.convertUnitButton = new JButton("Convert");
- this.localizedTextSetters.put("tv.convert_units.convert_btn",
+ this.localizedTextSetters.put("tv.convert_units.convert_btn",
this.convertUnitButton::setText);
outputPanel.add(this.convertUnitButton, BorderLayout.LINE_END);
this.convertUnitButton
.addActionListener(e -> this.presenter.convertUnits());
this.convertUnitButton.setMnemonic(KeyEvent.VK_ENTER);
-
+
// conversion output
this.unitOutput = new JTextArea(2, 32);
outputPanel.add(this.unitOutput, BorderLayout.PAGE_END);
this.unitOutput.setEditable(false);
}
-
+
// ============ EXPRESSION CONVERSION TAB ============
- final JPanel convertExpressionPanel = new JPanel();
+ final var convertExpressionPanel = new JPanel();
this.masterPane.addTab("Convert Unit Expressions",
convertExpressionPanel);
- this.localizedTextSetters.put("tv.convert_expressions.title",
+ this.localizedTextSetters.put("tv.convert_expressions.title",
txt -> this.masterPane.setTitleAt(1, txt));
this.masterPane.setMnemonicAt(1, KeyEvent.VK_E);
convertExpressionPanel.setLayout(new GridLayout(4, 1));
-
+
// from and to expressions
this.fromEntry = new JTextField();
convertExpressionPanel.add(this.fromEntry);
- this.localizedTextSetters.put("tv.convert_expressions.from",
- txt -> this.fromEntry.setBorder(BorderFactory.createTitledBorder(txt)));
-
+ this.localizedTextSetters.put("tv.convert_expressions.from",
+ txt -> this.fromEntry
+ .setBorder(BorderFactory.createTitledBorder(txt)));
+
this.toEntry = new JTextField();
convertExpressionPanel.add(this.toEntry);
- this.localizedTextSetters.put("tv.convert_expressions.to",
- txt -> this.toEntry.setBorder(BorderFactory.createTitledBorder(txt)));
-
+ this.localizedTextSetters.put("tv.convert_expressions.to",
+ txt -> this.toEntry
+ .setBorder(BorderFactory.createTitledBorder(txt)));
+
// button to convert
this.convertExpressionButton = new JButton();
this.localizedTextSetters.put("tv.convert_expressions.convert_btn",
this.convertExpressionButton::setText);
convertExpressionPanel.add(this.convertExpressionButton);
-
+
this.convertExpressionButton
.addActionListener(e -> this.presenter.convertExpressions());
this.convertExpressionButton.setMnemonic(KeyEvent.VK_ENTER);
-
+
// output of conversion
this.expressionOutput = new JTextArea(2, 32);
convertExpressionPanel.add(this.expressionOutput);
- this.localizedTextSetters.put("tv.convert_expressions.output",
- txt -> this.expressionOutput.setBorder(BorderFactory.createTitledBorder(txt)));
+ this.localizedTextSetters.put("tv.convert_expressions.output",
+ txt -> this.expressionOutput
+ .setBorder(BorderFactory.createTitledBorder(txt)));
this.expressionOutput.setEditable(false);
-
+
// =========== UNIT VIEWER ===========
- final JPanel unitLookupPanel = new JPanel();
+ final var unitLookupPanel = new JPanel();
this.masterPane.addTab("Unit Viewer", unitLookupPanel);
- this.localizedTextSetters.put("tv.unit_viewer.title",
+ this.localizedTextSetters.put("tv.unit_viewer.title",
txt -> this.masterPane.setTitleAt(2, txt));
this.masterPane.setMnemonicAt(2, KeyEvent.VK_V);
unitLookupPanel.setLayout(new GridLayout());
-
+
this.unitNameList = new SearchBoxList<>();
unitLookupPanel.add(this.unitNameList);
this.unitNameList.getSearchList()
.addListSelectionListener(e -> this.presenter.unitNameSelected());
-
+
// the text box for unit's toString
this.unitTextBox = new JTextArea();
unitLookupPanel.add(this.unitTextBox);
this.unitTextBox.setEditable(false);
this.unitTextBox.setLineWrap(true);
-
+
// ============ PREFIX VIEWER =============
- final JPanel prefixLookupPanel = new JPanel();
+ final var prefixLookupPanel = new JPanel();
this.masterPane.addTab("Prefix Viewer", prefixLookupPanel);
- this.localizedTextSetters.put("tv.prefix_viewer.title",
+ this.localizedTextSetters.put("tv.prefix_viewer.title",
txt -> this.masterPane.setTitleAt(3, txt));
this.masterPane.setMnemonicAt(3, KeyEvent.VK_P);
prefixLookupPanel.setLayout(new GridLayout(1, 2));
-
+
this.prefixNameList = new SearchBoxList<>();
prefixLookupPanel.add(this.prefixNameList);
this.prefixNameList.getSearchList()
.addListSelectionListener(e -> this.presenter.prefixSelected());
-
+
// the text box for prefix's toString
this.prefixTextBox = new JTextArea();
prefixLookupPanel.add(this.prefixTextBox);
this.prefixTextBox.setEditable(false);
this.prefixTextBox.setLineWrap(true);
-
+
// ============ INFO PANEL ============
-
- final JPanel infoPanel = new JPanel();
+
+ final var infoPanel = new JPanel();
this.masterPane.addTab("\uD83D\uDEC8", // info (i) character
new JScrollPane(infoPanel));
-
+
this.infoTextArea = new JTextArea();
this.infoTextArea.setEditable(false);
this.infoTextArea.setOpaque(false);
infoPanel.add(this.infoTextArea);
-
+
// ============ SETTINGS PANEL ============
this.localeSelector = new JComboBox<>();
this.masterPane.addTab("\u2699",
new JScrollPane(this.createSettingsPanel()));
this.masterPane.setMnemonicAt(5, KeyEvent.VK_S);
-
+
// ============ FINALIZE CREATION OF VIEW ============
this.presenter.postViewInitialize();
this.updateText();
this.frame.pack();
this.frame.setVisible(true);
}
-
+
/**
* Creates and returns the settings panel (in its own function to make this
* code more organized, as this function is massive!)
@@ -405,64 +407,64 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
* @since v0.4.0
*/
private JPanel createSettingsPanel() {
- final JPanel settingsPanel = new JPanel();
-
+ final var settingsPanel = new JPanel();
+
settingsPanel
.setLayout(new BoxLayout(settingsPanel, BoxLayout.PAGE_AXIS));
-
+
// ============ ROUNDING SETTINGS ============
{
- final JPanel roundingPanel = new JPanel();
+ final var roundingPanel = new JPanel();
settingsPanel.add(roundingPanel);
- this.localizedTextSetters.put("tv.settings.rounding.title",
+ this.localizedTextSetters.put("tv.settings.rounding.title",
txt -> roundingPanel.setBorder(new TitledBorder(txt)));
roundingPanel.setLayout(new GridBagLayout());
-
+
// rounding rule selection
- final ButtonGroup roundingRuleButtons = new ButtonGroup();
+ final var roundingRuleButtons = new ButtonGroup();
this.roundingType = this.getPresenterRoundingType()
.orElseThrow(() -> new AssertionError(
"Presenter loaded non-standard rounding rule"));
this.precision = this.getPresenterPrecision().orElse(6);
-
- final JLabel roundingRuleLabel = new JLabel();
- this.localizedTextSetters.put("tv.settings.rounding.rule",
+
+ final var roundingRuleLabel = new JLabel();
+ this.localizedTextSetters.put("tv.settings.rounding.rule",
roundingRuleLabel::setText);
roundingPanel.add(roundingRuleLabel, new GridBagBuilder(0, 0)
.setAnchor(GridBagConstraints.LINE_START).build());
-
+
// sigDigSlider needs to be first so that the rounding-type buttons can
// show and hide it
- final JLabel sliderLabel = new JLabel();
- this.localizedTextSetters.put("tv.settings.rounding.precision",
+ final var sliderLabel = new JLabel();
+ this.localizedTextSetters.put("tv.settings.rounding.precision",
sliderLabel::setText);
sliderLabel.setVisible(
this.roundingType != StandardRoundingType.UNCERTAINTY);
roundingPanel.add(sliderLabel, new GridBagBuilder(0, 4)
.setAnchor(GridBagConstraints.LINE_START).build());
-
- final JSlider sigDigSlider = new JSlider(0, 12);
+
+ final var sigDigSlider = new JSlider(0, 12);
roundingPanel.add(sigDigSlider, new GridBagBuilder(0, 5)
.setAnchor(GridBagConstraints.LINE_START).build());
-
+
sigDigSlider.setMajorTickSpacing(4);
sigDigSlider.setMinorTickSpacing(1);
sigDigSlider.setSnapToTicks(true);
sigDigSlider.setPaintTicks(true);
sigDigSlider.setPaintLabels(true);
-
+
sigDigSlider.setVisible(
this.roundingType != StandardRoundingType.UNCERTAINTY);
sigDigSlider.setValue(this.precision);
-
+
sigDigSlider.addChangeListener(e -> {
this.precision = sigDigSlider.getValue();
this.updatePresenterRoundingRule();
});
-
+
// significant digit rounding
- final JRadioButton fixedPrecision = new JRadioButton();
- this.localizedTextSetters.put("tv.settings.rounding.fixed_sigfig",
+ final var fixedPrecision = new JRadioButton();
+ this.localizedTextSetters.put("tv.settings.rounding.fixed_sigfig",
fixedPrecision::setText);
if (this.roundingType == StandardRoundingType.SIGNIFICANT_DIGITS) {
fixedPrecision.setSelected(true);
@@ -476,10 +478,10 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
roundingRuleButtons.add(fixedPrecision);
roundingPanel.add(fixedPrecision, new GridBagBuilder(0, 1)
.setAnchor(GridBagConstraints.LINE_START).build());
-
+
// decimal place rounding
- final JRadioButton fixedDecimals = new JRadioButton();
- this.localizedTextSetters.put("tv.settings.rounding.fixed_places",
+ final var fixedDecimals = new JRadioButton();
+ this.localizedTextSetters.put("tv.settings.rounding.fixed_places",
fixedDecimals::setText);
if (this.roundingType == StandardRoundingType.DECIMAL_PLACES) {
fixedDecimals.setSelected(true);
@@ -493,10 +495,10 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
roundingRuleButtons.add(fixedDecimals);
roundingPanel.add(fixedDecimals, new GridBagBuilder(0, 2)
.setAnchor(GridBagConstraints.LINE_START).build());
-
+
// scientific rounding
- final JRadioButton relativePrecision = new JRadioButton();
- this.localizedTextSetters.put("tv.settings.rounding.uncertainty",
+ final var relativePrecision = new JRadioButton();
+ this.localizedTextSetters.put("tv.settings.rounding.uncertainty",
relativePrecision::setText);
if (this.roundingType == StandardRoundingType.UNCERTAINTY) {
relativePrecision.setSelected(true);
@@ -511,24 +513,24 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
roundingPanel.add(relativePrecision, new GridBagBuilder(0, 3)
.setAnchor(GridBagConstraints.LINE_START).build());
}
-
+
// ============ PREFIX REPETITION SETTINGS ============
{
- final JPanel prefixRepetitionPanel = new JPanel();
+ final var prefixRepetitionPanel = new JPanel();
settingsPanel.add(prefixRepetitionPanel);
- this.localizedTextSetters.put("tv.settings.repetition.title",
+ this.localizedTextSetters.put("tv.settings.repetition.title",
txt -> prefixRepetitionPanel.setBorder(new TitledBorder(txt)));
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();
- this.localizedTextSetters.put("tv.settings.repetition.no",
+ final var prefixRuleButtons = new ButtonGroup();
+
+ final var noRepetition = new JRadioButton();
+ this.localizedTextSetters.put("tv.settings.repetition.no",
noRepetition::setText);
if (prefixRule == DefaultPrefixRepetitionRule.NO_REPETITION) {
noRepetition.setSelected(true);
@@ -541,9 +543,9 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
prefixRuleButtons.add(noRepetition);
prefixRepetitionPanel.add(noRepetition, new GridBagBuilder(0, 0)
.setAnchor(GridBagConstraints.LINE_START).build());
-
- final JRadioButton noRestriction = new JRadioButton();
- this.localizedTextSetters.put("tv.settings.repetition.any",
+
+ final var noRestriction = new JRadioButton();
+ this.localizedTextSetters.put("tv.settings.repetition.any",
noRestriction::setText);
if (prefixRule == DefaultPrefixRepetitionRule.NO_RESTRICTION) {
noRestriction.setSelected(true);
@@ -556,9 +558,9 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
prefixRuleButtons.add(noRestriction);
prefixRepetitionPanel.add(noRestriction, new GridBagBuilder(0, 1)
.setAnchor(GridBagConstraints.LINE_START).build());
-
- final JRadioButton customRepetition = new JRadioButton();
- this.localizedTextSetters.put("tv.settings.repetition.complex",
+
+ final var customRepetition = new JRadioButton();
+ this.localizedTextSetters.put("tv.settings.repetition.complex",
customRepetition::setText);
if (prefixRule == DefaultPrefixRepetitionRule.COMPLEX_REPETITION) {
customRepetition.setSelected(true);
@@ -572,22 +574,22 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
prefixRepetitionPanel.add(customRepetition, new GridBagBuilder(0, 2)
.setAnchor(GridBagConstraints.LINE_START).build());
}
-
+
// ============ SEARCH SETTINGS ============
{
- final JPanel searchingPanel = new JPanel();
+ final var searchingPanel = new JPanel();
settingsPanel.add(searchingPanel);
- this.localizedTextSetters.put("tv.settings.search.title",
+ this.localizedTextSetters.put("tv.settings.search.title",
txt -> searchingPanel.setBorder(new TitledBorder(txt)));
searchingPanel.setLayout(new GridBagLayout());
-
+
// searching rules
- final ButtonGroup searchRuleButtons = new ButtonGroup();
-
+ final var searchRuleButtons = new ButtonGroup();
+
final var searchRule = this.presenter.getSearchRule();
-
- final JRadioButton noPrefixes = new JRadioButton();
- this.localizedTextSetters.put("tv.settings.search.no_prefixes",
+
+ final var noPrefixes = new JRadioButton();
+ this.localizedTextSetters.put("tv.settings.search.no_prefixes",
noPrefixes::setText);
noPrefixes.addActionListener(e -> {
this.presenter.setSearchRule(PrefixSearchRule.NO_PREFIXES);
@@ -597,9 +599,9 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
searchRuleButtons.add(noPrefixes);
searchingPanel.add(noPrefixes, new GridBagBuilder(0, 0)
.setAnchor(GridBagConstraints.LINE_START).build());
-
- final JRadioButton commonPrefixes = new JRadioButton();
- this.localizedTextSetters.put("tv.settings.search.common_prefixes",
+
+ final var commonPrefixes = new JRadioButton();
+ this.localizedTextSetters.put("tv.settings.search.common_prefixes",
commonPrefixes::setText);
commonPrefixes.addActionListener(e -> {
this.presenter.setSearchRule(PrefixSearchRule.COMMON_PREFIXES);
@@ -609,9 +611,9 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
searchRuleButtons.add(commonPrefixes);
searchingPanel.add(commonPrefixes, new GridBagBuilder(0, 1)
.setAnchor(GridBagConstraints.LINE_START).build());
-
- final JRadioButton alwaysInclude = new JRadioButton();
- this.localizedTextSetters.put("tv.settings.search.all_prefixes",
+
+ final var alwaysInclude = new JRadioButton();
+ this.localizedTextSetters.put("tv.settings.search.all_prefixes",
alwaysInclude::setText);
alwaysInclude.addActionListener(e -> {
this.presenter
@@ -622,7 +624,7 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
searchRuleButtons.add(alwaysInclude);
searchingPanel.add(alwaysInclude, new GridBagBuilder(0, 3)
.setAnchor(GridBagConstraints.LINE_START).build());
-
+
if (PrefixSearchRule.NO_PREFIXES.equals(searchRule)) {
noPrefixes.setSelected(true);
} else if (PrefixSearchRule.COMMON_PREFIXES.equals(searchRule)) {
@@ -634,14 +636,14 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
this.presenter.saveSettings();
}
}
-
+
// ============ OTHER SETTINGS ============
{
- final JPanel miscPanel = new JPanel();
+ final var miscPanel = new JPanel();
settingsPanel.add(miscPanel);
miscPanel.setLayout(new GridBagLayout());
-
- final JCheckBox oneWay = new JCheckBox();
+
+ final var oneWay = new JCheckBox();
this.localizedTextSetters.put("tv.settings.oneway", oneWay::setText);
oneWay.setSelected(this.presenter.oneWayConversionEnabled());
oneWay.addItemListener(e -> {
@@ -651,9 +653,9 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
});
miscPanel.add(oneWay, new GridBagBuilder(0, 0, 2, 1)
.setAnchor(GridBagConstraints.LINE_START).build());
-
- final JCheckBox showAllVariations = new JCheckBox();
- this.localizedTextSetters.put("tv.settings.show_duplicate",
+
+ final var showAllVariations = new JCheckBox();
+ this.localizedTextSetters.put("tv.settings.show_duplicate",
showAllVariations::setText);
showAllVariations.setSelected(this.presenter.duplicatesShown());
showAllVariations.addItemListener(e -> {
@@ -663,25 +665,25 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
});
miscPanel.add(showAllVariations, new GridBagBuilder(0, 1, 2, 1)
.setAnchor(GridBagConstraints.LINE_START).build());
-
- final JCheckBox useDefaultFiles = new JCheckBox();
- this.localizedTextSetters.put("tv.settings.use_default_files",
+
+ final var useDefaultFiles = new JCheckBox();
+ this.localizedTextSetters.put("tv.settings.use_default_files",
useDefaultFiles::setText);
useDefaultFiles.setSelected(this.presenter.usingDefaultDatafiles());
useDefaultFiles.addItemListener(e -> {
- this.presenter
- .setUseDefaultDatafiles(e.getStateChange() == ItemEvent.SELECTED);
+ this.presenter.setUseDefaultDatafiles(
+ e.getStateChange() == ItemEvent.SELECTED);
this.presenter.saveSettings();
});
miscPanel.add(useDefaultFiles, new GridBagBuilder(0, 2, 2, 1)
.setAnchor(GridBagConstraints.LINE_START).build());
-
- final JLabel localeLabel = new JLabel();
- this.localizedTextSetters.put("tv.settings.locale",
+
+ final var localeLabel = new JLabel();
+ this.localizedTextSetters.put("tv.settings.locale",
localeLabel::setText);
miscPanel.add(localeLabel, new GridBagBuilder(0, 3, 1, 1)
.setAnchor(GridBagConstraints.LINE_START).build());
-
+
this.presenter.getAvailableLocales().stream().sorted()
.forEachOrdered(this.localeSelector::addItem);
this.localeSelector.setSelectedItem(this.presenter.getUserLocale());
@@ -691,51 +693,51 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
});
miscPanel.add(localeSelector, new GridBagBuilder(1, 3, 1, 1)
.setAnchor(GridBagConstraints.LINE_END).build());
-
- final JButton unitFileButton = new JButton();
- this.localizedTextSetters.put("tv.settings.unitfiles.button",
+
+ final var unitFileButton = new JButton();
+ this.localizedTextSetters.put("tv.settings.unitfiles.button",
unitFileButton::setText);
unitFileButton.setEnabled(false);
miscPanel.add(unitFileButton, new GridBagBuilder(0, 4, 2, 1)
.setAnchor(GridBagConstraints.LINE_START).build());
}
-
+
return settingsPanel;
}
-
+
@Override
public Set<String> getDimensionNames() {
return Collections
.unmodifiableSet(new JComboBoxItemSet<>(this.dimensionSelector));
}
-
+
@Override
public String getFromExpression() {
return this.fromEntry.getText();
}
-
+
@Override
public Optional<String> getFromSelection() {
return this.fromSearch.getSelectedValue();
}
-
+
@Override
public Set<String> getFromUnitNames() {
// this should work because the only way I can mutate the item list is
// with setFromUnits which only accepts a Set
return new HashSet<>(this.fromSearch.getItems());
}
-
+
@Override
public String getInputValue() {
return this.valueInput.getText();
}
-
+
@Override
public Presenter getPresenter() {
return this.presenter;
}
-
+
/**
* @return the precision of the presenter's rounding rule, if that is
* meaningful
@@ -748,14 +750,13 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
return OptionalInt
.of(((StandardDisplayRules.FixedDecimals) presenterRule)
.decimalPlaces());
- else if (presenterRule instanceof StandardDisplayRules.FixedPrecision)
+ if (presenterRule instanceof StandardDisplayRules.FixedPrecision)
return OptionalInt
.of(((StandardDisplayRules.FixedPrecision) presenterRule)
.significantFigures());
- else
- return OptionalInt.empty();
+ return OptionalInt.empty();
}
-
+
/**
* @return presenter's prefix repetition rule
* @since 2022-04-19
@@ -767,7 +768,7 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
? Optional.of((DefaultPrefixRepetitionRule) prefixRule)
: Optional.empty();
}
-
+
/**
* Determines which rounding type the presenter is currently using, if any.
*
@@ -779,48 +780,47 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
if (Objects.equals(presenterRule,
StandardDisplayRules.uncertaintyBased()))
return Optional.of(StandardRoundingType.UNCERTAINTY);
- else if (presenterRule instanceof StandardDisplayRules.FixedDecimals)
+ if (presenterRule instanceof StandardDisplayRules.FixedDecimals)
return Optional.of(StandardRoundingType.DECIMAL_PLACES);
- else if (presenterRule instanceof StandardDisplayRules.FixedPrecision)
+ if (presenterRule instanceof StandardDisplayRules.FixedPrecision)
return Optional.of(StandardRoundingType.SIGNIFICANT_DIGITS);
- else
- return Optional.empty();
+ return Optional.empty();
}
-
+
@Override
public Optional<String> getSelectedDimensionName() {
- final String selectedItem = (String) this.dimensionSelector
+ final var selectedItem = (String) this.dimensionSelector
.getSelectedItem();
return Optional.ofNullable(selectedItem);
}
-
+
@Override
public String getToExpression() {
return this.toEntry.getText();
}
-
+
@Override
public Optional<String> getToSelection() {
return this.toSearch.getSelectedValue();
}
-
+
@Override
public Set<String> getToUnitNames() {
// this should work because the only way I can mutate the item list is
// with setToUnits which only accepts a Set
return new HashSet<>(this.toSearch.getItems());
}
-
+
@Override
public Optional<String> getViewedPrefixName() {
return this.prefixNameList.getSelectedValue();
}
-
+
@Override
public Optional<String> getViewedUnitName() {
return this.unitNameList.getSelectedValue();
}
-
+
@Override
public void setDimensionNames(Set<String> dimensionNames) {
this.dimensionSelector.removeAllItems();
@@ -828,44 +828,44 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
this.dimensionSelector.addItem(d);
}
}
-
+
@Override
public void setFromUnitNames(Set<String> units) {
this.fromSearch.setItems(units);
}
-
+
@Override
public void setToUnitNames(Set<String> units) {
this.toSearch.setItems(units);
}
-
+
@Override
public void setViewablePrefixNames(Set<String> prefixNames) {
this.prefixNameList.setItems(prefixNames);
}
-
+
@Override
public void setViewableUnitNames(Set<String> unitNames) {
this.unitNameList.setItems(unitNames);
}
-
+
@Override
public void showErrorMessage(String title, String message) {
JOptionPane.showMessageDialog(this.frame, message, title,
JOptionPane.ERROR_MESSAGE);
}
-
+
@Override
public void showExpressionConversionOutput(UnitConversionRecord uc) {
this.expressionOutput.setText(uc.toString());
}
-
+
@Override
public void showPrefix(NameSymbol name, String multiplierString) {
this.prefixTextBox.setText(
String.format("%s%nMultiplier: %s", name, multiplierString));
}
-
+
@Override
public void showUnit(NameSymbol name, String definition,
String dimensionName, UnitType type) {
@@ -873,16 +873,16 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
String.format("%s%nDefinition: %s%nDimension: %s%nType: %s", name,
definition, dimensionName, type));
}
-
+
@Override
public void showUnitConversionOutput(UnitConversionRecord uc) {
this.unitOutput.setText(uc.toString());
}
-
+
/**
* Sets the presenter's rounding rule to the one specified by the current
* settings
- *
+ *
* @since 2022-04-18
* @since v0.4.0
*/
@@ -910,7 +910,7 @@ final class TabbedView implements ExpressionConversionView, UnitConversionView {
this.frame.setTitle(this.presenter.getLocalizedText("tv.title")
.replace("[v]", ProgramInfo.VERSION.toString()));
this.infoTextArea.setText(this.presenter.getAboutText());
- this.localizedTextSetters.forEach((id, action) ->
- action.accept(this.presenter.getLocalizedText(id)));
+ this.localizedTextSetters.forEach(
+ (id, action) -> action.accept(this.presenter.getLocalizedText(id)));
}
}