コード例 #1
0
 public void CursorPosSetzenDurchMausAktion(
     XmlNode xmlNode,
     XMLCursorPositionen cursorPos,
     MausKlickAktionen aktion)
 {
     this.CursorPosSetzenDurchMausAktion(xmlNode, cursorPos, 0, aktion);
 }
コード例 #2
0
        public void CursorSetzen(XmlNode aktNode, XMLCursorPositionen posAmNode, int posImTextnode)
        {
            bool flag = (byte)((aktNode != this._aktNode) ? 1 : ((posAmNode != this._posAmNode) ? 1 : ((posImTextnode != this._posImTextnode) ? 1 : 0))) != 0;

            this._aktNode       = aktNode;
            this._posAmNode     = posAmNode;
            this._posImTextnode = posImTextnode;
            if (flag)
            {
                this.PosChanged(EventArgs.Empty);
            }
        }
コード例 #3
0
 public void SelektionOptimieren()
 {
     if (this._startPos.AktNode == null)
     {
         return;
     }
     if (this._startPos.AktNode == this._endPos.AktNode)
     {
         if (this._startPos.PosAmNode > this._endPos.PosAmNode)
         {
             XMLCursorPositionen posAmNode = this._startPos.PosAmNode;
             int posImTextnode             = this._startPos.PosImTextnode;
             this._startPos.CursorSetzen(this._endPos.AktNode, this._endPos.PosAmNode, this._endPos.PosImTextnode);
             this._endPos.CursorSetzen(this._endPos.AktNode, posAmNode, posImTextnode);
         }
         else if (this._startPos.PosAmNode == XMLCursorPositionen.CursorInnerhalbDesTextNodes && this._endPos.PosAmNode == XMLCursorPositionen.CursorInnerhalbDesTextNodes && this._startPos.PosImTextnode > this._endPos.PosImTextnode)
         {
             int posImTextnode = this._startPos.PosImTextnode;
             this._startPos.CursorSetzen(this._startPos.AktNode, XMLCursorPositionen.CursorInnerhalbDesTextNodes, this._endPos.PosImTextnode);
             this._endPos.CursorSetzen(this._startPos.AktNode, XMLCursorPositionen.CursorInnerhalbDesTextNodes, posImTextnode);
         }
     }
     else
     {
         if (ToolboxXML.Node1LiegtVorNode2(this._endPos.AktNode, this._startPos.AktNode))
         {
             XMLCursorPos startPos = this._startPos;
             this._startPos = this._endPos;
             this._endPos   = startPos;
         }
         if (ToolboxXML.IstChild(this._endPos.AktNode, this._startPos.AktNode))
         {
             this.BeideCursorPosSetzen(this._startPos.AktNode, XMLCursorPositionen.CursorAufNodeSelbstVorderesTag);
         }
         if (this._startPos.AktNode.ParentNode != this._endPos.AktNode.ParentNode)
         {
             XmlNode xmlNode  = this.TiefsterGemeinsamerParent(this._startPos.AktNode, this._endPos.AktNode);
             XmlNode aktNode1 = this._startPos.AktNode;
             while (aktNode1.ParentNode != xmlNode)
             {
                 aktNode1 = aktNode1.ParentNode;
             }
             XmlNode aktNode2 = this._endPos.AktNode;
             while (aktNode2.ParentNode != xmlNode)
             {
                 aktNode2 = aktNode2.ParentNode;
             }
             this._startPos.CursorSetzen(aktNode1, XMLCursorPositionen.CursorAufNodeSelbstVorderesTag);
             this._endPos.CursorSetzen(aktNode2, XMLCursorPositionen.CursorAufNodeSelbstVorderesTag);
         }
     }
 }
コード例 #4
0
        public void CursorSetzen(XmlNode aktNode, XMLCursorPositionen posAmNode, int posImTextnode)
        {
            bool flag = aktNode != this._aktNode || (posAmNode != this._posAmNode || posImTextnode != this._posImTextnode);

            this._aktNode       = aktNode;
            this._posAmNode     = posAmNode;
            this._posImTextnode = posImTextnode;
            if (!flag)
            {
                return;
            }
            this.PosChanged(EventArgs.Empty);
        }
コード例 #5
0
        public void CursorPosSetzenDurchMausAktion(XmlNode xmlNode, XMLCursorPositionen cursorPos, int posInZeile, MausKlickAktionen aktion)
        {
            switch (aktion)
            {
            case MausKlickAktionen.MouseDown:
                this.BeideCursorPosSetzen(xmlNode, cursorPos, posInZeile);
                break;

            case MausKlickAktionen.MouseDownMove:
            case MausKlickAktionen.MouseUp:
                this.EndPos.CursorSetzen(xmlNode, cursorPos, posInZeile);
                break;
            }
        }
