From 7de4f2b3d61f8801459645d4bd337a91405e107a Mon Sep 17 00:00:00 2001 From: Daniel Kirschten Date: Sat, 22 Jun 2019 09:33:50 +0200 Subject: [PATCH] Implemented SubmodelComponent.clicked(); removed obsolete TODOs --- .../ClickableSubmodelComponentsTest.java | 34 +++++++++++++++++++ .../ui/model/components/GUIBitDisplay.java | 1 - .../components/GUICustomComponentCreator.java | 1 - .../model/components/SubmodelComponent.java | 9 +++-- 4 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/ClickableSubmodelComponentsTest.java diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/ClickableSubmodelComponentsTest.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/ClickableSubmodelComponentsTest.java new file mode 100644 index 00000000..cd45ee62 --- /dev/null +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/examples/ClickableSubmodelComponentsTest.java @@ -0,0 +1,34 @@ +package net.mograsim.logic.ui.examples; + +import net.mograsim.logic.ui.SimpleLogicUIStandalone; +import net.mograsim.logic.ui.model.ViewModelModifiable; +import net.mograsim.logic.ui.model.components.GUIBitDisplay; +import net.mograsim.logic.ui.model.components.GUIManualSwitch; +import net.mograsim.logic.ui.model.components.SimpleRectangularSubmodelComponent; + +public class ClickableSubmodelComponentsTest +{ + public static void main(String[] args) + { + SimpleLogicUIStandalone.executeVisualisation(ClickableSubmodelComponentsTest::createExample); + } + + public static void createExample(ViewModelModifiable model) + { + SimpleRectangularSubmodelComponent comp = new SimpleRectangularSubmodelComponent(model, 1, "") + { + { + setSubmodelScale(.4); + setOutputPins("O0"); + + GUIManualSwitch sw = new GUIManualSwitch(submodelModifiable); + GUIBitDisplay bd = new GUIBitDisplay(submodelModifiable); + + sw.moveTo(10, 5); + bd.moveTo(50, 5); + + } + }; + comp.moveTo(10, 10); + } +} \ No newline at end of file diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIBitDisplay.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIBitDisplay.java index 82399c13..0ca249ee 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIBitDisplay.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUIBitDisplay.java @@ -37,7 +37,6 @@ public class GUIBitDisplay extends GUIComponent double posX = getBounds().x; double posY = getBounds().y; - // TODO maybe draw switch state too? gc.drawRectangle(getBounds()); String label = bitDisplay == null ? BitVectorFormatter.formatAsString(null) : BitVectorFormatter.formatAsString(bitDisplay.getDisplayedValue()); diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUICustomComponentCreator.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUICustomComponentCreator.java index ee034c8c..6055f1a7 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUICustomComponentCreator.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/GUICustomComponentCreator.java @@ -82,7 +82,6 @@ public final class GUICustomComponentCreator rect.setSubmodelScale(params.composition.innerScale); // rect.setSize(params.width, params.height); - // TODO save & restore names int inputCount = ((Number) m.get(SimpleRectangularSubmodelComponent.kInCount)).intValue(); String[] inputNames = new String[inputCount]; for (int i = 0; i < inputCount; i++) diff --git a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java index c2a900c2..be9b8548 100644 --- a/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java +++ b/net.mograsim.logic.ui/src/net/mograsim/logic/ui/model/components/SubmodelComponent.java @@ -205,13 +205,12 @@ public abstract class SubmodelComponent extends GUIComponent @Override public boolean clicked(double x, double y) { - // TODO double scaledX = (x - getBounds().x) / submodelScale; double scaledY = (y - getBounds().y) / submodelScale; - double roundedScaledX = Math.round(scaledX / 5 * 2) * 5 / 2.; - double roundedScaledY = Math.round(scaledY / 5 * 2) * 5 / 2.; - System.out.println(scaledX + "|" + scaledY + ", rounded " + roundedScaledX + "|" + roundedScaledY); - return true; + for (GUIComponent component : submodel.getComponents()) + if (component.getBounds().contains(scaledX, scaledY) && component.clicked(scaledX, scaledY)) + return true; + return false; } /** -- 2.17.1