| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /**
- * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
- 'use strict';
- /**
- * Base class for DOM event observers. This class handles
- * {@link core.treeView.observer.Observer#observe adding} listeners to DOM elements,
- * {@link core.treeView.observer.Observer#disable disabling} and
- * {@link core.treeView.observer.Observer#enable re-enabling} events.
- * Child class needs to define
- * {@link core.treeView.observer.DomEventObserver#domEventType DOM event type} and
- * {@link core.treeView.observer.DomEventObserver#onDomEvent callback}.
- *
- * For instance:
- *
- * class ClickObserver extends DomEventObserver {
- * // It can also be defined as a normal property in the constructor.
- * get domEventType() {
- * return 'click';
- * }
- *
- * onDomEvent( domEvt ) {
- * this.fire( 'click' );
- * }
- * }
- *
- * Or:
- *
- * const observer = new DomEventObserver();
- * observer.domEventType = 'click';
- * observer.onDomEvent = ( domEvt ) => observer.fire( 'click' );
- *
- */
- export default class DomEventObserver {
- /**
- * @inheritDoc
- */
- init( treeView ) {
- /**
- * Reference to the {@link core.treeView.TreeView} object.
- *
- * @member {core.treeView.TreeView} core.treeView.observer.DomEventObserver#treeView
- */
- this.treeView = treeView;
- /**
- * State of the observer. If it is disabled not event should be fired.
- *
- * @member {Boolean} core.treeView.observer.DomEventObserver#isEnabled
- */
- this.isEnabled = false;
- /**
- * Type of the DOM event the observer should listen on.
- *
- * @member {String} core.treeView.observer.DomEventObserver#domEventType
- */
- }
- /**
- * Callback which should be called when the DOM event occurred. Note that the callback will not be called if
- * observer {@link core.treeView.observer.DomEventObserver#isEnabled is not enabled}.
- *
- * @see core.treeView.observer.DomEventObserver#domEventType
- * @abstract
- * @method core.treeView.observer.DomEventObserver#onDomEvent
- */
- /**
- * @inheritDoc
- */
- observe( domElement ) {
- domElement.addEventListener( this.domEventType, domEvent => {
- if ( this.isEnabled ) {
- this.onDomEvent( domEvent );
- }
- } );
- }
- /**
- * @inheritDoc
- */
- enable() {
- this.isEnabled = true;
- }
- /**
- * @inheritDoc
- */
- disable() {
- this.isEnabled = false;
- }
- /**
- * Calls {@link core.treeView.TreeView#fire} if observer
- * {@link core.treeView.observer.DomEventObserver#isEnabled is enabled}.
- *
- * @see core.treeView.TreeView#fire
- * @param {...*} args Fire arguments {@link core.treeView.TreeView#fire}.
- */
- fire( ...args ) {
- if ( this.isEnabled ) {
- this.treeView.fire.apply( this.treeView, args );
- }
- }
- }
|