프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

hytos / DTI_PID / SPPIDConverter / ConverterForm.cs @ b93e7eef

이력 | 보기 | 이력해설 | 다운로드 (24.1 KB)

1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Data;
5
using System.Drawing;
6
using System.Linq;
7
using System.Text;
8
using System.Threading.Tasks;
9
using System.Windows.Forms;
10
using Microsoft.VisualBasic;
11
using DevExpress.XtraEditors.Repository;
12
using DevExpress.XtraEditors.Controls;
13
using DevExpress.XtraEditors;
14
using System.Globalization;
15
using System.Threading;
16
using System.IO;
17
using Ingr.RAD2D;
18
using Converter.BaseModel;
19
using Converter.SPPID.Properties;
20
using Converter.SPPID.DB;
21
using Converter.SPPID.Util;
22
using Converter.SPPID.Form;
23
using Converter.SPPID.Model;
24

    
25
namespace Converter.SPPID
26
{
27
    public partial class ConverterForm : DevExpress.XtraBars.Ribbon.RibbonForm
28
    {
29
        private Dictionary<string, SPPID_Document> _DicDocuments = new Dictionary<string, SPPID_Document>();
30
        private List<SPPID_Document> _Documents = new List<SPPID_Document>();
31
        public List<SPPID_Document> Documents { get { return _Documents; } }
32
        private DataTable _ConverterDT = new DataTable();
33
        private DataTable _SPPIDSymbolPathDT = new DataTable();
34
        private DataTable _SPPIDUnitDT = new DataTable();
35
        private RepositoryItemComboBox templateComboBox;
36

    
37

    
38
        private DataTable _ID2SymbolDT = new DataTable();
39
        private DataTable _ID2ChildSymbolDT = new DataTable();
40
        private DataTable _ID2LineDT = new DataTable();
41
        private DataTable _ID2AttributeDT = new DataTable();
42
        private DataTable _ID2LinePropertyDT = new DataTable();
43
        private DataTable _ID2SymbolTypeDT = new DataTable();
44

    
45

    
46
        private List<SymbolMapping> symbolMappings = new List<SymbolMapping>();
47
        private List<ChildSymbolMapping> childSymbolMappings = new List<ChildSymbolMapping>();
48
        private List<LineMapping> lineMappings = new List<LineMapping>();
49
        private List<LineNumberMapping> lineNumberMappings = new List<LineNumberMapping>();
50
        private List<AttributeMapping> attributeMappings = new List<AttributeMapping>();
51

    
52
        public ConverterForm()
53
        {
54
            InitializeComponent();
55

    
56
            CultureInfo culture = CultureInfo.GetCultureInfo("ko");
57
            Msg.Culture = culture;
58

    
59
            InitUsedDataTable();
60
            InitGridControl();
61
            InitID2Project();
62
        }
63

    
64
        private void InitUsedDataTable()
65
        {
66
            // Converter Table
67
            DataColumn col = _ConverterDT.Columns.Add("colDrawingFileName");
68
            col.Caption = "Drawing File Name";
69
            col = _ConverterDT.Columns.Add("colDrawingFilePath");
70
            col.Caption = "DrawingFilePath";
71
            col = _ConverterDT.Columns.Add("colUnit");
72
            col.Caption = "Unit";
73
            col = _ConverterDT.Columns.Add("colTemplate");
74
            col.Caption = "Template";
75
            col = _ConverterDT.Columns.Add("colDrawingNumber");
76
            col.Caption = "Drawing Number";
77
            col = _ConverterDT.Columns.Add("colDrawingName");
78
            col.Caption = "Drawing Name";
79
            col = _ConverterDT.Columns.Add("colStatus");
80
            col.Caption = "Status";
81
            col = _ConverterDT.Columns.Add("colUID");
82

    
83
            col = _ID2LineDT.Columns.Add("UID");
84
            col = _ID2LineDT.Columns.Add("Name");
85
            col.Caption = "Name";
86
            col = _ID2LineDT.Columns.Add("Type");
87
            col.Caption = "Type";
88
            col = _ID2LineDT.Columns.Add("SPPID_SYMBOL_PATH");
89
            col.Caption = "SPPID Symbol Path";
90
            col = _ID2LineDT.Columns.Add("Clear");
91
            col.Caption = "";
92
        }
93

    
94
        private void InitGridControl()
95
        {
96
            #region Converter Page
97
            gridViewConverter.OptionsSelection.MultiSelect = true;
98
            gridViewConverter.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CheckBoxRowSelect;
99
            
100
            gridControlConverter.DataSource = _ConverterDT;
101

    
102
            templateComboBox = new RepositoryItemComboBox();
103
            templateComboBox.TextEditStyle = TextEditStyles.DisableTextEditor;
104
            templateComboBox.EditValueChanged += templateComboBox_EditValueChanged;
105
            gridControlConverter.RepositoryItems.Add(templateComboBox);
106
            gridViewConverter.Columns["colTemplate"].ColumnEdit = templateComboBox;
107

    
108
            gridViewConverter.Columns["colUnit"].OptionsColumn.AllowEdit = false;
109
            gridViewConverter.Columns["colDrawingFileName"].OptionsColumn.AllowEdit = false;
110
            gridViewConverter.Columns["colUnit"].OptionsColumn.ReadOnly = true;
111
            gridViewConverter.Columns["colStatus"].OptionsColumn.AllowEdit = false;
112
            gridViewConverter.Columns["colDrawingFilePath"].Visible = false;
113
            gridViewConverter.Columns["colUID"].Visible = false;
114

    
115
            gridViewConverter.BestFitColumns();
116
            #endregion
117
        }
118

    
119
        private void templateComboBox_EditValueChanged(object sender, EventArgs e)
120
        {
121
            gridViewConverter.CloseEditor();
122
            gridViewConverter.UpdateCurrentRow();
123
        }
124

    
125
        private void gridViewConverter_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
126
        {
127
            if (e.Column.Name == "colcolTemplate")
128
            {
129
                gridViewConverter.ShowEditor();
130
                (gridViewConverter.ActiveEditor as ComboBoxEdit).ShowPopup();
131
            }
132
            else if (e.Column.Name == "colcolUnit")
133
            {
134
                UnitForm unitForm = new UnitForm(_SPPIDUnitDT);
135
                if (unitForm.ShowDialog() == DialogResult.OK)
136
                {
137
                    gridViewConverter.SetRowCellValue(e.RowHandle, e.Column, unitForm.SelectedUnit);
138
                    gridViewConverter.CloseEditor();
139
                    gridViewConverter.UpdateCurrentRow();
140
                }
141
            }
142
        }
143

    
144
        private void btnID2Project_ButtonClick(object sender, ButtonPressedEventArgs e)
145
        {
146
            xtraFolderBrowserDialog.SelectedPath = btnID2Project.Text;
147

    
148
            if (xtraFolderBrowserDialog.ShowDialog() == DialogResult.OK)
149
            {
150
                if (xtraFolderBrowserDialog.SelectedPath[xtraFolderBrowserDialog.SelectedPath.Length - 1] == '\\')
151
                    xtraFolderBrowserDialog.SelectedPath = xtraFolderBrowserDialog.SelectedPath.Remove(xtraFolderBrowserDialog.SelectedPath.Length - 1);
152
                Settings.Default.LatestProjectPath = xtraFolderBrowserDialog.SelectedPath;
153
                Settings.Default.Save();
154
                if (InitID2Project())
155
                {
156
                    MessageBox.Show(Msg.SuccessProjectSelect, Msg.Information, MessageBoxButtons.OK, MessageBoxIcon.Information);
157
                }
158
                else
159
                    MessageBox.Show(Msg.FailProjectSelect, Msg.Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning);
160
            }
161
        }
162

    
163
        private bool InitID2Project()
164
        {
165
            Project_Info _ProjectInfo = Project_Info.GetInstance();
166
            _ProjectInfo.DefaultPath = Settings.Default.LatestProjectPath;
167
            if (Project_DB.ConnTestAndCreateTable())
168
            {
169
                _ProjectInfo.Enable = true;
170
                btnID2Project.Text = _ProjectInfo.DefaultPath;
171
                labelID2ProjectName.Text = _ProjectInfo.Name;
172
                labelID2ProjectName.AppearanceItemCaption.ForeColor = Color.Blue;
173
                labelID2ProjectStatus.Text = Msg.ConnectionSuccessful;
174
                labelID2ProjectStatus.AppearanceItemCaption.ForeColor = Color.Blue;
175
                layoutControlGroupSPPIDDB.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
176
                layoutControlGroupItemMapping.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
177
            }
178
            else
179
            {
180
                _ProjectInfo.Enable = false;
181
                btnID2Project.Text = "";
182
                labelID2ProjectName.Text = " ";
183
                labelID2ProjectName.AppearanceItemCaption.ForeColor = Color.Red;
184
                labelID2ProjectStatus.Text = Msg.ConnectionFail;
185
                labelID2ProjectStatus.AppearanceItemCaption.ForeColor = Color.Red;
186
                layoutControlGroupSPPIDDB.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
187
                layoutControlGroupItemMapping.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
188
            }
189

    
190
            InitMapping();
191
            InitSPPIDDB();
192

    
193
            return _ProjectInfo.Enable;
194
        }
195

    
196
        private void InitMapping()
197
        {
198
            Project_Info _ProjectInfo = Project_Info.GetInstance();
199
            if (_ProjectInfo.Enable)
200
            {
201
                InitID2Symbol();
202
                InitID2Line();
203
                InitID2LineNumber();
204
                InitID2Attribute();
205

    
206
                InitETCSetting();
207
            }
208
        }
209

    
210
        private void InitETCSetting()
211
        {
212
            Project_Info _ProjectInfo = Project_Info.GetInstance();
213
            if (_ProjectInfo.Enable)
214
            {
215
                DataTable dt = Project_DB.SelectETCSetting();
216
                if (dt.Columns.Count > 0 && dt.Rows.Count > 0)
217
                    SPPIDUtil.ConvertToETCSetting(dt.Rows[0][0].ToString());
218
                else
219
                    SPPID_DBInfo.Clear();
220
            }
221
        }
222

    
223
        private void InitID2Symbol()
224
        {
225
            using (DataTable symbolDT = Project_DB.SelectProjectSymbol())
226
            {
227
                symbolMappings.Clear();
228
                _ID2SymbolDT = symbolDT;
229
                _ID2SymbolDT.Columns.Add("Clear");
230
                _ID2SymbolDT.Columns["Clear"].Caption = "";
231
                foreach (DataRow row in symbolDT.Rows)
232
                {
233
                    symbolMappings.Add(new SymbolMapping()
234
                    {
235
                        UID = row["UID"] == null ? "" : row["UID"].ToString(),
236
                        SYMBOLNAME = row["Name"] == null ? "" : row["Name"].ToString(),
237
                        SPPIDSYMBOLNAME = row["SPPID_SYMBOL_PATH"] == null ? "" : row["SPPID_SYMBOL_PATH"].ToString(),
238
                        LEADERLINE = DBNull.Value.Equals(row["LEADERLINE"]) ? false : (bool)row["LEADERLINE"]
239
                    });
240
                }
241

    
242
                MergeID2ChildSymbol();
243
            }
244
        }
245

    
246
        private void MergeID2ChildSymbol()
247
        {
248
            using (DataTable childSymbolDT = Project_DB.SelectProjectChildSymbol())
249
            {
250
                childSymbolMappings.Clear();
251
                _ID2ChildSymbolDT = childSymbolDT;
252
                _ID2ChildSymbolDT.Columns.Add("Clear");
253
                _ID2ChildSymbolDT.Columns["Clear"].Caption = "";
254
                foreach (DataRow row in childSymbolDT.Rows)
255
                {
256
                    childSymbolMappings.Add(new ChildSymbolMapping()
257
                    {
258
                        UID = row["UID"] == null ? "" : row["UID"].ToString(),
259
                        SYMBOLNAME = row["Name"] == null ? "" : row["Name"].ToString(),
260
                        SPPIDSYMBOLNAME = row["SPPID_SYMBOL_PATH"] == null ? "" : row["SPPID_SYMBOL_PATH"].ToString(),
261
                    });
262
                }
263

    
264
                _ID2SymbolDT.Merge(_ID2ChildSymbolDT);
265
            }
266
        }
267

    
268
        private void InitID2Line()
269
        {
270
            using (DataTable lineTypes = Project_DB.SelectProjectLine())
271
            {
272
                lineMappings.Clear();
273
                _ID2LineDT.Rows.Clear();
274
                foreach (DataRow row in lineTypes.Rows)
275
                {
276
                    DataRow newRow = _ID2LineDT.NewRow();
277
                    newRow["UID"] = row["UID"] == null ? "" : row["UID"].ToString();
278
                    newRow["Name"] = row["Name"] == null ? "" : row["Name"].ToString();
279
                    newRow["Type"] = "Line";
280
                    newRow["SPPID_SYMBOL_PATH"] = row["SPPID_SYMBOL_PATH"] == null ? "" : row["SPPID_SYMBOL_PATH"].ToString();
281
                    _ID2LineDT.Rows.Add(newRow);
282

    
283
                    lineMappings.Add(new LineMapping()
284
                    {
285
                        UID = row["UID"] == null ? "" : row["UID"].ToString(),
286
                        LINENAME = row["Name"] == null ? "" : row["Name"].ToString(),
287
                        SPPIDSYMBOLNAME = row["SPPID_SYMBOL_PATH"] == null ? "" : row["SPPID_SYMBOL_PATH"].ToString(),
288
                    });
289
                }
290
            }
291
        }
292

    
293
        private void InitID2LineNumber()
294
        {
295
            using (DataTable linePropertiesDT = Project_DB.SelectProjectLineProperties())
296
            {
297
                lineNumberMappings.Clear();
298
                _ID2LinePropertyDT = linePropertiesDT;
299
                _ID2LinePropertyDT.Columns.Add("Type");
300
                foreach (DataRow row in linePropertiesDT.Rows)
301
                {
302
                    row["Type"] = "Line Property";
303
                    lineNumberMappings.Add(new LineNumberMapping()
304
                    {
305
                        UID = row["UID"] == null ? "" : row["UID"].ToString(),
306
                        DisplayName = row["DisplayName"] == null ? "" : row["DisplayName"].ToString(),
307
                        SPPIDATTRIBUTENAME = row["SPPID_ATTRIBUTE"] == null ? "" : row["SPPID_ATTRIBUTE"].ToString(),
308
                        SPPIDSYMBOLNAME = row["SPPID_SYMBOL_PATH"] == null ? "" : row["SPPID_SYMBOL_PATH"].ToString()
309
                    });
310
                }
311
            }
312
        }
313

    
314
        private void InitID2Attribute()
315
        {
316
            using (DataTable attributeDT = Project_DB.SelectProjectAttribute())
317
            {
318
                attributeMappings.Clear();
319
                _ID2AttributeDT = attributeDT;
320
                _ID2AttributeDT.Columns.Add("Clear");
321
                _ID2AttributeDT.Columns["Clear"].Caption = "";
322
                foreach (DataRow row in attributeDT.Rows)
323
                {
324
                    attributeMappings.Add(new AttributeMapping()
325
                    {
326
                        UID = row["UID"] == null ? "" : row["UID"].ToString(),
327
                        DisplayAttribute = row["DisplayAttribute"] == null ? "" : row["DisplayAttribute"].ToString(),
328
                        Type = row["Type"] == null ? "" : row["Type"].ToString(),
329
                        SPPIDATTRIBUTENAME = row["SPPID_ATTRIBUTE"] == null ? "" : row["SPPID_ATTRIBUTE"].ToString(),
330
                        SPPIDSYMBOLNAME = row["SPPID_SYMBOL_PATH"] == null ? "" : row["SPPID_SYMBOL_PATH"].ToString(),
331
                        Location = DBNull.Value.Equals(row["LOCATION"]) ? Model.Location.None : (Location)row["LOCATION"],
332
                        LeaderLine = DBNull.Value.Equals(row["LEADERLINE"]) ? false : (bool)row["LEADERLINE"]
333
                    });
334
                }
335
            }
336
        }
337

    
338
        private void InitSPPIDDB()
339
        {
340
            Project_Info _ProjectInfo = Project_Info.GetInstance();
341
            if (_ProjectInfo.Enable)
342
            {
343
                DataTable dt = Project_DB.SelectSPPID_DB_INFO();
344
                if (dt.Columns.Count > 0 && dt.Rows.Count > 0)
345
                    SPPIDUtil.ConvertToSPPIDInfo(dt.Rows[0][0].ToString());
346
                else
347
                    SPPID_DBInfo.Clear();
348
            }
349

    
350
            templateComboBox.Items.Clear();
351
            SPPID_DBInfo _SPPIDInfo = SPPID_DBInfo.GetInstance();
352
            if (_SPPIDInfo.Enable)
353
            {
354
                labelSPPIDPlantName.Text = _SPPIDInfo.SelectedPlant;
355
                labelSPPIDPlantName.AppearanceItemCaption.ForeColor = Color.Blue;
356
                labelSPPIDDBStatus.Text = Msg.ConnectionSuccessful;
357
                labelSPPIDDBStatus.AppearanceItemCaption.ForeColor = Color.Blue;
358

    
359
                string TemplatePath = SPPID_DB.GetPlantPID_T_OPTIONSETTING_Value("PID Template Path");
360
                if (!string.IsNullOrEmpty(TemplatePath))
361
                    templateComboBox.Items.AddRange(Directory.GetFiles(TemplatePath, "*.pid").ToList().Select(filePath => Path.GetFileName(filePath)).ToList());
362

    
363
                _SPPIDUnitDT = SPPID_DB.GetUnitTree();
364

    
365
                layoutControlGroupAutoConverter.Enabled = true;
366
            }
367
            else
368
            {
369
                labelSPPIDPlantName.Text = " ";
370
                labelSPPIDPlantName.AppearanceItemCaption.ForeColor = Color.Red;
371
                labelSPPIDDBStatus.Text = Msg.ConnectionFail;
372
                labelSPPIDDBStatus.AppearanceItemCaption.ForeColor = Color.Red;
373

    
374
                layoutControlGroupAutoConverter.Enabled = false;
375
            }
376

    
377
            _DicDocuments.Clear();
378
            _ConverterDT.Rows.Clear();
379
            InitSPPIDSymbolTreeTable();
380
        }
381

    
382
        private void InitSPPIDSymbolTreeTable()
383
        {
384
            SPPID_DBInfo _SPPIDInfo = SPPID_DBInfo.GetInstance();
385

    
386
            try
387
            {
388
                _SPPIDSymbolPathDT = new DataTable();
389
                _SPPIDSymbolPathDT.Columns.Add("ID");
390
                _SPPIDSymbolPathDT.Columns.Add("Parent");
391
                _SPPIDSymbolPathDT.Columns.Add("Name");
392
                _SPPIDSymbolPathDT.Columns.Add("FullPath");
393

    
394
                if (_SPPIDInfo.Enable)
395
                {
396
                    string symbolPath = SPPID_DB.GetPlantPID_T_OPTIONSETTING_Value("Catalog Explorer root path");
397
                    DirectoryInfo info = new DirectoryInfo(symbolPath);
398
                    _SPPIDSymbolPathDT.Rows.Add(new object[] { "0", "-1", info.Name });
399
                    loop(info, "0", symbolPath);
400
                }
401
            }
402
            catch (Exception ex)
403
            {
404
                MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
405
            }
406
        }
407

    
408
        private void loop(DirectoryInfo parentInfo, string parentUID, string defaultPath)
409
        {
410
            DirectoryInfo[] infos = parentInfo.GetDirectories();
411
            foreach (DirectoryInfo info in infos)
412
            {
413
                string uid = Guid.NewGuid().ToString();
414
                _SPPIDSymbolPathDT.Rows.Add(new object[] { uid, parentUID, info.Name });
415
                loop(info, uid, defaultPath);
416

    
417
                FileInfo[] files = info.GetFiles("*.sym");
418
                foreach (FileInfo fileInfo in files)
419
                {
420
                    _SPPIDSymbolPathDT.Rows.Add(new object[] { Guid.NewGuid().ToString(), uid, fileInfo.Name, fileInfo.FullName.Replace(defaultPath, "") });
421
                }
422
            }
423
        }
424

    
425
        private void btnLoadFile_Click(object sender, EventArgs e)
426
        {
427
            Project_Info _ProjectInfo = Project_Info.GetInstance();
428
            if (!_ProjectInfo.Enable)
429
            {
430
                MessageBox.Show(Msg.PleaseSetID2ProjectInfo, Msg.Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning);
431
                return;
432
            }
433

    
434
            xtraOpenFileDialog.InitialDirectory = _ProjectInfo.TempDirPath;
435
            if (xtraOpenFileDialog.ShowDialog() == DialogResult.OK)
436
            {
437
                foreach (string fileName in xtraOpenFileDialog.FileNames)
438
                {
439
                    SPPID_Document document = new SPPID_Document(fileName);
440

    
441
                    DataRow[] rows = _ConverterDT.Select(string.Format("colDrawingFilePath = '{0}'", fileName));
442
                    DataRow row;
443
                    if (rows.Length == 0)
444
                    {
445
                        row = _ConverterDT.NewRow();
446
                        row["colDrawingFileName"] = Path.GetFileNameWithoutExtension(fileName);
447
                        row["colDrawingFilePath"] = fileName;
448
                        row["colDrawingNumber"] = document.DWGNAME;
449
                        row["colDrawingName"] = document.DWGNAME;
450
                        if (document.Enable)
451
                            row["colStatus"] = "Ready";
452
                        else
453
                            row["colStatus"] = "Error";
454
                        row["colUID"] = "";
455
                        _ConverterDT.Rows.Add(row);
456
                    }
457
                    if (!_DicDocuments.ContainsKey(fileName))
458
                        _DicDocuments.Add(fileName, null);
459

    
460
                    _DicDocuments[fileName] = document;
461
                }
462
            }
463
        }
464

    
465
        private void btnRun_Click(object sender, EventArgs e)
466
        {
467
            _Documents.Clear();
468
            foreach (int rowHandle in gridViewConverter.GetSelectedRows())
469
            {
470
                string _FilePath = gridViewConverter.GetRowCellDisplayText(rowHandle, "colDrawingFilePath");
471
                string _Unit = gridViewConverter.GetRowCellDisplayText(rowHandle, "colUnit");
472
                string _Template = gridViewConverter.GetRowCellDisplayText(rowHandle, "colTemplate");
473
                string _DrawingNumber = gridViewConverter.GetRowCellDisplayText(rowHandle, "colDrawingNumber");
474
                string _DrawingName = gridViewConverter.GetRowCellDisplayText(rowHandle, "colDrawingName");
475
                SPPID_Document document = _DicDocuments[_FilePath];
476
                document.Unit = _Unit;
477
                document.Template = _Template;
478
                document.DrawingNumber = _DrawingNumber;
479
                document.DrawingName = _DrawingName;
480

    
481
                document.SymbolMappings = symbolMappings;
482
                document.ChildSymbolMappings = childSymbolMappings;
483
                document.LineMappings = lineMappings;
484
                document.LineNumberMappings = lineNumberMappings;
485
                document.AttributeMappings = attributeMappings;
486
                document.ETCSetting = ETCSetting.GetInstance();
487
                document.SetSPPIDInfo();
488

    
489
                if (document.SetSPPIDMapping() && document.Enable)
490
                    _Documents.Add(document);
491
            }
492

    
493
            DialogResult = DialogResult.OK;
494
        }
495

    
496
        private void btnSPPIDDB_Click(object sender, EventArgs e)
497
        {
498
            SPPID_DB_SettingForm form = new SPPID_DB_SettingForm();
499
            if (form.ShowDialog() == DialogResult.OK)
500
                InitSPPIDDB();
501
        }
502

    
503
        private void btnItemMapping_Click(object sender, EventArgs e)
504
        {
505
            Project_Info _ProjectInfo = Project_Info.GetInstance();
506
            if (!_ProjectInfo.Enable)
507
            {
508
                MessageBox.Show(Msg.PleaseSetID2ProjectInfo, Msg.Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning);
509
                return;
510
            }
511

    
512
            MappingForm form = new MappingForm(_ID2SymbolDT,_SPPIDSymbolPathDT, _ID2LineDT, _ID2LinePropertyDT, _ID2AttributeDT);
513
            form.ShowDialog();
514
            InitMapping();
515
        }
516
        private List<int> prevSelectedList = new List<int>();
517

    
518
        private void gridViewConverter_SelectionChanged(object sender, DevExpress.Data.SelectionChangedEventArgs e)
519
        {
520
            if (e.Action == CollectionChangeAction.Add)
521
            {
522
                string _Unit = gridViewConverter.GetRowCellDisplayText(e.ControllerRow, "colUnit");
523
                string _Template = gridViewConverter.GetRowCellDisplayText(e.ControllerRow, "colTemplate");
524

    
525
                if (string.IsNullOrEmpty(_Unit) || string.IsNullOrEmpty(_Template))
526
                    gridViewConverter.UnselectRow(e.ControllerRow);
527
            }
528
            else if (e.Action == CollectionChangeAction.Refresh)
529
            {
530
                foreach (int rowHandle in gridViewConverter.GetSelectedRows())
531
                {
532
                    string _Unit = gridViewConverter.GetRowCellDisplayText(rowHandle, "colUnit");
533
                    string _Template = gridViewConverter.GetRowCellDisplayText(rowHandle, "colTemplate");
534

    
535
                    if (string.IsNullOrEmpty(_Unit) || string.IsNullOrEmpty(_Template))
536
                        gridViewConverter.UnselectRow(rowHandle);
537
                }
538

    
539
                List<int> selectedRowHandleList = gridViewConverter.GetSelectedRows().ToList();
540
                var firstNotSecond = prevSelectedList.Except(selectedRowHandleList).ToList();
541
                var secondNotFirst = selectedRowHandleList.Except(prevSelectedList).ToList();
542

    
543
                if (!firstNotSecond.Any() && !secondNotFirst.Any())
544
                {
545
                    this.gridViewConverter.SelectionChanged -= new DevExpress.Data.SelectionChangedEventHandler(this.gridViewConverter_SelectionChanged);
546
                    gridViewConverter.ClearSelection();
547
                    this.gridViewConverter.SelectionChanged += new DevExpress.Data.SelectionChangedEventHandler(this.gridViewConverter_SelectionChanged);
548
                }
549
            }
550

    
551
            prevSelectedList = gridViewConverter.GetSelectedRows().ToList();
552
        }
553
    }
554
}
클립보드 이미지 추가 (최대 크기: 500 MB)