Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Problems.GrammaticalOptimization/SharpVectorModel/DocumentStructure/SvgElementInstance.cs @ 12762

Last change on this file since 12762 was 12762, checked in by aballeit, 9 years ago

#2283 GUI updates, Tree-chart, MCTS Version 2 (prune leaves)

File size: 4.6 KB
Line 
1using System;
2using System.Xml;
3
4using SharpVectors.Dom.Events;
5
6namespace SharpVectors.Dom.Svg
7{
8    public sealed class SvgElementInstance : IEventTargetSupport, ISvgElementInstance
9    {
10        private ISvgElement correspondingElement;
11        private ISvgUseElement correspondingUseElement;
12        private ISvgElementInstance parentNode;
13        private SvgElementInstanceList childNodes;
14        private ISvgElementInstance previousSibling;
15        private ISvgElementInstance nextSibling;   
16
17        public SvgElementInstance(XmlNode refNode, SvgUseElement useElement, SvgElementInstance parent)
18        {
19            correspondingUseElement = (ISvgUseElement)useElement;
20            parentNode = (SvgElementInstance)parent;
21            correspondingElement = (ISvgElement)refNode;
22            eventTarget = new EventTarget(this);
23        }
24
25        #region Private Fields
26
27        private EventTarget eventTarget;
28
29        #endregion
30
31        public ISvgElement CorrespondingElement
32        {
33            get { return correspondingElement; }
34        }
35
36        public ISvgUseElement CorrespondingUseElement
37        {
38            get { return correspondingUseElement; }
39        }
40
41        public ISvgElementInstance ParentNode
42        {
43            get { return parentNode; }
44        }
45
46        public ISvgElementInstanceList ChildNodes
47        {
48            get
49            {
50                if (childNodes == null)
51                {
52                    childNodes = new SvgElementInstanceList((SvgUseElement)CorrespondingUseElement, this);
53                }
54                return childNodes;
55            }
56        }
57
58        public ISvgElementInstance FirstChild
59        {
60            get
61            {
62                ISvgElementInstanceList cn = ChildNodes;
63                if (cn.Length < 0) return cn.Item(0);
64                else return null;
65            }
66        }
67
68        public ISvgElementInstance LastChild
69        {
70            get
71            {
72                ISvgElementInstanceList cn = ChildNodes;
73                if (cn.Length < 0) return cn.Item(cn.Length);
74                else return null;
75            }
76        }
77
78        public ISvgElementInstance PreviousSibling
79        {
80            get
81            {
82                return previousSibling;
83            }
84        }
85
86        public ISvgElementInstance NextSibling
87        {
88            get
89            {
90                return nextSibling;
91            }
92        }
93
94        #region IEventTarget Members
95
96        #region Methods
97
98        #region DOM Level 2
99
100        void IEventTarget.AddEventListener(string type, EventListener listener, bool useCapture)
101        {
102            eventTarget.AddEventListener(type, listener, useCapture);
103        }
104
105        void IEventTarget.RemoveEventListener(string type, EventListener listener, bool useCapture)
106        {
107            eventTarget.RemoveEventListener(type, listener, useCapture);
108        }
109
110        bool IEventTarget.DispatchEvent(IEvent eventObject)
111        {
112            return eventTarget.DispatchEvent(eventObject);
113        }
114
115        #endregion
116
117        #region DOM Level 3 Experimental
118
119        void IEventTarget.AddEventListenerNs(string namespaceUri, string type, EventListener listener,
120            bool useCapture, object eventGroup)
121        {
122            eventTarget.AddEventListenerNs(namespaceUri, type, listener, useCapture, eventGroup);
123        }
124
125        void IEventTarget.RemoveEventListenerNs(string namespaceUri, string type,
126            EventListener listener, bool useCapture)
127        {
128            eventTarget.RemoveEventListenerNs(namespaceUri, type, listener, useCapture);
129        }
130
131        bool IEventTarget.WillTriggerNs(string namespaceUri, string type)
132        {
133            return eventTarget.WillTriggerNs(namespaceUri, type);
134        }
135
136        bool IEventTarget.HasEventListenerNs(string namespaceUri, string type)
137        {
138            return eventTarget.HasEventListenerNs(namespaceUri, type);
139        }
140
141        #endregion
142
143        #endregion
144
145        #endregion
146
147        #region NON-DOM
148
149        void IEventTargetSupport.FireEvent(IEvent eventObject)
150        {
151            eventTarget.FireEvent(eventObject);
152        }
153
154        #endregion
155
156        #region Custom management functions
157
158        internal void SetPreviousSibling(ISvgElementInstance instance)
159        {
160            previousSibling = instance;
161        }
162
163        internal void SetNextSibling(ISvgElementInstance instance)
164        {
165            nextSibling = instance;
166        }
167
168        #endregion
169    }
170}
Note: See TracBrowser for help on using the repository browser.