mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-29 07:50:29 -04:00
refactoring of accelerators, added CTRL+S
This commit is contained in:
parent
0da18aee21
commit
193fcc09bf
@ -431,7 +431,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS
|
||||
else
|
||||
saveFile(filename, false);
|
||||
}
|
||||
};
|
||||
}.setAcceleratorCTRLplus('S');
|
||||
|
||||
JMenu export = new JMenu(Lang.get("menu_export"));
|
||||
export.add(new ExportAction(Lang.get("menu_exportSVG"), "svg", GraphicSVGIndex::new));
|
||||
@ -584,15 +584,9 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS
|
||||
edit.add(createSpecialEditMenu());
|
||||
edit.addSeparator();
|
||||
|
||||
JMenuItem copyItem = new JMenuItem(circuitComponent.getCopyAction());
|
||||
copyItem.setAccelerator(KeyStroke.getKeyStroke('C', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
|
||||
edit.add(copyItem);
|
||||
JMenuItem pasteItem = new JMenuItem(circuitComponent.getPasteAction());
|
||||
pasteItem.setAccelerator(KeyStroke.getKeyStroke('V', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
|
||||
edit.add(pasteItem);
|
||||
JMenuItem rotateItem = new JMenuItem(circuitComponent.getRotateAction());
|
||||
rotateItem.setAccelerator(KeyStroke.getKeyStroke('R'));
|
||||
edit.add(rotateItem);
|
||||
edit.add(circuitComponent.getCopyAction().createJMenuItem());
|
||||
edit.add(circuitComponent.getPasteAction().createJMenuItem());
|
||||
edit.add(circuitComponent.getRotateAction().createJMenuItem());
|
||||
edit.add(insertAsNew.createJMenuItem());
|
||||
edit.addSeparator();
|
||||
edit.add(editSettings.createJMenuItem());
|
||||
|
@ -72,9 +72,9 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
||||
private final MouseController mouseRun;
|
||||
private final MouseControllerInsertCopied mouseInsertList;
|
||||
private final Cursor moveCursor;
|
||||
private final AbstractAction copyAction;
|
||||
private final AbstractAction pasteAction;
|
||||
private final AbstractAction rotateAction;
|
||||
private final ToolTipAction copyAction;
|
||||
private final ToolTipAction pasteAction;
|
||||
private final ToolTipAction rotateAction;
|
||||
|
||||
private Circuit circuit;
|
||||
private MouseController activeMouseController;
|
||||
@ -101,16 +101,14 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
||||
this.library = library;
|
||||
highLighted = new HashSet<>();
|
||||
|
||||
rotateAction = new AbstractAction(Lang.get("menu_rotate")) {
|
||||
rotateAction = new ToolTipAction(Lang.get("menu_rotate")) {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
activeMouseController.rotate();
|
||||
}
|
||||
};
|
||||
rotateAction.setEnabled(false);
|
||||
}.setActive(false).setAccelerator(KeyStroke.getKeyStroke("R")).enableAcceleratorIn(this);
|
||||
|
||||
|
||||
copyAction = new AbstractAction(Lang.get("menu_copy")) {
|
||||
copyAction = new ToolTipAction(Lang.get("menu_copy")) {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
ArrayList<Movable> elements = null;
|
||||
@ -128,10 +126,10 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
||||
activeMouseController.escapePressed();
|
||||
}
|
||||
}
|
||||
};
|
||||
copyAction.setEnabled(false);
|
||||
}.setActive(false).setAcceleratorCTRLplus('C').enableAcceleratorIn(this);
|
||||
|
||||
pasteAction = new AbstractAction(Lang.get("menu_paste")) {
|
||||
|
||||
pasteAction = new ToolTipAction(Lang.get("menu_paste")) {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (!isLocked()) {
|
||||
@ -152,7 +150,7 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}.setAcceleratorCTRLplus('P').enableAcceleratorIn(this);
|
||||
|
||||
deleteAction = new ToolTipAction(Lang.get("menu_delete"), ICON_DELETE) {
|
||||
@Override
|
||||
@ -161,35 +159,25 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
||||
}
|
||||
}.setToolTip(Lang.get("menu_delete_tt"));
|
||||
|
||||
Action escapeAction = new AbstractAction() {
|
||||
new ToolTipAction("Escape") {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
activeMouseController.escapePressed();
|
||||
}
|
||||
};
|
||||
}.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)).enableAcceleratorIn(this);
|
||||
|
||||
AbstractAction programAction = new AbstractAction(Lang.get("menu_programDiode")) {
|
||||
new ToolTipAction(Lang.get("menu_programDiode")) {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (activeMouseController instanceof MouseControllerNormal) {
|
||||
programElementAt(getPosVector(lastMousePos.x, lastMousePos.y));
|
||||
}
|
||||
}
|
||||
};
|
||||
}.setAccelerator(KeyStroke.getKeyStroke("P")).enableAcceleratorIn(this);
|
||||
|
||||
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), ESC_ACTION);
|
||||
getActionMap().put(ESC_ACTION, escapeAction);
|
||||
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), DEL_ACTION);
|
||||
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), DEL_ACTION);
|
||||
getActionMap().put(DEL_ACTION, deleteAction);
|
||||
getInputMap().put(KeyStroke.getKeyStroke('C', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "myCopy");
|
||||
getActionMap().put("myCopy", copyAction);
|
||||
getInputMap().put(KeyStroke.getKeyStroke('V', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "myPaste");
|
||||
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);
|
||||
|
||||
@ -314,21 +302,21 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
||||
/**
|
||||
* @return the copy action
|
||||
*/
|
||||
public AbstractAction getCopyAction() {
|
||||
public ToolTipAction getCopyAction() {
|
||||
return copyAction;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the paste action
|
||||
*/
|
||||
public AbstractAction getPasteAction() {
|
||||
public ToolTipAction getPasteAction() {
|
||||
return pasteAction;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the rotate action
|
||||
*/
|
||||
public AbstractAction getRotateAction() {
|
||||
public ToolTipAction getRotateAction() {
|
||||
return rotateAction;
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,17 @@ public abstract class ToolTipAction extends AbstractAction {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets an accelerator to the item
|
||||
* Sets an accelerator to the action
|
||||
*
|
||||
* @param key the accelerator key
|
||||
* @return this for call chaining
|
||||
*/
|
||||
public ToolTipAction setAcceleratorCTRLplus(char key) {
|
||||
return setAccelerator(KeyStroke.getKeyStroke(key, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets an accelerator to the action
|
||||
*
|
||||
* @param accelerator the accelerator
|
||||
* @return this for call chaining
|
||||
@ -71,6 +81,20 @@ public abstract class ToolTipAction extends AbstractAction {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* enables the accelerator in the given component
|
||||
*
|
||||
* @param component the component
|
||||
* @return this for call chaining
|
||||
*/
|
||||
public ToolTipAction enableAcceleratorIn(JComponent component) {
|
||||
if (accelerator == null)
|
||||
throw new RuntimeException("no accelerator given");
|
||||
component.getInputMap().put(accelerator, this);
|
||||
component.getActionMap().put(this, this);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the activated state for this action
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user