<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>The Efficient Coder</title>
    <link>http://www.efficientcoder.net/</link>
    <description>There has got to be a better way of communicating with our computers!</description>
    <language>en-us</language>
    <copyright>Kevin D. Wolf</copyright>
    <lastBuildDate>Wed, 26 Nov 2008 20:36:25 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.8.5223.2</generator>
    <managingEditor>kevinw@software-logistics.com</managingEditor>
    <webMaster>kevinw@software-logistics.com</webMaster>
    <item>
      <trackback:ping>http://www.efficientcoder.net/Trackback.aspx?guid=559c2673-0a20-4525-b013-42173554b876</trackback:ping>
      <pingback:server>http://www.efficientcoder.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.net/PermaLink,guid,559c2673-0a20-4525-b013-42173554b876.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.net/CommentView,guid,559c2673-0a20-4525-b013-42173554b876.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.net/SyndicationService.asmx/GetEntryCommentsRss?guid=559c2673-0a20-4525-b013-42173554b876</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">In my ChaosFilter project, I'm factoring all the text and strings into
      a resource class.  The intent is to allow for customization by the end user for
      different installations and possibly translation at some point.  My solution
      is to place all my text into a class with properties that figure out how to get the
      text based based upon a unique key and context (which company/application they are
      running in).  Currently these are stored in the database and then loaded into
      a cached dictionary object.  This appears to work very fast, however with my
      architecture and a bit of code gen this could easily be replaced by more traditional
      resources.  </font>
        </p>
        <p>
          <font size="3">In the past it's been a pain the a** since I needed to create the label,
      put the marker into my class file then insert the field into the database.  A
      better solution certainly exists.  My solution is to build a DXCore custom refactoring. 
      The idea would be if I'm in a C# class within a string literal or an ASP.NET
      page within some static HTML, I could hit the refacting key and and take that text
      and convert it into a message or a simple label.  The difference being a
      label is only a few words where the message could be sentance or two.  For larger
      blocks of text I have a different approach.</font>
        </p>
        <h4>My Solution
   </h4>
        <p>
          <font size="3">For a ASP.NET page:<br /></font>
          <img src="http://www.efficientcoder.com/content/binary/ASPNETRefactoring.gif" border="0" />
        </p>
        <p>
          <font size="3">For a C# code file (in a library assembly or code behind):</font>
          <br />
          <img src="http://www.efficientcoder.com/content/binary/CSRefactorings.gif" border="0" />
        </p>
        <p>
          <font size="3">Then to enter the text:</font>
          <br />
          <img src="http://www.efficientcoder.com/content/binary/FieldEditor.gif" border="0" />
        </p>
        <p>
       
   </p>
        <p>
          <font size="3">So how was this done?  Actually it was fairly trivial, I built
      part of it early this week in a couple hours, the rest this morning.  Probably
      &lt; 4 hours for the whole thing and I haven't built a plugin for a couple years.</font>
        </p>
        <p>
          <font size="3">
          </font> 
   </p>
        <h4>Getting Started
   </h4>
        <p>
          <font size="3">This link does a much better job than I could to show the basics of
      creating a DXCore plugin, but unless I missed it, it didn't cover too much about creating
      custom refactorings.</font>
        </p>
        <p>
          <a href="http://community.devexpress.com/forums/t/68994.aspx">http://community.devexpress.com/forums/t/68994.aspx</a>
        </p>
        <p>
          <font size="3">
          </font> 
   </p>
        <p>
          <font size="3">So assuming that you have the frameworks setup for your plugin (I'm
      going to skip a few steps not relevant and found elsewhere), here's what you need
      to do:</font>
        </p>
        <p>
          <font size="3">1) Create a new DXCore Plug for your refactoring:</font>
        </p>
        <p>
          <font size="3">
            <img src="http://www.efficientcoder.com/content/binary/CreatePlugin.gif" border="0" />
          </font>
        </p>
        <p>
          <font size="3">
          </font> 
   </p>
        <p>
          <font size="3">2) By default the Refactoring Provider that you need to create a custom
      Refactoring is not in the toolbox, it can be added by "Choose Items" and selecting
      the RefactoringProvider</font>
          <br />
          <img src="http://www.efficientcoder.com/content/binary/RefactoringProvider.gif" border="0" />
        </p>
        <p>
          <font size="3">3) Once you add that, drop that onto your custom design surface for
      your Refactoring plugin, it should look something boring like:</font>
        </p>
        <p>
          <img src="http://www.efficientcoder.com/content/binary/RefactorDesigner.gif" border="0" />
        </p>
        <p>
          <font size="3">4) The click on Properties for your component and add appropriate values:</font>
        </p>
        <p>
          <img src="http://www.efficientcoder.com/content/binary/RefactorProperties.gif" border="0" />
        </p>
        <p>
          <font size="3">5) Now go in and click on the highlighed events to build up your stubs:</font>
        </p>
        <p>
          <img src="http://www.efficientcoder.com/content/binary/RefactorEvents.gif" border="0" />
        </p>
        <p>
          <font size="3">6) Finally go in and add your code (painting code from: <a href="http://tinyurl.com/5a3pe2">http://tinyurl.com/5a3pe2</a>):</font>
        </p>
        <font size="1">
          <p>
          </p>
        </font>
        <font face="Courier New">
          <font size="3">
            <font color="#0000ff">
              <font color="#0000ff">private</font>
            </font>
            <font color="#0000ff">
              <font color="#0000ff">bool</font>
            </font> _handlingEditorForegroundPaint
   = <font color="#0000ff"><font color="#0000ff">false</font></font></font>
        </font>
        <font face="Courier New">
          <font size="3">;<br /><font color="#0000ff"><font color="#0000ff">private</font></font><font color="#2b91af"><font color="#2b91af">SourceRange</font></font></font>
        </font>
        <font face="Courier New">
          <font size="3"> _previewRange;<br /><font color="#0000ff"><font color="#0000ff">private</font></font> DevExpress.CodeRush.UserControls.<font color="#2b91af"><font color="#2b91af">CodePreviewWindow</font></font> _previewWindow
   = <font color="#0000ff"><font color="#0000ff">null</font></font></font>
        </font>
        <font face="Courier New" size="3">;<br /></font>
        <p>
          <font color="#008000">
            <font color="#008000">
              <font face="Courier New" size="3">// DXCore-generated
      code...</font>
            </font>
          </font>
        </p>
        <font color="#0000ff">
          <font color="#0000ff">
            <p>
              <font face="Courier New" size="3">#region</font>
            </p>
          </font>
        </font>
        <font face="Courier New">
          <font size="3">
            <font color="#000000"> InitializePlugIn<br /></font>
            <font color="#0000ff">
              <font color="#0000ff">#region</font>
            </font>
            <font color="#000000"> FinalizePlugIn</font>
          </font>
        </font>
        <p>
          <font face="Courier New">
            <font size="3">
              <font color="#0000ff">
                <font color="#0000ff">private</font>
              </font>
              <font color="#0000ff">
                <font color="#0000ff">void</font>
              </font> ConvertToCustomCaption_Apply(<font color="#0000ff"><font color="#0000ff">object</font></font> sender, <font color="#2b91af"><font color="#2b91af">ApplyContentEventArgs</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3"> ea)<br />
      {<br />
         <font color="#0000ff"><font color="#0000ff">var</font></font> customLabel
      = <font color="#0000ff"><font color="#0000ff">new</font></font> ui.<font color="#2b91af"><font color="#2b91af">CustomCaption</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3">();<br />
         ea.Element.SelectFullBlock();<br />
         customLabel.ShowWithString(<font color="#2b91af"><font color="#2b91af">CodeRush</font></font>.Selection.Text, <font color="#2b91af"><font color="#2b91af">CodeRush</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3">.Caret.ScreenPosition);<br />
         <font color="#0000ff"><font color="#0000ff">if</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3"> (!customLabel.Cancelled)<br />
            ea.Selection.Text = <font color="#0000ff"><font color="#0000ff">string</font></font>.Format(<font color="#a31515"><font color="#a31515">"Customization.Captions.{0}"</font></font></font>
          </font>
          <font face="Courier New" size="3">,
      customLabel.LabelKey);<br />
      }</font>
        </p>
        <p>
          <font face="Courier New">
            <font size="3">
              <font color="#0000ff">
                <font color="#0000ff">private</font>
              </font>
              <font color="#0000ff">
                <font color="#0000ff">void</font>
              </font> ConvertToCustomCaption_CheckAvailability(<font color="#0000ff"><font color="#0000ff">object</font></font> sender, <font color="#2b91af"><font color="#2b91af">CheckContentAvailabilityEventArgs</font></font></font>
          </font>
          <font face="Courier New" size="3"> ea)<br /></font>
          <font face="Courier New">
            <font size="3">{<br />
         ea.Available = <font color="#2b91af"><font color="#2b91af">CodeRush</font></font></font>
          </font>
          <font face="Courier New" size="3">.Caret.InsideString
      &amp;&amp; ea.Element.InsideClass;<br />
      }</font>
        </p>
        <p>
          <font face="Courier New">
            <font size="3">
              <font color="#0000ff">
                <font color="#0000ff">private</font>
              </font>
              <font color="#0000ff">
                <font color="#0000ff">void</font>
              </font> ConvertToCustomCaption_HidePreview(<font color="#0000ff"><font color="#0000ff">object</font></font> sender, <font color="#2b91af"><font color="#2b91af">HideContentPreviewEventArgs</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3"> ea)<br />
      {<br />
         <font color="#0000ff"><font color="#0000ff">if</font></font> (_previewWindow
      != <font color="#0000ff"><font color="#0000ff">null</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3">)<br />
         {<br />
            _previewWindow.HidePreview();<br />
            _previewWindow = <font color="#0000ff"><font color="#0000ff">null</font></font></font>
          </font>
          <font size="3">
            <font face="Courier New">;<br />
         }<br /></font>
            <br />
            <font face="Courier New">   _previewRange = </font>
            <font color="#2b91af">
              <font face="Courier New" color="#2b91af">SourceRange</font>
            </font>
          </font>
          <font face="Courier New">
            <font size="3">.Empty;<br />
         <font color="#0000ff"><font color="#0000ff">if</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3"> (_handlingEditorForegroundPaint)<br />
         {<br />
            _handlingEditorForegroundPaint = <font color="#0000ff"><font color="#0000ff">false</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3">;<br />
            <font color="#2b91af"><font color="#2b91af">EventNexus</font></font>.EditorPaintForeground
      += <font color="#0000ff"><font color="#0000ff">new</font></font><font color="#2b91af"><font color="#2b91af">EditorPaintEventHandler</font></font></font>
          </font>
          <font face="Courier New" size="3">(EventNexus_EditorPaintForeground);<br />
         }<br />
      }</font>
        </p>
        <p>
          <font face="Courier New">
            <font size="3">
              <font color="#0000ff">
                <font color="#0000ff">private</font>
              </font>
              <font color="#0000ff">
                <font color="#0000ff">void</font>
              </font> ConvertToCustomCaption_PreparePreview(<font color="#0000ff"><font color="#0000ff">object</font></font> sender, <font color="#2b91af"><font color="#2b91af">PrepareContentPreviewEventArgs</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3"> ea)<br />
      {<br />
         <font color="#2b91af"><font color="#2b91af">PrimitiveExpression</font></font> ele
      = ea.Element <font color="#0000ff"><font color="#0000ff">as</font></font><font color="#2b91af"><font color="#2b91af">PrimitiveExpression</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3">;<br />
         <font color="#0000ff"><font color="#0000ff">if</font></font> (ele
      != <font color="#0000ff"><font color="#0000ff">null</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3">)<br />
         {<br />
            _previewRange = ele.Range.Clone();<br />
            <font color="#2b91af"><font color="#2b91af">EventNexus</font></font>.EditorPaintForeground
      += <font color="#0000ff"><font color="#0000ff">new</font></font><font color="#2b91af"><font color="#2b91af">EditorPaintEventHandler</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3">(EventNexus_EditorPaintForeground);<br />
            CreatePreviewWindow(ea, <font color="#a31515"><font color="#a31515">"Customization.Captions.[New]"</font></font></font>
          </font>
          <font face="Courier New" size="3">);<br />
         }<br />
      }</font>
        </p>
        <p>
          <font face="Courier New">
            <font size="3">
              <font color="#0000ff">
                <font color="#0000ff">private</font>
              </font>
              <font color="#0000ff">
                <font color="#0000ff">void</font>
              </font> CreatePreviewWindow(<font color="#2b91af"><font color="#2b91af">PrepareRefactoringPreviewEventArgs</font></font> ea, <font color="#0000ff"><font color="#0000ff">string</font></font></font>
          </font>
          <font face="Courier New" size="3"> codeToPreview)<br /></font>
          <font face="Courier New">
            <font size="3">{<br />
         _previewWindow = <font color="#0000ff"><font color="#0000ff">new</font></font><font color="#2b91af"><font color="#2b91af">CodePreviewWindow</font></font></font>
          </font>
          <font face="Courier New" size="3">(ea.TextView,
      _previewRange.Top);<br />
         _previewWindow.AddCode(codeToPreview);<br />
         _previewWindow.ShowPreview();<br />
      }</font>
        </p>
        <p>
          <font face="Courier New">
            <font size="3">
              <font color="#0000ff">
                <font color="#0000ff">private</font>
              </font>
              <font color="#0000ff">
                <font color="#0000ff">void</font>
              </font> InvalidatePreviews(<font color="#2b91af"><font color="#2b91af">RefactoringPreviewEventArgs</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3"> ea)<br />
      {<br />
         <font color="#0000ff"><font color="#0000ff">if</font></font></font>
          </font>
          <font size="3">
            <font face="Courier New"> (_previewRange.IsEmpty)<br />
            <font color="#0000ff"><font color="#0000ff">return</font></font></font>
            <font face="Courier New">;</font>
          </font>
        </p>
        <p>
          <font color="#0000ff">
            <font face="Courier New" color="#0000ff" size="3">   int</font>
          </font>
          <font face="Courier New">
            <font size="3"> doubleSpaceWidth
      = ea.TextView.SpaceWidth * 2;<br />
         <font color="#0000ff"><font color="#0000ff">int</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3"> textViewLineHeight
      = ea.TextView.LineHeight;<br />
         <font color="#2b91af"><font color="#2b91af">Rectangle</font></font></font>
          </font>
          <font face="Courier New" size="3"> previewRect
      = ea.TextView.GetRectangleFromRange(_previewRange);<br />
         previewRect.Inflate(doubleSpaceWidth, textViewLineHeight);<br />
         </font>
          <font size="3">
            <font face="Courier New">ea.TextView.Invalidate(previewRect);<br /></font>
            <font face="Courier New">}</font>
          </font>
        </p>
        <p>
          <font face="Courier New">
            <font size="3">
              <font color="#0000ff">
                <font color="#0000ff">void</font>
              </font> EventNexus_EditorPaintForeground(<font color="#2b91af"><font color="#2b91af">EditorPaintEventArgs</font></font></font>
          </font>
          <font face="Courier New">
            <font size="3"> ea)<br />
      {<br />
         <font color="#0000ff"><font color="#0000ff">if</font></font></font>
          </font>
          <font size="3">
            <font face="Courier New"> (_previewRange.IsEmpty)<br />
            <font color="#0000ff"><font color="#0000ff">return</font></font></font>
            <font face="Courier New">;</font>
          </font>
        </p>
        <p>
          <font face="Courier New">
            <font size="3">
              <font color="#0000ff">
                <font color="#0000ff">   using</font>
              </font> (<font color="#2b91af"><font color="#2b91af">StrikeThrough</font></font> strikeThrough
      = <font color="#0000ff"><font color="#0000ff">new</font></font><font color="#2b91af"><font color="#2b91af">StrikeThrough</font></font></font>
          </font>
          <font size="3">
            <font face="Courier New">())<br />
         {<br />
            strikeThrough.TextView = ea.TextView;<br />
            strikeThrough.FillColor = <font color="#2b91af"><font color="#2b91af">Color</font></font></font>
          </font>
          <font face="Courier New" size="3">.Red;<br />
            strikeThrough.Range = _previewRange;<br />
            strikeThrough.Paint(ea.Graphics);<br />
         }<br />
      }</font>
          <font size="1">
          </font>
        </p>
        <p>
          <font size="3">The "thingy" that let's me enter the text is just a simple WinForm
      represented by ui.CustomCaption, I won't bore you with that implemetentation since
      it is fairly <strike>tightly coupled</strike> intergrated into my architecture.</font>
        </p>
        <p>
          <font size="3">Enjoy!</font>
        </p>
        <p>
          <font size="3">-ec</font>
        </p>
        <font size="1">
        </font>
        <img width="0" height="0" src="http://www.efficientcoder.net/aggbug.ashx?id=559c2673-0a20-4525-b013-42173554b876" />
      </body>
      <title>Custom String to Resource Refactoring with DXCore</title>
      <guid>http://www.efficientcoder.net/PermaLink,guid,559c2673-0a20-4525-b013-42173554b876.aspx</guid>
      <link>http://www.efficientcoder.net/PermaLink,guid,559c2673-0a20-4525-b013-42173554b876.aspx</link>
      <pubDate>Wed, 26 Nov 2008 20:36:25 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;In my ChaosFilter project, I'm factoring all the text and strings into
   a resource class.&amp;nbsp; The intent is to allow for customization by the end user for
   different installations and possibly translation at some point.&amp;nbsp; My solution
   is to place all my text into a class with properties that figure out how to get the
   text based based upon a unique key and context (which company/application they are
   running in).&amp;nbsp; Currently these are stored in the database and then loaded into
   a cached dictionary object.&amp;nbsp; This appears to work very fast, however with my
   architecture and a bit of code gen this could easily be replaced by more traditional
   resources.&amp;nbsp; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;In the past it's been a pain the a** since I needed to create the label,
   put the marker into my class file then insert the field into the database.&amp;nbsp; A
   better solution certainly exists.&amp;nbsp; My solution is to build a DXCore custom refactoring.&amp;nbsp;
   The idea would be if I'm in a C# class&amp;nbsp;within a string literal or an ASP.NET
   page within some static HTML, I could hit the refacting key and and take that text
   and convert it into a&amp;nbsp;message or a simple label.&amp;nbsp; The difference being a
   label is only a few words where the message could be sentance or two.&amp;nbsp; For larger
   blocks of text I have a different approach.&lt;/font&gt;
&lt;/p&gt;
&lt;h4&gt;My Solution
&lt;/h4&gt;
&lt;p&gt;
   &lt;font size=3&gt;For a ASP.NET page:&lt;br&gt;
   &lt;/font&gt;&lt;img src="http://www.efficientcoder.com/content/binary/ASPNETRefactoring.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;For a C# code file (in a library assembly or code behind):&lt;/font&gt;
   &lt;br&gt;
   &lt;img src="http://www.efficientcoder.com/content/binary/CSRefactorings.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;Then to enter the text:&lt;/font&gt;
   &lt;br&gt;
   &lt;img src="http://www.efficientcoder.com/content/binary/FieldEditor.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;So how was this done?&amp;nbsp; Actually it was fairly trivial, I built part
   of it early this week in a couple hours, the rest this morning.&amp;nbsp; Probably &amp;lt;
   4 hours for the whole thing and I haven't built a plugin for a couple years.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;h4&gt;Getting Started
&lt;/h4&gt;
&lt;p&gt;
   &lt;font size=3&gt;This link does a much better job than I could to show the basics of creating
   a DXCore plugin, but unless I missed it, it didn't cover too much about creating custom&amp;nbsp;refactorings.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;a href="http://community.devexpress.com/forums/t/68994.aspx"&gt;http://community.devexpress.com/forums/t/68994.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;So assuming that you have the frameworks setup for your plugin (I'm going
   to skip a few steps not relevant and found elsewhere), here's what you need to do:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;1) Create a new DXCore Plug for your refactoring:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;&lt;img src="http://www.efficientcoder.com/content/binary/CreatePlugin.gif" border=0&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;&lt;/font&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;2) By default the Refactoring Provider that you need to create a custom
   Refactoring is not in the toolbox, it can be added by "Choose Items" and selecting
   the RefactoringProvider&lt;/font&gt;
   &lt;br&gt;
   &lt;img src="http://www.efficientcoder.com/content/binary/RefactoringProvider.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;3) Once you add that, drop that onto your custom design surface for your
   Refactoring plugin, it should look something boring like:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://www.efficientcoder.com/content/binary/RefactorDesigner.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;4) The click on Properties for your component and add appropriate values:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://www.efficientcoder.com/content/binary/RefactorProperties.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;5) Now go in and click on the highlighed events to build up your stubs:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;img src="http://www.efficientcoder.com/content/binary/RefactorEvents.gif" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;6) Finally go in and add your code (painting code from: &lt;a href="http://tinyurl.com/5a3pe2"&gt;http://tinyurl.com/5a3pe2&lt;/a&gt;):&lt;/font&gt;
&lt;/p&gt;
&lt;font size=1&gt; 
&lt;p&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;private&lt;/font&gt;&lt;/font&gt; &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;bool&lt;/font&gt;&lt;/font&gt; _handlingEditorForegroundPaint
= &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;false&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt;;&lt;br&gt;
&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;private&lt;/font&gt;&lt;/font&gt; &lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;SourceRange&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt; _previewRange;&lt;br&gt;
&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;private&lt;/font&gt;&lt;/font&gt; DevExpress.CodeRush.UserControls.&lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;CodePreviewWindow&lt;/font&gt;&lt;/font&gt; _previewWindow
= &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;null&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=3&gt;;&lt;br&gt;
&lt;/font&gt;&gt;
&lt;p&gt;
   &lt;font color=#008000&gt;&lt;font color=#008000&gt;&lt;font face="Courier New" size=3&gt;// DXCore-generated
   code...&lt;/font&gt;
&lt;/p&gt;
&gt;&gt;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt; 
&lt;p&gt;
   &lt;font face="Courier New" size=3&gt;#region&lt;/font&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt;&lt;font color=#000000&gt; InitializePlugIn&lt;br&gt;
&lt;/font&gt;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;#region&lt;/font&gt;&lt;/font&gt;&lt;font color=#000000&gt; FinalizePlugIn&lt;/font&gt;&lt;/font&gt;&gt;
&lt;/font&gt; 
&lt;p&gt;
   &lt;font face="Courier New"&gt;&lt;font size=3&gt;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;private&lt;/font&gt;&lt;/font&gt; &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;void&lt;/font&gt;&lt;/font&gt; ConvertToCustomCaption_Apply(&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;object&lt;/font&gt;&lt;/font&gt; sender, &lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;ApplyContentEventArgs&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt; ea)&lt;br&gt;
   {&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;var&lt;/font&gt;&lt;/font&gt; customLabel
   = &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;new&lt;/font&gt;&lt;/font&gt; ui.&lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;CustomCaption&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt;();&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;ea.Element.SelectFullBlock();&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;customLabel.ShowWithString(&lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;CodeRush&lt;/font&gt;&lt;/font&gt;.Selection.Text, &lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;CodeRush&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt;.Caret.ScreenPosition);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;if&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt; (!customLabel.Cancelled)&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ea.Selection.Text = &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;string&lt;/font&gt;&lt;/font&gt;.Format(&lt;font color=#a31515&gt;&lt;font color=#a31515&gt;"Customization.Captions.{0}"&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=3&gt;,
   customLabel.LabelKey);&lt;br&gt;
   }&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New"&gt;&lt;font size=3&gt;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;private&lt;/font&gt;&lt;/font&gt; &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;void&lt;/font&gt;&lt;/font&gt; ConvertToCustomCaption_CheckAvailability(&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;object&lt;/font&gt;&lt;/font&gt; sender, &lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;CheckContentAvailabilityEventArgs&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=3&gt; ea)&lt;br&gt;
   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt;{&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;ea.Available = &lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;CodeRush&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=3&gt;.Caret.InsideString
   &amp;amp;&amp;amp; ea.Element.InsideClass;&lt;br&gt;
   }&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New"&gt;&lt;font size=3&gt;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;private&lt;/font&gt;&lt;/font&gt; &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;void&lt;/font&gt;&lt;/font&gt; ConvertToCustomCaption_HidePreview(&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;object&lt;/font&gt;&lt;/font&gt; sender, &lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;HideContentPreviewEventArgs&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt; ea)&lt;br&gt;
   {&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;if&lt;/font&gt;&lt;/font&gt; (_previewWindow
   != &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;null&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt;)&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_previewWindow.HidePreview();&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_previewWindow = &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;null&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size=3&gt;&lt;font face="Courier New"&gt;;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
   &lt;/font&gt;
   &lt;br&gt;
   &lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;_previewRange = &lt;/font&gt;&lt;font color=#2b91af&gt;&lt;font face="Courier New" color=#2b91af&gt;SourceRange&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt;.Empty;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;if&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt; (_handlingEditorForegroundPaint)&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_handlingEditorForegroundPaint = &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;false&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt;;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;EventNexus&lt;/font&gt;&lt;/font&gt;.EditorPaintForeground
   += &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;new&lt;/font&gt;&lt;/font&gt; &lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;EditorPaintEventHandler&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=3&gt;(EventNexus_EditorPaintForeground);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
   }&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New"&gt;&lt;font size=3&gt;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;private&lt;/font&gt;&lt;/font&gt; &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;void&lt;/font&gt;&lt;/font&gt; ConvertToCustomCaption_PreparePreview(&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;object&lt;/font&gt;&lt;/font&gt; sender, &lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;PrepareContentPreviewEventArgs&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt; ea)&lt;br&gt;
   {&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;PrimitiveExpression&lt;/font&gt;&lt;/font&gt; ele
   = ea.Element &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;as&lt;/font&gt;&lt;/font&gt; &lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;PrimitiveExpression&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt;;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;if&lt;/font&gt;&lt;/font&gt; (ele != &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;null&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt;)&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_previewRange = ele.Range.Clone();&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;EventNexus&lt;/font&gt;&lt;/font&gt;.EditorPaintForeground
   += &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;new&lt;/font&gt;&lt;/font&gt; &lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;EditorPaintEventHandler&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt;(EventNexus_EditorPaintForeground);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CreatePreviewWindow(ea, &lt;font color=#a31515&gt;&lt;font color=#a31515&gt;"Customization.Captions.[New]"&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=3&gt;);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
   }&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New"&gt;&lt;font size=3&gt;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;private&lt;/font&gt;&lt;/font&gt; &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;void&lt;/font&gt;&lt;/font&gt; CreatePreviewWindow(&lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;PrepareRefactoringPreviewEventArgs&lt;/font&gt;&lt;/font&gt; ea, &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;string&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=3&gt; codeToPreview)&lt;br&gt;
   &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt;{&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;_previewWindow = &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;new&lt;/font&gt;&lt;/font&gt; &lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;CodePreviewWindow&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=3&gt;(ea.TextView,
   _previewRange.Top);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;_previewWindow.AddCode(codeToPreview);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;_previewWindow.ShowPreview();&lt;br&gt;
   }&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New"&gt;&lt;font size=3&gt;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;private&lt;/font&gt;&lt;/font&gt; &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;void&lt;/font&gt;&lt;/font&gt; InvalidatePreviews(&lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;RefactoringPreviewEventArgs&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt; ea)&lt;br&gt;
   {&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;if&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size=3&gt;&lt;font face="Courier New"&gt; (_previewRange.IsEmpty)&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;return&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font color=#0000ff&gt;&lt;font face="Courier New" color=#0000ff size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt; doubleSpaceWidth
   = ea.TextView.SpaceWidth * 2;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;int&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt; textViewLineHeight
   = ea.TextView.LineHeight;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;Rectangle&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=3&gt; previewRect
   = ea.TextView.GetRectangleFromRange(_previewRange);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;previewRect.Inflate(doubleSpaceWidth, textViewLineHeight);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font size=3&gt;&lt;font face="Courier New"&gt;ea.TextView.Invalidate(previewRect);&lt;br&gt;
   &lt;/font&gt;&lt;font face="Courier New"&gt;}&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New"&gt;&lt;font size=3&gt;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;void&lt;/font&gt;&lt;/font&gt; EventNexus_EditorPaintForeground(&lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;EditorPaintEventArgs&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size=3&gt; ea)&lt;br&gt;
   {&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;if&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size=3&gt;&lt;font face="Courier New"&gt; (_previewRange.IsEmpty)&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;return&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font face="Courier New"&gt;&lt;font size=3&gt;&lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;using&lt;/font&gt;&lt;/font&gt; (&lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;StrikeThrough&lt;/font&gt;&lt;/font&gt; strikeThrough
   = &lt;font color=#0000ff&gt;&lt;font color=#0000ff&gt;new&lt;/font&gt;&lt;/font&gt; &lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;StrikeThrough&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size=3&gt;&lt;font face="Courier New"&gt;())&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strikeThrough.TextView = ea.TextView;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strikeThrough.FillColor = &lt;font color=#2b91af&gt;&lt;font color=#2b91af&gt;Color&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" size=3&gt;.Red;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strikeThrough.Range = _previewRange;&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strikeThrough.Paint(ea.Graphics);&lt;br&gt;
   &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
   }&lt;/font&gt;&lt;font size=1&gt;
&lt;/p&gt;
&gt; 
&lt;p&gt;
   &lt;font size=3&gt;The "thingy" that let's me enter the text is just a simple WinForm represented
   by ui.CustomCaption, I won't bore you with that implemetentation since it is fairly &lt;strike&gt;tightly
   coupled&lt;/strike&gt; intergrated into my architecture.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;Enjoy!&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;-ec&lt;/font&gt;
&lt;/p&gt;
&lt;font size=1&gt;&lt;/font&gt;&lt;img width="0" height="0" src="http://www.efficientcoder.net/aggbug.ashx?id=559c2673-0a20-4525-b013-42173554b876" /&gt;</description>
      <comments>http://www.efficientcoder.net/CommentView,guid,559c2673-0a20-4525-b013-42173554b876.aspx</comments>
      <category>ASP.NET;DXCore</category>
    </item>
  </channel>
</rss>