diff --git a/src/main/java/de/neemann/digital/core/element/ElementAttributes.java b/src/main/java/de/neemann/digital/core/element/ElementAttributes.java index 542e1edf2..d9e606e51 100644 --- a/src/main/java/de/neemann/digital/core/element/ElementAttributes.java +++ b/src/main/java/de/neemann/digital/core/element/ElementAttributes.java @@ -224,9 +224,12 @@ public class ElementAttributes { /** * Apply the given attributes to this set * - * @param elementAttributes the attributes to use + * @param elementAttributes the attributes to copy, maybe null */ public void getValuesFrom(ElementAttributes elementAttributes) { + if (elementAttributes == null) + return; + if (attributes != null) attributes.clear(); else diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index b144b28e9..c63520b07 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -774,9 +774,9 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS ToolTipAction editRunAttributes = new ToolTipAction(Lang.get("menu_editRunAttributes")) { @Override public void actionPerformed(ActionEvent e) { - ElementAttributes modified = new AttributeDialog(Main.this, ATTR_LIST, settings).showDialog(); - if (modified!=null) - settings.getValuesFrom(modified); + settings.getValuesFrom( + new AttributeDialog(Main.this, ATTR_LIST, settings) + .showDialog()); } }.setToolTip(Lang.get("menu_editRunAttributes_tt")); diff --git a/src/main/java/de/neemann/digital/gui/components/modification/ModificationOfVisualElement.java b/src/main/java/de/neemann/digital/gui/components/modification/ModificationOfVisualElement.java index cd0838bc2..2b53c28bb 100644 --- a/src/main/java/de/neemann/digital/gui/components/modification/ModificationOfVisualElement.java +++ b/src/main/java/de/neemann/digital/gui/components/modification/ModificationOfVisualElement.java @@ -1,8 +1,10 @@ package de.neemann.digital.gui.components.modification; +import de.neemann.digital.core.element.Keys; import de.neemann.digital.draw.elements.Circuit; import de.neemann.digital.draw.elements.VisualElement; import de.neemann.digital.draw.graphics.Vector; +import de.neemann.digital.lang.Lang; /** * A modification on a visual element. @@ -38,6 +40,20 @@ public abstract class ModificationOfVisualElement implements Modification { this.description = description; } + /** + * Creates a translated name of the given element + * + * @param ve the element + * @return translated name + */ + public static String getTranslatedName(VisualElement ve) { + String s = Lang.get("elem_" + ve.getElementName()); + String l = ve.getElementAttributes().get(Keys.LABEL); + if (l.length() > 0) + s += " ('" + l + "')"; + return s; + } + @Override public String toString() { return description; diff --git a/src/main/java/de/neemann/digital/gui/components/modification/ModifyAttribute.java b/src/main/java/de/neemann/digital/gui/components/modification/ModifyAttribute.java index b30038e8c..fed5964fd 100644 --- a/src/main/java/de/neemann/digital/gui/components/modification/ModifyAttribute.java +++ b/src/main/java/de/neemann/digital/gui/components/modification/ModifyAttribute.java @@ -24,7 +24,7 @@ public class ModifyAttribute extends ModificationOfVisualElement { * @param value the new value */ public ModifyAttribute(VisualElement ve, Key key, VALUE value) { - super(ve, Lang.get("mod_setKey_N0_in_element", key.getName())); + super(ve, Lang.get("mod_setKey_N0_in_element_N1", key.getName(), getTranslatedName(ve))); this.key = key; this.value = value; } diff --git a/src/main/java/de/neemann/digital/gui/components/modification/ModifyDeleteElement.java b/src/main/java/de/neemann/digital/gui/components/modification/ModifyDeleteElement.java index 52e6aa883..63727f9f7 100644 --- a/src/main/java/de/neemann/digital/gui/components/modification/ModifyDeleteElement.java +++ b/src/main/java/de/neemann/digital/gui/components/modification/ModifyDeleteElement.java @@ -18,7 +18,7 @@ public class ModifyDeleteElement extends ModificationOfVisualElement { * @param initialPos its initial position */ public ModifyDeleteElement(VisualElement ve, Vector initialPos) { - super(ve, initialPos, Lang.get("mod_deletedElement")); + super(ve, initialPos, Lang.get("mod_deletedElement_N", getTranslatedName(ve))); } @Override diff --git a/src/main/java/de/neemann/digital/gui/components/modification/ModifyInsertElement.java b/src/main/java/de/neemann/digital/gui/components/modification/ModifyInsertElement.java index 1caa9b70b..6b7b4ae33 100644 --- a/src/main/java/de/neemann/digital/gui/components/modification/ModifyInsertElement.java +++ b/src/main/java/de/neemann/digital/gui/components/modification/ModifyInsertElement.java @@ -4,6 +4,8 @@ import de.neemann.digital.draw.elements.Circuit; import de.neemann.digital.draw.elements.VisualElement; import de.neemann.digital.lang.Lang; +import static de.neemann.digital.gui.components.modification.ModificationOfVisualElement.getTranslatedName; + /** * Modifier to insert an element * Created by hneemann on 26.05.17. @@ -27,6 +29,6 @@ public class ModifyInsertElement implements Modification { @Override public String toString() { - return Lang.get("mod_insertedElement"); + return Lang.get("mod_insertedElement_N", getTranslatedName(element)); } } diff --git a/src/main/java/de/neemann/digital/gui/components/modification/ModifyMoveAndRotElement.java b/src/main/java/de/neemann/digital/gui/components/modification/ModifyMoveAndRotElement.java index b8496e884..da063e1d2 100644 --- a/src/main/java/de/neemann/digital/gui/components/modification/ModifyMoveAndRotElement.java +++ b/src/main/java/de/neemann/digital/gui/components/modification/ModifyMoveAndRotElement.java @@ -20,7 +20,7 @@ public class ModifyMoveAndRotElement extends ModificationOfVisualElement { * @param initialPos its initial position */ public ModifyMoveAndRotElement(VisualElement ve, Vector initialPos) { - super(ve, initialPos, Lang.get("mod_movedOrRotatedElement")); + super(ve, initialPos, Lang.get("mod_movedOrRotatedElement_N", getTranslatedName(ve))); pos = ve.getPos(); rotation = ve.getRotate(); } diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml index 05a0246a6..7a6034395 100644 --- a/src/main/resources/lang/lang_de.xml +++ b/src/main/resources/lang/lang_de.xml @@ -647,14 +647,14 @@ Sind evtl. die Namen der Variablen nicht eindeutig? Leitung eingefügt. Aus Zwischenablage eingefügt. - Wert ''{0}'' in Element verändert. + Wert ''{0}'' in Element ''{1}'' verändert. Attribute in Element verändert. Leitung gelöscht. - Element verschoben oder rotiert. + Element ''{0}'' verschoben oder rotiert. Leitung verschoben. Auswahl gelöscht. - Element eingefügt. - Element entfernt. + Element ''{0}'' eingefügt. + Element ''{0}'' entfernt. Leitung eingefügt. Auswahl verschoben. Rückgängig: {0} diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml index c857d6e7e..4600c6653 100644 --- a/src/main/resources/lang/lang_en.xml +++ b/src/main/resources/lang/lang_en.xml @@ -637,14 +637,14 @@ The names of the variables may not be unique. Inserted wire. Insert from clipboard. - Value {0} in component modified. + Value ''{0}'' in component ''{1}'' modified. Attributes of component modified. Wire deleted. - Component moved or rotated. + Component ''{0}'' moved or rotated. Wire moved. Selection deleted. - Component inserted. - Component deleted. + Component ''{0}'' inserted. + Component ''{0}'' deleted. Wire inserted. Selection moved. Undo: {0}