프로젝트

일반

사용자정보

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

markus / KCOM / Controls / Symbol.xaml.cs @ 3797ff05

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

1 787a4489 KangIngu
using KCOM.Common;
2
using KCOM.Events;
3 5ce56a3a KangIngu
using KCOMDataModel.Common;
4
using KCOMDataModel.DataModel;
5 787a4489 KangIngu
using System;
6
using System.Collections.Generic;
7
using System.Linq;
8
using System.Text;
9
using System.Windows;
10
using System.Windows.Controls;
11
using System.Windows.Data;
12
using System.Windows.Documents;
13
using System.Windows.Input;
14
using System.Windows.Media;
15
using System.Windows.Media.Imaging;
16
using System.Windows.Navigation;
17
using System.Windows.Shapes;
18
using Telerik.Windows.Controls;
19 5ce56a3a KangIngu
using Telerik.Windows.Controls.DragDrop;
20 787a4489 KangIngu
21
namespace KCOM.Controls
22
{
23
    public class Symbol_Custom
24
    {
25 5ce56a3a KangIngu
        public string ID { get; set; }
26 787a4489 KangIngu
        public string Name { get; set; }
27
        public string ImageUri { get; set; }
28
    }
29
30
    /// <summary>
31
    /// Symbol.xaml에 대한 상호 작용 논리
32
    /// </summary>
33
    public partial class Symbol : UserControl
34
    {
35
        AdornerFinal finalItem;
36 5ce56a3a KangIngu
        bool IsMouseDown = false;
37
        string moveItem_id = "";
38 787a4489 KangIngu
        public string filename { get; set; }
39
        MarkupToPDF.Controls.Parsing.LayerControl layer = new MarkupToPDF.Controls.Parsing.LayerControl();
40
41
        public Symbol()
42
        {
43
            InitializeComponent();
44 089566c0 humkyung
            
45
            RadDragAndDropManager.AddDragInfoHandler(lstSymbolPrivate, OnDragPrivateInfo);
46
            RadDragAndDropManager.AddDragQueryHandler(lstSymbolPrivate, OnDragPrivateQuery);
47
            RadDragAndDropManager.SetAllowDrag(lstSymbolPrivate, true);
48 787a4489 KangIngu
49
            DataBind();
50
        }
51
52 5ce56a3a KangIngu
        private void OnDragPrivateInfo(object sender, DragDropEventArgs e)
53
        {
54
        }
55
56
        private void OnDragPrivateQuery(object sender, DragDropQueryEventArgs e)
57
        {
58
            if (e.Options.Status == DragStatus.DragQuery)
59
            {
60
                //var draggedListBoxItem = (e.Options.Source as System.Windows.Controls.ListBox).SelectedItem;
61
                //BitmapImage im = new BitmapImage(new Uri((draggedListBoxItem as DeepView.ServiceDeepView_Symbol.SymbolPrivate).ImageUri));
62
                //ImageSource _source = im;
63
                //Image img = new Image();
64
                //img.Source = _source;
65
66
                //e.Options.Payload = im;
67
                //var dragCue = new Image();
68
                //dragCue.Source = img.Source;
69
                //dragCue.Width = 0;
70
                //dragCue.Height = 0;
71
                //e.Options.DragCue = dragCue;
72
73
74
                //PayLoadAdorner = new AdornerFinal();
75
                //DeepView.ServiceDeepView_Symbol.SymbolPrivate tempDragableControl = (e.Options.Source as System.Windows.Controls.ListBox).SelectedItem as DeepView.ServiceDeepView_Symbol.SymbolPrivate;
76
                //var xamldata = tempDragableControl.Data;
77
                ////this.DeepLayer.markupParse(xamldata, this.DeepLayer._TempLayer, "복사된 데이터_이름으로 수정해야함");
78
                //PayLoadAdorner = this.DeepLayer.markupParseToAdorner(xamldata, this.DeepLayer._SelectLayer, "");
79
                //this.DeepLayer._SelectLayer.Children.Add(PayLoadAdorner);
80
            }
81
82
            e.QueryResult = true;
83
            e.Handled = true;
84
        }
85
86 787a4489 KangIngu
        private void DataBind()
87
        {
88 5ce56a3a KangIngu
            //lstSymbolPrivate.ItemsSource = null;
89
            //lstSymbolPublic.ItemsSource = null;
90 787a4489 KangIngu
91
            Symbol_Custom Custom = new Symbol_Custom();
92
            List<Symbol_Custom> Custom_List = new List<Symbol_Custom>();
93
94 5ce56a3a KangIngu
            using (KCOMEntities Entity = new KCOMEntities(ConnectStringBuilder.KCOMConnectionString().ToString()))
95
            {
96
                var symbol_Private = Entity.SYMBOL_PRIVATE.Where(data => data.MEMBER_USER_ID == App.ViewInfo.UserID).ToList();
97
                foreach(var item in symbol_Private)
98
                {
99
                    Custom.Name = item.NAME;
100
                    Custom.ImageUri = item.IMAGE_URL;
101
                    Custom.ID = item.ID;
102
                    Custom_List.Add(Custom);
103
                    Custom = new Symbol_Custom();
104
                }
105
                lstSymbolPrivate.ItemsSource = Custom_List;
106
107
                Custom = new Symbol_Custom();
108
                Custom_List = new List<Symbol_Custom>();
109
110
                deptlist.ItemsSource = Entity.SYMBOL_PUBLIC.Select(data => data.DEPARTMENT).ToList();
111
112
                var symbol_Public = Entity.SYMBOL_PUBLIC.ToList();
113
114
                if (deptlist.SelectedValue != null)
115
                {
116
                    symbol_Public = symbol_Public.Where(data => data.DEPARTMENT == deptlist.SelectedValue.ToString()).ToList();
117
                }
118
                //var symbol_Public = Entity.SYMBOL_PUBLIC.Where(data => data.DEPARTMENT == "PIPING").ToList();
119
120
                foreach (var item in symbol_Public)
121
                {
122
                    Custom.Name = item.NAME;
123
                    Custom.ImageUri = item.IMAGE_URL;
124
                    Custom.ID = item.ID;
125
                    Custom_List.Add(Custom);
126
                    Custom = new Symbol_Custom();
127
                }
128
                lstSymbolPublic.ItemsSource = Custom_List;
129
            }
130
        }
131
132
        public PngBitmapEncoder symImage(string data)
133
        {
134
135
            Canvas _canvas = new Canvas();
136
            _canvas.Background = Brushes.White;
137
            _canvas.Width = finalItem.BorderSize.Width;
138
            _canvas.Height = finalItem.BorderSize.Height;
139
            layer.markupParse(data, _canvas, "#FFFF0000", "");
140
141
            BitmapEncoder encoder = new PngBitmapEncoder();
142
143
144
            RenderTargetBitmap renderBitmap = new RenderTargetBitmap((int)_canvas.Width + 50, (int)_canvas.Height + 50, 96d, 96d, PixelFormats.Pbgra32);
145
146
            DrawingVisual dv = new DrawingVisual();
147
148
            _canvas.Measure(new System.Windows.Size(finalItem.BorderSize.Width + 50, finalItem.BorderSize.Height + 50));
149
            //_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)));
150
            _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)));
