123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /**
- * Copyright (c) 2006-2015, JGraph Ltd
- * Copyright (c) 2006-2015, Gaudenz Alder
- */
- /**
- * Class: mxDefaultKeyHandler
- *
- * Binds keycodes to actionnames in an editor. This aggregates an internal
- * <handler> and extends the implementation of <mxKeyHandler.escape> to not
- * only cancel the editing, but also hide the properties dialog and fire an
- * <mxEditor.escape> event via <editor>. An instance of this class is created
- * by <mxEditor> and stored in <mxEditor.keyHandler>.
- *
- * Example:
- *
- * Bind the delete key to the delete action in an existing editor.
- *
- * (code)
- * var keyHandler = new mxDefaultKeyHandler(editor);
- * keyHandler.bindAction(46, 'delete');
- * (end)
- *
- * Codec:
- *
- * This class uses the <mxDefaultKeyHandlerCodec> to read configuration
- * data into an existing instance. See <mxDefaultKeyHandlerCodec> for a
- * description of the configuration format.
- *
- * Keycodes:
- *
- * See <mxKeyHandler>.
- *
- * An <mxEvent.ESCAPE> event is fired via the editor if the escape key is
- * pressed.
- *
- * Constructor: mxDefaultKeyHandler
- *
- * Constructs a new default key handler for the <mxEditor.graph> in the
- * given <mxEditor>. (The editor may be null if a prototypical instance for
- * a <mxDefaultKeyHandlerCodec> is created.)
- *
- * Parameters:
- *
- * editor - Reference to the enclosing <mxEditor>.
- */
- function mxDefaultKeyHandler(editor)
- {
- if (editor != null)
- {
- this.editor = editor;
- this.handler = new mxKeyHandler(editor.graph);
-
- // Extends the escape function of the internal key
- // handle to hide the properties dialog and fire
- // the escape event via the editor instance
- var old = this.handler.escape;
-
- this.handler.escape = function(evt)
- {
- old.apply(this, arguments);
- editor.hideProperties();
- editor.fireEvent(new mxEventObject(mxEvent.ESCAPE, 'event', evt));
- };
- }
- };
-
- /**
- * Variable: editor
- *
- * Reference to the enclosing <mxEditor>.
- */
- mxDefaultKeyHandler.prototype.editor = null;
- /**
- * Variable: handler
- *
- * Holds the <mxKeyHandler> for key event handling.
- */
- mxDefaultKeyHandler.prototype.handler = null;
- /**
- * Function: bindAction
- *
- * Binds the specified keycode to the given action in <editor>. The
- * optional control flag specifies if the control key must be pressed
- * to trigger the action.
- *
- * Parameters:
- *
- * code - Integer that specifies the keycode.
- * action - Name of the action to execute in <editor>.
- * control - Optional boolean that specifies if control must be pressed.
- * Default is false.
- */
- mxDefaultKeyHandler.prototype.bindAction = function (code, action, control)
- {
- var keyHandler = mxUtils.bind(this, function()
- {
- this.editor.execute(action);
- });
- // Binds the function to control-down keycode
- if (control)
- {
- this.handler.bindControlKey(code, keyHandler);
- }
- // Binds the function to the normal keycode
- else
- {
- this.handler.bindKey(code, keyHandler);
- }
- };
- /**
- * Function: destroy
- *
- * Destroys the <handler> associated with this object. This does normally
- * not need to be called, the <handler> is destroyed automatically when the
- * window unloads (in IE) by <mxEditor>.
- */
- mxDefaultKeyHandler.prototype.destroy = function ()
- {
- this.handler.destroy();
- this.handler = null;
- };
- __mxOutput.mxDefaultKeyHandler = typeof mxDefaultKeyHandler !== 'undefined' ? mxDefaultKeyHandler : undefined;
|