diff --git a/src/main/java/de/neemann/digital/draw/elements/Circuit.java b/src/main/java/de/neemann/digital/draw/elements/Circuit.java index 90d6bbbb1..d9d74e3f9 100644 --- a/src/main/java/de/neemann/digital/draw/elements/Circuit.java +++ b/src/main/java/de/neemann/digital/draw/elements/Circuit.java @@ -6,7 +6,10 @@ import com.thoughtworks.xstream.io.xml.StaxDriver; import de.neemann.digital.core.ObservableValue; import de.neemann.digital.core.ObservableValues; import de.neemann.digital.core.Observer; -import de.neemann.digital.core.element.*; +import de.neemann.digital.core.element.ElementAttributes; +import de.neemann.digital.core.element.Keys; +import de.neemann.digital.core.element.PinDescription; +import de.neemann.digital.core.element.Rotation; import de.neemann.digital.core.io.In; import de.neemann.digital.core.io.IntFormat; import de.neemann.digital.core.io.Out; @@ -19,17 +22,14 @@ import de.neemann.digital.draw.graphics.Style; import de.neemann.digital.draw.graphics.Vector; import de.neemann.digital.draw.shapes.Drawable; import de.neemann.digital.draw.shapes.ShapeFactory; -import de.neemann.digital.gui.components.AttributeDialog; import de.neemann.digital.gui.sync.NoSync; import de.neemann.digital.gui.sync.Sync; import de.neemann.digital.lang.Lang; import de.neemann.digital.testing.TestData; import de.neemann.gui.language.Language; -import java.awt.*; import java.io.*; import java.util.*; -import java.util.List; import static de.neemann.digital.core.element.PinInfo.input; @@ -43,16 +43,6 @@ import static de.neemann.digital.core.element.PinInfo.input; */ public class Circuit { private static final Set EMPTY_SET = Collections.emptySet(); - private static final ArrayList ATTR_LIST = new ArrayList<>(); - - static { - ATTR_LIST.add(Keys.WIDTH); - ATTR_LIST.add(Keys.IS_DIL); - ATTR_LIST.add(Keys.PINCOUNT); - ATTR_LIST.add(Keys.BACKGROUND_COLOR); - ATTR_LIST.add(Keys.DESCRIPTION); - ATTR_LIST.add(Keys.LOCKED_MODE); - } private int version = 1; private ElementAttributes attributes; @@ -174,19 +164,6 @@ public class Circuit { return attributes; } - /** - * Opens the attribute editor - * - * @param parent the parent component - */ - public void editAttributes(Component parent) { - if (new AttributeDialog(parent, ATTR_LIST, getAttributes()).showDialog()) { - if (attributes.isEmpty()) - attributes = null; - modified(); - } - } - /** * Draws tis circuit using the given graphic instance * diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index a6a08ddb9..35a78019a 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -536,7 +536,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS ToolTipAction editAttributes = new ToolTipAction(Lang.get("menu_editAttributes")) { @Override public void actionPerformed(ActionEvent e) { - circuitComponent.getCircuit().editAttributes(Main.this); + circuitComponent.editCircuitAttributes(Main.this); } }.setToolTip(Lang.get("menu_editAttributes_tt")); 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 79ad76600..5c0df7239 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -52,6 +52,16 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe public static final Icon ICON_DELETE = IconCreator.create("delete.png"); private static final Icon ICON_UNDO = IconCreator.create("edit-undo.png"); private static final Icon ICON_REDO = IconCreator.create("edit-redo.png"); + private static final ArrayList ATTR_LIST = new ArrayList<>(); + + static { + ATTR_LIST.add(Keys.WIDTH); + ATTR_LIST.add(Keys.IS_DIL); + ATTR_LIST.add(Keys.PINCOUNT); + ATTR_LIST.add(Keys.BACKGROUND_COLOR); + ATTR_LIST.add(Keys.DESCRIPTION); + ATTR_LIST.add(Keys.LOCKED_MODE); + } private static final String DEL_ACTION = "myDelAction"; private static final int MOUSE_BORDER_SMALL = 10; @@ -306,6 +316,20 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe }.setActive(false).setAcceleratorCTRLplus('C').enableAcceleratorIn(this); } + + /** + * Opens the attribute editor + * + * @param parent the parent component + */ + public void editCircuitAttributes(Component parent) { + ElementAttributes edited = new ElementAttributes(circuit.getAttributes()); + if (new AttributeDialog(parent, ATTR_LIST, edited).showDialog()) { + if (!edited.equals(circuit.getAttributes())) + modify(circuit -> circuit.getAttributes().getValuesFrom(edited)); + } + } + /** * Apply a modification *