|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
using System.Windows;
|
|
|
using System.Windows.Controls;
|
|
|
using System.Windows.Data;
|
|
|
using System.Windows.Documents;
|
|
|
using System.Windows.Input;
|
|
|
using System.Windows.Media;
|
|
|
using System.Windows.Media.Imaging;
|
|
|
using System.Windows.Navigation;
|
|
|
using System.Windows.Shapes;
|
|
|
using KPlan.Util;
|
|
|
using System.Data;
|
|
|
using Teamcenter.Soa.Client.Model;
|
|
|
using System.ComponentModel;
|
|
|
using Teamcenter.Soa.Client.Model.Strong;
|
|
|
using System.IO;
|
|
|
using Eplan.EplApi.DataModel;
|
|
|
using Eplan.EplApi.Base;
|
|
|
using Eplan.EplApi.ApplicationFramework;
|
|
|
using Action = System.Action;
|
|
|
using Eplan.EplApi.HEServices;
|
|
|
using System.Collections.Specialized;
|
|
|
using Label = System.Windows.Controls.Label;
|
|
|
|
|
|
namespace KPlan.Forms {
|
|
|
/// <summary>
|
|
|
/// OpenFromTC.xaml 的交互逻辑
|
|
|
/// </summary>
|
|
|
public partial class OpenFromTC : Window {
|
|
|
|
|
|
private string queryName;
|
|
|
private Dictionary<string, TextBox> queryFieldMap = new Dictionary<string,TextBox>();
|
|
|
private DataTable queryResultData = new DataTable();
|
|
|
private List<string> queryResultConfig = new List<string>();
|
|
|
private List<int> queryResultWidth = new List<int>();
|
|
|
private KBackgroundWorker bgWorker_Query;
|
|
|
private KBackgroundWorker bgWorker_Homer;
|
|
|
private KBackgroundWorker bgWorker_Open;
|
|
|
private ModelObject selectedObject;
|
|
|
|
|
|
public OpenFromTC() {
|
|
|
InitializeComponent();
|
|
|
KUtil.SetOwnerWindow(this);
|
|
|
LoadFromConfiguration();
|
|
|
bgWorker_Query = new KBackgroundWorker(this);
|
|
|
bgWorker_Query.backgroundWorker.DoWork += Async_Query;
|
|
|
bgWorker_Homer = new KBackgroundWorker(this);
|
|
|
bgWorker_Homer.backgroundWorker.DoWork += Async_LoadHome;
|
|
|
bgWorker_Open = new KBackgroundWorker(this);
|
|
|
bgWorker_Open.backgroundWorker.DoWork += Async_Open;
|
|
|
}
|
|
|
private void Async_Open(object sender, DoWorkEventArgs e) {
|
|
|
ModelObject mo = (ModelObject)e.Argument;
|
|
|
if (mo == null) {
|
|
|
return;
|
|
|
}
|
|
|
bgWorker_Open.Progress("正在打开...", 1);
|
|
|
string eplanDSType = KUtil.GetConfigValue(KConfigure.PROJ_SYNC_SECTION, KConfigure.PROJ_SYNC_ZW_DSTYPE);
|
|
|
List<Dataset> target = new List<Dataset>();
|
|
|
if (TCUtil.IsType(mo.SoaType, "Dataset")) {
|
|
|
//if (!TCUtil.IsType(mo.SoaType, TCUtil.TYPE_EPLAN)) {
|
|
|
// KUtil.DispatcherShow(this, "请选择" + TCUtil.TYPE_EPLAN + "数据集进行操作");
|
|
|
// return;
|
|
|
//}
|
|
|
target.Add((Dataset)mo);
|
|
|
}else if (TCUtil.IsType(mo.SoaType, "ItemRevision")) {
|
|
|
ModelObject[] children = TCUtil.GetChildFromPref(mo);
|
|
|
for(int i = 0; i < children.Length; i++) {
|
|
|
if (TCUtil.IsType(children[i].SoaType, eplanDSType)) {
|
|
|
target.Add((Dataset)children[i]);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
KUtil.DispatcherShow(this,"请选择版本或数据集进行操作");
|
|
|
return;
|
|
|
}
|
|
|
if (target.Count == 0) {
|
|
|
KUtil.DispatcherShow(this, "当前对象下不存在EPLAN数据集");
|
|
|
return;
|
|
|
}
|
|
|
if (target.Count > 1) {
|
|
|
KUtil.DispatcherShow(this,"当前对象下存在多个数据集,请选择要打开的数据集");
|
|
|
return;
|
|
|
}
|
|
|
Dataset ds = target[0];
|
|
|
List<ImanFile> imanFiles = TCUtil.GetDatasetFile(ds, null);
|
|
|
TCUtil.GetProperties(false, TCUtil.Refresh(ds), "object_string");
|
|
|
if (imanFiles.Count == 0) {
|
|
|
KUtil.DispatcherShow(this, "数据集<"+ds.Object_string+">下没有找到引用文件");
|
|
|
return;
|
|
|
}
|
|
|
if (imanFiles.Count > 1) {
|
|
|
KUtil.DispatcherShow(this, "数据集<" + ds.Object_string + ">下找到多个引用文件");
|
|
|
return;
|
|
|
}
|
|
|
FileInfo file = TCUtil.GetFileInfo(imanFiles[0]);
|
|
|
if (file == null) {
|
|
|
KUtil.DispatcherShow(this, "从数据集<"+ds.Object_string+">下载引用文件失败");
|
|
|
return;
|
|
|
}
|
|
|
if (file.Attributes.ToString().IndexOf("ReadOnly") != -1) {
|
|
|
file.Attributes = FileAttributes.Normal;
|
|
|
}
|
|
|
if (file.FullName.ToLower().EndsWith("zw1")) {
|
|
|
string projName = file.Name.Replace(".zw1", "").Replace(".ZW1", "");
|
|
|
KUtil.Log("打开项目:"+projName+" - "+file.FullName);
|
|
|
string targetFolder = KUtil.GetConfigValue(KConfigure.EPLAN_DATA_SECTION, KConfigure.EPLAN_WORKSAPCE);
|
|
|
if (KUtil.IsEmpty(targetFolder)) {
|
|
|
KUtil.DispatcherShow(this, "未配置项目解压路径");
|
|
|
return;
|
|
|
}
|
|
|
if (!Directory.Exists(targetFolder)) {
|
|
|
Directory.CreateDirectory(targetFolder);
|
|
|
}
|
|
|
RestoreProject(targetFolder,file.FullName, projName);
|
|
|
}
|
|
|
else {
|
|
|
System.Diagnostics.Process.Start(file.FullName);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
private void openDs(ModelObject mo, Progress progress) {
|
|
|
if (mo == null) {
|
|
|
return;
|
|
|
}
|
|
|
string eplanDSType = KUtil.GetConfigValue(KConfigure.PROJ_SYNC_SECTION, KConfigure.PROJ_SYNC_ZW_DSTYPE);
|
|
|
List<Dataset> target = new List<Dataset>();
|
|
|
if (TCUtil.IsType(mo.SoaType, "Dataset")) {
|
|
|
//if (!TCUtil.IsType(mo.SoaType, TCUtil.TYPE_EPLAN)) {
|
|
|
// KUtil.DispatcherShow(this, "请选择" + TCUtil.TYPE_EPLAN + "数据集进行操作");
|
|
|
// return;
|
|
|
//}
|
|
|
target.Add((Dataset)mo);
|
|
|
}
|
|
|
else if (TCUtil.IsType(mo.SoaType, "ItemRevision")) {
|
|
|
ModelObject[] children = TCUtil.GetChildFromPref(mo);
|
|
|
for (int i = 0; i < children.Length; i++) {
|
|
|
if (TCUtil.IsType(children[i].SoaType, eplanDSType)) {
|
|
|
target.Add((Dataset)children[i]);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
KUtil.DispatcherShow(this, "请选择版本或数据集进行操作");
|
|
|
return;
|
|
|
}
|
|
|
if (target.Count == 0) {
|
|
|
KUtil.DispatcherShow(this, "当前对象下不存在EPLAN数据集");
|
|
|
return;
|
|
|
}
|
|
|
if (target.Count > 1) {
|
|
|
KUtil.DispatcherShow(this, "当前对象下存在多个数据集,请选择要打开的数据集");
|
|
|
return;
|
|
|
}
|
|
|
Dataset ds = target[0];
|
|
|
List<ImanFile> imanFiles = TCUtil.GetDatasetFile(ds, null);
|
|
|
TCUtil.GetProperties(false, TCUtil.Refresh(ds), "object_string");
|
|
|
if (imanFiles.Count == 0) {
|
|
|
KUtil.DispatcherShow(this, "数据集<" + ds.Object_string + ">下没有找到引用文件");
|
|
|
return;
|
|
|
}
|
|
|
if (imanFiles.Count > 1) {
|
|
|
KUtil.DispatcherShow(this, "数据集<" + ds.Object_string + ">下找到多个引用文件");
|
|
|
return;
|
|
|
}
|
|
|
FileInfo file = TCUtil.GetFileInfo(imanFiles[0]);
|
|
|
if (file == null) {
|
|
|
KUtil.DispatcherShow(this, "从数据集<" + ds.Object_string + ">下载引用文件失败");
|
|
|
return;
|
|
|
}
|
|
|
if (file.Attributes.ToString().IndexOf("ReadOnly") != -1) {
|
|
|
file.Attributes = FileAttributes.Normal;
|
|
|
}
|
|
|
Close();
|
|
|
progress.BeginPart(100.0, "");
|
|
|
progress.ShowImmediately();
|
|
|
progress.SetAllowCancel(true);
|
|
|
if (file.FullName.ToLower().EndsWith("zw1")) {
|
|
|
string projName = file.Name.Replace(".zw1", "").Replace(".ZW1", "");
|
|
|
KUtil.Log("打开项目:" + projName + " - " + file.FullName);
|
|
|
string targetFolder = KUtil.GetConfigValue(KConfigure.EPLAN_DATA_SECTION,KConfigure.EPLAN_WORKSAPCE);
|
|
|
if (KUtil.IsEmpty(targetFolder)) {
|
|
|
KUtil.DispatcherShow(this, "未配置项目解压路径");
|
|
|
return;
|
|
|
}
|
|
|
if (!Directory.Exists(targetFolder)) {
|
|
|
Directory.CreateDirectory(targetFolder);
|
|
|
}
|
|
|
using (new LockingStep()) {
|
|
|
RestoreProject(targetFolder,file.FullName, projName);
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
System.Diagnostics.Process.Start(file.FullName);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
private bool RestoreProject(string folderPath,string zipName, string projName) {
|
|
|
Restore restore = new Restore();
|
|
|
StringCollection archives = new StringCollection();
|
|
|
archives.Add(zipName);
|
|
|
restore.Project(archives, folderPath, projName, false, true);
|
|
|
ProjectManager manager = new ProjectManager();
|
|
|
if (File.Exists(folderPath + "\\" + projName + ".elk")) {
|
|
|
manager.OpenProject(folderPath + "\\" + projName + ".elk");
|
|
|
}
|
|
|
else if (File.Exists(folderPath + "\\" + projName + ".ell")) {
|
|
|
manager.OpenProject(folderPath + "\\" + projName + ".ell");
|
|
|
}
|
|
|
else {
|
|
|
throw new Exception("未找到项目文件");
|
|
|
}
|
|
|
|
|
|
/*try {
|
|
|
manager = new ProjectManager();
|
|
|
context = new ActionCallingContext();
|
|
|
context.AddParameter("TYPE", "PROJECT");
|
|
|
context.AddParameter("ARCHIVENAME", zipName);
|
|
|
context.AddParameter("PROJECTNAME", projName);
|
|
|
context.AddParameter("UNPACKPROJECT", "0");
|
|
|
// progress = new Progress("SimpleProgress");
|
|
|
//progress.BeginPart(100.0, "");
|
|
|
//progress.ShowImmediately();
|
|
|
// progress.SetAllowCancel(true);
|
|
|
interpreter = new CommandLineInterpreter();
|
|
|
if (interpreter.Execute("restore", context)) {
|
|
|
//MessageBox.Show("该项目不能恢复!");
|
|
|
}
|
|
|
// progress.EndPart(true);
|
|
|
manager.OpenProject(PathMap.SubstitutePath(projName));
|
|
|
}
|
|
|
catch (Exception exception1) {
|
|
|
KUtil.LogErr(exception1);
|
|
|
KUtil.DispatcherShow(this, exception1.Message);
|
|
|
}*/
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
private void b_Open_Click(object sender, RoutedEventArgs e) {
|
|
|
if (this.selectedObject == null) {
|
|
|
MessageBox.Show(this, "请选择要打开的对象");
|
|
|
}
|
|
|
else {
|
|
|
Progress progress = new Progress("SimpleProgress");
|
|
|
try {
|
|
|
openDs(selectedObject, progress);
|
|
|
progress.EndPart(true);
|
|
|
}
|
|
|
catch(System.Exception ex) {
|
|
|
KUtil.LogErr(ex);
|
|
|
progress.EndPart(true);
|
|
|
MessageBox.Show(this,"打开出错:"+ex.Message);
|
|
|
}
|
|
|
|
|
|
//bgWorker_Open.Start(this.selectedObject);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void LoadFromConfiguration() {
|
|
|
//加载查询条件
|
|
|
LoadQueryFields();
|
|
|
//加载查询结果
|
|
|
LoadQueryTable();
|
|
|
}
|
|
|
|
|
|
private void LoadQueryTable() {
|
|
|
queryResultData.Rows.Clear();
|
|
|
string queryResults = KUtil.GetConfigValue(KConfigure.QUERY_PROJ_SECTION, KConfigure.QUERY_PROJ_RESULTS);
|
|
|
string[] queryResultSplit = queryResults.Split(';');
|
|
|
int len = queryResultSplit.Length;
|
|
|
for (int i = 0; i < len; i++) {
|
|
|
string queryResult = queryResultSplit[i].Trim();
|
|
|
if (KUtil.IsEmpty(queryResult)) {
|
|
|
continue;
|
|
|
}
|
|
|
string titile = queryResult;
|
|
|
string config = queryResult;
|
|
|
int width = 50;
|
|
|
string[] split = queryResult.Split(',');
|
|
|
if (split.Length > 1) {
|
|
|
titile = split[0].Trim();
|
|
|
config = split[1].Trim();
|
|
|
}
|
|
|
if (split.Length > 2) {
|
|
|
Int32.TryParse(split[2].Trim(), out width);
|
|
|
}
|
|
|
queryResultConfig.Add(config);
|
|
|
queryResultWidth.Add(width);
|
|
|
queryResultData.Columns.Add(new DataColumn() {
|
|
|
ColumnName = titile,
|
|
|
DataType = i == 0 ? typeof(TableRowData) : typeof(string)
|
|
|
});
|
|
|
}
|
|
|
//queryResultData.Rows.Add(new object[] { 1 });
|
|
|
datagrid_SearchResult.DataContext = queryResultData.DefaultView;
|
|
|
}
|
|
|
|
|
|
private void LoadQueryFields() {
|
|
|
string heightConfig = KUtil.GetConfigValue(KConfigure.QUERY_PROJ_SECTION, KConfigure.QUERY_PROJ_HEIGHT);
|
|
|
if(!KUtil.IsEmpty(heightConfig)){
|
|
|
double h = 0;
|
|
|
Double.TryParse(heightConfig,out h);
|
|
|
if (h > 0) {
|
|
|
rd_QueryField.Height = new GridLength(h);
|
|
|
}
|
|
|
}
|
|
|
this.queryName = KUtil.GetConfigValue(KConfigure.QUERY_PROJ_SECTION, KConfigure.QUERY_PROJ_NAME);
|
|
|
string queryFields = KUtil.GetConfigValue(KConfigure.QUERY_PROJ_SECTION, KConfigure.QUERY_PROJ_FIELDS);
|
|
|
string[] queryFieldSplit = queryFields.Split(';');
|
|
|
int len = queryFieldSplit.Length;
|
|
|
for (int i = 0; i < len; i++) {
|
|
|
string queryField = queryFieldSplit[i].Trim();
|
|
|
if (KUtil.IsEmpty(queryField)) {
|
|
|
continue;
|
|
|
}
|
|
|
string disName = queryField;
|
|
|
string realName = queryField;
|
|
|
string[] split = queryField.Split(',');
|
|
|
if (split.Length == 2) {
|
|
|
disName = split[0].Trim();
|
|
|
realName = split[1].Trim();
|
|
|
}
|
|
|
if (queryFieldMap.ContainsKey(realName)) {
|
|
|
continue;
|
|
|
}
|
|
|
RowDefinition rd = new RowDefinition();
|
|
|
rd.Height = new GridLength(1.0, GridUnitType.Auto);
|
|
|
grid_QueryField.RowDefinitions.Add(rd);
|
|
|
Label label = new Label();
|
|
|
label.Content = disName;
|
|
|
label.HorizontalContentAlignment=HorizontalAlignment.Right;
|
|
|
Grid.SetRow(label,queryFieldMap.Count);
|
|
|
Grid.SetColumn(label,0);
|
|
|
grid_QueryField.Children.Add(label);
|
|
|
|
|
|
TextBox textBox = new TextBox();
|
|
|
Grid.SetRow(textBox, queryFieldMap.Count);
|
|
|
Grid.SetColumn(textBox, 1);
|
|
|
textBox.Margin = new Thickness(0, 2, 0, 8);
|
|
|
textBox.Height = 24;
|
|
|
textBox.VerticalContentAlignment = VerticalAlignment.Center;
|
|
|
grid_QueryField.Children.Add(textBox);
|
|
|
queryFieldMap.Add(realName, textBox);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void Async_Query(object sender, DoWorkEventArgs e) {
|
|
|
Dictionary<string, string> fields = (Dictionary<string, string>)e.Argument;
|
|
|
ModelObject[] queryRes=null;
|
|
|
try {
|
|
|
bgWorker_Query.Progress("正在查询...", 1);
|
|
|
queryRes = TCUtil.query(queryName, fields);
|
|
|
}
|
|
|
catch (System.Exception ex) {
|
|
|
this.Dispatcher.Invoke(new Action(delegate {
|
|
|
MessageBox.Show(this, "查询出错:" + ex.Message, "错误");
|
|
|
}));
|
|
|
KUtil.LogErr(ex);
|
|
|
return;
|
|
|
}
|
|
|
if (queryRes == null) {
|
|
|
return;
|
|
|
}
|
|
|
//提取信息
|
|
|
TCUtil.dmService.RefreshObjects(queryRes);
|
|
|
try {
|
|
|
int len = queryRes.Length;
|
|
|
for (int i = 0; i < len; i++) {
|
|
|
if (bgWorker_Query.IsCancel()) {
|
|
|
e.Cancel = true;
|
|
|
break;
|
|
|
}
|
|
|
bgWorker_Query.Progress("加载数据 " + (i + 1) + "/" + len + " ", (i + 1) * 100 / len);
|
|
|
TableRowData data = new TableRowData(queryRes[i]);
|
|
|
object[] rowData = data.GetRowData(i + 1, queryResultConfig);
|
|
|
this.Dispatcher.Invoke(new Action(delegate {
|
|
|
queryResultData.Rows.Add(rowData);
|
|
|
}));
|
|
|
}
|
|
|
}
|
|
|
catch (System.Exception ex) {
|
|
|
this.Dispatcher.Invoke(new Action(delegate {
|
|
|
MessageBox.Show(this, "读取数据出错:" + ex.Message, "错误");
|
|
|
}));
|
|
|
KUtil.LogErr(ex);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void Async_LoadHome(object sender, DoWorkEventArgs e) {
|
|
|
TCTreeItem parent = (TCTreeItem)e.Argument;
|
|
|
if (parent == null) {
|
|
|
//tree_Home.Items.Clear();
|
|
|
if (TCUtil.user == null) {
|
|
|
throw new Exception("加载Home失败,用户未登录");
|
|
|
}
|
|
|
Folder home = TCUtil.user.Home_folder;
|
|
|
//TreeViewItem node_home = null;
|
|
|
bgWorker_Homer.Progress("加载中...", 0);
|
|
|
TCTreeItem tree_home = null;
|
|
|
this.Dispatcher.Invoke(new Action(delegate {
|
|
|
tree_home = new TCTreeItem(home);
|
|
|
tree_Home.Items.Add(tree_home);
|
|
|
tree_home.Items.Add(new TCTreeItem(null));
|
|
|
}));
|
|
|
}
|
|
|
else {
|
|
|
Cycle_Home(parent, e);
|
|
|
}
|
|
|
|
|
|
//this.Dispatcher.Invoke(new Action(delegate {
|
|
|
// MessageBox.Show(this,"Home下对象数量"+mo.Length);
|
|
|
//}));
|
|
|
}
|
|
|
|
|
|
private void Cycle_Home(TCTreeItem treeItem, DoWorkEventArgs e) {
|
|
|
if (!(treeItem.Items.Count == 1 && ((TCTreeItem)treeItem.Items.GetItemAt(0)).mo == null)) {
|
|
|
return;
|
|
|
}
|
|
|
this.Dispatcher.Invoke(new Action(delegate {
|
|
|
treeItem.Items.Clear();
|
|
|
}));
|
|
|
|
|
|
ModelObject parent = treeItem.mo;
|
|
|
ModelObject[] children = null;
|
|
|
//var t = parent.GetType();
|
|
|
SoaType soaType = parent.SoaType;
|
|
|
ModelObject[] mo = TCUtil.Refresh(parent);
|
|
|
if (TCUtil.IsType(soaType,"Folder")) {
|
|
|
TCUtil.GetProperties(false, mo, "contents");
|
|
|
children = ((Folder)parent).Contents;
|
|
|
}
|
|
|
else if (TCUtil.IsType(soaType, "Item") || TCUtil.IsType(soaType, "ItemRevision")) {
|
|
|
children = TCUtil.GetChildFromPref(parent);
|
|
|
}
|
|
|
//else if(TCUtil.IsType(soaType,"Item")){
|
|
|
// TCUtil.GetProperties(false, mo, "displayable_revisions");
|
|
|
// children = ((Item)parent).Displayable_revisions;
|
|
|
//}
|
|
|
//else if (TCUtil.IsType(soaType,"ItemRevision")) {
|
|
|
// TCUtil.GetProperties(false, mo, "IMAN_specification");
|
|
|
// children = ((ItemRevision)parent).GetProperty("IMAN_specification").ModelObjectArrayValue;
|
|
|
//}
|
|
|
else if (TCUtil.IsType(soaType,"Dataset")) {
|
|
|
children = null;
|
|
|
}
|
|
|
else {
|
|
|
return;
|
|
|
}
|
|
|
if (children == null) {
|
|
|
return;
|
|
|
}
|
|
|
if (bgWorker_Query.IsCancel()) {
|
|
|
e.Cancel = true;
|
|
|
return;
|
|
|
}
|
|
|
string eplanDSType = KUtil.GetConfigValue(KConfigure.PROJ_SYNC_SECTION, KConfigure.PROJ_SYNC_ZW_DSTYPE);
|
|
|
ItemCollection node_children = null;
|
|
|
this.Dispatcher.Invoke(new Action(delegate {
|
|
|
node_children = treeItem.Items;
|
|
|
}));
|
|
|
int len = children.Length;
|
|
|
for (int i=0;i<len;i++) {
|
|
|
if (bgWorker_Query.IsCancel()) {
|
|
|
e.Cancel = true;
|
|
|
return;
|
|
|
}
|
|
|
bgWorker_Homer.Progress("加载中...( "+(i+1)+" / "+len+" )", (i + 1) * 100 / len);
|
|
|
ModelObject c = children[i];
|
|
|
if (TCUtil.IsType(c.SoaType, "Dataset")&&!TCUtil.IsType(c.SoaType, eplanDSType)) {
|
|
|
continue;
|
|
|
}
|
|
|
TCTreeItem node_child = null;
|
|
|
this.Dispatcher.Invoke(new Action(delegate {
|
|
|
node_child = new TCTreeItem(c);
|
|
|
node_children.Add(node_child);
|
|
|
node_child.Items.Add(new TCTreeItem(null));
|
|
|
}));
|
|
|
//Cycle_Home(c, node_children2, false);
|
|
|
}
|
|
|
//添加视图
|
|
|
if(TCUtil.IsType(soaType, "ItemRevision")&&!TCUtil.IsType(soaType, "SF6_ElecHWDesignRevision")) {
|
|
|
TCUtil.GetProperties(false, new ModelObject[] { parent }, new string[] { "view" });
|
|
|
ModelObject[] bomChildren = ((ItemRevision)parent).View;
|
|
|
int bomCnt = bomChildren == null ? 0 : bomChildren.Length;
|
|
|
if (bomCnt > 0) {
|
|
|
this.Dispatcher.Invoke(new Action(delegate {
|
|
|
TCTreeItem viewNode = new TCTreeItem(parent, "View", "folder_16.png");
|
|
|
node_children.Add(viewNode);
|
|
|
ItemCollection view_children = viewNode.Items;
|
|
|
for(int i = 0; i < bomCnt; i++) {
|
|
|
if (bgWorker_Query.IsCancel()) {
|
|
|
e.Cancel = true;
|
|
|
return;
|
|
|
}
|
|
|
bgWorker_Homer.Progress("加载视图...( " + (i + 1) + " / " + bomCnt + " )", (i + 1) * 100 / bomCnt);
|
|
|
TCTreeItem cc = new TCTreeItem(bomChildren[i]);
|
|
|
view_children.Add(cc);
|
|
|
cc.Items.Add(new TCTreeItem(null));
|
|
|
}
|
|
|
}));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void WindowLoaded(object sender, RoutedEventArgs e) {
|
|
|
bgWorker_Homer.Start(null);
|
|
|
}
|
|
|
|
|
|
|
|
|
private void ExpandHomeTree(object sender, RoutedEventArgs e) {
|
|
|
TCTreeItem item = e.OriginalSource as TCTreeItem;
|
|
|
bgWorker_Homer.Start(item);
|
|
|
}
|
|
|
|
|
|
private void b_Query_Click(object sender, RoutedEventArgs e) {
|
|
|
queryResultData.Rows.Clear();
|
|
|
//查询
|
|
|
Dictionary<string, string> fields= new Dictionary<string, string>();
|
|
|
foreach (string key in queryFieldMap.Keys) {
|
|
|
string value = queryFieldMap[key].Text;
|
|
|
if (!KUtil.IsEmpty(value)) {
|
|
|
fields.Add(key, value);
|
|
|
}
|
|
|
}
|
|
|
if (fields.Count == 0) {
|
|
|
MessageBox.Show(this, "请输入查询条件", "提示");
|
|
|
return;
|
|
|
}
|
|
|
//异步执行
|
|
|
bgWorker_Query.Start(fields);
|
|
|
//bgWorker = new KBgWorker2(this,backgroundWorker);
|
|
|
//backgroundWorker.RunWorkerAsync(fields);
|
|
|
|
|
|
}
|
|
|
|
|
|
private void b_Reset_Click(object sender, RoutedEventArgs e) {
|
|
|
foreach (TextBox tb in queryFieldMap.Values) {
|
|
|
tb.Text = "";
|
|
|
}
|
|
|
queryResultData.Rows.Clear();
|
|
|
}
|
|
|
|
|
|
//private void DataGrid_PreviewMouseWheel(object sender, MouseWheelEventArgs e) {
|
|
|
// ScrollViewer scv = (ScrollViewer)sender;
|
|
|
// scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
|
|
// e.Handled = true;
|
|
|
//}
|
|
|
|
|
|
private void QueryTableLoaded(object sender, RoutedEventArgs e) {
|
|
|
int len = queryResultWidth.Count;
|
|
|
for (int i = 0; i < len; i++) {
|
|
|
datagrid_SearchResult.Columns[i].Width = queryResultWidth[i];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) {
|
|
|
int index = datagrid_SearchResult.SelectedIndex;
|
|
|
if (index < 0) {
|
|
|
tabItem_SearchTarget.Visibility = Visibility.Hidden;
|
|
|
tab_home.SelectedIndex = 0;
|
|
|
selectedObject = null;
|
|
|
return;
|
|
|
}
|
|
|
tabItem_SearchTarget.Visibility = Visibility.Visible;
|
|
|
tab_home.SelectedIndex = 1;
|
|
|
try {
|
|
|
tree_SearchTarget.Items.Clear();
|
|
|
DataRow row = queryResultData.Rows[index];
|
|
|
TableRowData ss = row.Field<TableRowData>(0);
|
|
|
ModelObject mo = ss.mo;
|
|
|
this.selectedObject = mo;
|
|
|
ModelObject[] mos = TCUtil.Refresh(mo);
|
|
|
TCUtil.GetProperties(false, mos, "object_string");
|
|
|
tabItem_SearchTarget.Header = mo.GetPropertyDisplayableValue("object_string");
|
|
|
TCTreeItem target = new TCTreeItem(mo);
|
|
|
tree_SearchTarget.Items.Add(target);
|
|
|
target.Items.Add(new TCTreeItem(null));
|
|
|
this.Dispatcher.Invoke(new Action(delegate {
|
|
|
target.ExpandSubtree();
|
|
|
}));
|
|
|
} catch (System.Exception ex) {
|
|
|
KUtil.LogErr(ex);
|
|
|
MessageBox.Show(ex.Message);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void tree_SelectionChanged(object sender, RoutedPropertyChangedEventArgs<object> e) {
|
|
|
TCTreeItem target = e.NewValue as TCTreeItem;
|
|
|
if(target == null) {
|
|
|
this.selectedObject = null;
|
|
|
}
|
|
|
else {
|
|
|
this.selectedObject = target.mo;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|