diff --git a/distribution/ReleaseNotes.txt b/distribution/ReleaseNotes.txt index 7718fac12..a77ca61d4 100644 --- a/distribution/ReleaseNotes.txt +++ b/distribution/ReleaseNotes.txt @@ -8,6 +8,8 @@ HEAD, planned as v0.28 - Italian translation was added, special thanks to Luca Cavallari - adds a external component that is based on a file instead of storing the code in the component itself. +- Fixed an issue with clicking on tightly placed components. +- Variable sample size in default data graph. v0.27, released on 9. Apr. 2021 - Added fixed point and floating point number formats. diff --git a/src/main/java/de/neemann/digital/core/element/Keys.java b/src/main/java/de/neemann/digital/core/element/Keys.java index 6a93cf336..6cacd299b 100644 --- a/src/main/java/de/neemann/digital/core/element/Keys.java +++ b/src/main/java/de/neemann/digital/core/element/Keys.java @@ -439,6 +439,15 @@ public final class Keys { = new Key.KeyInteger("maxStepCount", 25) .setMin(5); + /** + * the max number of samples in the default data view + */ + public static final Key SETTINGS_MAX_STEP_COUNT + = new Key.KeyInteger("maxStepCount", 1000) + .setComboBoxValues(500, 1000, 5000, 10000) + .setMin(500) + .setSecondary(); + /** * flag to enable high z mode at an input */ diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index 0fe380f98..610ee6bb4 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -1519,8 +1519,10 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS } private void showMeasurementGraph(ModelEventType updateEvent) { - List ordering = circuitComponent.getCircuit().getMeasurementOrdering(); - windowPosManager.register("dataSet", GraphDialog.createLiveDialog(this, model, updateEvent == ModelEventType.MICROSTEP, ordering)).setVisible(true); + Circuit circuit = circuitComponent.getCircuit(); + List ordering = circuit.getMeasurementOrdering(); + int sampleSize = circuit.getAttributes().get(Keys.SETTINGS_MAX_STEP_COUNT); + windowPosManager.register("dataSet", GraphDialog.createLiveDialog(this, model, updateEvent == ModelEventType.MICROSTEP, ordering, sampleSize)).setVisible(true); } private void showMeasurementDialog(ModelEventType updateEvent) { diff --git a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java index 53416eede..ec26c0102 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -82,6 +82,7 @@ public class CircuitComponent extends JComponent implements ChangedListener, Lib ATTR_LIST.add(Keys.SHOW_DATA_TABLE); ATTR_LIST.add(Keys.SHOW_DATA_GRAPH); ATTR_LIST.add(Keys.SHOW_DATA_GRAPH_MICRO); + ATTR_LIST.add(Keys.SETTINGS_MAX_STEP_COUNT); ATTR_LIST.add(Keys.PRELOAD_PROGRAM); ATTR_LIST.add(Keys.PROGRAM_TO_PRELOAD); ATTR_LIST.add(Keys.IS_GENERIC); diff --git a/src/main/java/de/neemann/digital/gui/components/data/GraphDialog.java b/src/main/java/de/neemann/digital/gui/components/data/GraphDialog.java index 6a4baef00..86eeffa7e 100644 --- a/src/main/java/de/neemann/digital/gui/components/data/GraphDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/data/GraphDialog.java @@ -34,7 +34,6 @@ import java.util.concurrent.atomic.AtomicBoolean; * The Dialog which shows the data to plot. */ public class GraphDialog extends JDialog implements Observer { - private static final int MAX_SAMPLE_SIZE = 1000; private final GraphComponent graphComponent; private final ToolTipAction showTable; @@ -47,13 +46,14 @@ public class GraphDialog extends JDialog implements Observer { /** * Creates a instance prepared for "live logging" * - * @param owner the parent frame - * @param model the model - * @param microStep stepping mode - * @param ordering the ordering to use + * @param owner the parent frame + * @param model the model + * @param microStep stepping mode + * @param ordering the ordering to use + * @param sampleSize the number of samples * @return the created instance */ - public static GraphDialog createLiveDialog(JFrame owner, Model model, boolean microStep, List ordering) { + public static GraphDialog createLiveDialog(JFrame owner, Model model, boolean microStep, List ordering, int sampleSize) { String title; if (microStep) title = Lang.get("win_measures_microstep"); @@ -70,7 +70,7 @@ public class GraphDialog extends JDialog implements Observer { }.order(signals); - ValueTableObserver valueTableObserver = new ValueTableObserver(microStep, signals, MAX_SAMPLE_SIZE); + ValueTableObserver valueTableObserver = new ValueTableObserver(microStep, signals, sampleSize); GraphDialog graphDialog = new GraphDialog(owner, title, valueTableObserver.getLogData(), model, true) .setColumnInfo(createColumnsInfo(signals));