package com.xrosstools.xunit.editor.treeparts; import java.util.List; import com.xrosstools.xunit.editor.model.CompositeUnitNode; import com.xrosstools.xunit.editor.model.UnitNode; import com.xrosstools.xunit.editor.model.UnitNodePanel; public abstract class BaseCompositeUnitNodeTreePart extends BaseNodeTreePart { private UnitNodePanel getUnitsPanel(){ return (UnitNodePanel)((CompositeUnitNode)getModel()).getContainerNode(); } public void activate() { super.activate(); getUnitsPanel().addPropertyChangeListener(this); } public void deactivate() { super.deactivate(); getUnitsPanel().removePropertyChangeListener(this); } protected final List<UnitNode> getModelChildren() { CompositeUnitNode unit = (CompositeUnitNode)getModel(); List<UnitNode> list = getList(); addChild(list, unit.getStartNode()); for(UnitNode node: unit.getContainerNode().getAll()) addChild(list, node); addChild(list, unit.getEndNode()); return list; } protected final void addChild(List<UnitNode> nodes, UnitNode node){ if(showChildNode(node)) super.addChild(nodes, node); } protected abstract boolean showChildNode(UnitNode child); }