OSDN Git Service

Initial contents of nt2chview
[nt2chview/stable.git] / NT2chCtrl45 / ResListAdapter_event.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Windows;\r
5 using System.Windows.Documents;\r
6 using System.Windows.Input;\r
7 using NT2chObject;\r
8 \r
9 namespace NT2chCtrl\r
10 {\r
11     partial class ResListAdapter : UIElementListPanel.IUIElementListAdapter\r
12     {\r
13         public void urlLink_Click(object sender, RoutedEventArgs e)\r
14         {\r
15             Hyperlink hl = sender as Hyperlink;\r
16             if (hl == null)\r
17                 return;\r
18 \r
19             Uri uri = hl.NavigateUri;\r
20             if (uri == null)\r
21                 return;\r
22 \r
23             string url = uri.AbsoluteUri;\r
24 \r
25             mCommand.ExecURL(url);\r
26         }\r
27 \r
28 \r
29         public void resLink_MouseEnter(object sender, RoutedEventArgs e)\r
30         {\r
31             ResViewPopup.ClearAll(ResViewPopup.CLEAR_POPUP.ALL);\r
32             resLinkSubItem_MouseEnter(sender, e);\r
33         }\r
34 \r
35         void resLinkSubItem_MouseEnter(object sender, RoutedEventArgs e)\r
36         {\r
37             Hyperlink hl = sender as Hyperlink;\r
38             if (hl == null)\r
39                 return;\r
40 \r
41             List<object> param = hl.Tag as List<object>;\r
42 \r
43             if (param == null || param.Count != 2)\r
44                 return;\r
45 \r
46             IThread thread = param[0] as IThread;\r
47             int[] arrNum = param[1] as int[];\r
48             resLinkDispalySubItem(thread, arrNum);\r
49 \r
50         }\r
51 \r
52         public void resLinkSubItem_MouseEnter2(object sender, RoutedEventArgs e)\r
53         {\r
54             Hyperlink hl = sender as Hyperlink;\r
55             if (hl == null)\r
56                 return;\r
57 \r
58             List<object> param = hl.Tag as List<object>;\r
59 \r
60             if (param == null || param.Count != 2)\r
61                 return;\r
62 \r
63             IThread thread = param[0] as IThread;\r
64             string sArr = param[1] as string;\r
65             //int[] arrNum = param[1] as int[];\r
66             int[] arr = NTResViewPanel.getUtil().ParseResLinkReferenceNumber(sArr);\r
67             resLinkDispalySubItem(thread, arr);\r
68 \r
69         }\r
70 \r
71         public void resLinkDispalySubItem(IThread ithread, int[] arrNum)\r
72         {\r
73             if (ithread == null || arrNum == null)\r
74                 return;\r
75 \r
76             List<IRes> rList = ithread.getResList();\r
77             List<IRes> rListCopy = new List<IRes>(arrNum.Length);\r
78 \r
79             int seq = 0;\r
80             foreach (IRes res in rList)\r
81             {\r
82                 for (int i = seq; i < arrNum.Length; i++)\r
83                 {\r
84                     if (res.getSequenceNo() == arrNum[i])\r
85                     {\r
86                         rListCopy.Add(res);\r
87                         seq = i + 1;\r
88                         break;\r
89                     }\r
90                 }\r
91             }\r
92 \r
93             FlowDocument doc = createDocument(ithread, rListCopy, false);\r
94 \r
95             if (doc != null)\r
96             {\r
97                 double zoom = 0;\r
98                 if (!getZoomValue(out zoom))\r
99                     zoom = 90;\r
100                 else\r
101                     zoom = (zoom > 90) ? 90 : zoom;\r
102                 double scrHeight = System.Windows.SystemParameters.PrimaryScreenHeight;\r
103                 ResViewPopup popup = new ResViewPopup(\r
104                     this, doc, scrHeight / 2, scrHeight * 2 / 3, zoom,\r
105                     mMainPanel.getTextSelMode());\r
106             }\r
107 \r
108         }\r
109         private bool extractParam(object sender, out IThread ithread, out IRes ires)\r
110         {\r
111             ithread = null;\r
112             ires = null;\r
113 \r
114             Hyperlink item = sender as Hyperlink;\r
115             if (item == null)\r
116                 return false;\r
117 \r
118             List<object> list = item.Tag as List<object>;\r
119             if (list == null || list.Count != 2)\r
120                 return false;\r
121 \r
122             ithread = list[0] as IThread;\r
123             ires = list[1] as IRes;\r
124 \r
125             return (ithread != null && ires != null);\r
126         }\r
127 \r
128         void hlink_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)\r
129         {\r
130             IThread thread;\r
131             IRes res;\r
132             if (!extractParam(sender, out thread, out res))\r
133                 return;\r
134 \r
135             ResViewPopup.ClearAll(ResViewPopup.CLEAR_POPUP.ALL);\r
136             JumpTo(res.getSequenceNo());\r
137         }\r
138 \r
139 \r
140         void ResSeqNo_MouseLeftButtonDown(object sender, MouseEventArgs e)\r
141         {\r
142             IThread thread;\r
143             IRes res;\r
144             if (!extractParam(sender, out thread, out res))\r
145                 return;\r
146 \r
147             //JumpTo(thread, res.getSequenceNo());\r
148         }\r
149 \r
150         void ResSeqNo_MouseEnter(object sender, MouseEventArgs e)\r
151         {\r
152             IThread thread;\r
153             IRes res;\r
154             if (!extractParam(sender, out thread, out res))\r
155                 return;\r
156 \r
157             ResViewPopup.ClearAll(ResViewPopup.CLEAR_POPUP.ALL);\r
158 \r
159             ResViewPopup popup = new ResViewPopup(this, thread, res);\r
160 \r
161         }\r
162         void ResSeqNoSubItem_MouseEnter(object sender, MouseEventArgs e)\r
163         {\r
164             IThread thread;\r
165             IRes res;\r
166             if (!extractParam(sender, out thread, out res))\r
167                 return;\r
168 \r
169             ResViewPopup popup = new ResViewPopup(this, thread, res);\r
170 \r
171         }\r
172 \r
173 \r
174         void document_MouseMove(object sender, RoutedEventArgs e)\r
175         {\r
176             ResViewPopup.ClearAll(ResViewPopup.CLEAR_POPUP.LEAVE_ONE);\r
177         }\r
178     }\r
179 }\r