8
0
Piotr Jasiun 9 лет назад
Родитель
Сommit
7fb0abf34b

+ 2 - 19
packages/ckeditor5-enter/src/enter.js

@@ -6,10 +6,8 @@
 'use strict';
 'use strict';
 
 
 import Feature from '../feature.js';
 import Feature from '../feature.js';
-import DomEventData from '../engine/treeview/observer/domeventdata.js';
-import KeyObserver from '../engine/treeview/observer/keyobserver.js';
 import EnterCommand from './entercommand.js';
 import EnterCommand from './entercommand.js';
-import { keyCodes } from '../utils/keyboard.js';
+import EnterObserver from './enterobserver.js';
 
 
 /**
 /**
  * The enter feature. Handles the <kbd>Enter</kbd> and <kbd>Shift + Enter</kbd> keys in the editor.
  * The enter feature. Handles the <kbd>Enter</kbd> and <kbd>Shift + Enter</kbd> keys in the editor.
@@ -22,16 +20,10 @@ export default class Enter extends Feature {
 		const editor = this.editor;
 		const editor = this.editor;
 		const editingView = editor.editing.view;
 		const editingView = editor.editing.view;
 
 
-		editingView.addObserver( KeyObserver );
+		editingView.addObserver( EnterObserver );
 
 
 		editor.commands.set( 'enter', new EnterCommand( editor ) );
 		editor.commands.set( 'enter', new EnterCommand( editor ) );
 
 
-		this.listenTo( editingView, 'keydown', ( evt, data ) => {
-			if ( data.keyCode == keyCodes.enter ) {
-				editingView.fire( 'enter', new DomEventData( editingView, data.domEvent ) );
-			}
-		} );
-
 		// TODO We may use keystroke handler for that.
 		// TODO We may use keystroke handler for that.
 		this.listenTo( editingView, 'enter', ( evt, data ) => {
 		this.listenTo( editingView, 'enter', ( evt, data ) => {
 			editor.execute( 'enter' );
 			editor.execute( 'enter' );
@@ -39,12 +31,3 @@ export default class Enter extends Feature {
 		} );
 		} );
 	}
 	}
 }
 }
-
-/**
- * Event fired when the user presses <kbd>Enter</kbd>.
- *
- * Note: This event is fired by the {@link enter.Enter enter feature}.
- *
- * @event engine.treeView.TreeView#enter
- * @param {engine.treeView.observer.DomEventData} data
- */

+ 40 - 0
packages/ckeditor5-enter/src/enterobserver.js

@@ -0,0 +1,40 @@
+/**
+ * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+'use strict';
+
+import Observer from '../engine/treeview/observer/observer.js';
+import DomEventData from '../engine/treeview/observer/domeventdata.js';
+import KeyObserver from '../engine/treeview/observer/keyobserver.js';
+import { keyCodes } from '../utils/keyboard.js';
+
+/**
+ * Enter observer introduce {@link engine.treeView.TreeView#enter} event.
+ *
+ * @memberOf enter
+ * @extends engine.treeView.observer.Observer
+ */
+export default class EnterObserver extends Observer {
+	constructor( treeView ) {
+		super( treeView );
+
+		treeView.addObserver( KeyObserver );
+
+		treeView.on( 'keydown', ( evt, data ) => {
+			if ( this.isEnabled && data.keyCode == keyCodes.enter ) {
+				treeView.fire( 'enter', new DomEventData( treeView, data.domEvent ) );
+			}
+		} );
+	}
+}
+
+/**
+ * Event fired when the user presses <kbd>Enter</kbd>.
+ *
+ * Note: This event is fired by the {@link enter.Enter enter feature}.
+ *
+ * @event engine.treeView.TreeView#enter
+ * @param {engine.treeView.observer.DomEventData} data
+ */

+ 0 - 28
packages/ckeditor5-enter/tests/enter.js

@@ -10,7 +10,6 @@ import StandardCreator from '/ckeditor5/creator/standardcreator.js';
 import Enter from '/ckeditor5/enter/enter.js';
 import Enter from '/ckeditor5/enter/enter.js';
 import EnterCommand from '/ckeditor5/enter/entercommand.js';
 import EnterCommand from '/ckeditor5/enter/entercommand.js';
 import DomEventData from '/ckeditor5/engine/treeview/observer/domeventdata.js';
 import DomEventData from '/ckeditor5/engine/treeview/observer/domeventdata.js';
-import { getCode } from '/ckeditor5/utils/keyboard.js';
 
 
 describe( 'Enter feature', () => {
 describe( 'Enter feature', () => {
 	let editor, editingView;
 	let editor, editingView;
@@ -45,33 +44,6 @@ describe( 'Enter feature', () => {
 		expect( domEvt.preventDefault.calledOnce ).to.be.true;
 		expect( domEvt.preventDefault.calledOnce ).to.be.true;
 	} );
 	} );
 
 
-	describe( 'enter event', () => {
-		it( 'is fired on keydown', () => {
-			const view = editor.editing.view;
-			const spy = sinon.spy();
-
-			view.on( 'enter', spy );
-
-			view.fire( 'keydown', new DomEventData( editingView, getDomEvent(), {
-				keyCode: getCode( 'enter' )
-			} ) );
-
-			expect( spy.calledOnce ).to.be.true;
-		} );
-		it( 'is not fired on keydown when keyCode does not match enter', () => {
-			const view = editor.editing.view;
-			const spy = sinon.spy();
-
-			view.on( 'enter', spy );
-
-			view.fire( 'keydown', new DomEventData( editingView, getDomEvent(), {
-				keyCode: 1
-			} ) );
-
-			expect( spy.calledOnce ).to.be.false;
-		} );
-	} );
-
 	function getDomEvent() {
 	function getDomEvent() {
 		return {
 		return {
 			preventDefault: sinon.spy()
 			preventDefault: sinon.spy()

+ 51 - 0
packages/ckeditor5-enter/tests/enterobserver.js

@@ -0,0 +1,51 @@
+/**
+ * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+'use strict';
+
+import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import EnterObserver from '/ckeditor5/enter/enterobserver.js';
+import DomEventData from '/ckeditor5/engine/treeview/observer/domeventdata.js';
+import { getCode } from '/ckeditor5/utils/keyboard.js';
+
+describe( 'Enter feature', () => {
+	let treeView, observer;
+
+	beforeEach( () => {
+		treeView = new TreeView();
+		observer = treeView.addObserver( EnterObserver );
+	} );
+
+	describe( 'enter event', () => {
+		it( 'is fired on keydown', () => {
+			const spy = sinon.spy();
+
+			treeView.on( 'enter', spy );
+
+			treeView.fire( 'keydown', new DomEventData( treeView, getDomEvent(), {
+				keyCode: getCode( 'enter' )
+			} ) );
+
+			expect( spy.calledOnce ).to.be.true;
+		} );
+		it( 'is not fired on keydown when keyCode does not match enter', () => {
+			const spy = sinon.spy();
+
+			treeView.on( 'enter', spy );
+
+			treeView.fire( 'keydown', new DomEventData( treeView, getDomEvent(), {
+				keyCode: 1
+			} ) );
+
+			expect( spy.calledOnce ).to.be.false;
+		} );
+	} );
+
+	function getDomEvent() {
+		return {
+			preventDefault: sinon.spy()
+		};
+	}
+} );