151
152
            using (DrawingContext ctx = dv.RenderOpen())
153
            {
154
                VisualBrush vb = new VisualBrush(_canvas);
155
                //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)));
156
                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)));
157
            }
158
159
            try
160
            {
161
                renderBitmap.Render(dv);
162
163
                GC.Collect();
164
                GC.WaitForPendingFinalizers();
165
                GC.Collect();
166
                //bitmap.Render(controlToConvert);
167
                // encode png data
168
                PngBitmapEncoder pngEncoder = new PngBitmapEncoder();
169
                // puch rendered bitmap into it
170
                pngEncoder.Interlace = PngInterlaceOption.Off;
171
                pngEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
172
                return pngEncoder;
173
174
            }
175
            catch (Exception ex)
176
            {
177
                return null;
178
            }
179 787a4489 KangIngu
180
        }
181
182 5ce56a3a KangIngu
        public void DialogMessage_Alert(string content, string header)
183
        {
184
            var box = new TextBlock();
185
            box.MinWidth = 400;
186
            box.FontSize = 11;
187
            //box.FontSize = 12;
188
            box.Text = content;
189
            box.TextWrapping = System.Windows.TextWrapping.Wrap;
190
191
            DialogParameters parameters = new DialogParameters()
192
            {
193
                Content = box,
194
                Header = header,
195
                Theme = new VisualStudio2013Theme(),
196
                ModalBackground = new SolidColorBrush { Color = Colors.Black, Opacity = 0.6 },
197
            };
198
            RadWindow.Alert(parameters);
199
        }
200
201
        #region Event
