1/* 2 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above 9 * copyright notice, this list of conditions and the following 10 * disclaimer. 11 * 2. Redistributions in binary form must reproduce the above 12 * copyright notice, this list of conditions and the following 13 * disclaimer in the documentation and/or other materials 14 * provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY 17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 21 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 23 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 25 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 26 * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 30WebInspector.ContentFlow = function(documentNodeIdentifier, name, overset, contentNodes) 31{ 32 WebInspector.Object.call(this); 33 34 this._documentNodeIdentifier = documentNodeIdentifier; 35 this._name = name; 36 this._overset = overset; 37 this._contentNodes = contentNodes; 38}; 39 40WebInspector.ContentFlow.Event = { 41 OversetWasChanged: "content-flow-overset-was-changed", 42 ContentNodeWasAdded: "content-flow-content-node-was-added", 43 ContentNodeWasRemoved: "content-flow-content-node-was-removed" 44}; 45 46WebInspector.ContentFlow.prototype = { 47 48 constructor: WebInspector.ContentFlow, 49 __proto__: WebInspector.Object.prototype, 50 51 // Public 52 53 get id() 54 { 55 // Use the flow node id, to avoid collisions when we change main document id. 56 return this._documentNodeIdentifier + ":" + this._name; 57 }, 58 59 get documentNodeIdentifier() 60 { 61 return this._documentNodeIdentifier; 62 }, 63 64 get name() 65 { 66 return this._name; 67 }, 68 69 get overset() 70 { 71 return this._overset; 72 }, 73 74 set overset(overset) 75 { 76 if (this._overset === overset) 77 return; 78 this._overset = overset; 79 this.dispatchEventToListeners(WebInspector.ContentFlow.Event.FlowOversetWasChanged); 80 }, 81 82 get contentNodes() 83 { 84 return this._contentNodes; 85 }, 86 87 insertContentNodeBefore: function(contentNode, referenceNode) 88 { 89 var index = this._contentNodes.indexOf(referenceNode); 90 console.assert(index !== -1); 91 this._contentNodes.splice(index, 0, contentNode); 92 this.dispatchEventToListeners(WebInspector.ContentFlow.Event.ContentNodeWasAdded, {node: contentNode, before: referenceNode}); 93 }, 94 95 appendContentNode: function(contentNode) 96 { 97 this._contentNodes.push(contentNode); 98 this.dispatchEventToListeners(WebInspector.ContentFlow.Event.ContentNodeWasAdded, {node: contentNode}); 99 }, 100 101 removeContentNode: function(contentNode) 102 { 103 var index = this._contentNodes.indexOf(contentNode); 104 console.assert(index !== -1); 105 this._contentNodes.splice(index, 1); 106 this.dispatchEventToListeners(WebInspector.ContentFlow.Event.ContentNodeWasRemoved, {node: contentNode}); 107 } 108}; 109