markus / KCOM / Common / SelectionSet.cs @ 65768148
이력 | 보기 | 이력해설 | 다운로드 (6.21 KB)
1 |
using KCOM.Common; |
---|---|
2 |
using KCOM.Controls; |
3 |
using KCOM.Views; |
4 |
using MarkupToPDF.Common; |
5 |
using MarkupToPDF.Controls.Parsing; |
6 |
using MarkupToPDF.Controls.Polygon; |
7 |
using Newtonsoft.Json; |
8 |
using Newtonsoft.Json.Converters; |
9 |
using Newtonsoft.Json.Linq; |
10 |
using Newtonsoft.Json.Serialization; |
11 |
using System; |
12 |
using System.Collections; |
13 |
using System.Collections.Generic; |
14 |
using System.ComponentModel; |
15 |
using System.Data; |
16 |
using System.IO; |
17 |
using System.Linq; |
18 |
using System.Reflection; |
19 |
using System.Runtime.Serialization.Formatters; |
20 |
using System.Runtime.Serialization.Formatters.Binary; |
21 |
using System.Runtime.Serialization.Json; |
22 |
using System.Text; |
23 |
using System.Windows; |
24 |
using System.Windows.Media; |
25 |
using System.Xml; |
26 |
using System.Xml.Serialization; |
27 |
|
28 |
namespace KCOM.Common |
29 |
{ |
30 |
public class SelectionSet |
31 |
{ |
32 |
private static readonly SelectionSet _instance = new SelectionSet(); |
33 |
|
34 |
// Explicit static constructor to tell C# compiler |
35 |
// not to mark type as beforefieldinit |
36 |
static SelectionSet() |
37 |
{ |
38 |
} |
39 |
|
40 |
private SelectionSet() |
41 |
{ |
42 |
} |
43 |
|
44 |
public static SelectionSet Instance |
45 |
{ |
46 |
get |
47 |
{ |
48 |
return _instance; |
49 |
} |
50 |
} |
51 |
|
52 |
public List<CommentUserInfo> SelectedItems |
53 |
{ |
54 |
get |
55 |
{ |
56 |
List<CommentUserInfo> res = new List<CommentUserInfo>(); |
57 |
foreach (var item in Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children) |
58 |
{ |
59 |
if (item.GetType().Name == "AdornerFinal") |
60 |
{ |
61 |
foreach (var InnerItem in (item as Controls.AdornerFinal).Members.Cast<Controls.AdornerMember>()) |
62 |
{ |
63 |
res.Add(InnerItem.DrawingData as MarkupToPDF.Common.CommentUserInfo); |
64 |
} |
65 |
} |
66 |
} |
67 |
|
68 |
return res; |
69 |
} |
70 |
} |
71 |
|
72 |
/// <summary> |
73 |
/// select all controls |
74 |
/// - unselect selected items |
75 |
/// - adornerset을 생성하고 SelectLayer에 추가한다 |
76 |
/// </summary> |
77 |
public void SelectAll() |
78 |
{ |
79 |
/// 선택된 어도너가 있을 시 취소하고 전체 선택 |
80 |
this.UnSelect(Common.ViewerDataModel.Instance.SystemMain.dzMainMenu); |
81 |
|
82 |
List<MarkupToPDF.Common.CommentUserInfo> adornerSet = new List<MarkupToPDF.Common.CommentUserInfo>(); |
83 |
var controls = ViewerDataModel.Instance.MarkupControls_USER.Where(data => data.GetType().Name != "" |
84 |
&& data.Visibility != Visibility.Hidden).ToList(); |
85 |
|
86 |
foreach (var item in controls) adornerSet.Add(item); |
87 |
|
88 |
if (adornerSet.Count > 0) |
89 |
{ |
90 |
Controls.AdornerFinal final = new Controls.AdornerFinal(adornerSet); |
91 |
Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children.Add(final); |
92 |
} |
93 |
} |
94 |
|
95 |
/// <summary> |
96 |
/// select item which's bouding rectangle is inside of given rect |
97 |
/// </summary> |
98 |
/// <author>humkyung</author> |
99 |
/// <date>2018.06.14</date> |
100 |
/// <param name="rect"></param> |
101 |
public void SelectItemByRect(Rect rect, MainMenu mainMenu) |
102 |
{ |
103 |
var selected = |
104 |
from comment in ViewerDataModel.Instance.MarkupControls_USER |
105 |
where comment.Visibility != Visibility.Hidden && rect.Contains(comment.ItemRect) |
106 |
select comment; |
107 |
if (selected.Count() > 0) |
108 |
{ |
109 |
this.UnSelect(mainMenu); /// unselect alreay selected items |
110 |
|
111 |
foreach(var comment in selected) mainMenu.Control_Style(comment); |
112 |
|
113 |
List<MarkupToPDF.Common.CommentUserInfo> adornerSet = new List<MarkupToPDF.Common.CommentUserInfo>(); |
114 |
adornerSet.AddRange(selected); |
115 |
Controls.AdornerFinal final = new Controls.AdornerFinal(adornerSet); |
116 |
mainMenu.SelectLayer.Children.Add(final); |
117 |
} |
118 |
} |
119 |
|
120 |
/// <summary> |
121 |
/// unselect selected items |
122 |
/// </summary> |
123 |
/// <param name="mainMenu"></param> |
124 |
public void UnSelect(MainMenu mainMenu) |
125 |
{ |
126 |
try |
127 |
{ |
128 |
//Logger.sendCheckLog("pageNavigator_PageChanging_ReleaseAdorner", 1); |
129 |
if (mainMenu.SelectLayer.Children.Count > 0) |
130 |
{ |
131 |
foreach (var item in mainMenu.SelectLayer.Children) |
132 |
{ |
133 |
if (item.GetType().Name == "AdornerFinal") |
134 |
{ |
135 |
(item as AdornerFinal).unRegister(); |
136 |
|
137 |
foreach (var InnerItem in (item as AdornerFinal).Members.Cast<AdornerMember>()) |
138 |
{ |
139 |
if (!ViewerDataModel.Instance.MarkupControls_USER.Contains(InnerItem.DrawingData)) |
140 |
{ |
141 |
if (InnerItem.DrawingData.GetType().Name == "PolygonControl") |
142 |
{ |
143 |
if ((InnerItem.DrawingData as PolygonControl).CommentID == null) |
144 |
{ |
145 |
(InnerItem.DrawingData as PolygonControl).CommentID = Commons.shortGuid(); |
146 |
} |
147 |
} |
148 |
|
149 |
ViewerDataModel.Instance.MarkupControls_USER.Add(InnerItem.DrawingData as CommentUserInfo); |
150 |
} |
151 |
} |
152 |
} |
153 |
} |
154 |
mainMenu.SelectLayer.Children.Clear(); |
155 |
} |
156 |
} |
157 |
catch (Exception ex) |
158 |
{ |
159 |
Logger.sendResLog("ReleaseAdorner", ex.ToString(), 0); |
160 |
} |
161 |
} |
162 |
|
163 |
/// <summary> |
164 |
/// Control Select |
165 |
/// </summary> |
166 |
/// <author>humkyung</author> |
167 |
/// <date>2019.06.13</date> |
168 |
/// <param name="Control"></param> |
169 |
/// <param name="dragrect"></param> |
170 |
/// <returns></returns> |
171 |
public Boolean SelectControl(CommentUserInfo control, Rect dragrect) |
172 |
{ |
173 |
return dragrect.Contains(control.ItemRect); |
174 |
} |
175 |
} |
176 |
} |