예제 #1
0
        private void _options_OnInsertHandler(int index, object value)
        {
            Interop.IHTMLElement selectElement = (Interop.IHTMLElement)base.GetBaseElement();
            Interop.IHTMLDOMNode selNode       = (Interop.IHTMLDOMNode)selectElement;
            Interop.IHTMLDOMNode optGrpNode    = null;
            switch (value.GetType().Name)
            {
            case "OptionElement":
                // add OPTION directly...
                optGrpNode = selNode.appendChild((Interop.IHTMLDOMNode)((OptionElement)value).GetBaseElement());
                // ...and handle InnerText separatly because this is not a real attribute
                //((Interop.IHTMLElement) optGrpNode).SetInnerText(((OptionElement) value).text);
                //optGrpNode.nodeValue = ((OptionElement) value).text;
                break;

            case "OptGroupElement":
                // add OPTGROUP and the OPTION children the element already has
                OptGroupElement optGrpObj = (OptGroupElement)value;
                optGrpNode = selNode.appendChild((Interop.IHTMLDOMNode)(optGrpObj).GetBaseElement());
                if (optGrpObj.Options != null && optGrpObj.Options.Count > 0)
                {
                    foreach (OptionElement oe in optGrpObj.Options)
                    {
                        optGrpNode.appendChild((Interop.IHTMLDOMNode)oe.GetBaseElement());
                    }
                }
                break;
            }
        }
예제 #2
0
        public ElementDom(Interop.IHTMLDOMNode element, IHtmlEditor htmlEditor)
        {
            this.node       = element;
            this.htmlEditor = htmlEditor;
            if (element.nodeType == 0)
            {
                nodeType = System.Xml.XmlNodeType.Attribute;
            }
            else
            {
                switch (element.nodeType)
                {
                case 1:
                    nodeType = System.Xml.XmlNodeType.Element;
                    break;

                case 3:
                    nodeType = System.Xml.XmlNodeType.Text;
                    break;

                default:
                    nodeType = System.Xml.XmlNodeType.None;
                    break;
                }
            }
        }
예제 #3
0
 private void _param_OnInsertHandler(int index, object value)
 {
     Interop.IHTMLElement objectElement = (Interop.IHTMLElement)base.GetBaseElement();
     Interop.IHTMLDOMNode Node          = (Interop.IHTMLDOMNode)objectElement;
     Interop.IHTMLDOMNode optGrpNode    = null;
     // add PARAM directly...
     optGrpNode = Node.appendChild((Interop.IHTMLDOMNode)((ParamElement)value).GetBaseElement());
 }
예제 #4
0
 internal ExtrusionElement(Interop.IHTMLElement peer, Interop.IHTMLElement parent, IHtmlEditor editor) : this(peer, editor)
 {
     Interop.IHTMLDOMNode parentNode = (Interop.IHTMLDOMNode)parent;
     Interop.IHTMLElement extrusion  = base.GetBaseElement();
     if (extrusion != null)
     {
         parentNode.appendChild(extrusion as Interop.IHTMLDOMNode);
     }
 }
예제 #5
0
 private void _options_OnClearHandler()
 {
     Interop.IHTMLElement           optgroup = base.GetBaseElement();
     Interop.IHTMLDOMNode           optNode  = (Interop.IHTMLDOMNode)optgroup;
     Interop.IHTMLElementCollection subNodes = (Interop.IHTMLElementCollection)optgroup.GetChildren();
     for (int i = 0; i < subNodes.GetLength(); i++)
     {
         optNode.removeChild((Interop.IHTMLDOMNode)subNodes.Item(i, i));
     }
 }
예제 #6
0
 private void _param_OnClearHandler()
 {
     Interop.IHTMLElement objectElement       = (Interop.IHTMLElement)base.GetBaseElement();
     Interop.IHTMLDOMNode Node                = (Interop.IHTMLDOMNode)objectElement;
     Interop.IHTMLDOMChildrenCollection param = (Interop.IHTMLDOMChildrenCollection)((Interop.IHTMLDOMNode)Node).childNodes;
     for (int i = 0; i < param.length; i++)
     {
         Interop.IHTMLDOMNode el = (Interop.IHTMLDOMNode)param.item(0);
         Node.removeChild(el);
     }
 }
예제 #7
0
        /// <summary>
        /// Updates the designtime html by writing back the content to the native element.
        /// </summary>
        /// <remarks>
        /// This method works recursively and respects nested elements.
        /// </remarks>
        public override void UpdateDesignTimeHtml()
        {
            Interop.IHTMLElement elem = component.GetBaseElement();
            ViewLink             vl   = GetViewLinkFromElement(elem);
            string s = String.Empty;

            Interop.IHTMLDOMNode node = ((Interop.IHTMLDOMNode)vl.DesignTimeElementView);
            elem.SetInnerHTML(s);
            Interop.IHTMLDOMNode targetNode = (Interop.IHTMLDOMNode)elem;
            LoopNodes(node, targetNode, ((Interop.IHTMLElement)targetNode).GetDocument() as Interop.IHTMLDocument2);
        }
예제 #8
0
 private void _sources_OnClearHandler()
 {
     // we do not clear the collection here to protect the underlying conjunction between collection and element
     Interop.IHTMLElement selectElement = (Interop.IHTMLElement)base.GetBaseElement();
     Interop.IHTMLDOMNode selNode       = (Interop.IHTMLDOMNode)selectElement;
     if (selNode.hasChildNodes())
     {
         Interop.IHTMLElementCollection options = (Interop.IHTMLElementCollection)selectElement.GetChildren();
         for (int o = 0; o < options.GetLength(); o++)
         {
             Interop.IHTMLDOMNode childElement = (Interop.IHTMLDOMNode)options.Item(0, 0);
             // remove first node, because the collection will change immediately after removeChild call
             selNode.removeChild(childElement);
         }
     }
 }
