프로젝트

일반

사용자정보

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

markus / KCOM / Events / RedoCommand.cs @ 90d1dee0

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

1
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
using MarkupToPDF.Controls.Parsing;
19

    
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
            UndoDataGroup redo = ViewerDataModel.Instance.UndoDataList.Where(data => data.IsUndo).ToList()
51
                .OrderBy(order => order.EventTime).FirstOrDefault();
52
            if (redo == null) return;
53

    
54
            SelectionSet.Instance.UnSelect(Common.ViewerDataModel.Instance.SystemMain.dzMainMenu);
55
            switch (redo.Event)
56
            {
57
                case (EventType.Create):
58
                    {
59
                        foreach (var item in redo.MarkupDataColl)
60
                        {
61
                            ViewerDataModel.Instance.MarkupControls_USER.Add(item.Markup);
62
                            ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.MarkupListUpdate(
63
                            MarkupParser.MarkupToString(item.Markup, App.ViewInfo.UserID), EventType.Create, null, null);
64
                        }
65
                    }
66
                    break;
67
                case (EventType.Delete):
68
                    {
69
                        foreach (var item in redo.MarkupDataColl)
70
                        {
71
                            ViewerDataModel.Instance.MarkupControls_USER.Remove(item.Markup);
72
                            ViewerDataModel.Instance.SystemMain.dzMainMenu.pageNavigator.MarkupListUpdate(
73
                            null, EventType.Delete, item.Markup.CommentID, null);
74
                        }
75
                    }
76
                    break;
77
                case (EventType.Operation):
78
                    {
79
                        List<CommentUserInfo> comment = new List<CommentUserInfo>();
80

    
81
                        foreach (var item in redo.MarkupDataColl)
82
                        {
83
                            ViewerDataModel.Instance.MarkupControls_USER.Remove(item.Markup);
84

    
85
                            var tmp = item.Markup.Clone();
86
                            item.Markup.Copy(item.Clone);
87
                            item.Clone.Copy(tmp);
88
                            item.Markup.UpdateControl();
89

    
90
                            comment.Add(item.Markup);
91
                        }
92
                        final = new AdornerFinal(comment);
93
                        Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children.Add(final);
94
                        SelectionSet.Instance.UnSelect(Common.ViewerDataModel.Instance.SystemMain.dzMainMenu);
95
                    }
96
                    break;
97
                    /*
98
                case (EventType.Select):
99
                    {
100
                        List<CommentUserInfo> comment = new List<CommentUserInfo>();
101

    
102
                        foreach (var item in redo.MarkupDataColl)
103
                        {
104
                            ViewerDataModel.Instance.MarkupControls_USER.Remove(item.Markup);
105

    
106
                            if ((item.Markup as IPath) != null)
107
                            {
108
                                (item.Markup as IPath).LineSize = item.LineSize;
109
                            }
110
                            if ((item.Markup as UIElement) != null)
111
                            {
112
                                (item.Markup as UIElement).Opacity = item.Opacity;
113
                            }
114
                            if ((item.Markup as IDashControl) != null)
115
                            {
116
                                (item.Markup as IDashControl).DashSize = item.DashSize;
117
                            }
118
                            if ((item.Markup as IShapeControl) != null)
119
                            {
120
                                (item.Markup as IShapeControl).Paint = item.paint;
121
                            }
122

    
123
                            comment.Add(item.Markup);
124
                        }
125
                        final = new AdornerFinal(comment);
126
                        Common.ViewerDataModel.Instance.SystemMain.dzMainMenu.SelectLayer.Children.Add(final);
127
                    }
128
                    break;
129
                    */
130
            }
131

    
132
            ViewerDataModel.Instance.UndoDataList.Where(data => data.EventTime == redo.EventTime).ToList()
133
                .OrderByDescending(order => order.EventTime).ToList().ForEach(i =>
134
            {
135
                i.IsUndo = false;
136
            });
137
        }
138
    }
139
}
클립보드 이미지 추가 (최대 크기: 500 MB)