using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Prism.Commands;
using Prism.Events;
using Prism.Ioc;
using SWS.CAD.Event;
using SWS.CAD.Views;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Forms;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Markup;
using System.Windows.Media;
using Teigha.GraphicsSystem;
using Telerik.Windows.Controls;
using Unity;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
using MessageBox = System.Windows.MessageBox;
using Application = Bricscad.ApplicationServices.Application;
using SWS.CAD.CADFunc;
using Teigha.DatabaseServices;
using Bricscad.EditorInput;
using SWS.CAD.Views.CustomControl;
using DryIoc;
using Path = System.IO.Path;
using ImageSource = System.Windows.Media.ImageSource;
using Prism.Services.Dialogs;
using SWS.Commons;
using SWS.Model;
using SWS.Service;
using SWS.WPF.Views;
using SWS.CAD.Base;
namespace SWS.CAD.ViewModels
{
public class LeftPanelViewModel : ViewModelBase
{
#region 图纸列表的右键功能
public ICommand ExcuteCommand { get; set; }
///
/// 创建图纸
///
public ICommand Command_CreateDwg { get; set; }
///
/// 打开图纸
///
public ICommand Command_OpenDwg { get; set; }
///
/// 删除图纸
///
public ICommand Command_DeleteDwg { get; set; }
///
/// 图纸属性
///
public ICommand Command_EditPropertyDwg { get; set; }
///
/// 检入
///
public ICommand Command_CheckInDwg { get; set; }
///
/// 检出
///
public ICommand Command_CheckOutDwg { get; set; }
///
/// 释放
///
public ICommand Command_FreeDwg { get; set; }
///
/// 浏览所在文件夹
///
public ICommand Command_OpenDwgFileFolder { get; set; }
///
/// 上移
///
public ICommand Command_UpDwg { get; set; }
///
/// 下移
///
public ICommand Command_DownDwg { get; set; }
///
/// 生成文件材料表
///
public ICommand Command_GenerateFileMaterial { get; set; }
///
/// 修订
///
public ICommand Command_ReviseDwg { get; set; }
///
/// 发布
///
public ICommand Command_PublishDwg { get; set; }
///
/// 检入记录
///
public ICommand Command_CheckInRecordDwg { get; set; }
///
/// 检入审核
///
public ICommand Command_CheckInAuditDwg { get; set; }
///
/// 发布记录
///
public ICommand Command_PublishRecordDwg { get; set; }
///
/// 操作记录
///
public ICommand Command_OperateRecordDwg { get; set; }
///
/// 改变选中的设计浏览节点
///
public ICommand Common_SelectedDesign { get; set; }
///
/// 双击设计浏览节点
///
public ICommand Common_DoubleClickDesign { get; set; }
///
/// 只读打开图纸
///
public ICommand Command_ReadOnlyOpenDwg { get; set; }
///
/// 刷新历史版次
///
public ICommand Command_RefreshHistoryDwg { get; set; }
///
/// 图元双击事件
///
public ICommand Command_TagDoubleClick { get; set; }
///
/// 图元关联元件
///
public ICommand Command_Guanlian { get; set; }
private void onExecuteCommand(Model.TreeModel obj)
{
if (obj != null)
{
if (obj.NodeType == "0")
{
//目前后台逻辑,此时0为文件夹
}
else if (obj.NodeType == "1")
{
}
}
}
#endregion
#region 目录列表的右键功能
///
/// 目录属性
///
public ICommand Command_EditDrawingCatalogue { get; set; }
#endregion
#region binding
private bool _LoginOK;
public bool LoginOK
{
get { return _LoginOK; }
set { _LoginOK = value; RaisePropertyChanged(nameof(LoginOK)); }
}
public ICommand window_loaded { get; }
private string _curProjName;
public string curProjName
{
get { return _curProjName; }
set { _curProjName = value; RaisePropertyChanged(nameof(curProjName)); }
}
private ObservableCollection drawings;
///
/// 图纸目录树
///
public ObservableCollection Drawings
{
get { return this.drawings; }
set
{
if (value != this.drawings)
{
this.drawings = value;
RaisePropertyChanged(nameof(drawings));
}
}
}
private ObservableCollection _historyDrawings;
///
/// 历史版次图纸树
///
public ObservableCollection historyDrawings
{
get { return this._historyDrawings; }
set
{
if (value != this._historyDrawings)
{
this._historyDrawings = value;
RaisePropertyChanged(nameof(historyDrawings));
}
}
}
private ObservableCollection _objectTypeTree;
///
/// 放置元件列表
///
public ObservableCollection objectTypeTree
{
get { return _objectTypeTree; }
set { _objectTypeTree = value; RaisePropertyChanged(nameof(objectTypeTree)); }
}
private Model.TreeModel _selectType;
///
/// 选中的元件树节点
///
public Model.TreeModel selectType
{
get { return _selectType; }
set
{
if (_selectType != value)
{
eventAggregator.GetEvent().Publish(value);
GetLibrary(value.ID);
}
if (value == null)
{ isEnabledGuanlian = false; }
else if (value.ChildNodes.Any())
{ isEnabledGuanlian = false; }
else { isEnabledGuanlian = true; }
_selectType = value;
RaisePropertyChanged(nameof(selectType));
}
}
private ObservableCollection _designTree;
///
/// 设计浏览列表
///
public ObservableCollection designTree
{
get { return _designTree; }
set { _designTree = value; RaisePropertyChanged(nameof(designTree)); }
}
private Model.TreeModel _selectDesign;
///
/// 选中的设计浏览树节点
///
public Model.TreeModel selectDesign
{
get { return _selectDesign; }
set
{
_selectDesign = value;
RaisePropertyChanged(nameof(selectDesign));
}
}
private Model.TreeModel _selectedNode;
public Model.TreeModel selectedNode
{
get { return _selectedNode; }
set
{
if (value != null && value.Text.ToLower().EndsWith(".dwg"))
{
var dwgObj = JsonConvert.DeserializeObject(value.NodeExtData.ToString());
eventAggregator.GetEvent().Publish(dwgObj);
}
_selectedNode = value;
RaisePropertyChanged(nameof(selectedNode));
}
}
private ObservableCollection _listLibrary;
///
/// 图元列表
///
public ObservableCollection listLibrary
{
get { return _listLibrary; }
set { _listLibrary = value; RaisePropertyChanged(nameof(listLibrary)); }
}
private ec_library_file _selectedTag = new ec_library_file();
public ec_library_file selectedTag
{
get { return _selectedTag; }
set
{
_selectedTag = value;
RaisePropertyChanged(nameof(selectedTag));
}
}
private bool _isEnabledGuanlian = false;
///
/// 图元关联元件 功能是否启用
///
public bool isEnabledGuanlian
{
get { return _isEnabledGuanlian; }
set
{
_isEnabledGuanlian = value;
if (value)
{ guanlianImage = guanlian1Image; }
RaisePropertyChanged(nameof(isEnabledGuanlian));
}
}
private ImageSource _guanlianImage;
///
/// 元件关联图元
///
public ImageSource guanlianImage
{
get
{
return _guanlianImage;
}
set { _guanlianImage = value; RaisePropertyChanged(nameof(guanlianImage)); }
}
private ImageSource _guanlian1Image;
///
/// 元件关联图元
///
public ImageSource guanlian1Image
{
get
{
return _guanlian1Image;
}
set { _guanlian1Image = value; RaisePropertyChanged(nameof(guanlian1Image)); }
}
private ImageSource _guanlian2Image;
///
/// 元件关联图元 Enable为false时灰色
///
public ImageSource guanlian2Image
{
get
{
return _guanlian2Image;
}
set { _guanlian2Image = value; RaisePropertyChanged(nameof(guanlian2Image)); }
}
#endregion
ObjectTypeService objectTypeService { get; set; }
ObservableCollection originDrawings = new ObservableCollection();
ProjectService _projectService;
DrawingServce _dwgService;
ConfigService _configService;
AnnexesService _annexesService;
NotificationService _notificationService;
EnginedataService _enginedataService;
DataItemService _dataItemService;
IEventAggregator eventAggregator;
private readonly IDialogService _dialogService;
private bool isCheckIn = false;//是否正在进行检入 关联云线
private bool isIOassociationChannel = false;//是否正在进行位号关联通道
private bool isObjectTypeGuanlian = false;//是否正在进行元件关联图元 关联云线
public LeftPanelViewModel(
DrawingServce httpService, ProjectService projectServ,
ConfigService configService, IEventAggregator eventAggregator)
{
LoginOK = false;
_dialogService = GlobalObject._prismContainer.Resolve();
_annexesService = GlobalObject.container.Resolve();
_notificationService = GlobalObject.container.Resolve();
_enginedataService = GlobalObject.container.Resolve();
_dataItemService = GlobalObject.container.Resolve();
_dwgService = httpService;
_configService = configService;
_projectService = projectServ;
this.eventAggregator = eventAggregator;
ExcuteCommand = new DelegateCommand(onExecuteCommand);
Command_CreateDwg = new DelegateCommand(onCreateDwg);
Command_OpenDwg = new DelegateCommand(onOpenDwg);
Command_DeleteDwg = new DelegateCommand(onDeleteDwg);
Command_EditPropertyDwg = new DelegateCommand(onPropertyDwg);
Command_OpenDwgFileFolder = new DelegateCommand(onOpenDwgFileFolder);
Command_CheckInDwg = new DelegateCommand(onCheckInDwg);
Command_CheckOutDwg = new DelegateCommand(onCheckOutDwg);
Command_FreeDwg = new DelegateCommand(onFreeDwg);
Command_UpDwg = new DelegateCommand(onUpDwg);
Command_DownDwg = new DelegateCommand(onDownDwg);
Command_GenerateFileMaterial = new DelegateCommand(onGenerateFileMaterialDwg);
Command_ReviseDwg = new DelegateCommand(onReviseDwg);
Command_PublishDwg = new DelegateCommand(onPublishDwg);
Command_CheckInRecordDwg = new DelegateCommand(onCheckInRecordDwg);
Command_CheckInAuditDwg = new DelegateCommand(onCheckInAuditDwg);
Command_PublishRecordDwg = new DelegateCommand(onPublishRecordDwg);
Command_OperateRecordDwg = new DelegateCommand(onOperateRecordDwg);
Common_SelectedDesign = new DelegateCommand(onDesignSelectedChange);
Common_DoubleClickDesign = new DelegateCommand(onDesignDoubleClick);
Command_ReadOnlyOpenDwg = new DelegateCommand(onReadOnlyOpenDwg);
Command_RefreshHistoryDwg = new DelegateCommand(onRefreshHistoryDwg);
Command_TagDoubleClick = new DelegateCommand