diff --git a/diylc/diylc-core/src/main/resources/update.xml b/diylc/diylc-core/src/main/resources/update.xml
index 9e795875..8c697d6c 100644
--- a/diylc/diylc-core/src/main/resources/update.xml
+++ b/diylc/diylc-core/src/main/resources/update.xml
@@ -281,6 +281,10 @@
BUG_FIX
Rotating selected components sometimes wacks the alignment off the grid
+
+ BUG_FIX
+ Ctrl+X (Command+X) doesn't work because 'Project Explorer' steals the focus on X key press
+
https://github.com/bancika/diy-layout-creator/releases
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/CopyAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/CopyAction.java
index 4ade138c..43c7c7a3 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/CopyAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/CopyAction.java
@@ -28,7 +28,7 @@ public class CopyAction extends AbstractAction {
this.clipboardOwner = clipboardOwner;
putValue(AbstractAction.NAME, "Copy");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_C,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
putValue(AbstractAction.SMALL_ICON, IconLoader.Copy.getIcon());
}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/CutAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/CutAction.java
index 714c6eda..048caabe 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/CutAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/CutAction.java
@@ -28,7 +28,7 @@ public class CutAction extends AbstractAction {
this.clipboardOwner = clipboardOwner;
putValue(AbstractAction.NAME, "Cut");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_X,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
putValue(AbstractAction.SMALL_ICON, IconLoader.Cut.getIcon());
}
@@ -40,4 +40,4 @@ public class CutAction extends AbstractAction {
clipboardOwner);
plugInPort.deleteSelectedComponents();
}
-}
\ No newline at end of file
+}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/DuplicateAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/DuplicateAction.java
index f2c59d2e..df8fcd78 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/DuplicateAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/DuplicateAction.java
@@ -21,7 +21,7 @@ public class DuplicateAction extends AbstractAction {
this.plugInPort = plugInPort;
putValue(AbstractAction.NAME, "Duplicate");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_D,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
putValue(AbstractAction.SMALL_ICON, IconLoader.DocumentsGear.getIcon());
}
@@ -34,4 +34,4 @@ public class DuplicateAction extends AbstractAction {
ActionFactory.LOG.error("Coule not duplicate.", ex);
}
}
-}
\ No newline at end of file
+}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/EditSelectionAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/EditSelectionAction.java
index 26a1dd26..667a78e6 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/EditSelectionAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/EditSelectionAction.java
@@ -23,7 +23,7 @@ public class EditSelectionAction extends AbstractAction {
this.plugInPort = plugInPort;
putValue(AbstractAction.NAME, "Edit Selection");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_E,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
putValue(AbstractAction.SMALL_ICON, IconLoader.EditComponent.getIcon());
}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/GroupAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/GroupAction.java
index 69c556cf..14508884 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/GroupAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/GroupAction.java
@@ -21,7 +21,7 @@ public class GroupAction extends AbstractAction {
this.plugInPort = plugInPort;
putValue(AbstractAction.NAME, "Group Selection");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_G,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
putValue(AbstractAction.SMALL_ICON, IconLoader.Group.getIcon());
}
@@ -30,4 +30,4 @@ public class GroupAction extends AbstractAction {
ActionFactory.LOG.info("Group Selection triggered");
plugInPort.groupSelectedComponents();
}
-}
\ No newline at end of file
+}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/NudgeAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/NudgeAction.java
index d1a9d92a..b052d964 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/NudgeAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/NudgeAction.java
@@ -32,7 +32,7 @@ public class NudgeAction extends AbstractAction {
putValue(AbstractAction.NAME, "Nudge");
putValue(AbstractAction.SMALL_ICON, IconLoader.FitToSize.getIcon());
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Q,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
}
@Override
@@ -56,4 +56,4 @@ public class NudgeAction extends AbstractAction {
plugInPort.nudgeSelection(n.getxOffset(), n.getyOffset(), n.getAffectStuckComponents());
}
}
-}
\ No newline at end of file
+}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/PasteAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/PasteAction.java
index 15366fab..24187a85 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/PasteAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/PasteAction.java
@@ -27,7 +27,7 @@ public class PasteAction extends AbstractAction {
this.clipboard = clipboard;
putValue(AbstractAction.NAME, "Paste");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_V,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
putValue(AbstractAction.SMALL_ICON, IconLoader.Paste.getIcon());
}
@@ -43,4 +43,4 @@ public class PasteAction extends AbstractAction {
ActionFactory.LOG.error("Coule not paste.", ex);
}
}
-}
\ No newline at end of file
+}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/SelectAllAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/SelectAllAction.java
index c5397742..8df6a8f1 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/SelectAllAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/SelectAllAction.java
@@ -21,7 +21,7 @@ public class SelectAllAction extends AbstractAction {
this.plugInPort = plugInPort;
putValue(AbstractAction.NAME, "Select All");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_A,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
putValue(AbstractAction.SMALL_ICON, IconLoader.Selection.getIcon());
}
@@ -30,4 +30,4 @@ public class SelectAllAction extends AbstractAction {
ActionFactory.LOG.info("Select All triggered");
plugInPort.selectAll(0);
}
-}
\ No newline at end of file
+}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/UngroupAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/UngroupAction.java
index 4d1f34b7..88bc3af9 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/UngroupAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/edit/UngroupAction.java
@@ -21,7 +21,7 @@ public class UngroupAction extends AbstractAction {
this.plugInPort = plugInPort;
putValue(AbstractAction.NAME, "Ungroup Selection");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_U,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
putValue(AbstractAction.SMALL_ICON, IconLoader.Ungroup.getIcon());
}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/ImportAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/ImportAction.java
index 1133157e..f2f07987 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/ImportAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/ImportAction.java
@@ -66,7 +66,7 @@ public class ImportAction extends AbstractAction {
}, InMemoryConfigurationManager.getInstance());
putValue(AbstractAction.NAME, "Import");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_I,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
putValue(AbstractAction.SMALL_ICON, IconLoader.ElementInto.getIcon());
}
@@ -107,4 +107,4 @@ public class ImportAction extends AbstractAction {
}, true);
}
}
-}
\ No newline at end of file
+}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/NewAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/NewAction.java
index a254e1bf..60b2dde2 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/NewAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/NewAction.java
@@ -28,7 +28,7 @@ public class NewAction extends AbstractAction {
this.plugInPort = plugInPort;
putValue(AbstractAction.NAME, "New");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_N,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
putValue(AbstractAction.SMALL_ICON, IconLoader.DocumentPlain.getIcon());
}
@@ -54,4 +54,4 @@ public class NewAction extends AbstractAction {
}
}
}
-}
\ No newline at end of file
+}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/OpenAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/OpenAction.java
index 650d7e2c..ab257edc 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/OpenAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/OpenAction.java
@@ -28,7 +28,7 @@ public class OpenAction extends AbstractAction {
this.swingUI = swingUI;
putValue(AbstractAction.NAME, "Open");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_O,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
putValue(AbstractAction.SMALL_ICON, IconLoader.FolderOut.getIcon());
}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/SaveAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/SaveAction.java
index 56a55153..fea6a5c2 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/SaveAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/SaveAction.java
@@ -28,7 +28,7 @@ public class SaveAction extends AbstractAction {
this.swingUI = swingUI;
putValue(AbstractAction.NAME, "Save");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_S,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
putValue(AbstractAction.SMALL_ICON, IconLoader.DiskBlue.getIcon());
}
@@ -79,4 +79,4 @@ public class SaveAction extends AbstractAction {
}, true);
}
}
-}
\ No newline at end of file
+}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/SaveAsAction.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/SaveAsAction.java
index 4509101f..bda4a0b8 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/SaveAsAction.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/actions/file/SaveAsAction.java
@@ -29,7 +29,7 @@ public class SaveAsAction extends AbstractAction {
this.swingUI = swingUI;
putValue(AbstractAction.NAME, "Save As");
putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_S,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | ActionEvent.SHIFT_MASK));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx() | ActionEvent.SHIFT_MASK));
putValue(AbstractAction.SMALL_ICON, IconLoader.DiskBlue.getIcon());
}
@@ -63,4 +63,4 @@ public class SaveAsAction extends AbstractAction {
}, true);
}
}
-}
\ No newline at end of file
+}
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/explorer/ExplorerPlugin.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/explorer/ExplorerPlugin.java
index e50f8bc0..b12ff860 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/explorer/ExplorerPlugin.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/explorer/ExplorerPlugin.java
@@ -90,8 +90,7 @@ public class ExplorerPlugin implements IPlugIn {
@Override
public boolean dispatchKeyEvent(KeyEvent e) {
- if ((canvasPanel.hasFocus() || explorerPane.hasFocus())
- && e.getKeyChar() == 'x'
+ if (e.getKeyChar() == 'x' && e.getModifiersEx() == 0
&& ConfigurationManager.getInstance()
.readBoolean(ConfigPlugin.PROJECT_EXPLORER, true)) {
explorerPane.getSearchField().requestFocusInWindow();
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/file/FileMenuPlugin.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/file/FileMenuPlugin.java
index afc13691..9c2047c2 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/file/FileMenuPlugin.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/file/FileMenuPlugin.java
@@ -86,7 +86,7 @@ public class FileMenuPlugin implements IPlugIn, IDynamicSubmenuHandler {
swingUI.injectMenuAction(
actionFactory.createExportGerberAction(plugInPort, swingUI), EXPORT_TITLE);
swingUI.injectMenuAction(actionFactory.createPrintAction(drawingProvider, swingUI,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), FILE_TITLE);
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()), FILE_TITLE);
swingUI.injectSubmenu(TRACE_MASK_TITLE, IconLoader.TraceMask.getIcon(), FILE_TITLE);
swingUI.injectMenuAction(actionFactory.createExportPDFAction(plugInPort,
traceMaskDrawingProvider, swingUI, " (mask)"), TRACE_MASK_TITLE);
@@ -94,7 +94,7 @@ public class FileMenuPlugin implements IPlugIn, IDynamicSubmenuHandler {
traceMaskDrawingProvider, swingUI, " (mask)"), TRACE_MASK_TITLE);
swingUI.injectMenuAction(
actionFactory.createPrintAction(traceMaskDrawingProvider, swingUI,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | KeyEvent.SHIFT_DOWN_MASK),
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx() | KeyEvent.SHIFT_DOWN_MASK),
TRACE_MASK_TITLE);
swingUI.injectSubmenu(ANALYZE_TITLE, IconLoader.Scientist.getIcon(), FILE_TITLE);
diff --git a/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/layers/LayersMenuPlugin.java b/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/layers/LayersMenuPlugin.java
index a4079c5c..9f315e9e 100644
--- a/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/layers/LayersMenuPlugin.java
+++ b/diylc/diylc-swing/src/main/java/org/diylc/swing/plugins/layers/LayersMenuPlugin.java
@@ -79,7 +79,7 @@ public class LayersMenuPlugin implements IPlugIn {
};
visibleAction.putValue(IView.CHECK_BOX_MENU_ITEM, true);
visibleAction.putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_0 + zOrder,
- Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+ Toolkit.getDefaultToolkit().getMenuShortcutKeyMaskEx()));
visibleActionMap.put(layer, visibleAction);
AbstractAction selectAllAction = new AbstractAction("Select All") {
diff --git a/diylc/pom.xml b/diylc/pom.xml
index 0a778581..8eb98ec3 100644
--- a/diylc/pom.xml
+++ b/diylc/pom.xml
@@ -19,7 +19,7 @@
- ISO-8859-1
+ UTF-8
17
17
1.2.15