public AddRemoveNode(NodeChangeType nodeChangeType, Node node, Node parent1, Node parent2, List<Node> outputs, Network network) { if (node == null) throw new ArgumentNullException("node"); if (parent1 == null) throw new ArgumentNullException("parent1"); if (parent2 == null) throw new ArgumentNullException("parent2"); if (outputs == null) throw new ArgumentNullException("output"); //if (node == parent1 || node == parent2 || node == outputs || //TODO: FIX THIS checker // parent1 == parent2 || parent1 == outputs || parent2 == outputs) // throw new ArgumentException(); nodeChangeType_ = nodeChangeType; node_ = node; parent1_ = parent1; parent2_ = parent2; outputs_ = outputs; network_ = network; // NODE: it is only way I was able to create to make parent 2 children stay in same order after revert parent2NodeToInsertAfter_ = null; if (nodeChangeType == NodeChangeType.Remove) { LinkedListNode<Node> parent2LinkedListNodeToInsertAfter = parent2_.Outputs.Find(node_).Previous; if (parent2LinkedListNodeToInsertAfter != null) { parent2NodeToInsertAfter_ = parent2_.Outputs.Find(node_).Previous.Value; } } }
public virtual void OnDescendantChanged(NodeChangeType changeType, ITreeNode node) { if (DescendantChanged != null) { DescendantChanged(changeType, node); } if (Parent != null) { Parent.OnDescendantChanged(changeType, node); } }
public virtual void OnAncestorChanged(NodeChangeType changeType, ITreeNode node) { if (AncestorChanged != null) { AncestorChanged(changeType, node); } foreach (ITreeNode <T> child in Children) { child.OnAncestorChanged(changeType, node); } }
public AddRemoveNode(NodeChangeType nodeChangeType, Node node, Node parent1, Node parent2, List <Node> outputs, Network network) { if (node == null) { throw new ArgumentNullException("node"); } if (parent1 == null) { throw new ArgumentNullException("parent1"); } if (parent2 == null) { throw new ArgumentNullException("parent2"); } if (outputs == null) { throw new ArgumentNullException("output"); } //if (node == parent1 || node == parent2 || node == outputs || //TODO: FIX THIS checker // parent1 == parent2 || parent1 == outputs || parent2 == outputs) // throw new ArgumentException(); nodeChangeType_ = nodeChangeType; node_ = node; parent1_ = parent1; parent2_ = parent2; outputs_ = outputs; network_ = network; // NODE: it is only way I was able to create to make parent 2 children stay in same order after revert parent2NodeToInsertAfter_ = null; if (nodeChangeType == NodeChangeType.Remove) { LinkedListNode <Node> parent2LinkedListNodeToInsertAfter = parent2_.Outputs.Find(node_).Previous; if (parent2LinkedListNodeToInsertAfter != null) { parent2NodeToInsertAfter_ = parent2_.Outputs.Find(node_).Previous.Value; } } }
void QcMessagner_ReciveCmd(object sender, QcCmdEventArgs e) { try { if (e.Cmd.CmdType == QcProtocol.QcCommand.Undefine) { return; } QcMsgUser userfrom = null; if (lstUser.ContainsKey(e.Cmd.From)) { userfrom = lstUser[e.Cmd.From]; } if (this.ReciveCmd != null) { var cmdevt = new QcMessagerCmdEventArg() { cmd = e.Cmd, user = userfrom }; this.ReciveCmd(this, cmdevt); } switch (e.Cmd.CmdType) { case QcProtocol.QcCommand.QcLoginReplay: client.Send(QcCmd.MakeCmd(QcProtocol.QcCommand.QcListUser)); break; case QcProtocol.QcCommand.QcLoginOut: if (userfrom != null) { userfrom.Chanel = null; userfrom.IsLinked = false; } if (this.Loginout != null) { if (userfrom != null) { this.Loginout(this, new QcMessagerLoginEventArg(userfrom)); } } break; case QcProtocol.QcCommand.QcMsg: if (this.ReciveMsg != null) { var msgevt = new QcMessagerMsgEventArg(userfrom.Name, e.Cmd.tokens(3), e.Cmd.tokens(4)); this.ReciveMsg(this, msgevt); } break; case QcProtocol.QcCommand.QcSystemMsg: if (this.ReciveSystemMsg != null) { var systemevt = new QcSystemMsgEventArg(e.Cmd.tokens(5), e.Cmd.From, e.Cmd.tokens(3), e.Cmd.tokens(4)); this.ReciveSystemMsg(this, systemevt); } break; case QcProtocol.QcCommand.QcUserLogin: foreach (QcMsgUser u in lstUser.Values) { if (u.Name == userfrom.Name) { u.IsLinked = true; break; } } if (this.Logined != null) { this.Logined(this, new QcMessagerLoginEventArg(userfrom)); } break; case QcProtocol.QcCommand.QcListUser: var v = e.Cmd.tokens(1).Split(','); foreach (var u in v) { if (lstUser.ContainsKey(u)) { lstUser[u].Chanel = new QcChanel(); } } break; case QcProtocol.QcCommand.QcUpdateMsg: if (ReciveUpdateMsg != null) { var msg = QcMsg.GetMsg(e.Cmd.tokens(4)); ReciveUpdateMsg(this, new QcMessagerUpdateMsgEventArg(msg)); } break; case QcProtocol.QcCommand.QcDataUpdate: string index = e.Cmd.tokens(2) + "|" + e.Cmd.tokens(1); //收到数据更新消息,进行更新 // QcLog.LogString(e.Cmd.ToString()); NodeChangeType type = NodeChangeType.Create; if (Enum.TryParse <NodeChangeType>(e.Cmd.tokens(3), out type)) { switch (type) { case NodeChangeType.Create: break; case NodeChangeType.Update: if (QcNode.lstNode.ContainsKey(index)) { QcNode.lstNode[index].Refresh(); } break; case NodeChangeType.Delete: if (QcNode.lstNode.ContainsKey(index)) { QcNode.lstNode[index].RiseDelete(); } break; } if (DataUpdate != null) { if (QcNode.lstNode.ContainsKey(index)) { DataUpdate(this, new QcMessagerDataUpdateEventArg(QcNode.lstNode[index], type)); } else { string tablename = e.Cmd.tokens(2); string code = e.Cmd.tokens(1); string codefield = e.Cmd.tokens(4); QcNode node = new QcNewNode(tablename, code, codefield); node.InitFromString(e.Cmd.tokens(5)); DataUpdate(this, new QcMessagerDataUpdateEventArg(node, type)); } } } break; } } catch (Exception ex) { QcLog.LogException("QcMessagner:", ex); } }
public QcMessagerDataUpdateEventArg(QcNode node, NodeChangeType type) { this.node = node; this.type = type; }
protected override void UpdateTotalSummaryOnNodeCollectionChanged(TreeListNodeBase node, NodeChangeType changeType, IEnumerable <DevExpress.Data.TreeList.TreeListSummaryItem> changedItems, Dictionary <TreeListNodeBase, SummaryDataItem> summaryData) { base.UpdateTotalSummaryOnNodeCollectionChanged(node, changeType, changedItems, summaryData); UpdateGroupSummaries(); }
/// <summary> /// /// </summary> /// <param name="Code">数据编码值</param> /// <param name="TableName">表明</param> /// <param name="CodeField">数据编码字段名</param> /// <param name="ChangeType">变更类型</param> /// <returns></returns> public static bool PostMeassage(string Code, string TableName, string CodeField, NodeChangeType ChangeType = NodeChangeType.Update) { return(PostMessage(QcNet.QcCmd.MakeCmd(QcProtocol.QcCommand.QcDataUpdate , Code , TableName , ChangeType , CodeField))); }
public QcNodeEventArg(QcNode node, NodeChangeType type) { this.node = node; this.type = type; }
public override void OnDescendantChanged(NodeChangeType changeType, ITreeNode node) { base.OnDescendantChanged(changeType, node); Console.WriteLine("Space.OnDescendantChanged: " + changeType + " " + ((Space)node).Name); }