From a7228a85422a598ac69ba63bf94dbf2d1c693b19 Mon Sep 17 00:00:00 2001 From: hneemann Date: Tue, 23 Jul 2019 08:12:10 +0200 Subject: [PATCH] allows to open the attribute dialog in locked mode, closes #291 --- .../digital/gui/components/AttributeDialog.java | 14 ++++++++++++-- .../digital/gui/components/CircuitComponent.java | 14 ++++++++------ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/neemann/digital/gui/components/AttributeDialog.java b/src/main/java/de/neemann/digital/gui/components/AttributeDialog.java index bcba62ee3..3f74bb448 100644 --- a/src/main/java/de/neemann/digital/gui/components/AttributeDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/AttributeDialog.java @@ -40,6 +40,7 @@ public class AttributeDialog extends JDialog { private final ElementAttributes modifiedAttributes; private final JPanel buttonPanel; private final ConstraintsBuilder constraints; + private final AbstractAction okAction; private HashMap checkBoxes; private JComponent topMostTextComponent; private VisualElement visualElement; @@ -163,7 +164,7 @@ public class AttributeDialog extends JDialog { getContentPane().add(new JScrollPane(panel)); - JButton okButton = new JButton(new AbstractAction(Lang.get("ok")) { + okAction = new AbstractAction(Lang.get("ok")) { @Override public void actionPerformed(ActionEvent e) { try { @@ -172,7 +173,8 @@ public class AttributeDialog extends JDialog { new ErrorMessage(Lang.get("msg_errorEditingValue")).addCause(err).show(AttributeDialog.this); } } - }); + }; + JButton okButton = new JButton(okAction); final AbstractAction cancel = new AbstractAction(Lang.get("cancel")) { @Override @@ -347,6 +349,14 @@ public class AttributeDialog extends JDialog { return this; } + /** + * Disables the ok button + */ + public void disableOk() { + okAction.setEnabled(false); + okPressed = false; + } + private static final class EditorHolder { private final Editor e; private final Key key; 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 8c736f7ca..f1e1465c6 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -1069,8 +1069,12 @@ public class CircuitComponent extends JComponent implements ChangedListener, Lib } }.setToolTip(Lang.get("attr_help_tt"))); + boolean locked = isLocked(); + if (isLocked()) + attributeDialog.disableOk(); + ElementAttributes modified = attributeDialog.showDialog(); - if (modified != null) + if (modified != null && !locked) modify(new ModifyAttributes(element, modified)); } } catch (ElementNotFoundException ex) { @@ -1435,11 +1439,9 @@ public class CircuitComponent extends JComponent implements ChangedListener, Lib Vector pos = getPosVector(e); if (mouse.isSecondaryClick(e)) { - if (!isLocked()) { - VisualElement vp = getVisualElement(pos, true); - if (vp != null) - editAttributes(vp, e); - } + VisualElement vp = getVisualElement(pos, true); + if (vp != null) + editAttributes(vp, e); } else if (mouse.isPrimaryClick(e)) { VisualElement vp = getVisualElement(pos, false); if (vp != null) {