From f23abb6a7c628b3b228bd0474234c46566626815 Mon Sep 17 00:00:00 2001 From: hneemann Date: Sat, 27 May 2017 22:20:57 +0200 Subject: [PATCH] if an error occurs, keeping affected components highlighted after the error dialog is closed. --- .../java/de/neemann/digital/gui/Main.java | 43 +++++++++---------- .../gui/components/CircuitComponent.java | 10 +++++ 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index a54758058..9d1b45a67 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -251,6 +251,27 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS setLocationRelativeTo(builder.parent); } + private void enableClockShortcut() { + new ToolTipAction("doClock") { + @Override + public void actionPerformed(ActionEvent actionEvent) { + if (model != null && !realTimeClockRunning) { + ArrayList cl = model.getClocks(); + if (cl.size() == 1) { + ObservableValue clkVal = cl.get(0).getClockOutput(); + clkVal.setBool(!clkVal.getBool()); + try { + model.doStep(); + circuitComponent.repaintNeeded(); + } catch (NodeException | RuntimeException e) { + showErrorAndStopModel(Lang.get("err_remoteExecution"), e); + } + } + } + } + }.setAccelerator("C").enableAcceleratorIn(circuitComponent); + } + private void createViewMenu(JMenuBar menuBar, JToolBar toolBar) { ToolTipAction maximize = new ToolTipAction(Lang.get("menu_maximize"), ICON_EXPAND) { @Override @@ -904,7 +925,6 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS } private void clearModelDescription() { - circuitComponent.removeHighLighted(); if (model != null) model.close(); @@ -976,27 +996,6 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS return false; } - private void enableClockShortcut() { - new ToolTipAction("doClock") { - @Override - public void actionPerformed(ActionEvent actionEvent) { - if (model != null && !realTimeClockRunning) { - ArrayList cl = model.getClocks(); - if (cl.size() == 1) { - ObservableValue clkVal = cl.get(0).getClockOutput(); - clkVal.setBool(!clkVal.getBool()); - try { - model.doStep(); - circuitComponent.repaintNeeded(); - } catch (NodeException | RuntimeException e) { - showErrorAndStopModel(Lang.get("err_remoteExecution"), e); - } - } - } - } - }.setAccelerator("C").enableAcceleratorIn(circuitComponent); - } - @Override public void showErrorAndStopModel(String message, Exception cause) { SwingUtilities.invokeLater(() -> { 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 e511fae7e..8c4b065cb 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -890,6 +890,8 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe } void activate() { + if (activeMouseController != null) + activeMouseController.deactivate(); activeMouseController = this; deleteAction.setActive(false); copyAction.setEnabled(false); @@ -899,6 +901,9 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe repaintNeeded(); } + void deactivate() { + } + void clicked(MouseEvent e) { } @@ -980,6 +985,11 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe focusWasLost = false; } + @Override + void deactivate() { + removeHighLighted(); + } + @Override void pressed(MouseEvent e) { downButton = e.getButton();