class Composite: def __init__(self): self.children = [] self.parent = None def addChild(self, child, index = None): if index == None: self.children.append(child) else: self.children.insert(index, child) child.parent = self def removeChild(self, child): self.children.remove(child) child.parent = None def remove(self): parent = self.parent if parent != None: parent.removeChild(self) def moveForward(self): parent = self.parent if parent == None: return index = parent.children.index(self) parent.removeChild(self) parent.addChild(self, index - 1) def moveBack(self): parent = self.parent if parent == None: return index = parent.children.index(self) parent.removeChild(self) parent.addChild(self, index + 1) def moveUp(self): parent = self.parent if parent == None: return grand_parent = parent.parent if grand_parent == None: return index = grand_parent.children.index(parent) parent.removeChild(self) grand_parent.addChild(self, index + 1) def moveDown(self): parent = self.parent if parent == None: return index = parent.children.index(self) if index == 0: return brother = parent.children[index - 1] parent.removeChild(self) brother.addChild(self)