コード例 #6
0
        public void BeideCursorPosSetzen(XmlNode node, XMLCursorPositionen posAmNode, int posImTextnode)
        {
            bool flag = (byte)((node != this._startPos.AktNode) ? 1 : ((posAmNode != this._startPos.PosAmNode) ? 1 : ((posImTextnode != this._startPos.PosImTextnode) ? 1 : 0))) != 0;

            if (!flag)
            {
                flag = ((byte)((node != this._endPos.AktNode) ? 1 : ((posAmNode != this._endPos.PosAmNode) ? 1 : ((posImTextnode != this._endPos.PosImTextnode) ? 1 : 0))) != 0);
            }
            this._cursorWirdGeradeGesetzt = true;
            this._startPos.CursorSetzen(node, posAmNode, posImTextnode);
            this._endPos.CursorSetzen(node, posAmNode, posImTextnode);
            this._cursorWirdGeradeGesetzt = false;
            if (flag)
            {
                this.Changed(EventArgs.Empty);
            }
        }
コード例 #7
0
        public void BeideCursorPosSetzen(
            XmlNode node,
            XMLCursorPositionen posAmNode,
            int posImTextnode)
        {
            bool flag = node != this._startPos.AktNode || (posAmNode != this._startPos.PosAmNode || posImTextnode != this._startPos.PosImTextnode);

            if (!flag)
            {
                flag = node != this._endPos.AktNode || (posAmNode != this._endPos.PosAmNode || posImTextnode != this._endPos.PosImTextnode);
            }
            this._cursorWirdGeradeGesetzt = true;
            this._startPos.CursorSetzen(node, posAmNode, posImTextnode);
            this._endPos.CursorSetzen(node, posAmNode, posImTextnode);
            this._cursorWirdGeradeGesetzt = false;
            if (!flag)
            {
                return;
            }
            this.Changed(EventArgs.Empty);
        }
コード例 #8
0
 public XMLCursorPos()
 {
     this._aktNode       = null;
     this._posAmNode     = XMLCursorPositionen.CursorAufNodeSelbstVorderesTag;
     this._posImTextnode = 0;
 }
コード例 #9
0
 public void CursorSetzen(XmlNode aktNode, XMLCursorPositionen posAmNode)
 {
     this.CursorSetzen(aktNode, posAmNode, 0);
 }
コード例 #10
0
 public void BeideCursorPosSetzen(XmlNode node, XMLCursorPositionen posAmNode)
 {
     this.BeideCursorPosSetzen(node, posAmNode, 0);
 }
コード例 #11
0
        public virtual bool AktionPasteFromClipboard(UndoSnapshotSetzenOptionen undoSnapshotSetzen)
        {
            if (!this.AktionenMoeglich)
            {
                return(false);
            }
            string text = "";

            try
            {
                XMLCursorPos startPos;
                if (Clipboard.ContainsText(TextDataFormat.Text))
                {
                    if (this.IstRootNodeSelektiert)
                    {
                        return(this.AktionRootNodeDurchClipboardInhaltErsetzen(undoSnapshotSetzen));
                    }
                    if (this.IstEtwasSelektiert)
                    {
                        if (this.AktionDelete(UndoSnapshotSetzenOptionen.nein))
                        {
                            startPos = this._cursor.StartPos;
                            goto IL_008a;
                        }
                        return(false);
                    }
                    startPos = this.CursorOptimiert.StartPos;
                    goto IL_008a;
                }
                return(false);

IL_008a:
                if (undoSnapshotSetzen == UndoSnapshotSetzenOptionen.ja)
                {
                    this._undoHandler.SnapshotSetzen(ResReader.Reader.GetString("AktionEinfuegen"), this._cursor);
                }
                text = Clipboard.GetText(TextDataFormat.Text);
                text = text.Replace("\r\n", " ");
                text = text.Replace("\n\r", " ");
                text = text.Replace("\r", " ");
                text = text.Replace("\n", " ");
                text = text.Replace("\t", " ");
                string        xmlFragment   = string.Format("<paste>{0}</paste>", text);
                XmlTextReader xmlTextReader = new XmlTextReader(xmlFragment, XmlNodeType.Element, null);
                xmlTextReader.MoveToContent();
                XmlNode      xmlNode      = this._rootNode.OwnerDocument.ReadNode(xmlTextReader);
                XMLCursorPos xMLCursorPos = startPos.Clone();
                foreach (XmlNode childNode in xmlNode.ChildNodes)
                {
                    if (childNode is XmlText)
                    {
                        XmlNode xmlNode3 = null;
                        xMLCursorPos.TextEinfuegen(childNode.Clone().Value, this.Regelwerk, out xmlNode3);
                        if (xmlNode3 != null)
                        {
                            xMLCursorPos.InsertXMLNode(xmlNode3.Clone(), this.Regelwerk, true);
                        }
                    }
                    else
                    {
                        xMLCursorPos.InsertXMLNode(childNode.Clone(), this.Regelwerk, true);
                    }
                }
                XMLCursorPositionen posAmNode = this._cursor.EndPos.PosAmNode;
                if (posAmNode == XMLCursorPositionen.CursorVorDemNode || posAmNode == XMLCursorPositionen.CursorInnerhalbDesTextNodes)
                {
                    this._cursor.BeideCursorPosSetzen(xMLCursorPos.AktNode, xMLCursorPos.PosAmNode, xMLCursorPos.PosImTextnode);
                }
                else
                {
                    this._cursor.BeideCursorPosSetzen(xMLCursorPos.AktNode, XMLCursorPositionen.CursorHinterDemNode);
                }
                return(true);
            }
            catch (Exception ex)
            {
                Debugger.GlobalDebugger.Protokolliere(string.Format("AktionPasteFromClipboard:Fehler für Einfügetext '{0}':{1}", text, ex.Message), Debugger.ProtokollTypen.Fehlermeldung);
                return(false);
            }
        }
