|
@@ -10,19 +10,17 @@ import ViewPosition from '../treeview/position.js';
|
|
|
import ViewText from '../treeview/text.js';
|
|
import ViewText from '../treeview/text.js';
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * Maps elements and positions between {@link treeView TreeView} and {@link treeModel TreeModel}.
|
|
|
|
|
|
|
+ * Creates an instance of the mapper.
|
|
|
|
|
+ *
|
|
|
|
|
+ * @classdesc
|
|
|
|
|
+ * Maps elements and positions between {@link core.treeView.TreeView TreeView} and {@link core.treeModel TreeModel}.
|
|
|
*
|
|
*
|
|
|
* Mapper use binded elements to find corresponding elements and positions, so, to get proper results,
|
|
* Mapper use binded elements to find corresponding elements and positions, so, to get proper results,
|
|
|
- * all Tree Model elements should be {@link treeController.Mapper#bindElements binded}.
|
|
|
|
|
|
|
+ * all Tree Model elements should be {@link core.treeController.Mapper#bindElements binded}.
|
|
|
*
|
|
*
|
|
|
- * @class treeController.Mapper
|
|
|
|
|
|
|
+ * @class core.treeController.Mapper
|
|
|
*/
|
|
*/
|
|
|
export default class Mapper {
|
|
export default class Mapper {
|
|
|
- /**
|
|
|
|
|
- * Creates an instance of the mapper.
|
|
|
|
|
- *
|
|
|
|
|
- * @constructor
|
|
|
|
|
- */
|
|
|
|
|
constructor() {
|
|
constructor() {
|
|
|
/**
|
|
/**
|
|
|
* Model element to View element mapping.
|
|
* Model element to View element mapping.
|
|
@@ -43,11 +41,12 @@ export default class Mapper {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* Marks model and view elements as corresponding. Corresponding elements can be retrieved by using
|
|
* Marks model and view elements as corresponding. Corresponding elements can be retrieved by using
|
|
|
- * the {@link #toModelElement} and {@link #toViewElement} methods.
|
|
|
|
|
- * The information that elements are bound is also used to translate positions.
|
|
|
|
|
|
|
+ * the {@link core.treeController.Mapper#toModelElement toModelElement} and {@link core.treeController.Mapper#toViewElement toViewElement}
|
|
|
|
|
+ * methods. The information that elements are bound is also used to translate positions.
|
|
|
*
|
|
*
|
|
|
- * @param {treeModel.Element} modelElement Model element.
|
|
|
|
|
- * @param {treeView.Element} viewElement View element.
|
|
|
|
|
|
|
+ * @method core.treeController.Mapper#bindElements
|
|
|
|
|
+ * @param {core.treeModel.Element} modelElement Model element.
|
|
|
|
|
+ * @param {core.treeView.Element} viewElement View element.
|
|
|
*/
|
|
*/
|
|
|
bindElements( modelElement, viewElement ) {
|
|
bindElements( modelElement, viewElement ) {
|
|
|
this._modelToViewMapping.set( modelElement, viewElement );
|
|
this._modelToViewMapping.set( modelElement, viewElement );
|
|
@@ -57,8 +56,9 @@ export default class Mapper {
|
|
|
/**
|
|
/**
|
|
|
* Gets the corresponding model element.
|
|
* Gets the corresponding model element.
|
|
|
*
|
|
*
|
|
|
- * @param {treeView.Element} viewElement View element.
|
|
|
|
|
- * @returns {treeModel.Element|null} Corresponding model element or `null` if not found.
|
|
|
|
|
|
|
+ * @method core.treeController.Mapper#toModelElement
|
|
|
|
|
+ * @param {core.treeView.Element} viewElement View element.
|
|
|
|
|
+ * @returns {core.treeModel.Element|null} Corresponding model element or `null` if not found.
|
|
|
*/
|
|
*/
|
|
|
toModelElement( viewElement ) {
|
|
toModelElement( viewElement ) {
|
|
|
return this._viewToModelMapping.get( viewElement );
|
|
return this._viewToModelMapping.get( viewElement );
|
|
@@ -67,8 +67,9 @@ export default class Mapper {
|
|
|
/**
|
|
/**
|
|
|
* Gets the corresponding view element.
|
|
* Gets the corresponding view element.
|
|
|
*
|
|
*
|
|
|
- * @param {treeModel.Element} modelElement Model element.
|
|
|
|
|
- * @returns {treeView.Element|null} Corresponding view element or `null` if not found.
|
|
|
|
|
|
|
+ * @method core.treeController.Mapper#toViewElement
|
|
|
|
|
+ * @param {core.treeModel.Element} modelElement Model element.
|
|
|
|
|
+ * @returns {core.treeView.Element|null} Corresponding view element or `null` if not found.
|
|
|
*/
|
|
*/
|
|
|
toViewElement( modelElement ) {
|
|
toViewElement( modelElement ) {
|
|
|
return this._modelToViewMapping.get( modelElement );
|
|
return this._modelToViewMapping.get( modelElement );
|
|
@@ -77,8 +78,8 @@ export default class Mapper {
|
|
|
/**
|
|
/**
|
|
|
* Gets the corresponding model position.
|
|
* Gets the corresponding model position.
|
|
|
*
|
|
*
|
|
|
- * @param {treeView.Position} viewPosition View position.
|
|
|
|
|
- * @returns {treeModel.Position} Corresponding model position.
|
|
|
|
|
|
|
+ * @param {core.treeView.Position} viewPosition View position.
|
|
|
|
|
+ * @returns {core.treeModel.Position} Corresponding model position.
|
|
|
*/
|
|
*/
|
|
|
toModelPosition( viewPosition ) {
|
|
toModelPosition( viewPosition ) {
|
|
|
let viewBlock = viewPosition.parent;
|
|
let viewBlock = viewPosition.parent;
|
|
@@ -97,8 +98,9 @@ export default class Mapper {
|
|
|
/**
|
|
/**
|
|
|
* Gets the corresponding view position.
|
|
* Gets the corresponding view position.
|
|
|
*
|
|
*
|
|
|
- * @param {treeModel.Position} modelPosition Model position.
|
|
|
|
|
- * @returns {treeView.Position} Corresponding view position.
|
|
|
|
|
|
|
+ * @method core.treeController.Mapper#toViewPosition
|
|
|
|
|
+ * @param {core.treeModel.Position} modelPosition Model position.
|
|
|
|
|
+ * @returns {core.treeView.Position} Corresponding view position.
|
|
|
*/
|
|
*/
|
|
|
toViewPosition( modelPosition ) {
|
|
toViewPosition( modelPosition ) {
|
|
|
let viewContainer = this._modelToViewMapping.get( modelPosition.parent );
|
|
let viewContainer = this._modelToViewMapping.get( modelPosition.parent );
|
|
@@ -118,10 +120,11 @@ export default class Mapper {
|
|
|
* <p>foo|<b>bar</b></p> // _toModelOffset( p, 3, p ) -> 3
|
|
* <p>foo|<b>bar</b></p> // _toModelOffset( p, 3, p ) -> 3
|
|
|
* <p>foo<b>ba|r</b></p> // _toModelOffset( b, 2, b ) -> 2
|
|
* <p>foo<b>ba|r</b></p> // _toModelOffset( b, 2, b ) -> 2
|
|
|
*
|
|
*
|
|
|
|
|
+ * @method core.treeController.Mapper#_toModelOffset
|
|
|
* @private
|
|
* @private
|
|
|
- * @param {treeView.Element} viewParent Position parent.
|
|
|
|
|
|
|
+ * @param {core.treeView.Element} viewParent Position parent.
|
|
|
* @param {Number} viewOffset Position offset.
|
|
* @param {Number} viewOffset Position offset.
|
|
|
- * @param {treeView.Element} viewBlock Block used as a base to calculate offset.
|
|
|
|
|
|
|
+ * @param {core.treeView.Element} viewBlock Block used as a base to calculate offset.
|
|
|
* @returns {Number} Offset in the model.
|
|
* @returns {Number} Offset in the model.
|
|
|
*/
|
|
*/
|
|
|
_toModelOffset( viewParent, viewOffset, viewBlock ) {
|
|
_toModelOffset( viewParent, viewOffset, viewBlock ) {
|
|
@@ -159,8 +162,9 @@ export default class Mapper {
|
|
|
* <b>foo</b> -> 3 // Length the element which has no corresponding model element is a length of its children.
|
|
* <b>foo</b> -> 3 // Length the element which has no corresponding model element is a length of its children.
|
|
|
* <p>foo</p> -> 1 // Length the element which has corresponding model element is always 1.
|
|
* <p>foo</p> -> 1 // Length the element which has corresponding model element is always 1.
|
|
|
*
|
|
*
|
|
|
|
|
+ * @method core.treeController.Mapper#_getModelLength
|
|
|
* @private
|
|
* @private
|
|
|
- * @param {treeView.Element} viewNode View node.
|
|
|
|
|
|
|
+ * @param {core.treeView.Element} viewNode View node.
|
|
|
* @returns {Number} Length of the node in the tree model.
|
|
* @returns {Number} Length of the node in the tree model.
|
|
|
*/
|
|
*/
|
|
|
_getModelLength( viewNode ) {
|
|
_getModelLength( viewNode ) {
|
|
@@ -202,10 +206,11 @@ export default class Mapper {
|
|
|
* We are in the text node so we can simple find the offset.
|
|
* We are in the text node so we can simple find the offset.
|
|
|
* <p>fo<b>ba|r</b>bom</p> -> expected offset: 2, actual offset: 2 -> position found
|
|
* <p>fo<b>ba|r</b>bom</p> -> expected offset: 2, actual offset: 2 -> position found
|
|
|
*
|
|
*
|
|
|
|
|
+ * @method core.treeController.Mapper#_findPositionIn
|
|
|
* @private
|
|
* @private
|
|
|
- * @param {treeView.Element} viewParent Tree view element in which we are looking for the position.
|
|
|
|
|
|
|
+ * @param {core.treeView.Element} viewParent Tree view element in which we are looking for the position.
|
|
|
* @param {Number} expectedOffset Expected offset.
|
|
* @param {Number} expectedOffset Expected offset.
|
|
|
- * @returns {treeVew.Position} Found position.
|
|
|
|
|
|
|
+ * @returns {core.treeVew.Position} Found position.
|
|
|
*/
|
|
*/
|
|
|
_findPositionIn( viewParent, expectedOffset ) {
|
|
_findPositionIn( viewParent, expectedOffset ) {
|
|
|
// Last scanned view node.
|
|
// Last scanned view node.
|