public static List <TriStateTreeNode> GetSubTriStateNodes(DirectoryNode dir, bool checkboxVisible, bool cycle) { List <TriStateTreeNode> tris = new List <TriStateTreeNode>(); List <KellNode> nodes = dir.GetSub(); foreach (DirectoryNode node in nodes) { if (cycle) { TriStateTreeNode tri = new TriStateTreeNode(node.Name, GetSubTriStateNodes(node, checkboxVisible, cycle).ToArray()) { Name = node.ID, Tag = node.Tag, ImageIndex = node.IsLeaf ? dir.FileImageIndex : dir.DirImageIndex, CheckboxVisible = checkboxVisible }; tris.Add(tri); } else { TriStateTreeNode tri = new TriStateTreeNode(node.Name) { Name = node.ID, Tag = node.Tag, ImageIndex = node.IsLeaf ? dir.FileImageIndex : dir.DirImageIndex, CheckboxVisible = checkboxVisible }; tris.Add(tri); } } return(tris); }
private static TriStateTreeNode GetNodeByName(string name, TriStateTreeNode treenode, bool ignoreCase) { TriStateTreeNode triNode = null; foreach (TriStateTreeNode node in treenode.Nodes) { if (ignoreCase) { if (node.Name.ToLower() == name.ToLower()) { triNode = node; break; } else { GetNodeByName(name, node, true); } } else { if (node.Name == name) { triNode = node; break; } else { GetNodeByName(name, node, false); } } } return(triNode); }
/// <summary> /// 取消选中或选中事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void updateTriSatateTreeView_AfterCheck(object sender, TreeViewEventArgs e) { //只处理鼠标点击引起的状态变化 if (e.Action == TreeViewAction.ByMouse) { if (e.Node is TriStateTreeNode) { List <TreeNode> fileTreeNodes = new List <TreeNode>(); TriStateTreeNode tsTreeNode = e.Node as TriStateTreeNode; if (tsTreeNode.Nodes.Count == 0) { fileTreeNodes.Add(tsTreeNode); } if (tsTreeNode.Checked == false) { List <FileInfo> updateFileInfo = new List <FileInfo>(); foreach (var updatefile in this._updateFiles) { if (fileTreeNodes.Exists(n => n.Text == updatefile.Name)) { updateFileInfo.Add(updatefile); } } foreach (var updateFile in updateFileInfo) { this._updateFiles.Remove(updateFile); } } } } }
public static TriStateTreeNode KellNode2TriStateTreeNode(KellNode kellNode, bool checkboxVisible, int selectedImageIndex) { TriStateTreeNode tri = new TriStateTreeNode() { Name = kellNode.ID, Text = kellNode.Name, Tag = kellNode.Tag, CheckboxVisible = checkboxVisible, SelectedImageIndex = selectedImageIndex }; return(tri); }
public static TriStateTreeNode KellNode2TriStateTreeNode(KellNode kellNode, bool checkboxVisible) { TriStateTreeNode tri = new TriStateTreeNode() { Name = kellNode.ID, Text = kellNode.Name, Tag = kellNode.Tag, CheckboxVisible = checkboxVisible }; return(tri); }
public static TriStateTreeNode KellNode2TriStateTreeNode(KellNode kellNode) { TriStateTreeNode tri = new TriStateTreeNode() { Name = kellNode.ID, Text = kellNode.Name, Tag = kellNode.Tag }; return(tri); }
void TR_Groups_E_OnParentNodeClicked(object sender, TreeNodeClickEventArg e) { TriStateTreeNode selectedNode = TR_Groups.SelectedNode as TriStateTreeNode; if (selectedNode.Parent == null) { //RootNodeContextClicked(selectedNode, text, index); } else { /* * if (selectedNode.Parent.Equals(_peersRoot)) //peer * { * int rowIndex = _peersRoot.Nodes.IndexOf(selectedNode); * _activatedPeer = _peers[rowIndex]; * if (E_PeerSelected != null) E_PeerSelected(selectedNode, new PeerSelectedEventArgs(selectedNode.Text, _peers[rowIndex])); * * * } * else */ if (selectedNode.Parent.Equals(_groupsRoot)) //group { //int peerIndex = _peers.IndexOf(_activatedPeer); TriStateTreeNode peerNode = _activatedPeerNode;// _peersRoot.Nodes[peerIndex] as TriStateTreeNode; string groupName = selectedNode.Text; getActivatedPeer().SetMsgList(groupName); peerNode.Text = peerNode.Name + "[" + groupName + "]"; if (E_GroupSelected != null) { E_GroupSelected(selectedNode, new GroupSelectedEventArgs(groupName, _groupsDir + "\\" + groupName)); } } /* * else if (selectedNode.Parent.Parent != null && selectedNode.Parent.Parent.Equals(_groupsRoot))//packet selected * { * int peerIndex = _peers.IndexOf(_activatedPeer); * TriStateTreeNode peerNode = _peersRoot.Nodes[peerIndex] as TriStateTreeNode; * * string groupName = selectedNode.Parent.Text; * String groupPath = _groupsDir + "\\" + groupName; * _activatedPeer.SetMsgList(groupName, _groupMsgList[groupName]); * peerNode.Text = peerNode.Name + "[" + groupName + "]"; * * if (E_GroupSelected != null) E_GroupSelected(selectedNode, new GroupSelectedEventArgs(selectedNode.Parent.Text, groupPath)); * String packetPath = groupPath + "\\" + selectedNode.Text; * if (E_PacketChanged != null) E_PacketChanged(selectedNode, new PacketChangedEventArgs(selectedNode.Text, packetPath)); * } */ } }
public static void LoadDirectory(DirectoryNode dir, TriStateTreeNode treenode, bool cycle, bool checkboxVisible = true) { if (cycle) { List <KellNode> sub = LoadDirectoryCycle(dir); LoadTreeNodes(dir, treenode, sub, cycle); } else { List <KellNode> nodes = dir.GetSub(); LoadTreeNodes(dir, treenode, nodes, cycle); } }
public static TriStateTreeNode GetNodeByName(string name, TriStateTreeView treeview, bool ignoreCase) { TriStateTreeNode findNode = null; foreach (TriStateTreeNode node in treeview.Nodes) { findNode = GetNodeByName(name, node, ignoreCase); if (findNode != null) { break; } } return(findNode); }
/// <summary> /// 获取子集 /// </summary> /// <returns></returns> private static List <TriStateTreeNode> GetCheckedNodes(TriStateTreeNode treeNode) { List <TriStateTreeNode> childNodeList = new List <TriStateTreeNode>(); foreach (TriStateTreeNode childNode in treeNode.Nodes) { childNodeList.AddRange(GetCheckedNodes(childNode)); } if (treeNode.Nodes.Count == 0 && treeNode.Checked == true) { childNodeList.Add(treeNode); } return(childNodeList); }
public static void LoadTreeNodes(DirectoryNode dir, TriStateTreeNode treenode, List <KellNode> nodes, bool cycle, bool checkboxVisible = true) { foreach (DirectoryNode node in nodes) { if (cycle) { treenode.Nodes.Add(new TriStateTreeNode(node.Name, Common.GetSubTriStateNodes(node, checkboxVisible, cycle).ToArray()) { Name = node.ID, Tag = node.Tag, ImageIndex = node.IsLeaf ? dir.FileImageIndex : dir.DirImageIndex, CheckboxVisible = checkboxVisible }); } else { treenode.Nodes.Add(new TriStateTreeNode(node.Name) { Name = node.ID, Tag = node.Tag, ImageIndex = node.IsLeaf ? dir.FileImageIndex : dir.DirImageIndex, CheckboxVisible = checkboxVisible }); } } }
public void AdicionarControles(TriStateTreeNode nodeModulo, int idPai, List <UsuarioPermissoes> lstPermissoes) { List <UsuarioPermissoes> lstPermissoesControles = new List <UsuarioPermissoes>(); lstPermissoesControles = lstPermissoes.Where(perm => perm.idControlePai == idPai).ToList(); if (lstPermissoesControles.Count > 0) { foreach (UsuarioPermissoes itemPermissao in lstPermissoesControles) { TriStateTreeNode nodeControle = new TriStateTreeNode(" " + itemPermissao.descricaoControle); nodeControle.Name = itemPermissao.idControle.ToString(); nodeControle.IsContainer = !itemPermissao.objetoTela; nodeControle.Collapse(); this.AdicionarControles(nodeControle, itemPermissao.idControle, lstPermissoes); nodeModulo.Nodes.Add(nodeControle); } } }
private void ConfigureTreeView(string path, string customizeSlnFileName) { this.updateTriSatateTreeView.Nodes.Clear(); try { //Tfs帮助类 tfsHelper = new TFSHelper(Directory.GetParent(path).FullName, customizeSlnFileName); } catch (Exception e) { MessageBox.Show(e.Message); return; } List <FileInfo> fileInfos = tfsHelper.GetPendingChange(); if (fileInfos != null && fileInfos.Count > 0) { IEnumerable <IGrouping <string, FileInfo> > dictionarys = fileInfos.GroupBy(n => n.DirectoryName); foreach (var dictionary in dictionarys) { TriStateTreeNode treeNode1 = new TriStateTreeNode(); treeNode1.Text = dictionary.Key.Replace(path + "\\", ""); treeNode1.Text = dictionary.Key.Replace(path, ""); treeNode1.CheckboxVisible = true; treeNode1.Checked = true; treeNode1.IsContainer = true;//文件夹 foreach (var metadataFile in dictionary) { TriStateTreeNode treeNode2 = new TriStateTreeNode(metadataFile.Name, 2, 2); treeNode2.Checked = true; treeNode2.Tag = metadataFile; treeNode1.Nodes.Add(treeNode2); } this.updateTriSatateTreeView.Nodes.Add(treeNode1); } } }
void TR_Groups_E_ContextMenuEndClicked(object sender, string text, int index, TriStateTreeNode selectedNode, object MenuItem) { if (selectedNode.Parent == null) { RootNodeContextClicked(selectedNode, text, index); } else { if (selectedNode.Parent.Equals(_peersRoot)) { int rowIndex = _peersRoot.Nodes.IndexOf(selectedNode); //if(E_PeerSelected!=null) E_PeerSelected(selectedNode, new PeerSelectedEventArgs(selectedNode.Text, _peers[rowIndex])); } else if (selectedNode.Parent.Equals(_groupsRoot)) { int rowIndex = _groupsRoot.Nodes.IndexOf(selectedNode); //if (E_GroupSelected != null) E_GroupSelected(selectedNode, new GroupSelectedEventArgs(selectedNode.Text, _groupsDir)); } else if (selectedNode.Parent.Parent != null && selectedNode.Parent.Parent.Equals(_groupsRoot))//packet selected { } } }
private void CarregarAcessos() { this.Cursor = Cursors.WaitCursor; try { lstPermissoes = bizUsuario.PesquisarPermissoesUsuario(new UsuarioPermissoes() { idUsuario = usuarioSelecionado.idUsuario }); if (lstPermissoes.Count == 0) { return; } if (usuarioSelecionado.idUsuario == 0) { lstPermissoes = lstPermissoes.Where(x => x.idUsuario == lstPermissoes[0].idUsuario).ToList(); } foreach (UsuarioPermissoes itemPermissao in lstPermissoes) { if (itemPermissao.idControlePai == 0) { TriStateTreeNode nodeModulo = new TriStateTreeNode(" " + itemPermissao.descricaoControle); nodeModulo.IsContainer = true; nodeModulo.Name = itemPermissao.idControle.ToString(); this.AdicionarControles(nodeModulo, itemPermissao.idControle, lstPermissoes); this.tvAcesso.SuspendLayout(); this.tvAcesso.Nodes.Add(nodeModulo); this.tvAcesso.ResumeLayout(); } } foreach (UsuarioPermissoes permissao in lstPermissoes) { TriStateTreeNode nodeSelecionado = (TriStateTreeNode)tvAcesso.Nodes.Find(permissao.idControle.ToString(), true)[0]; nodeSelecionado.Checked = permissao.Habilitado; } } catch (SqlException) { MessageBox.Show(helper.RetornarMensagemPadraoErroAcessoBD(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show(helper.RetornarMensagemPadraoErroGenerico(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); LogErro logErro = new LogErro() { mensagemErro = ex.ToString() }; bizLogErro.IncluirLogErro(logErro); } this.Cursor = Cursors.Default; }
void RootNodeContextClicked(TriStateTreeNode node, String text, int index) { if (node.Equals(_peersRoot)) { switch (text) { case "새 Peer 생성": InputForm input = new InputForm(); DialogResult result = input.ShowDialog("New Packet Name"); if (result == DialogResult.Abort || result == DialogResult.Cancel || input.InputText.Trim().Length == 0) { return; } String newPacketPath = _peersDir + "\\" + input.InputText + ".xml"; if (File.Exists(newPacketPath)) { MessageBox.Show("중복되는 이름이 있습니다."); return; } Con_Peer peer = new Con_Peer(newPacketPath); TriStateTreeNode peerNode = TR_Groups.AddChild(_peersRoot, input.InputText); peerNode.RelativeObject["peer"] = peer; if (_groupsRoot.Nodes.Count > 0) { String groupName = _groupsRoot.Nodes[0].Text; peer.SetMsgList(groupName); } break; } } else if (node.Equals(_groupsRoot)) { switch (text) { case "새 그룹 생성": FormAdders.InputForm input = new InputForm(); DialogResult result = input.ShowDialog("Report 사용자이름 입력"); if (result == System.Windows.Forms.DialogResult.Cancel || result == System.Windows.Forms.DialogResult.Cancel) { return; } if (input.InputText.Trim().Length == 0) { return; } string newDir = _groupsDir + "\\" + input.InputText; if (Directory.Exists(newDir)) { MessageBox.Show("이름이 중복됩니다."); return; } TriStateTreeNode child = TR_Groups.AddChild(_groupsRoot, input.InputText); TR_Groups.AddContextMenuItemParentNode(child, "새 패킷 생성"); Directory.CreateDirectory(newDir); _groupPaths = Directory.GetDirectories(_groupsDir); break; } } }
void TR_Groups_E_ContextMenuParentClicked(object sender, string text, int index, TriStateTreeNode selectedNode, object MenuItem) { if (selectedNode.Parent == null) { RootNodeContextClicked(selectedNode, text, index); } else if (selectedNode.Parent.Equals(_groupsRoot)) { int rowIndex = _groupsRoot.Nodes.IndexOf(selectedNode); switch (text) { case "새 패킷 생성": MakeNewPacket(selectedNode.Text); break; } //if (E_GroupSelected != null) E_GroupSelected(selectedNode, new GroupSelectedEventArgs(selectedNode.Text, _groupsDir)); } }
public void loadGroups() { TR_Groups.ClearAllItems(); _peersRoot = TR_Groups.AddRoot("Peers"); //TR_Groups.AddContextMenuItemEndNode(_peersRoot, "새 Peer 생성"); TR_Groups.AddContextMenuItemParentNode(_peersRoot, "새 Peer 생성"); String[] peerPaths = Directory.GetFiles(_peersDir); for (int i = 0; i < peerPaths.Length; i++) { Con_Peer peer = new Con_Peer(peerPaths[i]); String name = peerPaths[i].Substring(peerPaths[i].LastIndexOf("\\") + 1); name = name.Substring(0, name.LastIndexOf("."));// .xml을 떼어줌.. TriStateTreeNode node = TR_Groups.AddChild(_peersRoot, name); node.RelativeObject["peer"] = peer; peer.SetName(name); _activatedPeerNode = node; //_peersGroup[peer] = name;//마지막 읽은 group을 _activatedPeer에 배정한다. //peer.SetMsgList(name, new ConMsgList(name)); } String[] grpPaths = Directory.GetDirectories(_groupsDir); _groupsRoot = TR_Groups.AddRoot("Groups"); //TR_Groups.AddContextMenuItemEndNode(_groupsRoot, "새 그룹 생성"); TR_Groups.AddContextMenuItemParentNode(_groupsRoot, "새 그룹 생성"); for (int i = 0; i < grpPaths.Length; i++) { String name = grpPaths[i].Substring(grpPaths[i].LastIndexOf("\\") + 1); TriStateTreeNode grp = TR_Groups.AddChild(_groupsRoot, name); TR_Groups.AddContextMenuItemParentNode(grp, "새 패킷 생성"); grp.RelativeObject["dir"] = grpPaths[i]; String[] packets = Directory.GetDirectories(grpPaths[i]); for (int p = 0; p < packets.Length; p++) { String childName = packets[p].Substring(packets[p].LastIndexOf("\\") + 1); TriStateTreeNode childNode = TR_Groups.AddChild(grp, childName); childNode.RelativeObject["dir"] = packets[p]; TR_Groups.AddContextMenuItemEndNode(childNode, "편집"); TR_Groups.AddContextMenuItemEndNode(childNode, "삭제"); TR_Groups.AddContextMenuItemEndNode(childNode, "복사본만들기"); } } for (int i = 0; i < _peersRoot.Nodes.Count; i++) { if (_groupsRoot.Nodes.Count > 0) { TriStateTreeNode node = _peersRoot.Nodes[i]; Con_Peer peer = node.RelativeObject["peer"] as Con_Peer; XmlDocument xDoc; XmlNode root = XmlHandlers.XmlGetter.RootNode(out xDoc, peerPaths[i]); XmlNode Envs = XmlHandlers.XmlGetter.Child(root, "Envs"); String groupName = _groupsRoot.Nodes[0].Text; bool isFound = false; foreach (XmlNode anEnv in Envs.ChildNodes) { string name = XmlHandlers.XmlGetter.Attribute(anEnv, "Name"); if (name.ToLower().Equals("groupname")) { for (int g = 0; g < _groupsRoot.Nodes.Count; g++) { if (_groupsRoot.Nodes[g].Text.Equals(anEnv.InnerText)) { groupName = anEnv.InnerText; isFound = true; break; } } if (isFound) { break; } } } _peersGroup[peer] = groupName; node.Text = peer.Name + "[" + groupName + "]"; } } TR_Groups.Refresh(); _groupsRoot.Expand(); _peersRoot.Expand(); TR_Groups.Refresh(); }
void TR_Groups_E_OnEndNodeClicked(object sender, TreeNodeClickEventArg e) { TriStateTreeNode selectedNode = TR_Groups.SelectedNode as TriStateTreeNode; if (selectedNode.Parent == null) { //RootNodeContextClicked(selectedNode, text, index); } else { if (selectedNode.Parent.Equals(_peersRoot)) //peer { //int rowIndex = _peersRoot.Nodes.IndexOf(selectedNode); _activatedPeerNode = selectedNode; if (E_PeerSelected != null) { E_PeerSelected(selectedNode, new PeerSelectedEventArgs(selectedNode.Text, getActivatedPeer())); } } else if (selectedNode.Parent.Equals(_groupsRoot)) //group { TriStateTreeNode peerNode = _activatedPeerNode; string groupName = selectedNode.Text; try { getActivatedPeer().SetMsgList(groupName); } catch (Exception ex) { MessageBox.Show(ex.Message); return; } peerNode.Text = peerNode.Name + "[" + groupName + "]"; if (E_GroupSelected != null) { E_GroupSelected(selectedNode, new GroupSelectedEventArgs(groupName, _groupsDir + "\\" + groupName)); } } else if (selectedNode.Parent.Parent != null && selectedNode.Parent.Parent.Equals(_groupsRoot)) //packet selected { TriStateTreeNode peerNode = _activatedPeerNode; // _peersRoot.Nodes[peerIndex] as TriStateTreeNode; string groupName = selectedNode.Parent.Text; String groupPath = _groupsDir + "\\" + groupName; getActivatedPeer().SetMsgList(groupName); peerNode.Text = peerNode.Name + "[" + groupName + "]"; if (E_GroupSelected != null) { E_GroupSelected(selectedNode, new GroupSelectedEventArgs(selectedNode.Parent.Text, groupPath)); } String packetPath = groupPath + "\\" + selectedNode.Text; if (E_PacketChanged != null) { E_PacketChanged(selectedNode, new PacketChangedEventArgs(selectedNode.Text, packetPath)); } } } }
/// <summary> /// 打开更新的文件目录 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void RootFileBtn_Click(object sender, EventArgs e) { this._updateFiles = new List <FileInfo>(); this.updateTriSatateTreeView.Nodes.Clear(); string rootPath = this.pathTBx.Text; //获取修改当前日期 _dt = DateTime.Parse(DateTime.Parse(this.updateDateTimePicker.Text).ToString("yyyy/MM/dd")); if (string.IsNullOrEmpty(this.pathTBx.Text)) { //选择文件夹 FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog(); folderBrowserDialog.SelectedPath = rootProductPath; if (folderBrowserDialog.ShowDialog() == DialogResult.OK) { //选择的文件夹 this.pathTBx.Text = folderBrowserDialog.SelectedPath; } } if (!File.Exists(rootPath + "\\Web.config")) { MessageBox.Show("请选择产品根目录!"); } else { //产品TFS TFSHelper tfs = new TFSHelper(Directory.GetParent(rootPath).FullName, productSlnFileName); _updateFiles.AddRange(GetRootFileName(rootPath)); _updateFiles.AddRange(GetMetadataFiles(rootPath)); var pendingFiles = tfs.GetPendingChange(); //判断产品TFS是否全部签入 if (pendingFiles.Count > 0) { _updateFiles = null; foreach (var item in pendingFiles) { Logging.WriteLog("没有签入的产品文件:", item.FullName); } MessageBox.Show("产品有未签入的数据,不可以迁移二开!"); return; } if (isTip) { _updateFiles = null; MessageBox.Show("产品有未签入的元数据,请在建模平台签入后迁移二开!"); return; } _updateFiles.AddRange(GetBinFiles(rootPath)); _updateFiles.AddRange(GetAppDataFiles(rootPath)); //获取需要更新的文件夹信息 foreach (var updateDirectory in _updateDirectorys) { openFileName = Path.Combine(rootPath, updateDirectory); _updateFiles.AddRange(GetUpdateFiles(openFileName)); } IEnumerable <IGrouping <string, FileInfo> > dictionarys = _updateFiles.GroupBy(n => n.DirectoryName); if (_updateFiles != null && _updateFiles.Count > 0) { foreach (var dictionary in dictionarys) { TriStateTreeNode treeNode1 = new TriStateTreeNode(); treeNode1.Text = dictionary.Key.Replace(this.pathTBx.Text + "\\", ""); treeNode1.Text = treeNode1.Text.Replace(this.pathTBx.Text.Replace("00_根目录", ""), ""); treeNode1.CheckboxVisible = true; treeNode1.Checked = true; treeNode1.IsContainer = true;//文件夹 var list = dictionary.OrderBy(n => n.Name); foreach (var metadataFile in list) { TriStateTreeNode treeNode2 = new TriStateTreeNode(metadataFile.Name, 2, 2); treeNode2.Checked = true; treeNode2.Tag = metadataFile; treeNode1.Nodes.Add(treeNode2); } this.updateTriSatateTreeView.Nodes.Add(treeNode1); } if (this.isTrueCopyRadioBtn.Checked) { this._updateFiles = TriStateTreeNodeHelper.GetTreeNodeChecked(this.updateTriSatateTreeView.Nodes); if (this._updateFiles == null) { MessageBox.Show("请选择产品修改的信息!"); return; } if (this._updateFiles.Count == 0) { MessageBox.Show("没有要复制编辑签出的文件!"); return; } progressValue = 0; customizePath = this.customizePathCBX.Text; this.worker.RunWorkerAsync(); // 运行 backgroundWorker 组件 ProgressBar form = new ProgressBar(this.worker); // 显示进度条窗体 form.ShowDialog(this); } } } }