You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
3.0 KiB
158 lines
3.0 KiB
import inherits from 'inherits-browser'; |
|
|
|
import KeyboardBindings from 'diagram-js/lib/features/keyboard/KeyboardBindings'; |
|
|
|
|
|
/** |
|
* BPMN 2.0 specific keyboard bindings. |
|
* |
|
* @param {Injector} injector |
|
*/ |
|
export default function BpmnKeyboardBindings(injector) { |
|
injector.invoke(KeyboardBindings, this); |
|
} |
|
|
|
inherits(BpmnKeyboardBindings, KeyboardBindings); |
|
|
|
BpmnKeyboardBindings.$inject = [ |
|
'injector' |
|
]; |
|
|
|
|
|
/** |
|
* Register available keyboard bindings. |
|
* |
|
* @param {Keyboard} keyboard |
|
* @param {EditorActions} editorActions |
|
*/ |
|
BpmnKeyboardBindings.prototype.registerBindings = function(keyboard, editorActions) { |
|
|
|
// inherit default bindings |
|
KeyboardBindings.prototype.registerBindings.call(this, keyboard, editorActions); |
|
|
|
/** |
|
* Add keyboard binding if respective editor action |
|
* is registered. |
|
* |
|
* @param {string} action name |
|
* @param {Function} fn that implements the key binding |
|
*/ |
|
function addListener(action, fn) { |
|
|
|
if (editorActions.isRegistered(action)) { |
|
keyboard.addListener(fn); |
|
} |
|
} |
|
|
|
// select all elements |
|
// CTRL + A |
|
addListener('selectElements', function(context) { |
|
|
|
var event = context.keyEvent; |
|
|
|
if (keyboard.isKey([ 'a', 'A' ], event) && keyboard.isCmd(event)) { |
|
editorActions.trigger('selectElements'); |
|
|
|
return true; |
|
} |
|
}); |
|
|
|
// search labels |
|
// CTRL + F |
|
addListener('find', function(context) { |
|
|
|
var event = context.keyEvent; |
|
|
|
if (keyboard.isKey([ 'f', 'F' ], event) && keyboard.isCmd(event)) { |
|
editorActions.trigger('find'); |
|
|
|
return true; |
|
} |
|
}); |
|
|
|
// activate space tool |
|
// S |
|
addListener('spaceTool', function(context) { |
|
|
|
var event = context.keyEvent; |
|
|
|
if (keyboard.hasModifier(event)) { |
|
return; |
|
} |
|
|
|
if (keyboard.isKey([ 's', 'S' ], event)) { |
|
editorActions.trigger('spaceTool'); |
|
|
|
return true; |
|
} |
|
}); |
|
|
|
// activate lasso tool |
|
// L |
|
addListener('lassoTool', function(context) { |
|
|
|
var event = context.keyEvent; |
|
|
|
if (keyboard.hasModifier(event)) { |
|
return; |
|
} |
|
|
|
if (keyboard.isKey([ 'l', 'L' ], event)) { |
|
editorActions.trigger('lassoTool'); |
|
|
|
return true; |
|
} |
|
}); |
|
|
|
// activate hand tool |
|
// H |
|
addListener('handTool', function(context) { |
|
|
|
var event = context.keyEvent; |
|
|
|
if (keyboard.hasModifier(event)) { |
|
return; |
|
} |
|
|
|
if (keyboard.isKey([ 'h', 'H' ], event)) { |
|
editorActions.trigger('handTool'); |
|
|
|
return true; |
|
} |
|
}); |
|
|
|
// activate global connect tool |
|
// C |
|
addListener('globalConnectTool', function(context) { |
|
|
|
var event = context.keyEvent; |
|
|
|
if (keyboard.hasModifier(event)) { |
|
return; |
|
} |
|
|
|
if (keyboard.isKey([ 'c', 'C' ], event)) { |
|
editorActions.trigger('globalConnectTool'); |
|
|
|
return true; |
|
} |
|
}); |
|
|
|
// activate direct editing |
|
// E |
|
addListener('directEditing', function(context) { |
|
|
|
var event = context.keyEvent; |
|
|
|
if (keyboard.hasModifier(event)) { |
|
return; |
|
} |
|
|
|
if (keyboard.isKey([ 'e', 'E' ], event)) { |
|
editorActions.trigger('directEditing'); |
|
|
|
return true; |
|
} |
|
}); |
|
|
|
}; |