mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-19 09:54:49 -04:00
added a hotkey ('p') to program a diode-fuse
This commit is contained in:
parent
8878e44b10
commit
fb3504095b
@ -5,6 +5,9 @@ import de.neemann.digital.core.Observer;
|
||||
import de.neemann.digital.core.element.ElementTypeDescription;
|
||||
import de.neemann.digital.core.element.ImmutableList;
|
||||
import de.neemann.digital.core.element.Key;
|
||||
import de.neemann.digital.core.element.Keys;
|
||||
import de.neemann.digital.core.pld.DiodeBackward;
|
||||
import de.neemann.digital.core.pld.DiodeForeward;
|
||||
import de.neemann.digital.draw.elements.*;
|
||||
import de.neemann.digital.draw.graphics.*;
|
||||
import de.neemann.digital.draw.library.ElementLibrary;
|
||||
@ -145,6 +148,17 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
||||
}
|
||||
}.setToolTip(Lang.get("menu_delete_tt"));
|
||||
|
||||
|
||||
AbstractAction programAction = new AbstractAction(Lang.get("menu_program")) {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (activeMouseController instanceof MouseControllerNormal) {
|
||||
Vector pos = ((MouseControllerNormal) activeMouseController).getActMousePos();
|
||||
programDiodeAt(pos);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
getInputMap().put(KeyStroke.getKeyStroke("DELETE"), DEL_ACTION);
|
||||
getActionMap().put(DEL_ACTION, deleteAction);
|
||||
getInputMap().put(KeyStroke.getKeyStroke('C', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "myCopy");
|
||||
@ -153,7 +167,8 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
||||
getActionMap().put("myPaste", pasteAction);
|
||||
getInputMap().put(KeyStroke.getKeyStroke("R"), "myRotate");
|
||||
getActionMap().put("myRotate", rotateAction);
|
||||
|
||||
getInputMap().put(KeyStroke.getKeyStroke("P"), "myProgram");
|
||||
getActionMap().put("myProgram", programAction);
|
||||
|
||||
setFocusable(true);
|
||||
|
||||
@ -195,6 +210,15 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
||||
setToolTipText("");
|
||||
}
|
||||
|
||||
private void programDiodeAt(Vector pos) {
|
||||
VisualElement ve = circuit.getElementAt(pos);
|
||||
if (ve != null && (ve.equalsDescription(DiodeBackward.DESCRIPTION) || ve.equalsDescription(DiodeForeward.DESCRIPTION))) {
|
||||
boolean blown = ve.getElementAttributes().get(Keys.BLOWN);
|
||||
ve.getElementAttributes().set(Keys.BLOWN, !blown);
|
||||
hasChanged();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* invalidates the image buffer and calls repaint();
|
||||
*/
|
||||
@ -633,6 +657,8 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
||||
}
|
||||
|
||||
private final class MouseControllerNormal extends MouseController {
|
||||
private int actXPos;
|
||||
private int actYPos;
|
||||
private Vector pos;
|
||||
private int downButton;
|
||||
|
||||
@ -668,6 +694,12 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
void moved(MouseEvent e) {
|
||||
actXPos = e.getX();
|
||||
actYPos = e.getY();
|
||||
}
|
||||
|
||||
@Override
|
||||
void pressed(MouseEvent e) {
|
||||
downButton = e.getButton();
|
||||
@ -682,6 +714,10 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Vector getActMousePos() {
|
||||
return getPosVector(actXPos, actYPos);
|
||||
}
|
||||
}
|
||||
|
||||
private final class MouseControllerInsertElement extends MouseController {
|
||||
|
Loading…
x
Reference in New Issue
Block a user