202
203
        #region Symbol Add Event
204 787a4489 KangIngu
        private void Create_Symbol(object sender, RoutedEventArgs e)
205
        {
206
            MarkupToPDF.Controls.Parsing.LayerControl.MarkupReturn markupReturn = new MarkupToPDF.Controls.Parsing.LayerControl.MarkupReturn();
207
208
            if (Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children.Count < 1) //선택된 것이 없으면
209
            {
210
                DialogMessage_Alert("Please Select Controls", "Alert");
211
            }
212
            else //선택된 것이 있으면
213
            {
214
                string MarkupData = "";
215
                finalItem = new AdornerFinal();
216
217
                foreach (var item in Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children)
218
                {
219
                    if (item.GetType().Name == "AdornerFinal")
220
                    {
221
                        finalItem = (item as Controls.AdornerFinal);
222
                        foreach (var InnerItem in (item as Controls.AdornerFinal).MemberSet.Cast<Controls.AdornerMember>())
223
                        {
224
                            if (!ViewerDataModel.Instance.MarkupControls.Contains(InnerItem.DrawingData))
225
                            {
226
                                markupReturn = layer.MarkupToString(InnerItem.DrawingData as MarkupToPDF.Common.CommentUserInfo, App.ViewInfo.UserID);
227
                                MarkupData += markupReturn.ConvertData;
228
                            }
229
                        }
230
                    }
231
                }
232
                DialogParameters parameters = new DialogParameters()
233
                {
234
                    Closed = (obj, args) => this.MarkupNamePromptClose(MarkupData, args),
235
                    DefaultPromptResultValue = "Custom State",
236
                    Content = "Name :",
237
                    Header = "Insert Custom Symbol Name",
238
                    Theme = new VisualStudio2013Theme(),
239
                    ModalBackground = new SolidColorBrush { Color = Colors.Black, Opacity = 0.6 },
240
                };
241
                RadWindow.Prompt(parameters);
242
            }
243
244
        }
245 5ce56a3a KangIngu
        #endregion
246 787a4489 KangIngu
247 5ce56a3a KangIngu
        #region Symbol Add Close Event 
248 787a4489 KangIngu
        private void MarkupNamePromptClose(string data, WindowClosedEventArgs args)
249
        {
250
            Save save = new Save();
251
252
            if (args.DialogResult.Value)
253
            {
254
                PngBitmapEncoder _Encoder = symImage(data);
255
256
                System.IO.MemoryStream fs = new System.IO.MemoryStream();
257
                _Encoder.Save(fs);
258
                System.Drawing.Image ImgOut = System.Drawing.Image.FromStream(fs);
259
260
                byte[] Img_byte = fs.ToArray();
261
262
                kr.co.devdoftech.cloud.FileUpload fileUploader = new kr.co.devdoftech.cloud.FileUpload();
263
                filename = fileUploader.Run(App.ViewInfo.ProjectNO, Common.ViewerDataModel.Instance.SystemMain.dzMainMenu._DocItem.DOCUMENT_NO, App.ViewInfo.UserID, Save.shortGuid() + ".png", Img_byte);
264
265
                save.SymbolSave(args.PromptResult, filename, data);
266 5ce56a3a KangIngu
267
                DataBind();
268 787a4489 KangIngu
            }
269
        }
270 5ce56a3a KangIngu
        #endregion
271 787a4489 KangIngu
272 5ce56a3a KangIngu
        #region Symbol Delete Event
273
        private void Remove_Symbol(object sender, RoutedEventArgs e)
274 787a4489 KangIngu
        {
275 5ce56a3a KangIngu
            if (lstSymbolPrivate.SelectedItem == null)
276
            {
277
                DialogMessage_Alert("Please Select Symbol", "Alert");
278
                return;
279
            }
280 787a4489 KangIngu
281 5ce56a3a KangIngu
            using (KCOMEntities Entity = new KCOMEntities(ConnectStringBuilder.KCOMConnectionString().ToString()))
282
            {
283
                string delItem_ID = (lstSymbolPrivate.SelectedItem as Symbol_Custom).ID;
284
                var delitem = Entity.SYMBOL_PRIVATE.Where(data => data.ID == delItem_ID).FirstOrDefault();
285
                Entity.SYMBOL_PRIVATE.DeleteObject(delitem);
286
                Entity.SaveChanges();
287 787a4489 KangIngu
288 5ce56a3a KangIngu
                DataBind();
289
            }
290
        }
