using Newtonsoft.Json; using SWS.CAD.Models; using SWS.CAD.ViewModels; using System; using System.Collections.ObjectModel; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Imaging; using Telerik.Windows; using Telerik.Windows.Controls; namespace SWS.CAD.Views { /// /// Drawing.xaml 的交互逻辑 /// public partial class LeftPanel : UserControl { public LeftPanel(LeftPanelViewModel viewModel) { InitializeComponent(); DataContext = viewModel; //this.radTreeView.AddHandler(RadMenuItem.ClickEvent, new RoutedEventHandler(OnContextMenuClick)); } RadTreeViewItem clickedElement; private void UserControl_Loaded(object sender, RoutedEventArgs e) { var x = DataContext as LeftPanelViewModel; x.onWindow_loaded(null); } /// /// 搜索栏 /// /// /// private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { string searchText = (sender as TextBox).Text; var x = DataContext as LeftPanelViewModel; x.SearchTree(searchText); } /// /// 右键事件触发 /// /// /// private void RadTreeView_PreviewMouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { // 获取点击的树节点 var clickedItem = e.OriginalSource as FrameworkElement; if (clickedItem != null && clickedItem.DataContext is TreeModel treeNode) { // 设置当前选中的节点 var treeView = sender as RadTreeView; if (treeView != null) { treeView.SelectedItem = treeNode; // 这里设置选中的节点 } // 获取右键菜单 var contextMenu = TreeItemContextMenu; contextMenu.Items.Clear(); // 清空现有菜单项 var x = DataContext as LeftPanelViewModel; // 根据节点类型动态生成菜单项 if (treeNode.NodeType == "0") { contextMenu.Items.Add(new MenuItem { Header = "新建图纸", Command = x.Command_CreateDwg, CommandParameter = treeNode }); contextMenu.Items.Add(new MenuItem { Header = "编辑目录属性", Command = x.Command_EditDrawingCatalogue, CommandParameter = treeNode }); } else if (treeNode.NodeType == "1") { #region 检入检出释放是否可用状态判断 bool IsEnabledCheckIn = false; //检入 bool IsEnabledCheckOut = false;//检出 bool IsEnabledFree = false;//释放 bool IsEnabledRevise = false;//修订 bool IsEnabledPublish = false;//发布 bool IsEnabledEditProperty = false;//编辑属性 string userName = string.Empty;//图纸被占用人的名称 ec_drawing_file dwgObj = JsonConvert.DeserializeObject(treeNode.NodeExtData.ToString()); if (dwgObj.IsPublish == 1) { //状态为发布时:不能检入、检出、释放、修订、发布、编辑属性 IsEnabledCheckIn = IsEnabledCheckOut = IsEnabledFree = IsEnabledPublish = IsEnabledEditProperty = false; IsEnabledRevise = true; } else { if (treeNode.CheckInOutStatus == 0) { //状态为检入时:可以检出、发布 ; 不能检入、释放、修订、编辑属性 IsEnabledCheckOut = IsEnabledPublish = true; IsEnabledCheckIn = IsEnabledFree = IsEnabledRevise = IsEnabledEditProperty = false; } else if (treeNode.CheckInOutStatus == 1) { //状态为自己检出时:可以检入、释放、编辑属性 ;不能检出 、修订、发布 IsEnabledCheckIn = IsEnabledFree = IsEnabledEditProperty = true; IsEnabledCheckOut = IsEnabledRevise = IsEnabledPublish = false; } else if (treeNode.CheckInOutStatus == 2) { //状态为别人检出时:不能检入、检出、释放、修订、发布、编辑属性 IsEnabledCheckIn = IsEnabledCheckOut = IsEnabledFree = IsEnabledRevise = IsEnabledPublish = IsEnabledEditProperty = false; userName = GlobalObject.GetUserNameById(dwgObj.CheckOutUserID); userName = string.IsNullOrEmpty(userName) ? "" : " " + userName + "占用"; } } #endregion contextMenu.Items.Add(new MenuItem { Header = "打开图纸", Command = x.Command_OpenDwg, CommandParameter = treeNode }); contextMenu.Items.Add(new MenuItem { Header = "删除图纸", Command = x.Command_DeleteDwg, CommandParameter = treeNode }); contextMenu.Items.Add(new MenuItem { Header = "编辑属性", Command = x.Command_EditPropertyDwg, CommandParameter = treeNode, IsEnabled = IsEnabledEditProperty }); contextMenu.Items.Add(new MenuItem { Header = "浏览所在文件夹", Command = x.Command_OpenDwgFileFolder, CommandParameter = treeNode }); contextMenu.Items.Add(new Separator());//右键菜单分隔线 contextMenu.Items.Add(new MenuItem { Header = "上移", Command = x.Command_UpDwg, CommandParameter = treeNode }); contextMenu.Items.Add(new MenuItem { Header = "下移", Command = x.Command_DownDwg, CommandParameter = treeNode }); contextMenu.Items.Add(new Separator());//右键菜单分隔线 contextMenu.Items.Add(new MenuItem { Header = "生成文件材料表", Command = x.Command_GenerateFileMaterial, CommandParameter = treeNode }); contextMenu.Items.Add(new Separator());//右键菜单分隔线 contextMenu.Items.Add(new MenuItem { Header = "检出" + userName, Command = x.Command_CheckOutDwg, CommandParameter = treeNode, IsEnabled = IsEnabledCheckOut }); contextMenu.Items.Add(new MenuItem { Header = "检入", Command = x.Command_CheckInDwg, CommandParameter = treeNode, IsEnabled = IsEnabledCheckIn }); contextMenu.Items.Add(new MenuItem { Header = "释放", Command = x.Command_FreeDwg, CommandParameter = treeNode, IsEnabled = IsEnabledFree }); contextMenu.Items.Add(new Separator());//右键菜单分隔线 contextMenu.Items.Add(new MenuItem { Header = "修订", Command = x.Command_ReviseDwg, CommandParameter = treeNode, IsEnabled = IsEnabledRevise }); contextMenu.Items.Add(new MenuItem { Header = "发布", Command = x.Command_PublishDwg, CommandParameter = treeNode, IsEnabled = IsEnabledPublish }); contextMenu.Items.Add(new Separator());//右键菜单分隔线 contextMenu.Items.Add(new MenuItem { Header = "检入记录", Command = x.Command_CheckInRecordDwg, CommandParameter = treeNode }); contextMenu.Items.Add(new MenuItem { Header = "检入审核", Command = x.Command_CheckInAuditDwg, CommandParameter = treeNode }); contextMenu.Items.Add(new MenuItem { Header = "发布记录", Command = x.Command_PublishRecordDwg, CommandParameter = treeNode }); contextMenu.Items.Add(new MenuItem { Header = "操作记录", Command = x.Command_OperateRecordDwg, CommandParameter = treeNode }); contextMenu.Items.Add(new Separator());//右键菜单分隔线 } else { } // 打开右键菜单 contextMenu.IsOpen = true; } } /// /// Tab切换 /// /// /// private void RadTabControl_SelectionChanged(object sender, RadSelectionChangedEventArgs e) { var tabObj = (sender as RadTabControl); var x = DataContext as LeftPanelViewModel; x.TabChanged(tabObj.SelectedIndex); } private void treeDwgHistory_PreviewMouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { // 获取点击的树节点 var clickedItem = e.OriginalSource as FrameworkElement; if (clickedItem != null && clickedItem.DataContext is TreeModel treeNode) { // 设置当前选中的节点 var treeView = sender as RadTreeView; if (treeView != null) { treeView.SelectedItem = treeNode; // 这里设置选中的节点 } // 获取右键菜单 var contextMenu = TreeItemContextMenu; contextMenu.Items.Clear(); // 清空现有菜单项 var x = DataContext as LeftPanelViewModel; // 根据节点类型动态生成菜单项 if (treeNode.NodeType == "99") { contextMenu.Items.Add(new MenuItem { Header = "打开图纸", Command = x.Command_ReadOnlyOpenDwg, CommandParameter = treeNode }); } else { contextMenu.Items.Add(new MenuItem { Header = "刷新", Command = x.Command_RefreshHistoryDwg, CommandParameter = treeNode }); } // 打开右键菜单 contextMenu.IsOpen = true; } } } }