프로젝트

일반

사용자정보

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

markus / KCOM / Controls / Symbol.xaml.cs @ 2e35dd78

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

1
using IKCOM;
2
using KCOM.Common;
3
using KCOM.Events;
4
using KCOMDataModel.Common;
5
using KCOMDataModel.DataModel;
6
using MarkupToPDF.Common;
7
using MarkupToPDF.Controls.Parsing;
8
using Svg2Xaml;
9
using System;
10
using System.Collections.Generic;
11
using System.ComponentModel;
12
using System.Linq;
13
using System.Text;
14
using System.Windows;
15
using System.Windows.Controls;
16
using System.Windows.Data;
17
using System.Windows.Documents;
18
using System.Windows.Input;
19
using System.Windows.Media;
20
using System.Windows.Media.Imaging;
21
using System.Windows.Navigation;
22
using System.Windows.Shapes;
23
using Telerik.Windows.Controls;
24
using Telerik.Windows.Controls.DragDrop;
25

    
26
namespace KCOM.Controls
27
{
28
    public class Symbol_Custom
29
    {
30
        public string ID { get; set; }
31
        public string Name { get; set; }
32
        public string ImageUri { get; set; }
33
    }
34

    
35
    /// <summary>
36
    /// Symbol.xaml에 대한 상호 작용 논리
37
    /// </summary>
38
    public partial class Symbol : UserControl
39
    {
40
        AdornerFinal finalItem;
41
        bool IsMouseDown = false;
42
        string moveItem_id = "";
43
        public string filename { get; set; }
44

    
45
        public Symbol()
46
        {
47
            if (!App.IsDesignMode)
48
            {
49
                App.splashString(ISplashMessage.SYMBOL);
50
            }
51

    
52
            InitializeComponent();
53

    
54
            //RadDragAndDropManager.AddDragInfoHandler(lstSymbolPrivate, OnDragPrivateInfo);
55
            //RadDragAndDropManager.AddDragQueryHandler(lstSymbolPrivate, OnDragPrivateQuery);
56
            //RadDragAndDropManager.SetAllowDrag(lstSymbolPrivate, true);
57
            if (!App.IsDesignMode)
58
            {
59
                DataBind();
60
            }
61
        }
62

    
63
        private void OnDragPrivateInfo(object sender, DragDropEventArgs e)
64
        {
65
        }
66

    
67
        private void OnDragPrivateQuery(object sender, DragDropQueryEventArgs e)
68
        {
69
            if (e.Options.Status == DragStatus.DragQuery)
70
            {
71
                //var draggedListBoxItem = (e.Options.Source as System.Windows.Controls.ListBox).SelectedItem;
72
                //BitmapImage im = new BitmapImage(new Uri((draggedListBoxItem as DeepView.ServiceDeepView_Symbol.SymbolPrivate).ImageUri));
73
                //ImageSource _source = im;
74
                //Image img = new Image();
75
                //img.Source = _source;
76

    
77
                //e.Options.Payload = im;
78
                //var dragCue = new Image();
79
                //dragCue.Source = img.Source;
80
                //dragCue.Width = 0;
81
                //dragCue.Height = 0;
82
                //e.Options.DragCue = dragCue;
83

    
84

    
85
                //PayLoadAdorner = new AdornerFinal();
86
                //DeepView.ServiceDeepView_Symbol.SymbolPrivate tempDragableControl = (e.Options.Source as System.Windows.Controls.ListBox).SelectedItem as DeepView.ServiceDeepView_Symbol.SymbolPrivate;
87
                //var xamldata = tempDragableControl.Data;
88
                ////this.DeepLayer.markupParse(xamldata, this.DeepLayer._TempLayer, "복사된 데이터_이름으로 수정해야함");
89
                //PayLoadAdorner = this.DeepLayer.markupParseToAdorner(xamldata, this.DeepLayer._SelectLayer, "");
90
                //this.DeepLayer._SelectLayer.Children.Add(PayLoadAdorner);
91
            }
92

    
93
            e.QueryResult = true;
94
            e.Handled = true;
95
        }
96

    
97
        private void DataBind()
98
        {
99
            try
100
            {
101

    
102
                //lstSymbolPrivate.ItemsSource = null;
103
                //lstSymbolPublic.ItemsSource = null;
104

    
105
                Symbol_Custom Custom = new Symbol_Custom();
106
                List<Symbol_Custom> Custom_List = new List<Symbol_Custom>();
107

    
108
                var mainwindow = (RadWindowManager.Current.GetWindows().Find(x => x is MainWindow) as MainWindow);
109

    
110
                if (mainwindow.dzMainMenu.BaseClient != null)
111
                {
112
                    var symbol_Private = mainwindow.dzMainMenu.BaseClient.GetSymbolList(App.ViewInfo.UserID);
113

    
114
                    foreach (var item in symbol_Private)
115
                    {
116
                        Custom.Name = item.NAME;
117
                        Custom.ImageUri = CommonLib.Common.IPReplace(item.IMAGE_URL, App.isExternal);
118
                        Custom.ID = item.ID;
119
                        Custom_List.Add(Custom);
120
                        Custom = new Symbol_Custom();
121
                    }
122
                    lstSymbolPrivate.ItemsSource = Custom_List;
123

    
124
                    Custom = new Symbol_Custom();
125
                    Custom_List = new List<Symbol_Custom>();
126

    
127
                    deptlist.ItemsSource = ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.GetPublicSymbolDeptList();
128

    
129
                    List<SYMBOL_PUBLIC> symbol_Public;
130

    
131

    
132
                    if (deptlist.SelectedValue != null)
133
                    {
134
                        symbol_Public = ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.GetPublicSymbolList(deptlist.SelectedValue.ToString());
135
                    }
136
                    else
137
                    {
138
                        symbol_Public = ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.GetPublicSymbolList(null);
139
                    }
140
                    foreach (var item in symbol_Public)
141
                    {
142
                        Custom.Name = item.NAME;
143
                        Custom.ImageUri = CommonLib.Common.IPReplace(item.IMAGE_URL, App.isExternal);
144
                        Custom.ID = item.ID;
145
                        Custom_List.Add(Custom);
146
                        Custom = new Symbol_Custom();
147
                    }
148
                    lstSymbolPublic.ItemsSource = Custom_List;
149
                }
150
            }
151
            catch (Exception)
152
            {
153
            }
154
        }
155

    
156
        public PngBitmapEncoder symImage(string data)
157
        {
158

    
159
            Canvas _canvas = new Canvas();
160
            _canvas.Background = Brushes.White;
161
            _canvas.Width = finalItem.BorderSize.Width;
162
            _canvas.Height = finalItem.BorderSize.Height;
163
            MarkupParser.Parse(App.ViewInfo.ProjectNO, data, _canvas, "#FFFF0000", "");
164

    
165
            BitmapEncoder encoder = new PngBitmapEncoder();
166

    
167

    
168
            RenderTargetBitmap renderBitmap = new RenderTargetBitmap((int)_canvas.Width + 50, (int)_canvas.Height + 50, 96d, 96d, PixelFormats.Pbgra32);
169

    
170
            DrawingVisual dv = new DrawingVisual();
171

    
172
            _canvas.Measure(new System.Windows.Size(finalItem.BorderSize.Width + 50, finalItem.BorderSize.Height + 50));
173
            //_canvas.Arrange(new Rect(new System.Windows.Point { X = -finalItem.BorderSize.X - 50, Y = -finalItem.BorderSize.Y - 50 }, new Point(finalItem.BorderSize.Width + 20, finalItem.BorderSize.Height + 20)));
174
            _canvas.Arrange(new Rect(new System.Windows.Point { X = -finalItem.BorderSize.X - 20, Y = -finalItem.BorderSize.Y - 20 }, new Point(finalItem.BorderSize.Width + 20, finalItem.BorderSize.Height + 20)));
175

    
176
            using (DrawingContext ctx = dv.RenderOpen())
177
            {
178
                VisualBrush vb = new VisualBrush(_canvas);
179
                //ctx.DrawRectangle(vb, null, new Rect(new System.Windows.Point { X = -finalItem.BorderSize.X - 20, Y = -finalItem.BorderSize.Y - 20 }, new Point(finalItem.BorderSize.Width + 20, finalItem.BorderSize.Height + 20)));
180
                ctx.DrawRectangle(vb, null, new Rect(new System.Windows.Point { X = -finalItem.BorderSize.X, Y = -finalItem.BorderSize.Y }, new Point(finalItem.BorderSize.Width + 20, finalItem.BorderSize.Height + 20)));
181
            }
182

    
183
            try
184
            {
185
                renderBitmap.Render(dv);
186

    
187
                GC.Collect();
188
                GC.WaitForPendingFinalizers();
189
                GC.Collect();
190
                //bitmap.Render(controlToConvert);
191
                // encode png data
192
                PngBitmapEncoder pngEncoder = new PngBitmapEncoder();
193
                // puch rendered bitmap into it
194
                pngEncoder.Interlace = PngInterlaceOption.Off;
195
                pngEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
196
                return pngEncoder;
197

    
198
            }
199
            catch //(Exception ex)
200
            {
201
                return null;
202
            }
203

    
204
        }
205

    
206
        public void DialogMessage_Alert(string content, string header)
207
        {
208
            DialogParameters parameters = new DialogParameters()
209
            {
210
                Owner = Application.Current.MainWindow,
211
                Content = new TextBlock()
212
                {
213
                    MinWidth = 400,
214
                    FontSize = 11,
215
                    Text = content,
216
                    TextWrapping = System.Windows.TextWrapping.Wrap
217
                },
218
                Header = header,
219
                Theme = new VisualStudio2013Theme(),
220
                ModalBackground = new SolidColorBrush { Color = Colors.Black, Opacity = 0.6 },
221
            };
222
            RadWindow.Alert(parameters);
223
        }
224

    
225
        #region Event
226

    
227
        #region Private Symbol Add Event
228
        private void Create_Symbol(object sender, RoutedEventArgs e)
229
        {
230
            MarkupToPDF.Controls.Parsing.MarkupParser.MarkupReturn markupReturn = new MarkupToPDF.Controls.Parsing.MarkupParser.MarkupReturn();
231

    
232
            if (Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children.Count < 1) //선택된 것이 없으면
233
            {
234
                DialogMessage_Alert("Please Select Controls", "Alert");
235
            }
236
            else //선택된 것이 있으면
237
            {
238
                string MarkupData = "";
239
                finalItem = new AdornerFinal();
240

    
241
                foreach (var item in Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children)
242
                {
243
                    if (item.GetType().Name == "AdornerFinal")
244
                    {
245
                        finalItem = (item as Controls.AdornerFinal);
246
                        foreach (var InnerItem in (item as Controls.AdornerFinal).Members.Cast<Controls.AdornerMember>())
247
                        {
248
                            if (!ViewerDataModel.Instance.MarkupControls.Contains(InnerItem.DrawingData))
249
                            {
250
                                markupReturn = MarkupParser.MarkupToString(InnerItem.DrawingData as MarkupToPDF.Common.CommentUserInfo, App.ViewInfo.UserID);
251
                                MarkupData += markupReturn.ConvertData;
252
                            }
253
                        }
254
                    }
255
                }
256
                DialogParameters parameters = new DialogParameters()
257
                {
258
                    Owner = Application.Current.MainWindow,
259
                    Closed = (obj, args) => this.MarkupNamePromptClose(MarkupData, args),
260
                    DefaultPromptResultValue = "Custom State",
261
                    Content = "Name :",
262
                    Header = "Insert Custom Symbol Name",
263
                    Theme = new VisualStudio2013Theme(),
264
                    ModalBackground = new SolidColorBrush { Color = Colors.Black, Opacity = 0.6 },
265
                };
266
                RadWindow.Prompt(parameters);
267
            }
268

    
269
        }
270
        #endregion
271

    
272
        #region Symbol Add Close Event 
273
        private void MarkupNamePromptClose(string data, WindowClosedEventArgs args)
274
        {
275
            try
276
            {
277
                if (args.PromptResult != null)
278
                {
279
                    if (args.DialogResult.Value)
280
                    {
281
                        PngBitmapEncoder _Encoder = symImage(data);
282

    
283
                        System.IO.MemoryStream fs = new System.IO.MemoryStream();
284
                        _Encoder.Save(fs);
285
                        System.Drawing.Image ImgOut = System.Drawing.Image.FromStream(fs);
286

    
287
                        byte[] Img_byte = fs.ToArray();
288

    
289
                        kr.co.devdoftech.cloud.FileUpload fileUploader = new kr.co.devdoftech.cloud.FileUpload();
290
                        filename = fileUploader.Run(App.ViewInfo.ProjectNO, Common.ViewerDataModel.Instance.SystemMain.dzMainMenu._DocItem.DOCUMENT_NO, App.ViewInfo.UserID, Commons.shortGuid() + ".png", Img_byte);
291
                        Check_Uri.UriCheck(filename);
292
                        if (RadTab.SelectedIndex == 0)
293
                        {
294
                            SymbolSave(args.PromptResult, filename, data);
295
                        }
296
                        else
297
                        {
298
                            SymbolSave_Public(args.PromptResult, filename, data, Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.userData.DEPARTMENT);
299
                        }
300

    
301
                        DataBind();
302
                    }
303
                }
304
            }
305
            catch(Exception ex)
306
            {
307
                Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.DialogMessage_Alert("" + ex, "Alert");
308
            }
309
        }
310
        #endregion
311

    
312
        public void SymbolSave(string Name, string Url, string Data)
313
        {
314
            try
315
            {
316
                SYMBOL_PRIVATE symbol_private = new SYMBOL_PRIVATE
317
                {
318
                    ID = Commons.shortGuid(),
319
                    MEMBER_USER_ID = App.ViewInfo.UserID,
320
                    NAME = Name,
321
                    IMAGE_URL = Url,
322
                    DATA = Data
323
                };
324

    
325
                Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.SaveSymbolCompleted += BaseClient_SaveSymbolCompleted;
326
                Logger.sendReqLog("SaveSymbolAsync: ", symbol_private.ID + "," + symbol_private.MEMBER_USER_ID + "," + symbol_private.NAME + "," + symbol_private.IMAGE_URL + "," + symbol_private.DATA, 1);
327
                Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.SaveSymbolAsync(symbol_private);
328
            }
329
            catch (Exception)
330
            {
331
                throw;
332
            }
333
        }
334

    
335
        public void SymbolSave_Public(string Name, string Url, string Data, string Department)
336
        {
337
            try
338
            {
339
                SYMBOL_PUBLIC symbol_public = new SYMBOL_PUBLIC
340
                {
341
                    ID = Commons.shortGuid(),
342
                    DEPARTMENT = Department,
343
                    NAME = Name,
344
                    IMAGE_URL = Url,
345
                    DATA = Data
346
                };
347
                Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.AddPublicSymbolCompleted += BaseClient_AddPublicSymbolCompleted;
348
                Logger.sendReqLog("AddPublicSymbol: ", symbol_public.ID + "," + symbol_public.DEPARTMENT + "," + symbol_public.NAME + "," + symbol_public.IMAGE_URL + "," + symbol_public.DATA, 1);
349
                Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.AddPublicSymbol(symbol_public);
350
            }
351
            catch (Exception)
352
            {
353
                throw;
354
            }
355
        }
356

    
357
        private void BaseClient_AddPublicSymbolCompleted(object sender, ServiceDeepView.AddPublicSymbolCompletedEventArgs e)
358
        {
359
            Logger.sendResLog("AddPublicSymbolCompleted", "UserState : " + e.UserState + "\r Result :" + e.Result + "\r Cancelled :" + e.Cancelled + "\r Error :" + e.Error, 1);
360
            DataBind();
361
        }
362

    
363
        private void BaseClient_SaveSymbolCompleted(object sender, ServiceDeepView.SaveSymbolCompletedEventArgs e)
364
        {
365
            Logger.sendResLog("RenameSymbolCompleted", "UserState : " + e.UserState + "\r Result :" + e.Result + "\r Cancelled :" + e.Cancelled + "\r Error :" + e.Error, 1);
366
            DataBind();
367
        }
368

    
369
        #region Private Symbol Delete Event
370
        private void Remove_Symbol(object sender, RoutedEventArgs e)
371
        {
372
            if (lstSymbolPrivate.SelectedItem == null)
373
            {
374
                DialogMessage_Alert("Please Select Symbol", "Alert");
375
                return;
376
            }
377
            string delItem_ID = (lstSymbolPrivate.SelectedItem as Symbol_Custom).ID;
378

    
379
            Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.DeleteSymbolCompleted += BaseClient_DeleteSymbolCompleted;
380
            Logger.sendReqLog("DeleteSymbolAsync: ", delItem_ID, 1);
381
            Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.DeleteSymbolAsync(delItem_ID, RadTab.SelectedIndex);
382
        }
383
        #endregion
384
        #region Public Symbol Delete Event
385
        private void Remove_Symbol_Public(object sender, RoutedEventArgs e)
386
        {
387
            if (lstSymbolPublic.SelectedItem == null)
388
            {
389
                DialogMessage_Alert("Please Select Symbol", "Alert");
390
                return;
391
            }
392
            string delItem_ID = (lstSymbolPublic.SelectedItem as Symbol_Custom).ID;
393

    
394
            Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.DeleteSymbolCompleted += BaseClient_DeleteSymbolCompleted;
395
            Logger.sendReqLog("DeleteSymbolAsync: ", delItem_ID, 1);
396
            Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.DeleteSymbolAsync(delItem_ID, RadTab.SelectedIndex);
397
        }
398

    
399
        private void BaseClient_DeleteSymbolCompleted(object sender, ServiceDeepView.DeleteSymbolCompletedEventArgs e)
400
        {
401
            Logger.sendResLog("DeleteSymbolCompleted", "UserState : " + e.UserState + "\r Result :" + e.Result + "\r Cancelled :" + e.Cancelled + "\r Error :" + e.Error, 1);
402
            DataBind();
403
        }
404
        #endregion
405

    
406
        public Undo_data UndoData { get; set; }
407
        /// <summary>
408
        /// place symbol which has given id to original position which is created
409
        /// </summary>
410
        /// <date>2018.06.14</date>
411
        /// <param name="id"></param>
412
        private void PlaceSymbol(string id)
413
        {
414
            string Data_ = "";
415

    
416
            try
417
            {
418
                Logger.sendReqLog("GetSymbolData: ", id + "," + RadTab.SelectedIndex, 1);
419
                Data_ = Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.GetSymbolData(id, RadTab.SelectedIndex);
420
                if (Data_ != null || Data_ != "")
421
                {
422
                    Logger.sendResLog("GetSymbolData", "TRUE", 1);
423
                }
424
                else
425
                {
426
                    Logger.sendResLog("GetSymbolData", "FALSE", 1);
427
                }
428

    
429
                //MARKUP_DATA_GROUP INSERT
430
                //MARKUP_DATA_GROUP mARKUP_DATA_GROUP = new MARKUP_DATA_GROUP
431
                //{
432
                //    SYMBOL_ID = id,//InnerItem.Symbol_ID
433
                //    STATE = 0,
434
                //};
435
                //long group_id = Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.AddMarkupDataGroup(mARKUP_DATA_GROUP, App.ViewInfo.ProjectNO);
436
                //Logger.sendReqLog("AddMarkupDataGroup: ", "", 1);
437

    
438
                if (Data_.Contains("|DZ|"))
439
                {
440
                    List<MarkupToPDF.Common.CommentUserInfo> adornerSet = new List<MarkupToPDF.Common.CommentUserInfo>();
441

    
442
                    string[] delimiterChars = { "|DZ|" };
443
                    string[] data = Data_.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries);
444

    
445
                    Multi_Undo_data multi_Undo_Data = new Multi_Undo_data();
446
                    UndoData = new Undo_data()
447
                    {
448
                        IsUndo = false,
449
                        Event = Event_Type.Create,
450
                        EventTime = DateTime.Now,
451
                        Markup_List = new List<Multi_Undo_data>()
452
                    };
453
                    ViewerDataModel.Instance.UndoDataList.Where(data1 => data1.IsUndo == true).ToList().ForEach(i =>
454
                    {
455
                        ViewerDataModel.Instance.UndoDataList.Remove(i);
456
                    });
457

    
458
                    foreach (string parse in data)
459
                    {
460
                        if (parse != "")
461
                        {
462
                            System.Windows.Controls.Control item = MarkupParser.ParseEx(App.ViewInfo.ProjectNO, parse, ViewerDataModel.Instance.MarkupControls_USER, string.Empty, string.Empty);
463
                            (item as MarkupToPDF.Common.CommentUserInfo).CommentID = Commons.shortGuid();
464
                            (item as MarkupToPDF.Common.CommentUserInfo).SymbolID = id;
465
                            //(item as MarkupToPDF.Common.CommentUserInfo).GroupID = group_id;
466
                            ViewerDataModel.Instance.MarkupControls.Remove(item as MarkupToPDF.Common.CommentUserInfo);
467
                            ViewerDataModel.Instance.MarkupControls_USER.Remove(item as MarkupToPDF.Common.CommentUserInfo);
468

    
469
                            adornerSet.Add(item as MarkupToPDF.Common.CommentUserInfo);
470

    
471
                            multi_Undo_Data = this.ParentOfType<MainWindow>().dzMainMenu.Control_Style(item as MarkupToPDF.Common.CommentUserInfo);
472

    
473
                            UndoData.Markup_List.Add(multi_Undo_Data);
474
                            ViewerDataModel.Instance.UndoDataList.Add(UndoData);
475
                        }
476
                    }
477
                    Controls.AdornerFinal final = new Controls.AdornerFinal(adornerSet);
478

    
479
                    ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children.Add(final);
480
                }
481
                else
482
                {
483
                    PlaceImageSymbol(id, 0);
484
                }
485
            }
486
            catch (Exception ex)
487
            {
488
                this.ParentOfType<MainWindow>().dzMainMenu.DialogMessage_Alert(ex.Message, "Error");
489
            }
490
        }
491

    
492
        private void PlaceImageSymbol(string id, long group_id)
493
        {
494
           
495
            //canvasZoommovingMouseDownPoint
496
            string Data_ = "";
497

    
498
            try
499
            {
500
                Logger.sendReqLog("GetSymbolImageURL: ", id + "," + RadTab.SelectedIndex, 1);
501
                Data_ = Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.GetSymbolImageURL(id, RadTab.SelectedIndex);
502
                if (Data_ != null || Data_ != "")
503
                {
504
                    Logger.sendResLog("GetSymbolImageURL", "TRUE", 1);
505
                }
506
                else
507
                {
508
                    Logger.sendResLog("GetSymbolImageURL", "FALSE", 1);
509
                }
510

    
511
                //MARKUP_DATA_GROUP INSERT
512
                //MARKUP_DATA_GROUP mARKUP_DATA_GROUP = new MARKUP_DATA_GROUP
513
                //{
514
                //    SYMBOL_ID = id,//InnerItem.Symbol_ID
515
                //    STATE = 0,
516
                //};
517
                //long group_id = Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.AddMarkupDataGroup(mARKUP_DATA_GROUP, App.ViewInfo.ProjectNO);
518
                //Logger.sendReqLog("AddMarkupDataGroup: ", "", 1);
519

    
520
                if (Data_ != null)
521
                {
522
                    Image img = new Image();
523
                    //img.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri(Data_));
524
                    if (Data_.Contains(".svg"))
525
                    {
526
                        byte[] imageData = null;
527
                        DrawingImage image = null;
528
                        using (System.Net.WebClient web = new System.Net.WebClient())
529
                        {
530
                            imageData = web.DownloadData(new Uri(Data_));
531
                            System.IO.Stream stream = new System.IO.MemoryStream(imageData);
532
                            image = SvgReader.Load(stream);
533
                        }
534
                        img.Source = image;
535
                    }
536
                    else
537
                    {
538
                        img.Source = new BitmapImage(new Uri(Data_));
539
                    }
540

    
541
                    var currentControl = new MarkupToPDF.Controls.Etc.ImgControl
542
                    {
543
                        PointSet = new List<Point>(),
544
                        FilePath = Data_,
545
                        ImageData = img.Source,
546
                        StartPoint = new Point(0, 0),
547
                        EndPoint = new Point(img.Source.Width, img.Source.Height),
548
                        TopRightPoint = new Point(img.Source.Width, 0),
549
                        LeftBottomPoint = new Point(0, img.Source.Height)
550
                    };
551

    
552
                    currentControl.PointSet = new List<Point>
553
                                        {
554
                                            currentControl.StartPoint,
555
                                            currentControl.LeftBottomPoint,
556
                                            currentControl.EndPoint,
557
                                            currentControl.TopRightPoint,
558
                                        };
559
                    Multi_Undo_data multi_Undo_Data = new Multi_Undo_data();
560
                    UndoData = new Undo_data()
561
                    {
562
                        IsUndo = false,
563
                        Event = Event_Type.Create,
564
                        EventTime = DateTime.Now,
565
                        Markup_List = new List<Multi_Undo_data>()
566
                    };
567
                    ViewerDataModel.Instance.UndoDataList.Where(data1 => data1.IsUndo == true).ToList().ForEach(i =>
568
                    {
569
                        ViewerDataModel.Instance.UndoDataList.Remove(i);
570
                    });
571

    
572
                    //multi_Undo_Data = dzMainMenu.Control_Style(currentControl as MarkupToPDF.Common.CommentUserInfo);
573
                    multi_Undo_Data = this.ParentOfType<MainWindow>().dzMainMenu.Control_Style(currentControl as MarkupToPDF.Common.CommentUserInfo);
574
                    UndoData.Markup_List.Add(multi_Undo_Data);
575
                    ViewerDataModel.Instance.UndoDataList.Add(UndoData);
576

    
577
                    ViewerDataModel.Instance.MarkupControls_USER.Add(currentControl as MarkupToPDF.Common.CommentUserInfo);
578
                    currentControl.CommentID = Commons.shortGuid();
579
                    currentControl.SymbolID = id;
580
                    currentControl.GroupID = group_id;
581
                    currentControl.ApplyTemplate();
582
                    currentControl.SetImage();
583

    
584
                    ViewerDataModel.Instance.MarkupControls_USER.Remove(currentControl as MarkupToPDF.Common.CommentUserInfo);
585
                    Controls.AdornerFinal final = new Controls.AdornerFinal(currentControl as MarkupToPDF.Common.CommentUserInfo);
586
                    this.ParentOfType<MainWindow>().dzMainMenu.SelectLayer.Children.Add(final);
587

    
588
                    /*
589
                    // this.ParentOfType<MainWindow>().dzMainMenu.isLeftMouseButtonDownOnWindow = true;
590
                    // final.MoveAdorner(new System.Windows.Controls.Primitives.DragDeltaEventArgs(realPointX, realPointY));
591
                    double realPointX = this.ParentOfType<MainWindow>().dzMainMenu.getCurrentPoint.X - final.BorderSize.X - (final.BorderSize.Width / 2);
592
                    double realPointY = this.ParentOfType<MainWindow>().dzMainMenu.getCurrentPoint.Y - final.BorderSize.Y - (final.BorderSize.Height / 2);
593
                      final.TranslateItems(realPointX, realPointY);
594
                    // move.control_Select(item, dragRect);
595
                    ApplyDragSelectionRect();
596
                    //this.ParentOfType<MainWindow>().dzMainMenu.mouseHandlingMode = MouseHandlingMode.DragSymbol;
597
                    ///this.ParentOfType<MainWindow>().dzMainMenu.mouseButtonDown = MouseButton.Left;
598
                    //this.ParentOfType<MainWindow>().dzMainMenu.symboldata(id, group_id, RadTab.SelectedIndex, Data_, img.Source);*/
599
                    
600
                }
601
            }
602
            catch(Exception ex)
603
            {
604
                this.ParentOfType<MainWindow>().dzMainMenu.DialogMessage_Alert(ex.Message, "Error");
605
            }
606
        }
607

    
608
        public Multi_Undo_data multi_Undo_Data;
609
        private void ApplyDragSelectionRect()
610
        {
611
            multi_Undo_Data = new Multi_Undo_data();
612

    
613
            UndoData = new Undo_data()
614
            {
615
                IsUndo = false,
616
                Event = Event_Type.Select,
617
                EventTime = DateTime.Now,
618
                Markup_List = new List<Multi_Undo_data>()
619
            };
620

    
621
            this.ParentOfType<MainWindow>().dzMainMenu.dragSelectionBorder.Visibility = Visibility.Collapsed;
622

    
623
            double x = Canvas.GetLeft(this.ParentOfType<MainWindow>().dzMainMenu.dragSelectionBorder);
624
            double y = Canvas.GetTop(this.ParentOfType<MainWindow>().dzMainMenu.dragSelectionBorder);
625
            double width = this.ParentOfType<MainWindow>().dzMainMenu.dragSelectionBorder.Width;
626
            double height = this.ParentOfType<MainWindow>().dzMainMenu.dragSelectionBorder.Height;
627
            Rect dragRect = new Rect(x, y, width, height);
628
            Boolean Flag = false;
629
            dragRect.Inflate(width / 10, height / 10);
630
            List<MarkupToPDF.Common.CommentUserInfo> adornerSet = new List<MarkupToPDF.Common.CommentUserInfo>();
631
            var Items = ViewerDataModel.Instance.MarkupControls_USER.ToList();
632

    
633
            dragRect = new Rect(x, y, width, height);
634
            dragRect.Inflate(width / 10, height / 10);
635

    
636
            //move.mousemode = MarkupToPDF.Controls.Common.MouseMode.Selecting;
637
            //move.
638
            foreach (var item in Items)
639
            {
640
                Flag = SelectionSet.Instance.SelectControl(item, dragRect);
641

    
642
                if (Flag)
643
                {
644
                    adornerSet.Add(item);
645
                    ViewerDataModel.Instance.MarkupControls_USER.Remove(item);
646

    
647
                    this.ParentOfType<MainWindow>().dzMainMenu.Control_Style(item);
648
                    UndoData.Markup_List.Add(multi_Undo_Data);
649
                    multi_Undo_Data = new Multi_Undo_data();
650
                    if (item.GroupID > 0)
651
                    {
652

    
653
                    }
654
                }
655
            }
656
            if (adornerSet.Count > 0)
657
            {
658
                ViewerDataModel.Instance.UndoDataList.Where(data => data.IsUndo == true).ToList().ForEach(i =>
659
                {
660
                    ViewerDataModel.Instance.UndoDataList.Remove(i);
661
                });
662
                ViewerDataModel.Instance.UndoDataList.Add(UndoData);
663

    
664
                Controls.AdornerFinal final = new Controls.AdornerFinal(adornerSet);
665
                this.ParentOfType<MainWindow>().dzMainMenu.SelectLayer.Children.Add(final);
666
            }
667
        }
668

    
669
        ///private Move move;
670
        #region Symbol DoubleClick Event
671
        private void Move_Symbol(object sender, MouseButtonEventArgs e)
672
        {
673
            try
674
            {
675
                Type type = e.OriginalSource.GetType();
676
                string id = string.Empty;
677
                Logger.sendResLog("Move_Symbol", type.Name, 0);
678
                if (type.Name == "Image")
679
                {
680
                    id = ((e.OriginalSource as Image).DataContext as Symbol_Custom).ID;
681
                }
682
                else if (type.Name == "Border")
683
                {
684
                    id = ((e.OriginalSource as Border).DataContext as Symbol_Custom).ID;
685
                }
686
                else if (type.Name == "TextBox")
687
                {
688
                    id = ((e.OriginalSource as TextBox).DataContext as Symbol_Custom).ID;
689
                }
690

    
691
                IsMouseDown = true;
692

    
693
                if (e.ClickCount > 1)
694
                {
695
                    this.PlaceSymbol(id);
696
                }
697
            }
698
            catch(Exception ex)
699
            {
700
                Logger.sendResLog("Move_Symbol", ex.Message, 0);
701
            }
702
        }
703
        #endregion
704

    
705
        #region Private Symbol Rename Event
706
        private void Rename_Symbol(object sender, RoutedEventArgs e)
707
        {
708
            if (lstSymbolPrivate.SelectedItem == null)
709
            {
710
                DialogMessage_Alert("Please Select Symbol", "Alert");
711
                return;
712
            }
713

    
714
            DialogParameters parameters = new DialogParameters()
715
            {
716
                Owner = Application.Current.MainWindow,
717
                Closed = (obj, args) => this.MarkupReNamePromptClose("", args),
718
                //DefaultPromptResultValue = "Custom State",
719
                DefaultPromptResultValue = (lstSymbolPrivate.SelectedItem as Symbol_Custom).Name,
720
                Content = "Name :",
721
                Header = "Update Custom Symbol Name",
722
                Theme = new VisualStudio2013Theme(),
723
                ModalBackground = new SolidColorBrush { Color = Colors.Black, Opacity = 0.6 },
724
            };
725
            RadWindow.Prompt(parameters);
726

    
727
        }
728
        #endregion
729

    
730
        #region Public Symbol Rename Event
731
        private void Rename_Symbol_Public(object sender, RoutedEventArgs e)
732
        {
733
            if (lstSymbolPublic.SelectedItem == null)
734
            {
735
                DialogMessage_Alert("Please Select Symbol", "Alert");
736
                return;
737
            }
738

    
739
            DialogParameters parameters = new DialogParameters()
740
            {
741
                Owner = Application.Current.MainWindow,
742
                Closed = (obj, args) => this.MarkupReNamePromptClose("", args),
743
                //DefaultPromptResultValue = "Custom State",
744
                DefaultPromptResultValue = (lstSymbolPublic.SelectedItem as Symbol_Custom).Name,
745
                Content = "Name :",
746
                Header = "Update Custom Symbol Name",
747
                Theme = new VisualStudio2013Theme(),
748
                ModalBackground = new SolidColorBrush { Color = Colors.Black, Opacity = 0.6 },
749
            };
750
            RadWindow.Prompt(parameters);
751

    
752
        }
753
        #endregion
754
        #region Symbol Rename Close Event
755
        private void MarkupReNamePromptClose(string data, WindowClosedEventArgs args)
756
        {
757
            if (args.DialogResult != null && args.DialogResult.Value)
758
            {
759
                if(RadTab.SelectedIndex == 0)
760
                {
761
                    string _id = (lstSymbolPrivate.SelectedItem as Symbol_Custom).ID;
762
                    string _name = args.PromptResult;
763
                    Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.RenameSymbolCompleted += BaseClient_RenameSymbolCompleted;
764
                    Logger.sendReqLog("RenameSymbolAsync: ", _id + "," + _name, 1);
765
                    Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.RenameSymbolAsync(_id, _name, RadTab.SelectedIndex);
766
                }
767
                else
768
                {
769
                    string _id = (lstSymbolPublic.SelectedItem as Symbol_Custom).ID;
770
                    string _name = args.PromptResult;
771
                    Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.RenameSymbolCompleted += BaseClient_RenameSymbolCompleted;
772
                    Logger.sendReqLog("RenameSymbolAsync: ", _id + "," + _name, 1);
773
                    Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.RenameSymbolAsync(_id, _name, RadTab.SelectedIndex);
774
                }
775
            }
776
        }
777

    
778
        private void BaseClient_RenameSymbolCompleted(object sender, ServiceDeepView.RenameSymbolCompletedEventArgs e)
779
        {
780
            Logger.sendResLog("RenameSymbolCompleted", "UserState : " + e.UserState + "\r Result :" + e.Result + "\r Cancelled :" + e.Cancelled + "\r Error :" + e.Error, 1);
781
            DataBind();
782
        }
783
        #endregion
784

    
785
        #region Wheel Event
786
        private void lstSymbolPrivate_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
787
        {
788
            ScView.ScrollToVerticalOffset(ScView.ContentVerticalOffset - (e.Delta / 2));
789
        }
790
        private void lstSymbolPublic_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
791
        {
792
            ScView_Public.ScrollToVerticalOffset(ScView_Public.ContentVerticalOffset - (e.Delta / 2));
793
        }
794
        #endregion
795

    
796
        #region Tab Selection Event
797
        private void RadTabControl_PreviewSelectionChanged(object sender, RadSelectionChangedEventArgs e)
798
        {
799
            foreach (var item in (e.OriginalSource as RadTabControl).Items)
800
            {
801
                (item as RadTabItem).FontWeight = FontWeights.Normal;
802
            }
803
            ((e.OriginalSource as RadTabControl).SelectedItem as RadTabItem).FontWeight = FontWeights.Bold;
804
        }
805
        #endregion
806

    
807
        #region Department Selection Event
808
        private void deptlist_SelectionChanged(object sender, SelectionChangedEventArgs e)
809
        {
810
            DataBind();
811
        }
812
        #endregion
813

    
814
        #endregion
815

    
816
        private void lstSymbolPrivate_PreviewMouseUp(object sender, MouseButtonEventArgs e)
817
        {
818

    
819
        }
820

    
821
        private void lstSymbolPrivate_MouseLeave(object sender, MouseEventArgs e)
822
        {
823

    
824
        }
825

    
826
        private void lstSymbolPrivate_MouseDown(object sender, MouseButtonEventArgs e)
827
        {
828

    
829
        }
830

    
831
        private void StackPanel_MouseLeave(object sender, MouseEventArgs e)
832
        {
833
            if(IsMouseDown && e.LeftButton == MouseButtonState.Pressed)
834
            {
835
                ViewerDataModel.Instance.SystemMain.dzMainMenu.Symbol_ID = moveItem_id;
836
            }
837
            else
838
            {
839
                IsMouseDown = false;
840
            }
841
        }
842

    
843
        private void StackPanel_MouseUp(object sender, MouseButtonEventArgs e)
844
        {
845
            IsMouseDown = false;
846
        }
847

    
848
        /// <summary>
849
        /// place symbol which user select
850
        /// </summary>
851
        /// <author>humkyung</author>
852
        /// <date>2018.06.14</date>
853
        /// <param name="sender"></param>
854
        /// <param name="e"></param>
855
        private void Place_Symbol(object sender, RoutedEventArgs e)
856
        {
857
            if (lstSymbolPrivate.SelectedItem == null)
858
            {
859
                DialogMessage_Alert("Please Select Symbol",  "Alert");
860
                return;
861
            }
862

    
863
            string id = (lstSymbolPrivate.SelectedItem as Symbol_Custom).ID;
864
            this.PlaceSymbol(id);
865
            Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.mouseHandlingMode = IKCOM.MouseHandlingMode.None;
866
        }
867

    
868
        private void Place_Symbol_Public(object sender, RoutedEventArgs e)
869
        {
870
            if (lstSymbolPublic.SelectedItem == null)
871
            {
872
                DialogMessage_Alert("Please Select Symbol", "Alert");
873
                return;
874
            }
875

    
876
            string id = (lstSymbolPublic.SelectedItem as Symbol_Custom).ID;
877
            this.PlaceSymbol(id);
878
            Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.mouseHandlingMode = IKCOM.MouseHandlingMode.None;
879
        }
880

    
881
        private void Image_Place_Register(object sender, RoutedEventArgs e)
882
        {
883
            SyncInit();
884
            ViewerDataModel.Instance.SystemMain.dzMainMenu.controlType = MarkupToPDF.Controls.Common.ControlType.ImgControl;
885
            //캡쳐 하기 전에 코멘트 저장
886
            var mainwindow = (RadWindowManager.Current.GetWindows().Find(x => x is MainWindow) as MainWindow);
887

    
888
            if (Common.ViewerDataModel.Instance.MarkupControls_USER.Count > 0 || mainwindow.dzMainMenu.SelectLayer.Children.Count > 0)
889
            {
890
                var menu = mainwindow.dzMainMenu;
891
                SelectionSet.Instance.UnSelect(menu);
892
                if (menu.PreviewUserMarkupInfoItem != null && menu.PreviewUserMarkupInfoItem.IsPreviewUser == true)
893
                {
894
                    mainwindow.dzTopMenu.SaveEventCallback(null, null);
895
                }
896
                else if (menu.gridViewMarkup.SelectedItems.Count == 0 || (menu.gridViewMarkup.SelectedItems.FirstOrDefault() as IKCOM.MarkupInfoItem).UserID != App.ViewInfo.UserID)
897
                {
898

    
899
                }
900
                else
901
                {
902
                    mainwindow.dzTopMenu.SaveEventCallback(null, null);
903
                }
904
            }
905
            Application.Current.MainWindow.Focus();
906
            Common.ViewerDataModel.Instance.Capture_Opacity = 0.49;
907
            mainwindow.dzMainMenu.mouseHandlingMode = IKCOM.MouseHandlingMode.Capture;
908
        }
909

    
910

    
911
        private void SyncInit()
912
        {
913
            try
914
            {
915
                if (!ViewerDataModel.Instance.SystemMain.dzMainMenu.testPanel2.IsHidden)
916
                {
917
                    ViewerDataModel.Instance.SystemMain.dzMainMenu.testPanel2.IsHidden = true;
918
                    ViewerDataModel.Instance.PageBalanceMode = false;
919
                    ViewerDataModel.Instance.PageBalanceNumber = 0;
920
                    ViewerDataModel.Instance.PageNumber = 0;
921
                    ViewerDataModel.Instance.MarkupControls_Sync.Clear();
922
                    ViewerDataModel.Instance.SystemMain.dzMainMenu.gridViewRevMarkup.Visibility = Visibility.Collapsed;
923
                    ViewerDataModel.Instance.SystemMain.dzMainMenu.UserList.IsChecked = false;
924
                    ViewerDataModel.Instance.SystemMain.dzMainMenu.BalanceMode.IsChecked = false;
925
                }
926
            }
927
            catch (Exception ex)
928
            {
929
                Logger.sendResLog("SyncInit", ex.Message, 0);
930
            }
931
        }
932

    
933
        private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
934
        {
935
            var block = sender as TextBox;
936
            block.Focusable = true;
937
               
938
        }
939

    
940
        private void TextBlock_MouseEnter(object sender, MouseEventArgs e)
941
        {
942
            var block = sender as TextBox;
943
            if (block != null)
944
            {
945
                //block.Text = "Enter";
946

    
947
            }
948
        }
949

    
950
        private void OnKeyDownHandler(object sender, KeyEventArgs e)
951
        {
952
            if (e.Key == Key.Return)
953
            {
954
                Type type = e.OriginalSource.GetType();
955
                string id = string.Empty;
956
                Logger.sendResLog("Move_Symbol", type.Name, 0);
957
                if (type.Name == "Image")
958
                {
959
                    id = ((e.OriginalSource as Image).DataContext as Symbol_Custom).ID;
960
                }
961
                else if (type.Name == "Border")
962
                {
963
                    id = ((e.OriginalSource as Border).DataContext as Symbol_Custom).ID;
964
                }
965
                else if (type.Name == "TextBox")
966
                {
967
                    id = ((e.OriginalSource as TextBox).DataContext as Symbol_Custom).ID;
968
                }
969

    
970
                //((System.Windows.Controls.TextBox)sender).Text;
971

    
972
                if (RadTab.SelectedIndex == 0)
973
                {
974
                    //string _id = (lstSymbolPrivate.SelectedItem as Symbol_Custom).ID;
975
                    string _name = ((System.Windows.Controls.TextBox)sender).Text;
976
                    Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.RenameSymbolCompleted += BaseClient_RenameSymbolCompleted;
977
                    Logger.sendReqLog("RenameSymbolAsync: ", id + "," + _name, 1);
978
                    Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.RenameSymbolAsync(id, _name, RadTab.SelectedIndex);
979
                }
980
                else
981
                {
982
                    //string _id = (lstSymbolPublic.SelectedItem as Symbol_Custom).ID;
983
                    string _name = ((System.Windows.Controls.TextBox)sender).Text;
984
                    Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.RenameSymbolCompleted += BaseClient_RenameSymbolCompleted;
985
                    Logger.sendReqLog("RenameSymbolAsync: ", id + "," + _name, 1);
986
                    Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.BaseClient.RenameSymbolAsync(id, _name, RadTab.SelectedIndex);
987
                }
988
                
989
            }
990
        }
991
    }
992
}
클립보드 이미지 추가 (최대 크기: 500 MB)