291
        #endregion
292 787a4489 KangIngu
293 702abd98 humkyung
        /// <summary>
294
        /// place symbol which has given id to original position which is created
295
        /// </summary>
296
        /// <date>2018.06.14</date>
297
        /// <param name="id"></param>
298
        private void PlaceSymbol(string id)
299 5ce56a3a KangIngu
        {
300 702abd98 humkyung
            string Data_ = "";
301 787a4489 KangIngu
302 702abd98 humkyung
            try
303 5ce56a3a KangIngu
            {
304
                using (KCOMEntities Entity = new KCOMEntities(ConnectStringBuilder.KCOMConnectionString().ToString()))
305
                {
306
                    if (RadTab.SelectedIndex == 0)
307 702abd98 humkyung
                        Data_ = Entity.SYMBOL_PRIVATE.Where(data => data.ID == id).FirstOrDefault().DATA;
308 5ce56a3a KangIngu
                    else
309 702abd98 humkyung
                        Data_ = Entity.SYMBOL_PUBLIC.Where(data => data.ID == id).FirstOrDefault().DATA;
310 5ce56a3a KangIngu
                }
311 787a4489 KangIngu
312 5ce56a3a KangIngu
                if (Data_.Contains("|DZ|"))
313
                {
314
                    List<MarkupToPDF.Common.CommentUserInfo> adornerSet = new List<MarkupToPDF.Common.CommentUserInfo>();
315
316
                    string[] delimiterChars = { "|DZ|" };
317
                    string[] data = Data_.Split(delimiterChars, StringSplitOptions.RemoveEmptyEntries);
318
319
                    foreach (string parse in data)
320
                    {
321
                        if (parse != "")
322
                        {
323
                            System.Windows.Controls.Control item = layer.markupParse_Paste(parse, ViewerDataModel.Instance.MarkupControls_USER);
324
                            (item as MarkupToPDF.Common.CommentUserInfo).CommentID = Events.Save.shortGuid();
325
326
                            ViewerDataModel.Instance.MarkupControls.Remove(item as MarkupToPDF.Common.CommentUserInfo);
327
                            ViewerDataModel.Instance.MarkupControls_USER.Remove(item as MarkupToPDF.Common.CommentUserInfo);
328
329
                            adornerSet.Add(item as MarkupToPDF.Common.CommentUserInfo);
330
                        }
331
                    }
332
                    Controls.AdornerFinal final = new Controls.AdornerFinal(adornerSet);
333
334
                    ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children.Add(final);
335
                }
336
            }
337 702abd98 humkyung
            catch(Exception ex)
338
            {
339
                this.ParentOfType<MainWindow>().dzMainMenu.DialogMessage_Alert(ex.Message,  "Error");
340
            }
341
        }
342
343
        #region Symbol DoubleClick Event
344
        private void Move_Symbol(object sender, MouseButtonEventArgs e)
345
        {
346
            string id = ((e.OriginalSource as Image).DataContext as Symbol_Custom).ID;
347
            IsMouseDown = true;
348
            if (e.ClickCount > 1)
349
            {
350
                this.PlaceSymbol(id);
351
            }
352 5ce56a3a KangIngu
        }
353
        #endregion
354
355
        #region Symbol Rename Event
356
        private void Rename_Symbol(object sender, RoutedEventArgs e)
357
        {
358
            if (lstSymbolPrivate.SelectedItem == null)
359 787a4489 KangIngu
            {
360 5ce56a3a KangIngu
                DialogMessage_Alert("Please Select Symbol", "Alert");
361
                return;
362 787a4489 KangIngu
            }
363
364 5ce56a3a KangIngu
            DialogParameters parameters = new DialogParameters()
365 787a4489 KangIngu
            {
366 5ce56a3a KangIngu
                Closed = (obj, args) => this.MarkupReNamePromptClose("", args),
367
                //DefaultPromptResultValue = "Custom State",
368
                DefaultPromptResultValue = (lstSymbolPrivate.SelectedItem as Symbol_Custom).Name,
369
                Content = "Name :",
370
                Header = "Update Custom Symbol Name",
371
                Theme = new VisualStudio2013Theme(),
372
                ModalBackground = new SolidColorBrush { Color = Colors.Black, Opacity = 0.6 },
373
            };
374
            RadWindow.Prompt(parameters);
375 787a4489 KangIngu
376 5ce56a3a KangIngu
        }
377
        #endregion
