mirror of
https://github.com/hneemann/Digital.git
synced 2025-09-29 16:01:19 -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
|
else
|
||||||
saveFile(filename, false);
|
saveFile(filename, false);
|
||||||
}
|
}
|
||||||
};
|
}.setAcceleratorCTRLplus('S');
|
||||||
|
|
||||||
JMenu export = new JMenu(Lang.get("menu_export"));
|
JMenu export = new JMenu(Lang.get("menu_export"));
|
||||||
export.add(new ExportAction(Lang.get("menu_exportSVG"), "svg", GraphicSVGIndex::new));
|
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.add(createSpecialEditMenu());
|
||||||
edit.addSeparator();
|
edit.addSeparator();
|
||||||
|
|
||||||
JMenuItem copyItem = new JMenuItem(circuitComponent.getCopyAction());
|
edit.add(circuitComponent.getCopyAction().createJMenuItem());
|
||||||
copyItem.setAccelerator(KeyStroke.getKeyStroke('C', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
|
edit.add(circuitComponent.getPasteAction().createJMenuItem());
|
||||||
edit.add(copyItem);
|
edit.add(circuitComponent.getRotateAction().createJMenuItem());
|
||||||
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(insertAsNew.createJMenuItem());
|
edit.add(insertAsNew.createJMenuItem());
|
||||||
edit.addSeparator();
|
edit.addSeparator();
|
||||||
edit.add(editSettings.createJMenuItem());
|
edit.add(editSettings.createJMenuItem());
|
||||||
|
@ -72,9 +72,9 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
|||||||
private final MouseController mouseRun;
|
private final MouseController mouseRun;
|
||||||
private final MouseControllerInsertCopied mouseInsertList;
|
private final MouseControllerInsertCopied mouseInsertList;
|
||||||
private final Cursor moveCursor;
|
private final Cursor moveCursor;
|
||||||
private final AbstractAction copyAction;
|
private final ToolTipAction copyAction;
|
||||||
private final AbstractAction pasteAction;
|
private final ToolTipAction pasteAction;
|
||||||
private final AbstractAction rotateAction;
|
private final ToolTipAction rotateAction;
|
||||||
|
|
||||||
private Circuit circuit;
|
private Circuit circuit;
|
||||||
private MouseController activeMouseController;
|
private MouseController activeMouseController;
|
||||||
@ -101,16 +101,14 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
|||||||
this.library = library;
|
this.library = library;
|
||||||
highLighted = new HashSet<>();
|
highLighted = new HashSet<>();
|
||||||
|
|
||||||
rotateAction = new AbstractAction(Lang.get("menu_rotate")) {
|
rotateAction = new ToolTipAction(Lang.get("menu_rotate")) {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
activeMouseController.rotate();
|
activeMouseController.rotate();
|
||||||
}
|
}
|
||||||
};
|
}.setActive(false).setAccelerator(KeyStroke.getKeyStroke("R")).enableAcceleratorIn(this);
|
||||||
rotateAction.setEnabled(false);
|
|
||||||
|
|
||||||
|
copyAction = new ToolTipAction(Lang.get("menu_copy")) {
|
||||||
copyAction = new AbstractAction(Lang.get("menu_copy")) {
|
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
ArrayList<Movable> elements = null;
|
ArrayList<Movable> elements = null;
|
||||||
@ -128,10 +126,10 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
|||||||
activeMouseController.escapePressed();
|
activeMouseController.escapePressed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}.setActive(false).setAcceleratorCTRLplus('C').enableAcceleratorIn(this);
|
||||||
copyAction.setEnabled(false);
|
|
||||||
|
|
||||||
pasteAction = new AbstractAction(Lang.get("menu_paste")) {
|
|
||||||
|
pasteAction = new ToolTipAction(Lang.get("menu_paste")) {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
if (!isLocked()) {
|
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) {
|
deleteAction = new ToolTipAction(Lang.get("menu_delete"), ICON_DELETE) {
|
||||||
@Override
|
@Override
|
||||||
@ -161,35 +159,25 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
|||||||
}
|
}
|
||||||
}.setToolTip(Lang.get("menu_delete_tt"));
|
}.setToolTip(Lang.get("menu_delete_tt"));
|
||||||
|
|
||||||
Action escapeAction = new AbstractAction() {
|
new ToolTipAction("Escape") {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
activeMouseController.escapePressed();
|
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
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
if (activeMouseController instanceof MouseControllerNormal) {
|
if (activeMouseController instanceof MouseControllerNormal) {
|
||||||
programElementAt(getPosVector(lastMousePos.x, lastMousePos.y));
|
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_DELETE, 0), DEL_ACTION);
|
||||||
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), DEL_ACTION);
|
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0), DEL_ACTION);
|
||||||
getActionMap().put(DEL_ACTION, deleteAction);
|
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);
|
setFocusable(true);
|
||||||
|
|
||||||
@ -314,21 +302,21 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
|
|||||||
/**
|
/**
|
||||||
* @return the copy action
|
* @return the copy action
|
||||||
*/
|
*/
|
||||||
public AbstractAction getCopyAction() {
|
public ToolTipAction getCopyAction() {
|
||||||
return copyAction;
|
return copyAction;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the paste action
|
* @return the paste action
|
||||||
*/
|
*/
|
||||||
public AbstractAction getPasteAction() {
|
public ToolTipAction getPasteAction() {
|
||||||
return pasteAction;
|
return pasteAction;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the rotate action
|
* @return the rotate action
|
||||||
*/
|
*/
|
||||||
public AbstractAction getRotateAction() {
|
public ToolTipAction getRotateAction() {
|
||||||
return rotateAction;
|
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
|
* @param accelerator the accelerator
|
||||||
* @return this for call chaining
|
* @return this for call chaining
|
||||||
@ -71,6 +81,20 @@ public abstract class ToolTipAction extends AbstractAction {
|
|||||||
return this;
|
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
|
* Sets the activated state for this action
|
||||||
*
|
*
|
||||||
@ -121,7 +145,7 @@ public abstract class ToolTipAction extends AbstractAction {
|
|||||||
*/
|
*/
|
||||||
public JMenuItem createJMenuItem() {
|
public JMenuItem createJMenuItem() {
|
||||||
JMenuItem i = new JMenuItem(this);
|
JMenuItem i = new JMenuItem(this);
|
||||||
if (accelerator!=null)
|
if (accelerator != null)
|
||||||
i.setAccelerator(accelerator);
|
i.setAccelerator(accelerator);
|
||||||
if (toolTipText != null) {
|
if (toolTipText != null) {
|
||||||
i.setToolTipText(toolTipText);
|
i.setToolTipText(toolTipText);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user