mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-03 19:45:44 -05:00
Implement Item#setParent, making Item#parent writeable. Closes #186.
This commit is contained in:
parent
25d34be59b
commit
fd3fc7f2d7
2 changed files with 67 additions and 0 deletions
|
@ -977,11 +977,43 @@ var Item = this.Item = Base.extend(Callback, {
|
||||||
*
|
*
|
||||||
* // Now the parent of the path has become the group:
|
* // Now the parent of the path has become the group:
|
||||||
* console.log(path.parent == group); // true
|
* console.log(path.parent == group); // true
|
||||||
|
*
|
||||||
|
* @example // Setting the parent of the item to another item
|
||||||
|
* var path = new Path();
|
||||||
|
*
|
||||||
|
* // New items are placed in the active layer:
|
||||||
|
* console.log(path.parent == project.activeLayer); // true
|
||||||
|
*
|
||||||
|
* var group = new Group();
|
||||||
|
* group.parent = path;
|
||||||
|
*
|
||||||
|
* // Now the parent of the path has become the group:
|
||||||
|
* console.log(path.parent == group); // true
|
||||||
|
*
|
||||||
|
* // The path is now contained in the children list of group:
|
||||||
|
* console.log(group.children[0] == path); // true
|
||||||
|
*
|
||||||
|
* @example // Setting the parent of an item in the constructor
|
||||||
|
* var group = new Group();
|
||||||
|
*
|
||||||
|
* var path = new Path({
|
||||||
|
* parent: group
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* // The parent of the path is the group:
|
||||||
|
* console.log(path.parent == group); // true
|
||||||
|
*
|
||||||
|
* // The path is contained in the children list of group:
|
||||||
|
* console.log(group.children[0] == path); // true
|
||||||
*/
|
*/
|
||||||
getParent: function() {
|
getParent: function() {
|
||||||
return this._parent;
|
return this._parent;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setParent: function(item) {
|
||||||
|
return item.addChild(this);
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The children items contained within this item. Items that define a
|
* The children items contained within this item. Items that define a
|
||||||
* {@link #name} can also be accessed by name.
|
* {@link #name} can also be accessed by name.
|
||||||
|
|
|
@ -63,6 +63,41 @@ test('addChild(item)', function() {
|
||||||
}, 1);
|
}, 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('setting item.parent', function() {
|
||||||
|
var layer1 = paper.project.activeLayer;
|
||||||
|
var layer2 = new Layer();
|
||||||
|
layer1.activate();
|
||||||
|
var group = new Group();
|
||||||
|
|
||||||
|
var path = new Path();
|
||||||
|
equals(function() {
|
||||||
|
return path.parent === layer1;
|
||||||
|
}, true, 'Path is a child of layer1 because it is active');
|
||||||
|
|
||||||
|
path.parent = layer2;
|
||||||
|
equals(function() {
|
||||||
|
return path.parent === layer2;
|
||||||
|
}, true, 'The parent of path was set to layer2');
|
||||||
|
|
||||||
|
path.parent = group;
|
||||||
|
equals(function() {
|
||||||
|
return path.parent === group;
|
||||||
|
}, true, 'The parent of path was set to group');
|
||||||
|
equals(function() {
|
||||||
|
return layer2.children.indexOf(path) === -1;
|
||||||
|
}, false, 'The path is no longer a child of layer2');
|
||||||
|
|
||||||
|
var path2 = new Path({
|
||||||
|
parent: group
|
||||||
|
});
|
||||||
|
equals(function() {
|
||||||
|
return path2.parent === group;
|
||||||
|
}, true, 'setting the parent in the constructor');
|
||||||
|
equals(function() {
|
||||||
|
return group.children.indexOf(path2) == 1;
|
||||||
|
}, true, 'the index of path2 is 1, because group already contains path from before');
|
||||||
|
});
|
||||||
|
|
||||||
test('item.parent / item.isChild / item.isParent / item.layer', function() {
|
test('item.parent / item.isChild / item.isParent / item.layer', function() {
|
||||||
var project = paper.project;
|
var project = paper.project;
|
||||||
var secondDoc = new Project();
|
var secondDoc = new Project();
|
||||||
|
|
Loading…
Reference in a new issue