]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/events/command/CommandKeyBinding.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scenegraph / src / org / simantics / scenegraph / g2d / events / command / CommandKeyBinding.java
diff --git a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/events/command/CommandKeyBinding.java b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/events/command/CommandKeyBinding.java
new file mode 100644 (file)
index 0000000..1c1fc7d
--- /dev/null
@@ -0,0 +1,107 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
+ * in Industry THTH ry.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+package org.simantics.scenegraph.g2d.events.command;\r
+\r
+import java.awt.event.KeyEvent;\r
+import java.util.Arrays;\r
+\r
+/**\r
+ * Describes a key binding of a command\r
+ * \r
+ * @See {@link Command} Command class\r
+ * @See {@link Commands} Default commands\r
+ * @See KeyToCommand Participant that forwards key presses to commands\r
+ * \r
+ * @author Toni Kalajainen\r
+ */\r
+public class CommandKeyBinding {\r
+\r
+       public static final CommandKeyBinding[] DEFAULT_BINDINGS = {\r
+               new CommandKeyBinding(Commands.CANCEL, "Press Escape to cancel the current operation.", KeyEvent.VK_ESCAPE),\r
+               new CommandKeyBinding(Commands.PAN_LEFT, null, KeyEvent.VK_LEFT),\r
+               new CommandKeyBinding(Commands.PAN_RIGHT, null, KeyEvent.VK_RIGHT),\r
+               new CommandKeyBinding(Commands.PAN_UP, null, KeyEvent.VK_UP),\r
+               new CommandKeyBinding(Commands.PAN_DOWN, null, KeyEvent.VK_DOWN),\r
+//             new CommandKeyBinding(Commands.ZOOM_TO_FIT, null, KeyEvent.VK_1),\r
+//        new CommandKeyBinding(Commands.ZOOM_TO_FIT_HORIZ, null, KeyEvent.VK_2),\r
+//        new CommandKeyBinding(Commands.ZOOM_TO_FIT_VERT, null, KeyEvent.VK_3),\r
+//        new CommandKeyBinding(Commands.AUTOSCALE, null, KeyEvent.VK_4),\r
+        new CommandKeyBinding(Commands.ZOOM_TO_SELECTION, null, KeyEvent.VK_2),\r
+        new CommandKeyBinding(Commands.ZOOM_TO_PAGE, null, KeyEvent.VK_3),\r
+               new CommandKeyBinding(Commands.ZOOM_IN, null, KeyEvent.VK_PLUS),\r
+               new CommandKeyBinding(Commands.ZOOM_IN, null, KeyEvent.VK_ADD),\r
+               new CommandKeyBinding(Commands.ZOOM_OUT, null, KeyEvent.VK_MINUS),\r
+               new CommandKeyBinding(Commands.ZOOM_OUT, null, KeyEvent.VK_SUBTRACT),\r
+               new CommandKeyBinding(Commands.ZOOM_TO_AREA, null, KeyEvent.VK_F3),\r
+               new CommandKeyBinding(Commands.REFRESH, null, KeyEvent.VK_F5),\r
+               new CommandKeyBinding(Commands.RENAME, null, KeyEvent.VK_F2),\r
+               new CommandKeyBinding(Commands.DELETE, null, KeyEvent.VK_DELETE),\r
+               new CommandKeyBinding(Commands.SELECT_ALL, null, -KeyEvent.VK_A, KeyEvent.VK_CONTROL),\r
+               new CommandKeyBinding(Commands.SELECT_ALL, null, KeyEvent.VK_A, KeyEvent.VK_CONTROL),\r
+               new CommandKeyBinding(Commands.CUT, null, KeyEvent.VK_X, KeyEvent.VK_CONTROL),\r
+               new CommandKeyBinding(Commands.COPY, null, KeyEvent.VK_C, KeyEvent.VK_CONTROL),\r
+               new CommandKeyBinding(Commands.PASTE, null, KeyEvent.VK_V, KeyEvent.VK_CONTROL),\r
+               new CommandKeyBinding(Commands.PRINT, null, KeyEvent.VK_P, KeyEvent.VK_CONTROL),\r
+               new CommandKeyBinding(Commands.PDFPRINT, null, KeyEvent.VK_P, KeyEvent.VK_ALT),\r
+               new CommandKeyBinding(Commands.BRING_UP, null, KeyEvent.VK_PAGE_UP),\r
+               new CommandKeyBinding(Commands.SEND_DOWN, null, KeyEvent.VK_PAGE_DOWN),         \r
+               new CommandKeyBinding(Commands.BRING_TO_TOP, null, KeyEvent.VK_HOME),\r
+               new CommandKeyBinding(Commands.SEND_TO_BOTTOM, null, KeyEvent.VK_END),\r
+               new CommandKeyBinding(Commands.ROTATE_ELEMENT_CW, null, KeyEvent.VK_PERIOD),\r
+               new CommandKeyBinding(Commands.ROTATE_ELEMENT_CCW, null, KeyEvent.VK_COMMA),\r
+               new CommandKeyBinding(Commands.FLIP_ELEMENT_HORIZONTAL, null, KeyEvent.VK_F, -KeyEvent.VK_CONTROL),\r
+               new CommandKeyBinding(Commands.FLIP_ELEMENT_VERTICAL, null, KeyEvent.VK_V, -KeyEvent.VK_CONTROL),\r
+//             new CommandKeyBinding(Commands.ROTATE_CANVAS_CW_GRAB, null, KeyEvent.VK_PERIOD),\r
+//             new CommandKeyBinding(Commands.ROTATE_CANVAS_CW_RELEASE, null, -KeyEvent.VK_PERIOD),\r
+//             new CommandKeyBinding(Commands.ROTATE_CANVAS_CCW_GRAB, null, KeyEvent.VK_COMMA),\r
+//             new CommandKeyBinding(Commands.ROTATE_CANVAS_CCW_RELEASE, null, -KeyEvent.VK_COMMA),\r
+               new CommandKeyBinding(Commands.GRID_TOGGLE, null, KeyEvent.VK_G),\r
+               new CommandKeyBinding(Commands.RULER_TOGGLE, null, KeyEvent.VK_R),\r
+               new CommandKeyBinding(Commands.FOCUS_TOOLTIP, null, KeyEvent.VK_F9)\r
+               };\r
+       \r
+       /** \r
+        * Required keys including modifiers, virtual codes.\r
+        * The code at first index is the trigger code, and other codes are \r
+        * modifiers (ctrl, shift, etc).\r
+        * Negative code is release (index=0) or modifier is up (index>0) \r
+        */\r
+       public final int [] keyCode;\r
+       /** Command to trigger */\r
+       public final Command command;\r
+       /** Guide shown in UI about how to use the binding */\r
+       public final String guide;\r
+       \r
+       private int hash;\r
+       \r
+       public CommandKeyBinding(Command command, String guide, int...keyCode) {\r
+               assert(keyCode.length>0);\r
+               this.command = command;\r
+               this.keyCode = keyCode;\r
+               this.guide = guide;\r
+               this.hash = Arrays.hashCode(keyCode) + 13*command.hashCode();\r
+       }\r
+               \r
+       \r
+       @Override\r
+       public int hashCode() {\r
+               return hash;\r
+       }\r
+       \r
+       @Override\r
+       public boolean equals(Object obj) {\r
+               if (!(obj instanceof CommandKeyBinding)) return false;\r
+               CommandKeyBinding other = (CommandKeyBinding) obj;              \r
+               return other.command.equals(command) && Arrays.equals(keyCode, other.keyCode);\r
+       }\r
+       \r
+}\r