프로젝트

일반

사용자정보

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

markus / KCOM / Events / RedoCommand.cs @ 873011c4

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

1 f816dd63 humkyung
using MarkupToPDF.Common;
2
using MarkupToPDF.Controls.Common;
3
using MarkupToPDF.Controls.Line;
4
using MarkupToPDF.Controls.Polygon;
5
using MarkupToPDF.Controls.Shape;
6
using MarkupToPDF.Controls.Text;
7
using MarkupToPDF.Controls.Etc;
8
using System;
9
using System.Collections.Generic;
10
using System.Linq;
11
using System.Text;
12
using System.Windows;
13
using System.Windows.Controls;
14
using System.Windows.Media;
15
using MarkupToPDF.Controls.Cad;
16
using KCOM.Common;
17
using KCOM.Controls;
18 4eb052e4 ljiyeon
using MarkupToPDF.Controls.Parsing;
19 f816dd63 humkyung
20
namespace KCOM.Events
21
{
22
    public class RedoCommand
23
    {
24
        private static readonly RedoCommand _instance = new RedoCommand();
25
26
        // Explicit static constructor to tell C# compiler
27
        // not to mark type as beforefieldinit
28
        static RedoCommand()
29
        {
30
        }
31
32
        private RedoCommand()
33
        {
34
        }
35
36
        public static RedoCommand Instance
37
        {
38
            get
39
            {
40
                return _instance;
41
            }
42
        }
43
44
        /// <summary>
45
        /// redo
46
        /// </summary>
47
        public void Execute()
48
        {
49
            AdornerFinal final;
50 873011c4 humkyung
            UndoDataGroup redo = ViewerDataModel.Instance.UndoDataList.Where(data => data.IsUndo).ToList()
51 ab7fe8c0 humkyung
                .OrderBy(order => order.EventTime).FirstOrDefault();
52 f816dd63 humkyung
            if (redo == null) return;
53
54
            SelectionSet.Instance.UnSelect(Common.ViewerDataModel.Instance.SystemMain.dzMainMenu);
55
            switch (redo.Event)
56
            {
57 873011c4 humkyung
                case (EventType.Create):
58 f816dd63 humkyung
                    {
59 873011c4 humkyung
                        foreach (var item in redo.MarkupDataColl)
60 f816dd63 humkyung
                        {
61
                            ViewerDataModel.Instance.MarkupControls_USER.Add(item.Markup);
62 39f0624f ljiyeon
                            ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.MarkupListUpdate(
63 873011c4 humkyung
                            MarkupParser.MarkupToString(item.Markup, App.ViewInfo.UserID), EventType.Create, null, null);
64 f816dd63 humkyung
                        }
65
                    }
66
                    break;
67 873011c4 humkyung
                case (EventType.Delete):
68 f816dd63 humkyung
                    {
69 873011c4 humkyung
                        foreach (var item in redo.MarkupDataColl)
70 f816dd63 humkyung
                        {
71
                            ViewerDataModel.Instance.MarkupControls_USER.Remove(item.Markup);
72 39f0624f ljiyeon
                            ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.MarkupListUpdate(
73 873011c4 humkyung
                            null, EventType.Delete, item.Markup.CommentID, null);
74 f816dd63 humkyung
                        }
75
                    }
76
                    break;
77 873011c4 humkyung
                case (EventType.Operation):
78 f816dd63 humkyung
                    {
79
                        List<CommentUserInfo> comment = new List<CommentUserInfo>();
80
81 873011c4 humkyung
                        foreach (var item in redo.MarkupDataColl)
82 f816dd63 humkyung
                        {
83 cbeff740 swate0609
                            double dOriAngle = 0.0;
84
                            List<Point> lstOriPointSet = new List<Point>();
85
86 f816dd63 humkyung
                            ViewerDataModel.Instance.MarkupControls_USER.Remove((item.Markup as CommentUserInfo));
87
88
                            if ((item.Markup as IViewBox) != null)
89
                            {
90 cbeff740 swate0609
                                dOriAngle = (item.Markup as IViewBox).CommentAngle;
91 fa48eb85 taeseongkim
                                (item.Markup as IViewBox).CommentAngle = item.Angle;
92 cbeff740 swate0609
                                item.Angle = dOriAngle;
93 f816dd63 humkyung
                            }
94
                            if ((item.Markup as TextControl) != null)
95
                            {
96 cbeff740 swate0609
                                dOriAngle = (item.Markup as TextControl).CommentAngle;
97 fa48eb85 taeseongkim
                                (item.Markup as TextControl).CommentAngle = item.Angle;
98 cbeff740 swate0609
                                item.Angle = dOriAngle;
99
100
                                if (item.PointSet.Count > 0)
101
                                {
102
                                    foreach(var point in (item.Markup as IPath).PointSet)
103
                                    {
104
                                        lstOriPointSet.Add(point);
105
                                    }
106
107
                                    Canvas.SetLeft((item.Markup as TextControl), item.PointSet[0].X);
108
                                    Canvas.SetTop((item.Markup as TextControl), item.PointSet[0].Y);
109 f816dd63 humkyung
110 cbeff740 swate0609
                                    item.PointSet = lstOriPointSet;
111
                                }
112 f816dd63 humkyung
                            }
113
                            else
114
                            {
115 cbeff740 swate0609
                                dOriAngle = (item.Markup).CommentAngle;
116 f5407d37 swate0609
                                (item.Markup).CommentAngle = item.Angle;
117 cbeff740 swate0609
                                item.Angle = dOriAngle;
118
                                foreach(var point in (item.Markup as IPath).PointSet)
119
                                {
120
                                    lstOriPointSet.Add(point);
121
                                }
122 f816dd63 humkyung
                                (item.Markup as IPath).PointSet = item.PointSet;
123 cbeff740 swate0609
                                item.PointSet = lstOriPointSet;
124 0d00f9c8 humkyung
                                (item.Markup as CommentUserInfo).UpdateControl();
125 f816dd63 humkyung
                            }
126
                            comment.Add(item.Markup);
127
                        }
128
                        final = new AdornerFinal(comment);
129
                        Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children.Add(final);
130
                        SelectionSet.Instance.UnSelect(Common.ViewerDataModel.Instance.SystemMain.dzMainMenu);
131
                    }
132
                    break;
133 873011c4 humkyung
                    /*
134
                case (EventType.Select):
135 f816dd63 humkyung
                    {
136
                        List<CommentUserInfo> comment = new List<CommentUserInfo>();
137
138 873011c4 humkyung
                        foreach (var item in redo.MarkupDataColl)
139 f816dd63 humkyung
                        {
140
                            ViewerDataModel.Instance.MarkupControls_USER.Remove(item.Markup);
141
142
                            if ((item.Markup as IPath) != null)
143
                            {
144
                                (item.Markup as IPath).LineSize = item.LineSize;
145
                            }
146
                            if ((item.Markup as UIElement) != null)
147
                            {
148
                                (item.Markup as UIElement).Opacity = item.Opacity;
149
                            }
150
                            if ((item.Markup as IDashControl) != null)
151
                            {
152
                                (item.Markup as IDashControl).DashSize = item.DashSize;
153
                            }
154
                            if ((item.Markup as IShapeControl) != null)
155
                            {
156
                                (item.Markup as IShapeControl).Paint = item.paint;
157
                            }
158
159
                            comment.Add(item.Markup);
160
                        }
161
                        final = new AdornerFinal(comment);
162
                        Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children.Add(final);
163
                    }
164
                    break;
165 873011c4 humkyung
                    */
166
                    /*
167
                case (EventType.Option):
168 f816dd63 humkyung
                    {
169
                        List<CommentUserInfo> comment = new List<CommentUserInfo>();
170
171 873011c4 humkyung
                        foreach (var item in redo.MarkupDataColl)
172 f816dd63 humkyung
                        {
173
                            ViewerDataModel.Instance.MarkupControls_USER.Remove(item.Markup);
174
                            if (redo.LineSize != 0 && item.Markup as IPath != null)
175
                            {
176
                                (item.Markup as IPath).LineSize = redo.LineSize;
177
                            }
178
                            else if (redo.Opacity != 0 && item.Markup as UIElement != null)
179
                            {
180
                                (item.Markup as UIElement).Opacity = redo.Opacity;
181
                            }
182
                            else if (redo.DashSize != null && item.Markup as IDashControl != null)
183
                            {
184
                                (item.Markup as IDashControl).DashSize = redo.DashSize;
185
                            }
186
                            else if (redo.Interval != 0 && item.Markup as LineControl != null)
187
                            {
188
                                (item.Markup as LineControl).Interval = redo.Interval;
189
                            }
190
                            else if (item.Markup as IShapeControl != null)
191
                            {
192
                                (item.Markup as IShapeControl).Paint = redo.paint;
193
                            }
194
                            comment.Add(item.Markup);
195
                        }
196
                        final = new AdornerFinal(comment);
197
                        Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children.Add(final);
198
                    }
199
                    break;
200 873011c4 humkyung
                    */
201 f816dd63 humkyung
            }
202
203 ab7fe8c0 humkyung
            ViewerDataModel.Instance.UndoDataList.Where(data => data.EventTime == redo.EventTime).ToList()
204
                .OrderByDescending(order => order.EventTime).ToList().ForEach(i =>
205 f816dd63 humkyung
            {
206
                i.IsUndo = false;
207
            });
208
        }
209
    }
210
}
클립보드 이미지 추가 (최대 크기: 500 MB)