public void PrependDomain() { Domain newDomain = new Domain() { name = "!!!newDomain" + _newDomainValueCounter++.ToString(), }; if (MainFrameContainer.AddNewDomain(newDomain)) { Domain = newDomain; ViewModelFramesHierarchy newDomainNode = new ViewModelFramesHierarchy() { kbEntity = KBEntity.DOMAIN_NAME, ParentalNode = _nodeCollection[1], Name = newDomain.name, Frame = null, }; _moveAllOtherNodesRightAfterNewNode(ref newDomainNode, 1); //1 для доменов OnPropertyChanged("PrependDomain"); } }
void UpdateDomainNodes() { _nodeCollection[1].Nodes.Clear(); foreach (Domain newDomain in MainFrameContainer.GetDomains()) { ViewModelFramesHierarchy domainToNode = new ViewModelFramesHierarchy() { kbEntity = KBEntity.DOMAIN_NAME, Domain = newDomain, ParentalNode = _nodeCollection[1], Name = newDomain.name, Frame = null, }; for (int i = 0; i < newDomain.values.Count; i++) { ViewModelFramesHierarchy domainValueNode = new ViewModelFramesHierarchy() { kbEntity = KBEntity.DOMAIN_VALUE, NodeIndex = i, ParentalNode = domainToNode, Name = newDomain.values[i], }; domainToNode.Nodes.Add(domainValueNode); } _nodeCollection[1].Nodes.Add(domainToNode); } }
public void PrependFrame() { Frame newFrame = new Frame() { name = "!!!newFrame" + _newFrameCounter++.ToString(), }; MainFrameContainer.AddFrame(newFrame); newFrame.Id = MainFrameContainer.GetAllFrames().Last().Id; ViewModelFramesHierarchy newFrameNode = new ViewModelFramesHierarchy() { kbEntity = KBEntity.FRAME, ParentalNode = _nodeCollection[0], Id = newFrame.Id, Name = newFrame.name, Frame = newFrame }; ViewModelFramesHierarchy isA_node = new ViewModelFramesHierarchy() { kbEntity = KBEntity.IS_A, ParentalNode = newFrameNode, Name = frame.isA, NodeIndex = 0, }; newFrameNode.Nodes.Add(isA_node); _moveAllOtherNodesRightAfterNewNode(ref newFrameNode, 0); //0 для фреймов viewModelGraph.DrawAllKB(MainFrameContainer); OnPropertyChanged("PrepEnd"); }
private void _moveAllOtherNodesRightAfterNewNode(ref ViewModelFramesHierarchy newNode, int domainOrSlot) { if (_nodeCollection[domainOrSlot].Nodes.Count != 0) { ViewModelFramesHierarchy prevNode = _nodeCollection[domainOrSlot].Nodes[0]; ViewModelFramesHierarchy nextNode = prevNode; //prevNode = firstNode[0].Nodes[0];// Сохраняем самый первый узел _nodeCollection[domainOrSlot].Nodes[0] = newNode; for (int i = 1; i < _nodeCollection[domainOrSlot].Nodes.Count; i++) { nextNode = _nodeCollection[domainOrSlot].Nodes[i]; _nodeCollection[domainOrSlot].Nodes[i] = prevNode; prevNode = nextNode; } _nodeCollection[domainOrSlot].Nodes.Add(nextNode); } else { Nodes = _nodeCollection; _nodeCollection[domainOrSlot].Nodes.Add(newNode); } }
public ViewModelFramesHierarchy() { Nodes = new ObservableCollection <ViewModelFramesHierarchy>(); if (_nodeCollection == null) { kbEntity = KBEntity.DEFAULT_ENTITY; Name = "SYS_MAIN_NODE"; _nodeCollection = new ObservableCollection <ViewModelFramesHierarchy>(); ViewModelFramesHierarchy nodeCollectionFirstNode = new ViewModelFramesHierarchy() { Name = "Фреймы", kbEntity = KBEntity.DEFAULT_ENTITY, }; _nodeCollection.Add(nodeCollectionFirstNode); nodeCollectionFirstNode = new ViewModelFramesHierarchy() { Name = "Домены", kbEntity = KBEntity.DEFAULT_ENTITY, NodeIndex = -1 }; _nodeCollection.Add(nodeCollectionFirstNode); OnPropertyChanged(); } }
public bool AddSlotOrDomainValueNode(ViewModelFramesHierarchy parentNode) { switch (parentNode.kbEntity) { case KBEntity.DEFAULT_ENTITY: if (parentNode.Name == "Фреймы") { PrependFrame(); } else if (parentNode.Name == "Домены") { PrependDomain(); } break; case KBEntity.FRAME: int slotsCount = parentNode.Nodes.Count - 1; Slot newSlotName_Slot = new Slot() { name = "!!!newSlotName " + _newSlotNameCounter++.ToString(), value = null, }; parentNode.Frame.slots.Add(newSlotName_Slot); //TODO: Нужно сделать с нормальной проверкой: MainFrameContainer.ReplaceFrame(parentNode.frame.name, parentNode.frame); ViewModelFramesHierarchy newSlotName_Node = new ViewModelFramesHierarchy() { kbEntity = KBEntity.SLOT_NAME, ParentalNode = parentNode, NodeIndex = slotsCount + 1, Name = newSlotName_Slot.name, }; parentNode.Nodes.Add(newSlotName_Node); UpdateDomainNodes(); /////////////// break; case KBEntity.SLOT_NAME: if (parentNode.Nodes.Count == 0) { int slotIndex = parentNode.NodeIndex - 1; Frame parentFrame = parentNode.ParentalNode.frame; parentFrame.slots[slotIndex].value = "!!!newSlotValue "; //TODO: Нужно сделать с нормальной проверкой: MainFrameContainer.ReplaceFrame(parentFrame.name, parentFrame); ViewModelFramesHierarchy newSlotValue_Node = new ViewModelFramesHierarchy() { kbEntity = KBEntity.SLOT_VALUE, ParentalNode = parentNode, Name = parentFrame.slots[slotIndex].value, }; parentNode.Nodes.Add(newSlotValue_Node); UpdateDomainNodes(); viewModelGraph.DrawAllKB(MainFrameContainer); break; } break; case KBEntity.DOMAIN_NAME: int domainsCount = parentNode.Nodes.Count - 1; string newDomain_ValueName = "!!!newDomainValue " + _newDomainValueCounter++.ToString(); if (MainFrameContainer.AddNewValueToDomain(parentNode.Domain.name, newDomain_ValueName)) { parentNode.Domain.values.Add(newDomain_ValueName); ViewModelFramesHierarchy newDomainValue_Node = new ViewModelFramesHierarchy() { kbEntity = KBEntity.DOMAIN_VALUE, ParentalNode = parentNode, NodeIndex = domainsCount + 1, Name = newDomain_ValueName, }; parentNode.Nodes.Add(newDomainValue_Node); } break; default: break; } OnPropertyChanged("AddSlotOrDomainValueNode"); return(true); }
public void FillOutFrameContainer(List <Frame> listOfFrames, List <Domain> listOfDomains) { //PrependFrame(); Запилить через это //DeleteSelectedNode() сделать это //MainFrameContainer.SetDomains(listOfDomains); //MainFrameContainer.SetFrame(listOfFrames); try { foreach (var frame in listOfFrames) { if (MainFrameContainer.AddFrame(frame)) { //////////////////////Ниже все старое ViewModelFramesHierarchy frameToNode = new ViewModelFramesHierarchy() { kbEntity = KBEntity.FRAME, ParentalNode = _nodeCollection[0], Id = frame.Id, Name = frame.name, Frame = frame, }; ViewModelFramesHierarchy isA_node = new ViewModelFramesHierarchy() { kbEntity = KBEntity.IS_A, ParentalNode = frameToNode, Name = frame.isA, NodeIndex = 0, }; frameToNode.Nodes.Add(isA_node); int slotIndex = 1; List <Slot> newSlots = new List <Slot>(); foreach (var slot in frame.slots) { newSlots.Add(slot); ViewModelFramesHierarchy slotNameNode = new ViewModelFramesHierarchy() { kbEntity = KBEntity.SLOT_NAME, ParentalNode = frameToNode, NodeIndex = slotIndex++, Name = slot.name, }; ViewModelFramesHierarchy slotValueNode = new ViewModelFramesHierarchy() { kbEntity = KBEntity.SLOT_VALUE, ParentalNode = slotNameNode, Name = slot.value, }; slotNameNode.Nodes.Add(slotValueNode); frameToNode.Nodes.Add(slotNameNode); } frameToNode.frame.slots = newSlots;//todo: проверить _nodeCollection[0].Nodes.Add(frameToNode); } } UpdateDomainNodes(); Nodes = _nodeCollection; viewModelGraph.DrawAllKB(MainFrameContainer); OnPropertyChanged(); } catch (Exception e) { MessageBox.Show(e.ToString()); } }