/// <summary> /// Build the model of this tree view /// </summary> /// <returns>the root nodes of the tree</returns> protected override List <BaseTreeNode> BuildModel() { List <BaseTreeNode> retVal = new List <BaseTreeNode>(); ModelElement modelElement = Root as ModelElement; if (modelElement != null) { History history = modelElement.EFSSystem.History; foreach (Change change in history.GetChanges(modelElement)) { ChangeTreeNode node = new ChangeTreeNode(change, true); retVal.Add(node); } } return(retVal); }
/// <summary> /// Accepts the drop of a base tree node on this node /// </summary> /// <param name="SourceNode"></param> public virtual void AcceptCopy(BaseTreeNode SourceNode) { XmlBooster.XmlBBase xmlBBase = SourceNode.Model as XmlBooster.XmlBBase; if (xmlBBase != null) { string data = xmlBBase.ToXMLString(); XmlBooster.XmlBStringContext ctxt = new XmlBooster.XmlBStringContext(data); try { DataDictionary.ModelElement copy = DataDictionary.Generated.acceptor.accept(ctxt) as DataDictionary.ModelElement; Model.AddModelElement(copy); MainWindow.RefreshModel(); } catch (Exception) { MessageBox.Show("Cannot copy element\n" + data); } } }
/// <summary> /// Build the model of this tree view /// </summary> /// <returns>the root nodes of the tree</returns> protected override List <BaseTreeNode> BuildModel() { List <BaseTreeNode> retVal = new List <BaseTreeNode>(); ModelElement model = Root as ModelElement; if (model != null && model != _previousModel) { _previousModel = model; UsageTreeNode models = new UsageTreeNode("Model", true); models.SetImageIndex(false); models.SubNodesBuilt = true; retVal.Add(models); UsageTreeNode tests = new UsageTreeNode("Test", true); tests.SetImageIndex(false); tests.SubNodesBuilt = true; retVal.Add(tests); foreach (Usage usage in model.EFSSystem.FindReferences(model)) { UsageTreeNode current = new UsageTreeNode(usage, true); current.SetImageIndex(false); NameSpace nameSpace = EnclosingFinder <NameSpace> .find(usage.User, true); Frame frame = EnclosingFinder <Frame> .find(usage.User, true); if (nameSpace != null) { List <NameSpace> nameSpaces = new List <NameSpace>(); while (nameSpace != null) { nameSpaces.Insert(0, nameSpace); nameSpace = EnclosingFinder <NameSpace> .find(nameSpace); } UsageTreeNode currentTreeNode = models; foreach (NameSpace currentNameSpace in nameSpaces) { currentTreeNode = FindOrCreateFolderNode(currentTreeNode, currentNameSpace); } currentTreeNode.Nodes.Add(current); } else if (frame != null) { UsageTreeNode currentNode = FindOrCreateFolderNode(tests, frame); SubSequence subSequence = EnclosingFinder <SubSequence> .find(usage.User, true); if (subSequence != null) { currentNode = FindOrCreateFolderNode(currentNode, subSequence); } currentNode.Nodes.Add(current); } else { retVal.Add(current); } } Sort(); models.ExpandAll(); tests.ExpandAll(); } else { foreach (BaseTreeNode node in Nodes) { retVal.Add(node); } } return(retVal); }