From f7a37fc1e81b3d35f8dc72b16994f7e8d2e68aa3 Mon Sep 17 00:00:00 2001 From: hneemann Date: Thu, 4 Feb 2021 18:22:31 +0100 Subject: [PATCH] refactoring of SingleValueDialog separators, see #637 --- .../de/neemann/digital/core/IntFormat.java | 24 +++++++++--------- .../neemann/digital/core/ValueFormatter.java | 25 +++++-------------- .../gui/components/SingleValueDialog.java | 4 +-- 3 files changed, 20 insertions(+), 33 deletions(-) diff --git a/src/main/java/de/neemann/digital/core/IntFormat.java b/src/main/java/de/neemann/digital/core/IntFormat.java index 4cf195f98..c1c33e87a 100644 --- a/src/main/java/de/neemann/digital/core/IntFormat.java +++ b/src/main/java/de/neemann/digital/core/IntFormat.java @@ -140,8 +140,8 @@ public enum IntFormat { } @Override - public IsSeparator getSeparators(int bits) { - return bit -> bit % 4 == 0; + public boolean isSeparatorInFrontOf(int bits, int bit) { + return bit % 4 == 0; } } @@ -231,8 +231,8 @@ public enum IntFormat { } @Override - public IsSeparator getSeparators(int bits) { - return bit -> bit % 4 == 0; + public boolean isSeparatorInFrontOf(int bits, int bit) { + return bit % 4 == 0; } } @@ -301,8 +301,8 @@ public enum IntFormat { } @Override - public IsSeparator getSeparators(int bits) { - return bit -> bit % 3 == 0; + public boolean isSeparatorInFrontOf(int bits, int bit) { + return bit % 3 == 0; } } @@ -465,8 +465,8 @@ public enum IntFormat { } @Override - public IsSeparator getSeparators(int bits) { - return bit -> bit == fixedPoint; + public boolean isSeparatorInFrontOf(int bits, int bit) { + return bit == fixedPoint; } } @@ -549,14 +549,14 @@ public enum IntFormat { } @Override - public IsSeparator getSeparators(int bits) { + public boolean isSeparatorInFrontOf(int bits, int bit) { switch (bits) { case 32: - return bit -> bit == 31 || bit == 23; + return bit == 31 || bit == 23; case 64: - return bit -> bit == 63 || bit == 52; + return bit == 63 || bit == 52; default: - return HEX_FORMATTER.getSeparators(bits); + return HEX_FORMATTER.isSeparatorInFrontOf(bits, bit); } } } diff --git a/src/main/java/de/neemann/digital/core/ValueFormatter.java b/src/main/java/de/neemann/digital/core/ValueFormatter.java index 10584c76d..225cdff2f 100644 --- a/src/main/java/de/neemann/digital/core/ValueFormatter.java +++ b/src/main/java/de/neemann/digital/core/ValueFormatter.java @@ -56,26 +56,13 @@ public interface ValueFormatter { long dragValue(long initial, int bits, double inc); /** - * Returns the {@link IsSeparator} interface to place separators in the {@link de.neemann.digital.gui.components.SingleValueDialog} - * Defaults to no separator at all. + * Returns true if there should be a separator in front of the given bit. * - * @param bits the number of bits used - * @return the IsSeparator instance + * @param bits the number of bits in the value to format + * @param bit the bit in question + * @return true if there should be a separator in front of the given bit. */ - default IsSeparator getSeparators(int bits) { - return bit -> false; - } - - /** - * Interface to define separators - */ - interface IsSeparator { - /** - * Returns true if there should be a separator in front of the given bit. - * - * @param bit the bit in question - * @return true if there should be a separator in front of the given bit. - */ - boolean isSeparatorInFrontOf(int bit); + default boolean isSeparatorInFrontOf(int bits, int bit) { + return false; } } diff --git a/src/main/java/de/neemann/digital/gui/components/SingleValueDialog.java b/src/main/java/de/neemann/digital/gui/components/SingleValueDialog.java index 9ad33311d..33d86c21b 100644 --- a/src/main/java/de/neemann/digital/gui/components/SingleValueDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/SingleValueDialog.java @@ -244,9 +244,9 @@ public final class SingleValueDialog extends JDialog implements ModelStateObserv } private void updateSeparators() { - ValueFormatter.IsSeparator s = valueFormatter.getSeparators(editValue.getBits()); + int bits = editValue.getBits(); for (int i = 1; i < checkBoxes.length; i++) { - if (s.isSeparatorInFrontOf(i)) + if (valueFormatter.isSeparatorInFrontOf(bits, i)) checkBoxes[i].setBorder(SEPARATOR); else checkBoxes[i].setBorder(null);