378 787a4489 KangIngu
379 5ce56a3a KangIngu
        #region Symbol Rename Close Event
380
        private void MarkupReNamePromptClose(string data, WindowClosedEventArgs args)
381
        {
382
            if (args.DialogResult != null && args.DialogResult.Value)
383
            {
384
                using (KCOMEntities Entity = new KCOMEntities(ConnectStringBuilder.KCOMConnectionString().ToString()))
385
                {
386
                    string ID = (lstSymbolPrivate.SelectedItem as Symbol_Custom).ID;
387
                    var UpdateItem = Entity.SYMBOL_PRIVATE.Where(info => info.ID == ID).FirstOrDefault();
388
389
                    UpdateItem.NAME = args.PromptResult;
390
                    Entity.SaveChanges();
391
                    DataBind();
392
                    //args.PromptResult
393
                }
394 787a4489 KangIngu
            }
395 5ce56a3a KangIngu
        }
396
        #endregion
397
398
        #region Wheel Event
399
        private void lstSymbolPrivate_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
400
        {
401
            ScView.ScrollToVerticalOffset(ScView.ContentVerticalOffset - (e.Delta / 2));
402
        }
403
        private void lstSymbolPublic_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
404
        {
405
            ScView_Public.ScrollToVerticalOffset(ScView_Public.ContentVerticalOffset - (e.Delta / 2));
406
        }
407
        #endregion
408
409
        #region Tab Selection Event
410
        private void RadTabControl_PreviewSelectionChanged(object sender, RadSelectionChangedEventArgs e)
411
        {
412
            foreach (var item in (e.OriginalSource as RadTabControl).Items)
413 787a4489 KangIngu
            {
414 5ce56a3a KangIngu
                (item as RadTabItem).FontWeight = FontWeights.Normal;
415 787a4489 KangIngu
            }
416 5ce56a3a KangIngu
            ((e.OriginalSource as RadTabControl).SelectedItem as RadTabItem).FontWeight = FontWeights.Bold;
417
        }
418
        #endregion
419 787a4489 KangIngu
420 5ce56a3a KangIngu
        #region Department Selection Event
421
        private void deptlist_SelectionChanged(object sender, SelectionChangedEventArgs e)
422
        {
423
            DataBind();
424 787a4489 KangIngu
        }
425 5ce56a3a KangIngu
        #endregion
426 787a4489 KangIngu
427 5ce56a3a KangIngu
        #endregion
428 787a4489 KangIngu
429 5ce56a3a KangIngu
        private void lstSymbolPrivate_PreviewMouseUp(object sender, MouseButtonEventArgs e)
430
        {
431
432
        }
433
434
        private void lstSymbolPrivate_MouseLeave(object sender, MouseEventArgs e)
435
        {
436
437
        }
438
439
        private void lstSymbolPrivate_MouseDown(object sender, MouseButtonEventArgs e)
440 787a4489 KangIngu
        {
441
442
        }
443
444 5ce56a3a KangIngu
        private void StackPanel_MouseLeave(object sender, MouseEventArgs e)
445 787a4489 KangIngu
        {
446 5ce56a3a KangIngu
            if(IsMouseDown && e.LeftButton == MouseButtonState.Pressed)
447
            {
448
                ViewerDataModel.Instance.SystemMain.dzMainMenu.Symbol_ID = moveItem_id;
449
            }
450
            else
451
            {
452
                IsMouseDown = false;
453
            }
454
        }
455 787a4489 KangIngu
456 5ce56a3a KangIngu
        private void StackPanel_MouseUp(object sender, MouseButtonEventArgs e)
457
        {
458
            IsMouseDown = false;
459 787a4489 KangIngu
        }
460 702abd98 humkyung
461
        /// <summary>
462
        /// place symbol which user select
463
        /// </summary>
464
        /// <author>humkyung</author>
465
        /// <date>2018.06.14</date>
466
        /// <param name="sender"></param>
467
        /// <param name="e"></param>
468
        private void Place_Symbol(object sender, RoutedEventArgs e)
469
        {
470
            if (lstSymbolPrivate.SelectedItem == null)
471
            {
472
                DialogMessage_Alert("Please Select Symbol",  "Alert");
473
                return;
474
            }
475
476
            string id = (lstSymbolPrivate.SelectedItem as Symbol_Custom).ID;
477
            this.PlaceSymbol(id);
478
        }
479 787a4489 KangIngu
    }
480
}
클립보드 이미지 추가 (최대 크기: 500 MB)