<?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.com/</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.com/Trackback.aspx?guid=559c2673-0a20-4525-b013-42173554b876</trackback:ping>
      <pingback:server>http://www.efficientcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.com/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.com/CommentView,guid,559c2673-0a20-4525-b013-42173554b876.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.com/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.com/aggbug.ashx?id=559c2673-0a20-4525-b013-42173554b876" />
      </body>
      <title>Custom String to Resource Refactoring with DXCore</title>
      <guid>http://www.efficientcoder.com/PermaLink,guid,559c2673-0a20-4525-b013-42173554b876.aspx</guid>
      <link>http://www.efficientcoder.com/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.com/aggbug.ashx?id=559c2673-0a20-4525-b013-42173554b876" /&gt;</description>
      <comments>http://www.efficientcoder.com/CommentView,guid,559c2673-0a20-4525-b013-42173554b876.aspx</comments>
      <category>ASP.NET;DXCore</category>
    </item>
    <item>
      <trackback:ping>http://www.efficientcoder.com/Trackback.aspx?guid=cc557d2f-a902-4262-a458-d9b576ad3255</trackback:ping>
      <pingback:server>http://www.efficientcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.com/PermaLink,guid,cc557d2f-a902-4262-a458-d9b576ad3255.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.com/CommentView,guid,cc557d2f-a902-4262-a458-d9b576ad3255.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=cc557d2f-a902-4262-a458-d9b576ad3255</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">OK - maybe everyone else knows this, but after about a year of getting
      so-so support for intellisense in Javascript I downloaded the latest </font>
          <a href="http://code.msdn.microsoft.com/KB958502/Release/ProjectReleases.aspx?ReleaseId=1736">
            <font size="3">hotfix</font>
          </a>
          <font size="3"> and
      hoped that this would fix it...it did not.  Since I have a very unhealthy addiction
      to Intellisense I figured out it was time to do a little troubleshooting and get this
      to work.  When adding the the script tags to my page to get intellisense, my
      Error List now contained the message:<br /><img src="http://www.efficientcoder.com/content/binary/UpdateJScriptIntellisense.gif" border="0" /></font>
        </p>
        <p>
          <font size="3">Error updatign JScript IntelliSense: [SOMEPATH]\Temporary Internet
      Files\Content.IE5\[XXXX]\[XXX].js 'jQuery' is undefiend @ 9.1</font>
        </p>
        <p>
          <font size="3">So I figured if I could make this error go away chance are pretty good
      IntelliSense would start working again.  What I found is if you use the absolute
      path <font face="Courier New">/FOO/FEE.JS</font> in your script tag you get this
      error message.  If you don't and use a relative path <font face="Courier New">../FOO/FEE.JS</font> all
      is well.</font>
        </p>
        <p>
          <font size="3">One other thing I found while searching the web (sorry I forgot the
      site so I can't give the person credit) is to get your Intellisense to work when using
      Masterpages<br /><img src="http://www.efficientcoder.com/content/binary/JScriptMasterPage.gif" border="0" /><br /></font>
          <font size="3">This allows for the design time to pickup the script file, but
      at run time the file won't be duplicated, especially since my JS files stored as a
      resource in.  I have my JS files compiled as an embedded resource and for some
      reason, adding those embedded resources to the ScriptManager, Scripts sections doesn't
      allow IntelliSense to add the files as you would expect.  Maybe in another year
      I'll get around to troubleshooting that, time to get some work done!</font>
        </p>
        <p>
          <font size="3">-ec</font>
        </p>
        <img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=cc557d2f-a902-4262-a458-d9b576ad3255" />
      </body>
      <title>VS.NET 2008 Javascript IntelliSense Troubleshooting</title>
      <guid>http://www.efficientcoder.com/PermaLink,guid,cc557d2f-a902-4262-a458-d9b576ad3255.aspx</guid>
      <link>http://www.efficientcoder.com/PermaLink,guid,cc557d2f-a902-4262-a458-d9b576ad3255.aspx</link>
      <pubDate>Sat, 22 Nov 2008 15:07:43 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;OK - maybe everyone else knows this, but after about a year of getting
   so-so support for intellisense in Javascript I downloaded the latest &lt;/font&gt;&lt;a href="http://code.msdn.microsoft.com/KB958502/Release/ProjectReleases.aspx?ReleaseId=1736"&gt;&lt;font size=3&gt;hotfix&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt; and
   hoped that this would fix it...it did not.&amp;nbsp; Since I have a very unhealthy addiction
   to Intellisense I figured out it was time to do a little troubleshooting and get this
   to work.&amp;nbsp; When adding the the script tags to my page to get intellisense, my
   Error List now contained the message:&lt;br&gt;
   &lt;img src="http://www.efficientcoder.com/content/binary/UpdateJScriptIntellisense.gif" border=0&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;Error updatign JScript IntelliSense: [SOMEPATH]\Temporary Internet Files\Content.IE5\[XXXX]\[XXX].js
   'jQuery' is undefiend @ 9.1&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;So I figured if I could make this error go away chance are pretty good
   IntelliSense would start working again.&amp;nbsp; What I found is if you use the absolute
   path &lt;font face="Courier New"&gt;/FOO/FEE.JS&lt;/font&gt;&amp;nbsp;in your script tag you get this
   error message.&amp;nbsp; If you don't and use a relative path&amp;nbsp;&lt;font face="Courier New"&gt;../FOO/FEE.JS&lt;/font&gt; all
   is well.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;One other thing I found while searching the web (sorry I forgot the site
   so I can't give the person credit) is to get your Intellisense to work when using
   Masterpages&lt;br&gt;
   &lt;img src="http://www.efficientcoder.com/content/binary/JScriptMasterPage.gif" border=0&gt;
   &lt;br&gt;
   &lt;/font&gt;&lt;font size=3&gt;This allows for the design time to pickup the script file, but
   at run time the file won't be duplicated, especially since my JS files stored as a
   resource in.&amp;nbsp; I have my JS files compiled as an embedded resource and for some
   reason, adding those embedded resources to the ScriptManager, Scripts sections doesn't
   allow IntelliSense to add the files as you would expect.&amp;nbsp; Maybe in another year
   I'll get around to troubleshooting that, time to get some work done!&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;-ec&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=cc557d2f-a902-4262-a458-d9b576ad3255" /&gt;</description>
      <comments>http://www.efficientcoder.com/CommentView,guid,cc557d2f-a902-4262-a458-d9b576ad3255.aspx</comments>
      <category>AJAX;ASP.NET;JScript</category>
    </item>
    <item>
      <trackback:ping>http://www.efficientcoder.com/Trackback.aspx?guid=179d71d5-df26-4c45-bcae-372ed0b1dc92</trackback:ping>
      <pingback:server>http://www.efficientcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.com/PermaLink,guid,179d71d5-df26-4c45-bcae-372ed0b1dc92.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.com/CommentView,guid,179d71d5-df26-4c45-bcae-372ed0b1dc92.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=179d71d5-df26-4c45-bcae-372ed0b1dc92</wfw:commentRss>
      <title>One reason I like Silverlight/WPF</title>
      <guid>http://www.efficientcoder.com/PermaLink,guid,179d71d5-df26-4c45-bcae-372ed0b1dc92.aspx</guid>
      <link>http://www.efficientcoder.com/PermaLink,guid,179d71d5-df26-4c45-bcae-372ed0b1dc92.aspx</link>
      <pubDate>Sun, 16 Nov 2008 18:56:42 GMT</pubDate>
      <description>&lt;img style="FLOAT: right" src="http://www.efficientcoder.com/content/binary/logo.jpg" border=0&gt; 
&lt;p&gt;
   &lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;font size=3&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Early
   on in my career I was mentored on deferring execution.&amp;nbsp; This was in a language
   called FORTH and the idea was build your program structure and abstract the details
   into WORDS to be filled in later.&amp;nbsp; Repeat until complete.&amp;nbsp; This simple process
   still holds true today in OO languages like C# where I do most of my work.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;font size=3&gt;Now
   back to why I like Silverlight/WPF, as I'm just starting to get beyond the basics,
   the more I'm starting to see that this is an extremely well thought out architecture.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;As
   I'm developing my functionality I can easily "defer execution" or really in this case,
   care zero about the style and then go in later and make it pretty.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Or
   if I'm really lucky find someone that knows what they are doing to give it a polished
   look.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Although the same can be done with
   HTML and CSS, this just seems like it's just a bit cleaner and since we are targetting
   only one type of client (Silverlight or WPF) instead of the different browsers the
   results are much more repeatable.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;font size=3&gt;The
   other thing I'm really impressed with is the separation of UI and code behind.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Although
   time will tell on the actual business value (read ability to maintain and extend)
   it seems like the ability to create CLR instances in the XAML and then glue everything
   together with dependency properties, just feels good to do.&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;font size=3&gt;Now
   back to getting some work done with this!&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;span style="FONT-SIZE: 10pt; COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;font size=3&gt;-ec&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=179d71d5-df26-4c45-bcae-372ed0b1dc92" /&gt;</description>
      <comments>http://www.efficientcoder.com/CommentView,guid,179d71d5-df26-4c45-bcae-372ed0b1dc92.aspx</comments>
      <category>.NET 3.5;ASP.NET;Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://www.efficientcoder.com/Trackback.aspx?guid=bff0f6b4-4e82-471f-b0ff-3ef47714d751</trackback:ping>
      <pingback:server>http://www.efficientcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.com/PermaLink,guid,bff0f6b4-4e82-471f-b0ff-3ef47714d751.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.com/CommentView,guid,bff0f6b4-4e82-471f-b0ff-3ef47714d751.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bff0f6b4-4e82-471f-b0ff-3ef47714d751</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">In all my web sites my pages inherit from a custom base page that inherits
      from <font face="Courier New">System.Web.UI.Page</font> and overrides <font face="Courier New">OnError</font>. 
      This method then uses <font face="Courier New">Server.GetLastError()</font> to get
      the exception generated by the offending code.  At this point, it's probably
      too late to do anything about it, but at least I can take a snap shot of the current user
      context, log that information present a friendly message to the user.  Although
      the bug made it into production at least it's not happening 200 times a day and I
      don't know about.</font>
        </p>
        <p>
          <font size="3">A good portion of my site is driven by web services via AJAX and as
      I start to implement Silverlight for a few sophisticated UI components, I'm relying
      more and more on web services.  My problem until now was I didn't have any sort
      of catch-all that notified me about problem in a web service call.</font>
        </p>
        <p>
          <font size="3">After a bit of research I found something called a <font face="Courier New">SoapExtension</font> in
      the <font face="Courier New">System.Web.Services.Protocols</font> namespace.</font>
        </p>
        <p>
          <font size="3">This provides calls at different points in the processing of the soap
      message:<br /><img src="http://www.efficientcoder.com/content/binary/SoapMessageStage.gif" border="0" /></font>
        </p>
        <p>
          <font size="3">We can implement some functionality in the AfterSerialize stage. 
      If we detect a non-null value in the message.Exception property it's probably safe
      to assume something bad happened within the web service.<br /></font>
        </p>
        <p>
          <font size="3">
            <img src="http://www.efficientcoder.com/content/binary/CustomSoapHandling.gif" border="0" />
          </font>
        </p>
        <p>
          <font size="3">The final step is to register this in the web.config file.</font>
        </p>
        <p>
          <font size="3">
            <img src="http://www.efficientcoder.com/content/binary/CustomSoapWebConfig.gif" border="0" />
          </font>
        </p>
        <p>
          <font size="3">In addition SoapExtensions can be associated with specific methods
      via attributes.  This might be interesting to provide an interesting solution
      for attaching custom authentication and authorization.</font>
        </p>
        <p>
          <font size="3">-ec</font>
        </p>
        <img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=bff0f6b4-4e82-471f-b0ff-3ef47714d751" />
      </body>
      <title>SoapExceptions and Global Exception Logging</title>
      <guid>http://www.efficientcoder.com/PermaLink,guid,bff0f6b4-4e82-471f-b0ff-3ef47714d751.aspx</guid>
      <link>http://www.efficientcoder.com/PermaLink,guid,bff0f6b4-4e82-471f-b0ff-3ef47714d751.aspx</link>
      <pubDate>Wed, 05 Nov 2008 13:27:49 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;In all my web sites my pages inherit from a custom base page that inherits
   from &lt;font face="Courier New"&gt;System.Web.UI.Page&lt;/font&gt; and&amp;nbsp;overrides &lt;font face="Courier New"&gt;OnError&lt;/font&gt;.&amp;nbsp;
   This method then uses &lt;font face="Courier New"&gt;Server.GetLastError()&lt;/font&gt; to get
   the exception generated by the offending code.&amp;nbsp; At this point, it's probably
   too late to do anything about it, but at least I can take a snap shot of the current&amp;nbsp;user
   context, log that information&amp;nbsp;present a friendly message to the user.&amp;nbsp; Although
   the bug made it into production at least it's not happening 200 times a day and I
   don't know about.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;A good portion of my site is driven by web services via AJAX and as I
   start to implement Silverlight for a few sophisticated UI components, I'm relying
   more and more on web services.&amp;nbsp; My problem until now was I didn't have any sort
   of catch-all that notified me about problem in a web service call.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;After a bit of research I found something called a &lt;font face="Courier New"&gt;SoapExtension&lt;/font&gt; in
   the &lt;font face="Courier New"&gt;System.Web.Services.Protocols&lt;/font&gt; namespace.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;This provides calls at different points in the processing of the soap
   message:&lt;br&gt;
   &lt;img src="http://www.efficientcoder.com/content/binary/SoapMessageStage.gif" border=0&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;We can implement some functionality in the AfterSerialize stage.&amp;nbsp;
   If we detect a non-null value in the message.Exception property it's probably safe
   to assume something bad happened within the web service.&lt;br&gt;
   &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;&lt;img src="http://www.efficientcoder.com/content/binary/CustomSoapHandling.gif" border=0&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;The final step is to register this in the web.config file.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;&lt;img src="http://www.efficientcoder.com/content/binary/CustomSoapWebConfig.gif" border=0&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;In addition SoapExtensions can be associated with specific methods via
   attributes.&amp;nbsp; This might be interesting to provide an interesting solution for
   attaching custom authentication and authorization.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;-ec&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=bff0f6b4-4e82-471f-b0ff-3ef47714d751" /&gt;</description>
      <comments>http://www.efficientcoder.com/CommentView,guid,bff0f6b4-4e82-471f-b0ff-3ef47714d751.aspx</comments>
      <category>ASP.NET</category>
    </item>
    <item>
      <trackback:ping>http://www.efficientcoder.com/Trackback.aspx?guid=3257d29f-9390-400d-a1b1-b8fc8ca745bc</trackback:ping>
      <pingback:server>http://www.efficientcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.com/PermaLink,guid,3257d29f-9390-400d-a1b1-b8fc8ca745bc.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.com/CommentView,guid,3257d29f-9390-400d-a1b1-b8fc8ca745bc.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3257d29f-9390-400d-a1b1-b8fc8ca745bc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">I've finally found a good excuse to implement something using <a href="http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx">Silverlight
      2.0</a> within my web product.  After spending about 3-4 hours attempting to
      get my Silverlight app to talk to a local web service, I found out something that
      hopefully will save you some time.  First a little about my environment. 
      I'm using IIS 7.0 on a 64 bit machine.  I have IIS setup with two sites for my
      Silverlight development, the first hosts my web service, the second hosts the web
      site containing my Silverlight application.  I have my hosts file setup
      as follows</font>
        </p>
        <p>
          <font size="3">127.0.0.1   webservice<br />
      127.0.0.1   website</font>
        </p>
        <p>
          <font size="3">Then in IIS I bind the the web sites to those host names.</font>
        </p>
        <p>
          <font size="3">After setting up the </font>
          <a href="http://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspx">
            <font size="3">clientaccesspolicy.xml</font>
          </a>
          <font size="3"> file
      in my webservice site to allow Silverlight to access I just couldn't get my Silverlight
      app to talk to my web service.  I tried this in both IE and Firefox with no luck. 
      After doing a little testing, I found it worked when I used the development web
      server (I think this was formally called cassini) it also seemed to work when
      when I used the host name "localhost".  Next I fired up </font>
          <a href="http://www.fiddlertool.com/fiddler/">
            <font size="3">fiddler</font>
          </a>
          <font size="3"> and
      watched the network traffic.  Anytime I used cassini or local host, the clientaccesspolicy.xml
      was downloaded and the call to the web service </font>
          <font size="3">
            <span style="COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'">succeeded. 
      If I tried this through my site, no request was made.</span>
          </font>
        </p>
        <p>
          <font size="3">
            <span style="COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'">After
      trying a number of things I found I was able to get this working by opening the security
      settings within Internet Explorer</span>
          </font>
        </p>
        <p>
          <font size="3">
            <span style="COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'">Tools-&gt;Internet
      Options-&gt;Security Tab, then click on Local Intranet and add my two sites. 
      This seemed to do the trick for both Internet Explorer and Firefox.</span>
          </font>
        </p>
        <p>
          <font size="3">
            <span style="COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'">Hope
      this saves you a bit of time</span>
          </font>
        </p>
        <p>
          <font size="3">
            <span style="COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'">-ec</span>
          </font>
          <font size="3"> </font>
        </p>
        <img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=3257d29f-9390-400d-a1b1-b8fc8ca745bc" />
      </body>
      <title>Local Silverlight Development and clientaccesspolicy.html</title>
      <guid>http://www.efficientcoder.com/PermaLink,guid,3257d29f-9390-400d-a1b1-b8fc8ca745bc.aspx</guid>
      <link>http://www.efficientcoder.com/PermaLink,guid,3257d29f-9390-400d-a1b1-b8fc8ca745bc.aspx</link>
      <pubDate>Tue, 04 Nov 2008 01:50:58 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;I've finally found a good excuse to implement something using &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx"&gt;Silverlight
   2.0&lt;/a&gt; within my web product.&amp;nbsp; After spending about 3-4 hours attempting to
   get my Silverlight app to talk to a local web service, I found out something that
   hopefully will save you some time.&amp;nbsp; First a little about my environment.&amp;nbsp;
   I'm using IIS 7.0 on a 64 bit machine.&amp;nbsp; I have IIS setup with two sites for my
   Silverlight development, the first hosts my web service, the second hosts the web
   site containing my Silverlight application.&amp;nbsp; I have&amp;nbsp;my hosts file setup
   as follows&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp;webservice&lt;br&gt;
   127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp;website&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;Then in IIS I bind the the web sites to those host names.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;After setting up the &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspx"&gt;&lt;font size=3&gt;clientaccesspolicy.xml&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt; file
   in my webservice site to allow Silverlight to access I just couldn't get my Silverlight
   app to talk to my web service.&amp;nbsp; I tried this in both IE and Firefox with no luck.&amp;nbsp;
   After doing a little testing, I found it worked when I used the&amp;nbsp;development web
   server (I think this was formally called cassini)&amp;nbsp;it also seemed to work when
   when I used the host name "localhost".&amp;nbsp; Next I fired up &lt;/font&gt;&lt;a href="http://www.fiddlertool.com/fiddler/"&gt;&lt;font size=3&gt;fiddler&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt; and
   watched the network traffic.&amp;nbsp; Anytime I used cassini or local host, the clientaccesspolicy.xml
   was downloaded and the call to the web service &lt;/font&gt;&lt;font size=3&gt;&lt;span style="COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'"&gt;succeeded.&amp;nbsp;
   If I tried this through my site, no request was made.&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;&lt;span style="COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'"&gt;After
   trying a number of things I found I was able to get this working by opening the security
   settings within Internet Explorer&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;&lt;span style="COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Tools-&amp;gt;Internet
   Options-&amp;gt;Security Tab, then click on Local Intranet and add my two sites.&amp;nbsp;
   This seemed to&amp;nbsp;do the trick for both Internet Explorer and Firefox.&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;&lt;span style="COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'"&gt;Hope
   this saves you a bit of time&lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;&lt;span style="COLOR: #003300; FONT-FAMILY: 'Verdana','sans-serif'"&gt;-ec&lt;/span&gt;&lt;/font&gt;&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=3257d29f-9390-400d-a1b1-b8fc8ca745bc" /&gt;</description>
      <comments>http://www.efficientcoder.com/CommentView,guid,3257d29f-9390-400d-a1b1-b8fc8ca745bc.aspx</comments>
      <category>ASP.NET;Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://www.efficientcoder.com/Trackback.aspx?guid=c83d9f7e-55ce-468c-9d07-ae1a3731650b</trackback:ping>
      <pingback:server>http://www.efficientcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.com/PermaLink,guid,c83d9f7e-55ce-468c-9d07-ae1a3731650b.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.com/CommentView,guid,c83d9f7e-55ce-468c-9d07-ae1a3731650b.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c83d9f7e-55ce-468c-9d07-ae1a3731650b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img style="FLOAT: left; MARGIN-RIGHT: 10px" src="http://www.efficientcoder.com/content/binary/colorgsp.jpg" border="0" />
          <strong>
            <font size="4">From
      George S. Patton</font>
          </strong>
        </p>
        <p>
          <em>
            <font size="3">Good tactics can save even the worst strategy. Bad tactics will
      destroy even the best strategy.</font>
          </em>
        </p>
        <p>
          <font size="3">Let's relate that to software:</font>
        </p>
        <p>
          <font size="3">Strategy = Architecture</font>
        </p>
        <p>
          <font size="3">Tactics = Programming</font>
        </p>
        <p>
          <font size="3">If you have a poor architecture, it can be made up for by great programmers,
      but if you have poor programmers implementing software on a great architecture results will
      probably still be poor.  </font>
        </p>
        <p>
      -ec
   </p>
        <img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=c83d9f7e-55ce-468c-9d07-ae1a3731650b" />
      </body>
      <title>Software Development Moment of Clarity #2</title>
      <guid>http://www.efficientcoder.com/PermaLink,guid,c83d9f7e-55ce-468c-9d07-ae1a3731650b.aspx</guid>
      <link>http://www.efficientcoder.com/PermaLink,guid,c83d9f7e-55ce-468c-9d07-ae1a3731650b.aspx</link>
      <pubDate>Thu, 23 Oct 2008 23:35:40 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;img style="FLOAT: left; MARGIN-RIGHT: 10px" src="http://www.efficientcoder.com/content/binary/colorgsp.jpg" border=0&gt;&lt;strong&gt;&lt;font size=4&gt;From
   George S. Patton&lt;/font&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;em&gt;&lt;font size=3&gt;Good tactics can save even the worst strategy. Bad tactics will destroy
   even the best strategy.&lt;/font&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;Let's relate that to software:&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;Strategy = Architecture&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;Tactics = Programming&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;If you have a poor architecture, it can be made up for by great programmers,
   but if you have poor programmers implementing software on a great architecture results&amp;nbsp;will
   probably still be&amp;nbsp;poor.&amp;nbsp; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   -ec
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=c83d9f7e-55ce-468c-9d07-ae1a3731650b" /&gt;</description>
      <comments>http://www.efficientcoder.com/CommentView,guid,c83d9f7e-55ce-468c-9d07-ae1a3731650b.aspx</comments>
      <category>Extreme Programming;Moments of Clarity</category>
    </item>
    <item>
      <trackback:ping>http://www.efficientcoder.com/Trackback.aspx?guid=a7197142-1656-490b-b003-8cccb13e2f7a</trackback:ping>
      <pingback:server>http://www.efficientcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.com/PermaLink,guid,a7197142-1656-490b-b003-8cccb13e2f7a.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.com/CommentView,guid,a7197142-1656-490b-b003-8cccb13e2f7a.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a7197142-1656-490b-b003-8cccb13e2f7a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font size="3">I belive the following is accurate for developing 95% of business applications:</font>
        </p>
        <ol>
          <li>
            <div class="MsoNormal" style="MARGIN: 0in 0in 0pt">
              <font color="#000000">
                <font size="3">
                  <font face="Calibri">People
            buy software to solve problems, that can be making their life easier, making money
            or providing pleasure (don’t read too much in to that </font>
                  <span style="FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings">
                    <span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings">J</span>
                  </span>
                  <font face="Calibri">)</font>
                </font>
              </font>
            </div>
          </li>
          <li>
            <div class="MsoNormal" style="MARGIN: 0in 0in 0pt">
              <font color="#000000">
                <font face="Calibri" size="3">Features
            enable solutions to problems.</font>
              </font>
            </div>
          </li>
          <li>
            <div class="MsoNormal" style="MARGIN: 0in 0in 0pt">
              <font color="#000000">
                <font face="Calibri" size="3">When
            we write software, we build features.</font>
              </font>
            </div>
          </li>
          <li>
            <div class="MsoNormal" style="MARGIN: 0in 0in 0pt">
              <font color="#000000">
                <font face="Calibri" size="3">With
            the right level of abstraction there is a common and finite set of features to be
            implemented in code.</font>
              </font>
            </div>
          </li>
          <li>
            <div class="MsoNormal" style="MARGIN: 0in 0in 0pt">
              <font color="#000000">
                <font face="Calibri">
                  <font size="3">Applications
            should be built by tailoring features to solve a user problem.<span style="mso-spacerun: yes">  </span></font>
                </font>
              </font>
            </div>
          </li>
          <li>
            <div class="MsoNormal" style="MARGIN: 0in 0in 0pt">
              <font color="#000000">
                <font face="Calibri" size="3">If
            tailoring features has to be done by writing code, so be it, but this is very costly
            in terms of time and money.</font>
              </font>
            </div>
          </li>
          <li>
            <div class="MsoNormal" style="MARGIN: 0in 0in 0pt">
              <font color="#000000">
                <font face="Calibri">
                  <font size="3">It’s
            preferable to have this done via configuration.</font>
                </font>
              </font>
            </div>
          </li>
        </ol>
        <p class="MsoNormal" style="MARGIN: 0in 0in 0pt">
          <font face="Calibri" color="#000000" size="3">-ec</font>
        </p>
        <p>
       
   </p>
        <img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=a7197142-1656-490b-b003-8cccb13e2f7a" />
      </body>
      <title>Software Development Moment of Clarity</title>
      <guid>http://www.efficientcoder.com/PermaLink,guid,a7197142-1656-490b-b003-8cccb13e2f7a.aspx</guid>
      <link>http://www.efficientcoder.com/PermaLink,guid,a7197142-1656-490b-b003-8cccb13e2f7a.aspx</link>
      <pubDate>Tue, 21 Oct 2008 21:38:03 GMT</pubDate>
      <description>&lt;p&gt;
   &lt;font size=3&gt;I belive the following is accurate for developing 95% of business applications:&lt;/font&gt;
&lt;/p&gt;
&lt;ol&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;font color=#000000&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;People
         buy software to solve problems, that can be making their life easier, making money
         or providing pleasure (don’t read too much in to that &lt;/font&gt;&lt;span style="FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;font face=Calibri&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Calibri size=3&gt;Features
         enable solutions to problems.&lt;/font&gt;&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Calibri size=3&gt;When
         we write software, we build features.&lt;/font&gt;&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Calibri size=3&gt;With
         the right level of abstraction there is a common and finite set of features to be
         implemented in code.&lt;/font&gt;&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;&lt;font size=3&gt;Applications
         should be built by tailoring features to solve a user problem.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Calibri size=3&gt;If
         tailoring features has to be done by writing code, so be it, but this is very costly
         in terms of time and money.&lt;/font&gt;&lt;/font&gt;
      &lt;/div&gt;
   &lt;li&gt;
      &lt;div class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;font color=#000000&gt;&lt;font face=Calibri&gt;&lt;font size=3&gt;It’s
         preferable to have this done via configuration.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
      &lt;/div&gt;
   &lt;/li&gt;
&lt;/ol&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
   &lt;font face=Calibri color=#000000 size=3&gt;-ec&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=a7197142-1656-490b-b003-8cccb13e2f7a" /&gt;</description>
      <comments>http://www.efficientcoder.com/CommentView,guid,a7197142-1656-490b-b003-8cccb13e2f7a.aspx</comments>
      <category>Software Engineering</category>
    </item>
    <item>
      <trackback:ping>http://www.efficientcoder.com/Trackback.aspx?guid=a632aed5-b8b7-4313-aaea-42973be21304</trackback:ping>
      <pingback:server>http://www.efficientcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.com/PermaLink,guid,a632aed5-b8b7-4313-aaea-42973be21304.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.com/CommentView,guid,a632aed5-b8b7-4313-aaea-42973be21304.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a632aed5-b8b7-4313-aaea-42973be21304</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <img style="FLOAT: right" src="http://www.efficientcoder.com/content/binary/AWSLogo.png" border="0" />
        <p>
          <font size="3">I have the need in my application for users to upload many different
      types of documents and images.  Currently I have two ways of doing this;
      the first is to save to a set of directories organzied by user in a file system,
      the second is in the data base.  Neither of these are really ideal for many reasons
      that I'm sure you recognize.  To resolve this issue, I built a component that
      extends the ASP.NET file upload control to allow you to save files to the Amazon Simple
      Storage Servce (S3).  I've released the source code and component with an open
      source license, so you can download this and use in your projects as well.  The
      download as well as documentation can be found at </font>
          <a href="http://downloads.slsys.net/S3FileUpload/Default.aspx">
            <font size="3">http://downloads.slsys.net/S3FileUpload/Default.aspx</font>
          </a>
          <font size="3">.</font>
        </p>
        <p>
          <font size="3">Enjoy and feedback is appreciated!</font>
        </p>
        <p>
          <font size="3">-ec</font>
        </p>
        <img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=a632aed5-b8b7-4313-aaea-42973be21304" />
      </body>
      <title>Introducing the ASP.NET S3FileUpload Control</title>
      <guid>http://www.efficientcoder.com/PermaLink,guid,a632aed5-b8b7-4313-aaea-42973be21304.aspx</guid>
      <link>http://www.efficientcoder.com/PermaLink,guid,a632aed5-b8b7-4313-aaea-42973be21304.aspx</link>
      <pubDate>Mon, 21 Jul 2008 11:39:54 GMT</pubDate>
      <description>&lt;img style="FLOAT: right" src="http://www.efficientcoder.com/content/binary/AWSLogo.png" border=0&gt; 
&lt;p&gt;
   &lt;font size=3&gt;I have the need in my application for users to upload many different
   types of documents and images.&amp;nbsp;&amp;nbsp;Currently I have two ways of doing this;
   the first is to&amp;nbsp;save to a set of directories organzied by user in a file system,
   the second is in the data base.&amp;nbsp; Neither of these are really ideal for many reasons
   that I'm sure you recognize.&amp;nbsp; To resolve this issue, I built a component that
   extends the ASP.NET file upload control to allow you to save files to the Amazon Simple
   Storage Servce (S3).&amp;nbsp; I've released the source code and component with an open
   source license, so you can download this and use in your projects as well.&amp;nbsp; The
   download as well as documentation can be found at &lt;/font&gt;&lt;a href="http://downloads.slsys.net/S3FileUpload/Default.aspx"&gt;&lt;font size=3&gt;http://downloads.slsys.net/S3FileUpload/Default.aspx&lt;/font&gt;&lt;/a&gt;&lt;font size=3&gt;.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;Enjoy and feedback is appreciated!&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
   &lt;font size=3&gt;-ec&lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=a632aed5-b8b7-4313-aaea-42973be21304" /&gt;</description>
      <comments>http://www.efficientcoder.com/CommentView,guid,a632aed5-b8b7-4313-aaea-42973be21304.aspx</comments>
      <category>ASP.NET</category>
    </item>
    <item>
      <trackback:ping>http://www.efficientcoder.com/Trackback.aspx?guid=649c1a35-3abe-43c1-bd79-5c0ea4f0c34f</trackback:ping>
      <pingback:server>http://www.efficientcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.com/PermaLink,guid,649c1a35-3abe-43c1-bd79-5c0ea4f0c34f.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.com/CommentView,guid,649c1a35-3abe-43c1-bd79-5c0ea4f0c34f.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=649c1a35-3abe-43c1-bd79-5c0ea4f0c34f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p align="left">
      As a developer, I appreciate the complexity and I'm trying really hard to like Vista
      (SP1) but sometimes it's a bit on the frustrating side...
   </p>
        <p align="center">
          <img src="http://www.efficientcoder.com/content/binary/ProblemReporting.gif" border="0" />
        </p>
        <p align="left">
      Then after loading Visual Studio .NET and trying to do some work, the reason became
      obvious
   </p>
        <p align="center">
          <img src="http://www.efficientcoder.com/content/binary/QATools.gif" border="0" />
        </p>
        <p align="left">
      :-)
   </p>
        <p align="left">
      Anyway, after rebooting all is well.
   </p>
        <p align="left">
      -ec
   </p>
        <img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=649c1a35-3abe-43c1-bd79-5c0ea4f0c34f" />
      </body>
      <title>Hmmmm....this can't be good...</title>
      <guid>http://www.efficientcoder.com/PermaLink,guid,649c1a35-3abe-43c1-bd79-5c0ea4f0c34f.aspx</guid>
      <link>http://www.efficientcoder.com/PermaLink,guid,649c1a35-3abe-43c1-bd79-5c0ea4f0c34f.aspx</link>
      <pubDate>Fri, 04 Jul 2008 08:38:34 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p align=left&gt;
   As a developer, I appreciate the complexity and I'm trying really hard to like Vista
   (SP1) but sometimes it's a bit on the frustrating side...
&lt;/p&gt;
&lt;p align=center&gt;
   &lt;img src="http://www.efficientcoder.com/content/binary/ProblemReporting.gif" border=0&gt;
&lt;/p&gt;
&lt;p align=left&gt;
   Then after loading Visual Studio .NET and trying to do some work, the reason became
   obvious
&lt;/p&gt;
&lt;p align=center&gt;
   &lt;img src="http://www.efficientcoder.com/content/binary/QATools.gif" border=0&gt;
&lt;/p&gt;
&lt;p align=left&gt;
   :-)
&lt;/p&gt;
&lt;p align=left&gt;
   Anyway, after rebooting all is well.
&lt;/p&gt;
&lt;p align=left&gt;
   -ec
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=649c1a35-3abe-43c1-bd79-5c0ea4f0c34f" /&gt;</description>
      <comments>http://www.efficientcoder.com/CommentView,guid,649c1a35-3abe-43c1-bd79-5c0ea4f0c34f.aspx</comments>
      <category>Lighter Side</category>
    </item>
    <item>
      <trackback:ping>http://www.efficientcoder.com/Trackback.aspx?guid=e1a421e1-f48c-4998-b8a6-0b0e47bb606b</trackback:ping>
      <pingback:server>http://www.efficientcoder.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.efficientcoder.com/PermaLink,guid,e1a421e1-f48c-4998-b8a6-0b0e47bb606b.aspx</pingback:target>
      <dc:creator>kevinw@software-logistics.com (Kevin D. Wolf)</dc:creator>
      <wfw:comment>http://www.efficientcoder.com/CommentView,guid,e1a421e1-f48c-4998-b8a6-0b0e47bb606b.aspx</wfw:comment>
      <wfw:commentRss>http://www.efficientcoder.com/SyndicationService.asmx/GetEntryCommentsRss?guid=e1a421e1-f48c-4998-b8a6-0b0e47bb606b</wfw:commentRss>
      <title>A place for everything, and everything in it's place (Fun with CSS)</title>
      <guid>http://www.efficientcoder.com/PermaLink,guid,e1a421e1-f48c-4998-b8a6-0b0e47bb606b.aspx</guid>
      <link>http://www.efficientcoder.com/PermaLink,guid,e1a421e1-f48c-4998-b8a6-0b0e47bb606b.aspx</link>
      <pubDate>Thu, 03 Jul 2008 15:08:35 GMT</pubDate>
      <description>

&lt;p class="MsoNormal"&gt;
   Well if you saw my garage, you know I should be the last one talking about this, maybe
   I use up all my organizational energy on the code I write?&lt;br&gt;
   &lt;br&gt;
   Anyway, in a project I've been working over the past year or so, I've been using the
   ASP.NET Themeing concept along with CSS to build a "skinnable" product.&amp;nbsp; Skinning
   will for the most part be accomplished via CSS.&amp;nbsp; As I've been adding features,
   I've sort-of hacked together the required CSS as a new feature was added.&amp;nbsp; These
   were organized into different areas, and named appropriately, but as I started to
   build additional themes, it just got fairly complex making sure everything got lined
   up and styles didn’t get messed up in different CSS’s.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
   &lt;br&gt;
   Here is an example of my original CSS for section of the application, imagine there
   are about 12 other sections similar to this&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;&lt;font color="#008000"&gt;/*
   -------- Edit Panel ------------ */&lt;/font&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;border&lt;/span&gt;:&lt;span style="color: blue;"&gt;1px&lt;/span&gt; &lt;span style="color: blue;"&gt;solid&lt;/span&gt; &lt;span style="color: blue;"&gt;#AACCEE&lt;/span&gt;;&lt;span style="color: red;"&gt;text-align&lt;/span&gt;:&lt;span style="color: blue;"&gt;left&lt;/span&gt;;&lt;span style="color: red;"&gt;width&lt;/span&gt;:&lt;span style="color: blue;"&gt;400px&lt;/span&gt;;&lt;span style="color: red;"&gt;background-color&lt;/span&gt;:&lt;span style="color: blue;"&gt;white&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel-header&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;background-color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#EBF3FB&lt;/span&gt;;&lt;span style="color: red;"&gt;border-bottom&lt;/span&gt;:&lt;span style="color: blue;"&gt;1px&lt;/span&gt; &lt;span style="color: blue;"&gt;solid&lt;/span&gt; &lt;span style="color: blue;"&gt;#AACBEE&lt;/span&gt;;&lt;span style="color: red;"&gt;margin&lt;/span&gt;:&lt;span style="color: blue;"&gt;0pt&lt;/span&gt; &lt;span style="color: blue;"&gt;0pt&lt;/span&gt; &lt;span style="color: blue;"&gt;6px&lt;/span&gt;;&lt;span style="color: red;"&gt;padding&lt;/span&gt;:&lt;span style="color: blue;"&gt;3px&lt;/span&gt; &lt;span style="color: blue;"&gt;6px&lt;/span&gt;;} 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel-header-tight&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;background-color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#EBF3FB&lt;/span&gt;;&lt;span style="color: red;"&gt;border-bottom&lt;/span&gt;:&lt;span style="color: blue;"&gt;1px&lt;/span&gt; &lt;span style="color: blue;"&gt;solid&lt;/span&gt; &lt;span style="color: blue;"&gt;#AACBEE&lt;/span&gt;;&lt;span style="color: red;"&gt;padding&lt;/span&gt;:&lt;span style="color: blue;"&gt;3px&lt;/span&gt; &lt;span style="color: blue;"&gt;6px&lt;/span&gt;;} 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel-header&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;span&lt;/span&gt;{&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#07519A&lt;/span&gt;;&lt;span style="color: red;"&gt;font-family&lt;/span&gt;:&lt;span style="color: blue;"&gt;Verdana&lt;/span&gt;;&lt;span style="color: red;"&gt;font-weight&lt;/span&gt;:&lt;span style="color: blue;"&gt;bold&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel-header-tight&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;span&lt;/span&gt;{&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#07519A&lt;/span&gt;;&lt;span style="color: red;"&gt;font-family&lt;/span&gt;:&lt;span style="color: blue;"&gt;Verdana&lt;/span&gt;;&lt;span style="color: red;"&gt;font-weight&lt;/span&gt;:&lt;span style="color: blue;"&gt;bold&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;padding&lt;/span&gt;:&lt;span style="color: blue;"&gt;4px&lt;/span&gt;;&lt;span style="color: red;"&gt;font-family&lt;/span&gt;:&lt;span style="color: blue;"&gt;Tahoma&lt;/span&gt;;&lt;span style="color: red;"&gt;font-size&lt;/span&gt;:&lt;span style="color: blue;"&gt;9px&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   .edit-section-caption&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;display&lt;/span&gt;:&lt;span style="color: blue;"&gt;block&lt;/span&gt;;&lt;span style="color: red;"&gt;font-weight&lt;/span&gt;:&lt;span style="color: blue;"&gt;bold&lt;/span&gt;;&lt;span style="color: red;"&gt;padding-left&lt;/span&gt;:&lt;span style="color: blue;"&gt;5px&lt;/span&gt;;&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#07519A&lt;/span&gt;;&lt;span style="color: red;"&gt;font-size&lt;/span&gt;:&lt;span style="color: blue;"&gt;1.2em&lt;/span&gt;;&lt;span style="color: red;"&gt;font-family&lt;/span&gt;:&lt;span style="color: blue;"&gt;Verdana&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section-save-bar&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;text-align&lt;/span&gt;:&lt;span style="color: blue;"&gt;right&lt;/span&gt;;&lt;span style="color: red;"&gt;padding-left&lt;/span&gt;:&lt;span style="color: blue;"&gt;4px&lt;/span&gt;;&lt;span style="color: red;"&gt;padding-right&lt;/span&gt;:&lt;span style="color: blue;"&gt;3px&lt;/span&gt;; &lt;span style="color: red;"&gt;padding-bottom&lt;/span&gt;:&lt;span style="color: blue;"&gt;3px&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section-save-bar&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;a&lt;/span&gt; {&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#075191&lt;/span&gt;;&lt;span style="color: red;"&gt;text-decoration&lt;/span&gt;:&lt;span style="color: blue;"&gt;none&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section-save-bar&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;a:hover&lt;/span&gt; {&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#075191&lt;/span&gt;;&lt;span style="color: red;"&gt;text-decoration&lt;/span&gt;:&lt;span style="color: blue;"&gt;underline&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section-validation-error&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;padding&lt;/span&gt;:&lt;span style="color: blue;"&gt;4px&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section-validation-error&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;span&lt;/span&gt; {&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;Red&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   .edit-section-input&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;border&lt;/span&gt;:&lt;span style="color: blue;"&gt;1px&lt;/span&gt; &lt;span style="color: blue;"&gt;solid&lt;/span&gt; &lt;span style="color: blue;"&gt;#AACCEE&lt;/span&gt;; &lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#606060&lt;/span&gt; }&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   .edit-section-textarea&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;border&lt;/span&gt;:&lt;span style="color: blue;"&gt;1px&lt;/span&gt; &lt;span style="color: blue;"&gt;solid&lt;/span&gt; &lt;span style="color: blue;"&gt;#AACCEE&lt;/span&gt;;&lt;span style="color: red;"&gt;width&lt;/span&gt;:&lt;span style="color: blue;"&gt;98%&lt;/span&gt;; &lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#606060&lt;/span&gt; }&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   .edit-section-select&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; { &lt;span style="color: red;"&gt;border&lt;/span&gt;:&lt;span style="color: blue;"&gt;1px&lt;/span&gt; &lt;span style="color: blue;"&gt;solid&lt;/span&gt; &lt;span style="color: blue;"&gt;#AACCEE&lt;/span&gt;; &lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#606060&lt;/span&gt; }&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   span.edit-section-required-symbol&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;{ &lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;Red&lt;/span&gt;;&lt;span style="color: red;"&gt;font-size&lt;/span&gt;:&lt;span style="color: blue;"&gt;8pt&lt;/span&gt;;&lt;span style="color: red;"&gt;font-family&lt;/span&gt;:&lt;span style="color: blue;"&gt;Verdana&lt;/span&gt; }&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   span.edit-section-message-bar-error&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;{}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   span.edit-section-required-symbol&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: green;"&gt;{}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   /* -------- Edit Panel ------------ */&lt;o:p&gt;&lt;/o:p&gt;
   &lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   So now I wanted to change the color scheme and make things look consistent across
   the application, how would I know I made all the borders look correctly?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;How
   about all the fonts and or back ground colors, you would have to wade through the
   noise and hope you got everything.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;Although I don’t always
   succeed, I really try to keep my code organized into certain patterns that is to say
   if I need to add an event handler to a WebForm, well, I’ve got a #region block in
   my code and all event handlers get placed in that #region.&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;So
   thinking about it, why should CSS be any different?&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;I
   adopted the following organizational strategy to make this a bit easier to manage,
   it’s a little bit longer, but if I want to change colors, I can just work in one area
   and make sure I get them all right.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;&lt;font color="#008000"&gt;/*
   -------- Edit Panel ------------ */&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   /* Colors */&lt;/font&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;border&lt;/span&gt;:&lt;span style="color: blue;"&gt;1px&lt;/span&gt; &lt;span style="color: blue;"&gt;solid&lt;/span&gt; &lt;span style="color: blue;"&gt;#AACCEE&lt;/span&gt;;&lt;span style="color: red;"&gt;background-color&lt;/span&gt;:&lt;span style="color: blue;"&gt;white&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel-header&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;background-color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#EBF3FB&lt;/span&gt;;&lt;span style="color: red;"&gt;border-bottom&lt;/span&gt;:&lt;span style="color: blue;"&gt;1px&lt;/span&gt; &lt;span style="color: blue;"&gt;solid&lt;/span&gt; &lt;span style="color: blue;"&gt;#AACBEE&lt;/span&gt;;} 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel-header&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;span&lt;/span&gt;{&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#07519A&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel-header-tight&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;background-color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#EBF3FB&lt;/span&gt;;&lt;span style="color: red;"&gt;border-bottom&lt;/span&gt;:&lt;span style="color: blue;"&gt;1px&lt;/span&gt; &lt;span style="color: blue;"&gt;solid&lt;/span&gt; &lt;span style="color: blue;"&gt;#AACBEE&lt;/span&gt;;} 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel-header-tight&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;span&lt;/span&gt;{&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#07519A&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section-validation-error&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;span&lt;/span&gt; {&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;Red&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   span.edit-section-required-symbol&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;{ &lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;Red&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   .edit-section-caption&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#07519A&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   .edit-section-input&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;edit-section-select&lt;/span&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;edit-section-textarea&lt;/span&gt;&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;{&lt;span style="color: red;"&gt;border&lt;/span&gt;:&lt;span style="color: blue;"&gt;1px&lt;/span&gt; &lt;span style="color: blue;"&gt;solid&lt;/span&gt; &lt;span style="color: blue;"&gt;#AACCEE&lt;/span&gt;; &lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#606060&lt;/span&gt; }&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section-save-bar&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;a&lt;/span&gt; {&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#075191&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section-save-bar&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;a:hover&lt;/span&gt; {&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#075191&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   &lt;font color="#008000"&gt;/* Colors */&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
   &lt;br&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;&lt;font color="#008000"&gt;/*
   Layout */&lt;/font&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;text-align&lt;/span&gt;:&lt;span style="color: blue;"&gt;left&lt;/span&gt;;&lt;span style="color: red;"&gt;width&lt;/span&gt;:&lt;span style="color: blue;"&gt;400px&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel-header&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;margin&lt;/span&gt;:&lt;span style="color: blue;"&gt;0pt&lt;/span&gt; &lt;span style="color: blue;"&gt;0pt&lt;/span&gt; &lt;span style="color: blue;"&gt;6px&lt;/span&gt;;&lt;span style="color: red;"&gt;padding&lt;/span&gt;:&lt;span style="color: blue;"&gt;3px&lt;/span&gt; &lt;span style="color: blue;"&gt;6px&lt;/span&gt;;} 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel-header-tight&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;padding&lt;/span&gt;:&lt;span style="color: blue;"&gt;3px&lt;/span&gt; &lt;span style="color: blue;"&gt;6px&lt;/span&gt;;} 
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;padding&lt;/span&gt;:&lt;span style="color: blue;"&gt;4px&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   .edit-section-textarea&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;width&lt;/span&gt;:&lt;span style="color: blue;"&gt;98%&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   .edit-section-caption&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;display&lt;/span&gt;:&lt;span style="color: blue;"&gt;block&lt;/span&gt;;&lt;span style="color: red;"&gt;padding-left&lt;/span&gt;:&lt;span style="color: blue;"&gt;5px&lt;/span&gt;;&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#07519A&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section-validation-error&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;padding&lt;/span&gt;:&lt;span style="color: blue;"&gt;4px&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section-save-bar&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;text-align&lt;/span&gt;:&lt;span style="color: blue;"&gt;right&lt;/span&gt;;&lt;span style="color: red;"&gt;padding-left&lt;/span&gt;:&lt;span style="color: blue;"&gt;4px&lt;/span&gt;;&lt;span style="color: red;"&gt;padding-right&lt;/span&gt;:&lt;span style="color: blue;"&gt;3px&lt;/span&gt;; &lt;span style="color: red;"&gt;padding-bottom&lt;/span&gt;:&lt;span style="color: blue;"&gt;3px&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section-save-bar&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;a&lt;/span&gt; {&lt;span style="color: red;"&gt;text-decoration&lt;/span&gt;:&lt;span style="color: blue;"&gt;none&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section-save-bar&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;a:hover&lt;/span&gt; {&lt;span style="color: red;"&gt;text-decoration&lt;/span&gt;:&lt;span style="color: blue;"&gt;underline&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   &lt;font color="#008000"&gt;/* Layout */&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
   &lt;br&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;&lt;font color="#008000"&gt;/*
   Fonts */&lt;/font&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-section&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;font-family&lt;/span&gt;:&lt;span style="color: blue;"&gt;Tahoma&lt;/span&gt;;&lt;span style="color: red;"&gt;font-size&lt;/span&gt;:&lt;span style="color: blue;"&gt;9px&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   .edit-section-caption&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; {&lt;span style="color: red;"&gt;font-weight&lt;/span&gt;:&lt;span style="color: blue;"&gt;bold&lt;/span&gt;;&lt;span style="color: red;"&gt;padding-left&lt;/span&gt;:&lt;span style="color: blue;"&gt;5px&lt;/span&gt;;&lt;span style="color: red;"&gt;color&lt;/span&gt;:&lt;span style="color: blue;"&gt;#07519A&lt;/span&gt;;&lt;span style="color: red;"&gt;font-size&lt;/span&gt;:&lt;span style="color: blue;"&gt;1.2em&lt;/span&gt;;&lt;span style="color: red;"&gt;font-family&lt;/span&gt;:&lt;span style="color: blue;"&gt;Verdana&lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel-header&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;span&lt;/span&gt;{&lt;span style="color: red;"&gt;font-family&lt;/span&gt;:&lt;span style="color: blue;"&gt;Verdana&lt;/span&gt;;&lt;span style="color: red;"&gt;font-weight&lt;/span&gt;:&lt;span style="color: blue;"&gt;bold&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   div.edit-panel-header-tight&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt; &lt;span style="color: rgb(163, 21, 21);"&gt;span&lt;/span&gt;{&lt;span style="color: red;"&gt;font-family&lt;/span&gt;:&lt;span style="color: blue;"&gt;Verdana&lt;/span&gt;;&lt;span style="color: red;"&gt;font-weight&lt;/span&gt;:&lt;span style="color: blue;"&gt;bold&lt;/span&gt;;}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   span.edit-section-required-symbol&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;{&lt;span style="color: red;"&gt;font-size&lt;/span&gt;:&lt;span style="color: blue;"&gt;8pt&lt;/span&gt;;&lt;span style="color: red;"&gt;font-family&lt;/span&gt;:&lt;span style="color: blue;"&gt;Verdana&lt;/span&gt; }&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   &lt;font color="#008000"&gt;/* Fonts */&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
   &lt;br&gt;
   &lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;&lt;font color="#008000"&gt;/*
   Misc */&lt;/font&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   span.edit-section-message-bar-error&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: rgb(163, 21, 21);"&gt;{}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   span.edit-section-required-symbol&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: Consolas; color: green;"&gt;{}&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   /* Misc */&lt;o:p&gt;&lt;/o:p&gt;
   &lt;br&gt;
   /* -------- Edit Panel ------------ */&lt;/span&gt;
   &lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;
   &lt;span style="font-size: 8pt; font-family: Consolas; color: green;"&gt;
   &lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;
   &lt;/span&gt;
   &lt;br&gt;
   -ec&lt;o:p&gt;&lt;/o:p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.efficientcoder.com/aggbug.ashx?id=e1a421e1-f48c-4998-b8a6-0b0e47bb606b" /&gt;</description>
      <comments>http://www.efficientcoder.com/CommentView,guid,e1a421e1-f48c-4998-b8a6-0b0e47bb606b.aspx</comments>
    </item>
  </channel>
</rss>