198 lines
10 KiB
C#
198 lines
10 KiB
C#
using Newtonsoft.Json;
|
||
using SWS.CAD.ViewModels;
|
||
using SWS.Commons;
|
||
using SWS.Model;
|
||
using System.Windows;
|
||
using System.Windows.Controls;
|
||
using Telerik.Windows.Controls;
|
||
|
||
namespace SWS.CAD.Views
|
||
{
|
||
/// <summary>
|
||
/// Drawing.xaml 的交互逻辑
|
||
/// </summary>
|
||
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);
|
||
}
|
||
/// <summary>
|
||
/// 搜索栏
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
|
||
{
|
||
string searchText = (sender as TextBox).Text;
|
||
string tag = (sender as TextBox).Tag.ToString();
|
||
var x = DataContext as LeftPanelViewModel;
|
||
|
||
|
||
// 执行搜索操作
|
||
x.SearchTree(tag, searchText);
|
||
|
||
}
|
||
/// <summary>
|
||
/// 右键事件触发
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void RadTreeView_PreviewMouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
||
{
|
||
// 获取点击的树节点
|
||
var clickedItem = e.OriginalSource as FrameworkElement;
|
||
if (clickedItem != null && clickedItem.DataContext is Model.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<ec_drawing_file>(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;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// Tab切换
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
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 Model.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;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|