예제 #9
0
 public new void RemoveAt(int index)
 {
     if (index >= base.InnerList.Count || index < 0)
     {
         return;
     }
     base.InnerList.RemoveAt(index);
     Interop.IHTMLElementCollection options = (Interop.IHTMLElementCollection)selectElement.GetChildren();
     for (int i = 0; i < options.GetLength(); i++)
     {
         Interop.IHTMLElement el = (Interop.IHTMLElement)options.Item(i, i);
         if (index == i)
         {
             Interop.IHTMLDOMNode no = (Interop.IHTMLDOMNode)el;
             no.removeNode(true);
         }
     }
 }
 public new void RemoveAt(int index, object o)
 {
     if (o == null)
     {
         return;
     }
     base.InnerList.Remove(o);
     Interop.IHTMLDOMChildrenCollection param = (Interop.IHTMLDOMChildrenCollection)((Interop.IHTMLDOMNode)objectElement).childNodes;
     for (int i = 0; i < param.length; i++)
     {
         Interop.IHTMLElement el = (Interop.IHTMLElement)param.item(0);
         if (index == i)
         {
             Interop.IHTMLDOMNode no = (Interop.IHTMLDOMNode)el;
             no.removeNode(true);
         }
     }
 }
예제 #11
0
        /// <summary>
        /// Returns the direct descendent children elements.
        /// </summary>
        /// <remarks>
        /// Does not returns any text nodes between the elements. They are stripped out from DOM tree before building the collection.
        /// </remarks>
        /// <returns></returns>
        public ElementCollection GetChildNodes()
        {
            Interop.IHTMLDOMChildrenCollection children = (Interop.IHTMLDOMChildrenCollection)node.childNodes;
            ElementCollection ec = new ElementCollection();
            int length           = children.length;

            for (int i = 0; i < length; i++)
            {
                Interop.IHTMLDOMNode element = children.item(i) as Interop.IHTMLDOMNode;
                if (element != null && element != node)
                {
                    if (element.nodeName.Equals("#text"))
                    {
                        continue;
                    }
                    ec.Add(this.htmlEditor.GenericElementFactory.CreateElement(element as Interop.IHTMLElement));
                }
            }
            return(ec);
        }
예제 #12
0
 private static void LoopNodes(Interop.IHTMLDOMNode node, Interop.IHTMLDOMNode targetNode, Interop.IHTMLDocument2 targetDoc)
 {
     while (node != null)
     {
         if (node.nodeName == "#text")
         {
             ((Interop.IHTMLElement)targetNode).InsertAdjacentHTML("BeforeEnd", node.nodeValue.ToString());
         }
         else
         {
             string elementName;
             if (((Interop.IHTMLElement2)node).GetScopeName() == "HTML")
             {
                 elementName = ((Interop.IHTMLElement)node).GetTagName();
             }
             else
             {
                 elementName = String.Format("{0}:{1}", ((Interop.IHTMLElement2)node).GetScopeName(), ((Interop.IHTMLElement)node).GetTagName());
             }
             Interop.IHTMLElement clone = targetDoc.CreateElement(elementName);
             ((Interop.IHTMLElement3)clone).mergeAttributes(((Interop.IHTMLElement)node), 0);
             if (node.hasChildNodes())
             {
                 Interop.IHTMLDOMChildrenCollection children =
                     node.childNodes as Interop.IHTMLDOMChildrenCollection;
                 if (children != null)
                 {
                     for (int i = 0; i < children.length; i++)
                     {
                         Interop.IHTMLDOMNode child = (Interop.IHTMLDOMNode)children.item(i);
                         LoopNodes(child, (Interop.IHTMLDOMNode)clone, targetDoc);
                     }
                 }
             }
         }
         node = node.nextSibling;
     }
 }
예제 #13
0
 private void _options_OnInsertHandler(int index, object value)
 {
     Interop.IHTMLElement optgroup = base.GetBaseElement();
     Interop.IHTMLDOMNode optNode  = (Interop.IHTMLDOMNode)optgroup;
     optNode.appendChild((Interop.IHTMLDOMNode)((OptionElement)value).GetBaseElement());
 }
예제 #14
0
 internal TextNodeElement(Interop.IHTMLDOMNode node, IHtmlEditor htmlEditor)
 {
     this.node       = node;
     this.htmleditor = htmlEditor;
 }
예제 #15
0
 /// <summary>
 /// Exchanges the location of two objects in the document hierarchy.
 /// </summary>
 /// <remarks>If elements are removed at run time, before the closing tag is parsed, areas of the document might not render.</remarks>
 /// <param name="node">Object that specifies the existing element.</param>
 /// <returns>Returns a reference to the object that invoked the method.</returns>
 public IElement SwapNode(IElement node)
 {
     Interop.IHTMLDOMNode newNode = (this.node).swapNode((Interop.IHTMLDOMNode)node);
     return(this.htmlEditor.GenericElementFactory.CreateElement(newNode as Interop.IHTMLElement) as IElement);
 }
예제 #16
0
 private void _sources_OnInsertHandler(int index, object value)
 {
     Interop.IHTMLElement selectElement = (Interop.IHTMLElement)base.GetBaseElement();
     Interop.IHTMLDOMNode selNode       = (Interop.IHTMLDOMNode)selectElement;
     selNode.appendChild((Interop.IHTMLDOMNode)((IElement)value).GetBaseElement());
 }