コード例 #12
0
        private DTDTestmuster CreateTestMuster(string elementName, XMLCursorPos cursorPos)
        {
            XmlNode             aktNode   = cursorPos.AktNode;
            XMLCursorPositionen posAmNode = cursorPos.PosAmNode;
            DTDTestmuster       dTDTestmuster;

            if (posAmNode == XMLCursorPositionen.CursorInDemLeeremNode)
            {
                dTDTestmuster = new DTDTestmuster(elementName, DTD.GetElementNameFromNode(aktNode));
                dTDTestmuster.AddElement(elementName);
            }
            else
            {
                if (aktNode.ParentNode is XmlDocument)
                {
                    throw new ApplicationException(ResReader.Reader.GetString("FuerRootElementKeinTestmuster"));
                }
                dTDTestmuster = new DTDTestmuster(elementName, DTD.GetElementNameFromNode(aktNode.ParentNode));
                for (XmlNode xmlNode = aktNode.ParentNode.FirstChild; xmlNode != null; xmlNode = xmlNode.NextSibling)
                {
                    if (!(xmlNode is XmlWhitespace))
                    {
                        if (xmlNode == aktNode)
                        {
                            if (xmlNode is XmlComment)
                            {
                                dTDTestmuster.AddElement("#COMMENT");
                            }
                            else if (this._dtd.DTDElementByName(DTD.GetElementNameFromNode(aktNode), false) != null)
                            {
                                switch (cursorPos.PosAmNode)
                                {
                                case XMLCursorPositionen.CursorAufNodeSelbstVorderesTag:
                                case XMLCursorPositionen.CursorAufNodeSelbstHinteresTag:
                                    if (elementName != null)
                                    {
                                        dTDTestmuster.AddElement(elementName);
                                    }
                                    break;

                                case XMLCursorPositionen.CursorHinterDemNode:
                                    if (elementName == null)
                                    {
                                        throw new ApplicationException("CreateTestMuster: Löschen darf bei XMLCursorPositionen.CursorHinterDemNode nicht geprüft werden!");
                                    }
                                    dTDTestmuster.AddElement(DTD.GetElementNameFromNode(aktNode));
                                    dTDTestmuster.AddElement(elementName);
                                    break;

                                case XMLCursorPositionen.CursorInDemLeeremNode:
                                    if (elementName == null)
                                    {
                                        throw new ApplicationException("CreateTestMuster: Löschen darf bei XMLCursorPositionen.CursorHinterDemNode nicht geprüft werden!");
                                    }
                                    throw new ApplicationException("CreateTestMuster: CursorInDemLeeremNode can\u00b4t be handled at this place!");

                                case XMLCursorPositionen.CursorVorDemNode:
                                    if (elementName == null)
                                    {
                                        throw new ApplicationException("CreateTestMuster: Löschen darf bei XMLCursorPositionen.CursorVorDemNode nicht geprüft werden!");
                                    }
                                    dTDTestmuster.AddElement(elementName);
                                    dTDTestmuster.AddElement(DTD.GetElementNameFromNode(aktNode));
                                    break;

                                case XMLCursorPositionen.CursorInnerhalbDesTextNodes:
                                    if (elementName == null)
                                    {
                                        throw new ApplicationException("CreateTestMuster: Löschen darf bei XMLCursorPositionen.CursorInnerhalbDesTextNodes nicht geprüft werden!");
                                    }
                                    if (DTD.GetElementNameFromNode(aktNode) != "#PCDATA")
                                    {
                                        throw new ApplicationException("CreateTestMuster: CursorInnerhalbDesTextNodes angegeben, aber node.name=" + DTD.GetElementNameFromNode(aktNode));
                                    }
                                    dTDTestmuster.AddElement("#PCDATA");
                                    dTDTestmuster.AddElement(elementName);
                                    dTDTestmuster.AddElement("#PCDATA");
                                    break;

                                default:
                                    throw new ApplicationException("Unknown XMLCursorPositionen value:" + cursorPos.PosAmNode);
                                }
                            }
                        }
                        else
                        {
                            dTDTestmuster.AddElement(DTD.GetElementNameFromNode(xmlNode));
                        }
                    }
                }
            }
            return(dTDTestmuster);
        }