コード例 #1
0
ファイル: TrackedStringManager.cs プロジェクト: ajbadaj/AJut
 internal void BeginPlaceholderMode(IndexTrackingStringBuilder placeholderSource, bool reset = false)
 {
     if (m_placeholderData == null)
     {
         m_placeholderData = new PlacholderData(placeholderSource, reset);
     }
     else if (m_placeholderData.Source != placeholderSource)
     {
         throw new Exception("Attempting to start placeholder mode on a TrackedStringManager that was already in placeholder mode with a different source.");
     }
 }
コード例 #2
0
ファイル: TrackedStringManager.cs プロジェクト: ajbadaj/AJut
        /// <summary>
        /// If you built your SubstringTracker in placeholder mode (see placeholder mode constructor), then
        /// you must call this once your text is all setup.
        /// </summary>
        internal void PlaceholderSetupComplete()
        {
            string toInsert    = m_placeholderData.Source.Builder.ToString();
            int    insertIndex = m_placeholderData.Source.StartIndex;

            // Update the text to contain the string builder's result
            if (m_placeholderData.Reset)
            {
                this.Text = toInsert;

                // We're doing a hard reset
                this.m_trackedStrings.Clear();
            }
            else
            {
                this.Text = this.Text.Insert(insertIndex, toInsert);
            }

            // Insert the placeholders first.
            //  Note: This must be done first so that when we update the existing tracked strings
            TrackedString[] updateSkiplist = new TrackedString[m_placeholderData.PlaceholderItems.Count];
            for (int ind = 0; ind < m_placeholderData.PlaceholderItems.Count; ++ind)
            {
                Tuple <TrackedString, int> placeholderItem = m_placeholderData.PlaceholderItems[ind];
                placeholderItem.Item1.ResetStringInternal(placeholderItem.Item2);
                this.AddItem(placeholderItem.Item1);
                updateSkiplist[ind] = placeholderItem.Item1;
            }

            if (!m_placeholderData.Reset)
            {
                this.UpdateItemsInRange(insertIndex, toInsert.Length, updateSkiplist);
            }

            m_placeholderData = null;
            this.HasChanges   = true;
        }