BpmnKeyboardBindings.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. import inherits from 'inherits';
  2. import KeyboardBindings from 'diagram-js/lib/features/keyboard/KeyboardBindings';
  3. /**
  4. * BPMN 2.0 specific keyboard bindings.
  5. *
  6. * @param {Injector} injector
  7. */
  8. export default function BpmnKeyboardBindings(injector) {
  9. injector.invoke(KeyboardBindings, this);
  10. }
  11. inherits(BpmnKeyboardBindings, KeyboardBindings);
  12. BpmnKeyboardBindings.$inject = [
  13. 'injector'
  14. ];
  15. /**
  16. * Register available keyboard bindings.
  17. *
  18. * @param {Keyboard} keyboard
  19. * @param {EditorActions} editorActions
  20. */
  21. BpmnKeyboardBindings.prototype.registerBindings = function(keyboard, editorActions) {
  22. // inherit default bindings
  23. KeyboardBindings.prototype.registerBindings.call(this, keyboard, editorActions);
  24. /**
  25. * Add keyboard binding if respective editor action
  26. * is registered.
  27. *
  28. * @param {string} action name
  29. * @param {Function} fn that implements the key binding
  30. */
  31. function addListener(action, fn) {
  32. if (editorActions.isRegistered(action)) {
  33. keyboard.addListener(fn);
  34. }
  35. }
  36. // select all elements
  37. // CTRL + A
  38. addListener('selectElements', function(context) {
  39. var event = context.keyEvent;
  40. if (keyboard.isKey(['a', 'A'], event) && keyboard.isCmd(event)) {
  41. editorActions.trigger('selectElements');
  42. return true;
  43. }
  44. });
  45. // search labels
  46. // CTRL + F
  47. addListener('find', function(context) {
  48. var event = context.keyEvent;
  49. if (keyboard.isKey(['f', 'F'], event) && keyboard.isCmd(event)) {
  50. editorActions.trigger('find');
  51. return true;
  52. }
  53. });
  54. // activate space tool
  55. // S
  56. addListener('spaceTool', function(context) {
  57. var event = context.keyEvent;
  58. if (keyboard.hasModifier(event)) {
  59. return;
  60. }
  61. if (keyboard.isKey(['s', 'S'], event)) {
  62. editorActions.trigger('spaceTool');
  63. return true;
  64. }
  65. });
  66. // activate lasso tool
  67. // L
  68. addListener('lassoTool', function(context) {
  69. var event = context.keyEvent;
  70. if (keyboard.hasModifier(event)) {
  71. return;
  72. }
  73. if (keyboard.isKey(['l', 'L'], event)) {
  74. editorActions.trigger('lassoTool');
  75. return true;
  76. }
  77. });
  78. // activate hand tool
  79. // H
  80. addListener('handTool', function(context) {
  81. var event = context.keyEvent;
  82. if (keyboard.hasModifier(event)) {
  83. return;
  84. }
  85. if (keyboard.isKey(['h', 'H'], event)) {
  86. editorActions.trigger('handTool');
  87. return true;
  88. }
  89. });
  90. // activate global connect tool
  91. // C
  92. addListener('globalConnectTool', function(context) {
  93. var event = context.keyEvent;
  94. if (keyboard.hasModifier(event)) {
  95. return;
  96. }
  97. if (keyboard.isKey(['c', 'C'], event)) {
  98. editorActions.trigger('globalConnectTool');
  99. return true;
  100. }
  101. });
  102. // activate direct editing
  103. // E
  104. addListener('directEditing', function(context) {
  105. var event = context.keyEvent;
  106. if (keyboard.hasModifier(event)) {
  107. return;
  108. }
  109. if (keyboard.isKey(['e', 'E'], event)) {
  110. editorActions.trigger('directEditing');
  111. return true;
  112. }
  113. });
  114. };