<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.componentart.com/community/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Phil Tucker</title><link>http://www.componentart.com/community/blogs/phil/default.aspx</link><description>Absurdity is its own message.</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Debug Build: 40407.4157)</generator><item><title>Using CalcEngine for Design-Time Data</title><link>http://www.componentart.com/community/blogs/phil/archive/2010/11/24/using-calcengine-for-design-time-data.aspx</link><pubDate>Wed, 24 Nov 2010 20:12:00 GMT</pubDate><guid isPermaLink="false">9ff84d31-80d1-44bd-98c8-eba0322b9d03:103446</guid><dc:creator>phil</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.componentart.com/community/blogs/phil/rsscomments.aspx?PostID=103446</wfw:commentRss><comments>http://www.componentart.com/community/blogs/phil/archive/2010/11/24/using-calcengine-for-design-time-data.aspx#comments</comments><description>&lt;p&gt;There are times during development when it is not possible for controls to access live data from within the Visual Studio Design-Time environment. When this occurs it can be advantageous to have sample data available during Design-Time which reflects the live data to a workable degree. To simplify this task the CalcEngine contains a number of options for providing relevant sample data at Design-Time to other controls while maintaining the proper runtime data bindings.&lt;/p&gt;
&lt;h3&gt;Adding a CalcEngine&lt;/h3&gt;
&lt;p&gt;The first step in this process is to add an instance of the CalcEngine to the page/form and configure one of it&amp;#39;s CalcEngineInputs to connect with the real data source. Information regarding this step can be found in our documentation under &lt;strong&gt;Creating Your First CalcEngine&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Binding to a CalcEngine&lt;/h3&gt;
&lt;p&gt;The second step is to bind the desired control to the instance of the CalcEngine. This can be done with the following syntax.&lt;/p&gt;
&lt;pre&gt;&amp;lt;ComponentArt:XYChart ... DataSource=&amp;quot;{Binding ElementName=calcEngine1, Path=Output}&amp;quot; ... /&amp;gt;&lt;/pre&gt;
&lt;p&gt;In this instance the x:Name of the CalcEngine is calcEngine1. If the CalcEngineInput has been connected to a DataSource and the Expression has been set, it may already be providing relevant sample data to the bound control. If not, some further configuration may be required. The target control should be configured in regards to runtime data, once the proper design-time data type has been generated or specified templates and databound properties of the target control should populate. &lt;/p&gt;
&lt;h3&gt;Configuring Design-Time Data on CalcEngineInputs&lt;/h3&gt;
&lt;p&gt;Each CalcEngineInput defined on a CalcEngine may be configured to provide sample data during Design-Time. A number of options are available for describing and shaping this sample data.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;DesignTimeDataType&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;By default CalcEngine will attempt to determine the desired type for sample data based on types and properties available from the DataSource bound to each CalcEngineInput. There is not always access to the required types and in some cases this is not the desired behavior. The DesingTimeDataType property of the CalcEngineInput allows one to specify the fully qualified type name of the sample data objects that CalcEngineInput should generate.&lt;/p&gt;
&lt;div class="LanguageSpecific" style="color:black;"&gt;
&lt;pre&gt;&amp;lt;ComponentArtCommon:CalcEngine 
  Expression=&amp;quot;calcEngineInput1&amp;quot; 
  Name=&amp;quot;calcEngine1&amp;quot;&amp;gt;
  &amp;lt;ComponentArtCommon:CalcEngineInput 
    Id=&amp;quot;calcEngineInput1&amp;quot; 
    DesignTimeDataType=&amp;quot;System.DateTime&amp;quot; /&amp;gt;
&amp;lt;/ComponentArtCommon:CalcEngine&amp;gt;

&amp;lt;ComponentArtGridView:GridView 
  AutoGenerateColumns=&amp;quot;True&amp;quot; 
  DataContext=&amp;quot;{Binding ElementName=calcEngine1, Path=Output}&amp;quot; 
  ItemsSource=&amp;quot;{Binding}&amp;quot; /&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;It&amp;#39;s important to remember that when no Calc operations are desired the CalcEngine Expression should be set to the Id of the desired CalcEngineInput, this will pass the Value or generated Design-Time data as is through to the CalcEngine&amp;#39;s Output property and, in turn, to bound controls. This code yields the following output.&lt;/p&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/5381.CommonConcepts_5F00_DesignTimeData_5F00_01.PNG"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/5381.CommonConcepts_5F00_DesignTimeData_5F00_01.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One handy class for generating sample data is contained within both frameworks of the Data Visualization Suite,&lt;/p&gt;
&lt;p&gt;ComponentArt.Silverlight.DataVisualization.Utils.DemoDataValue&lt;br /&gt;ComponentArt.Win.DataVisualization.Utils.DemoDataValue &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;DesignTimeDataRecords&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;This CalcEngineInput property specifies the number of sample data records to create, either of the detected type or of the DesignTimeDataType. The default is 15 records.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;DesignTimeDataAlgorithm&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Each CalcEngineInput also has the potential to generate data based on a number of algorithms, specified through the DesignTimeDataAlgoritm property.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fractal ( Default )&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/5466.CommonConcepts_5F00_DesignTimeData_5F00_Fractal.PNG"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/5466.CommonConcepts_5F00_DesignTimeData_5F00_Fractal.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Random&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/2630.CommonConcepts_5F00_DesignTimeData_5F00_Random.PNG"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/2630.CommonConcepts_5F00_DesignTimeData_5F00_Random.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Incremental&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/0574.CommonConcepts_5F00_DesignTimeData_5F00_Incremental.PNG"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/0574.CommonConcepts_5F00_DesignTimeData_5F00_Incremental.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sine&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/0243.CommonConcepts_5F00_DesignTimeData_5F00_Sine.PNG"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/0243.CommonConcepts_5F00_DesignTimeData_5F00_Sine.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;/ul&gt;
&lt;h3&gt;Design-Time Data at Runtime&lt;/h3&gt;
&lt;p&gt;CalcEngine automatically detects whether or not it is running in Visual Studio Design-Time. Outside of Visual Studio Design-Time sample data generation will not occur and the data bound to Values of the CalcEngineInputs will become the active context.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color:#ff0000;"&gt;*Functionality available in ComponentArt Data Visualization 2010 SP2&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.componentart.com/community/aggbug.aspx?PostID=103446" width="1" height="1"&gt;</description><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Design-Time/default.aspx">Design-Time</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/DesignTime/default.aspx">DesignTime</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Data/default.aspx">Data</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Visualization/default.aspx">Visualization</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/calcengine/default.aspx">calcengine</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/CalcEngineInput/default.aspx">CalcEngineInput</category></item><item><title>Visualizing Toronto's 2010 Mayoral Election with ComponentArt Data Visualization</title><link>http://www.componentart.com/community/blogs/phil/archive/2010/10/28/visualizing-toronto-s-2010-mayoral-election-with-componentart-data-visualization.aspx</link><pubDate>Thu, 28 Oct 2010 19:16:00 GMT</pubDate><guid isPermaLink="false">9ff84d31-80d1-44bd-98c8-eba0322b9d03:103017</guid><dc:creator>phil</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.componentart.com/community/blogs/phil/rsscomments.aspx?PostID=103017</wfw:commentRss><comments>http://www.componentart.com/community/blogs/phil/archive/2010/10/28/visualizing-toronto-s-2010-mayoral-election-with-componentart-data-visualization.aspx#comments</comments><description>&lt;p&gt;&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;&lt;span class="Apple-converted-space"&gt;T&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;he City of Toronto has released their&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;a target="_blank" href="http://www.toronto.ca/elections/results/results_2010.htm"&gt;Official Election Results&lt;/a&gt;. ComponentArt being a Toronto based company I thought this data offered a&amp;nbsp;great way&amp;nbsp;to showcase our Map control and present an informative and intuitive view of the data.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;&lt;span class="Apple-converted-space"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;&lt;span class="Apple-converted-space"&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;&lt;span class="Apple-converted-space"&gt;&lt;a target="_blank" href="http://dv.componentart.com/toronto2010/"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/0804.Toronto2010Screen.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;&lt;span class="Apple-converted-space"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;&lt;span class="Apple-converted-space"&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;&lt;span class="Apple-converted-space"&gt;&lt;a target="_blank" href="http://dv.componentart.com/toronto2010/"&gt;Visualizing Toronto&amp;#39;s 2010 Mayoral Election&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;&lt;span class="Apple-converted-space"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;&lt;span class="Apple-converted-space"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;&lt;span class="Apple-converted-space"&gt;&lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/0804.Toronto2010Screen.png"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://dv.componentart.com/toronto2010/"&gt;&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;&lt;span class="Apple-converted-space"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;&lt;span class="Apple-converted-space"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0px;border-collapse:separate;font:14px arial, sans-serif;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0px;-webkit-border-horizontal-spacing:0px;-webkit-border-vertical-spacing:0px;-webkit-text-decorations-in-effect:none;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span class="Apple-style-span" style="border-collapse:collapse;font-size:13px;"&gt;&lt;span class="Apple-converted-space"&gt;&lt;a href="http://dv.componentart.com/toronto2010/"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.componentart.com/community/aggbug.aspx?PostID=103017" width="1" height="1"&gt;</description></item><item><title>ComponentArt DataVisualization &amp; Visual Studio Design-Time</title><link>http://www.componentart.com/community/blogs/phil/archive/2010/10/26/componentart-datavisualization-amp-visual-studio-design-time.aspx</link><pubDate>Tue, 26 Oct 2010 18:59:00 GMT</pubDate><guid isPermaLink="false">9ff84d31-80d1-44bd-98c8-eba0322b9d03:102985</guid><dc:creator>phil</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.componentart.com/community/blogs/phil/rsscomments.aspx?PostID=102985</wfw:commentRss><comments>http://www.componentart.com/community/blogs/phil/archive/2010/10/26/componentart-datavisualization-amp-visual-studio-design-time.aspx#comments</comments><description>&lt;p&gt;With the full release of ComponentArt DataVisualization now in the hands of the public I thought I&amp;#39;d take a minute and talk about some of the features we&amp;#39;ve added in regards to Visual Studio Design-Time integration. Visual Studio 2010 comes with unprecedented options as far as design-time is concerned and we&amp;#39;ve tried to take advantage of them all. Many tasks which would previously require XAML editing, endless searching through the Visual Studio Property Grid&amp;nbsp;or altering existing demo projects for inclusion can now be accomplished quickly and easily through our design-time adorners.&lt;/p&gt;
&lt;h3&gt;Using the ToolBox&lt;/h3&gt;
&lt;p&gt;Visual Studio users are probably already familiar with the Visual Studio control ToolBox. Once a project has been created it can be access through the File Menu &amp;gt; View &amp;gt; Toolbox. It contains controls which are available for use with the page or form which is currently being edited, Silverlight or WPF projects for example.&lt;/p&gt;
&lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/0257.CommonConcepts_5F00_DesignTime_5F00_01.PNG"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/0257.CommonConcepts_5F00_DesignTime_5F00_01.PNG" border="0" alt="" /&gt;&lt;/a&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If one has installed ComponentArt DataVisualization for the current platform one will see a section dedicated to these controls. They can be placed on your page or form simply by dragging and dropping the icon onto the design surface. Alternately one can select the control by clicking on the icon, and then click on the design surface to drag a rectangle to which the new control should size*.&lt;i&gt;*Not all controls will adhere to this sizing practice&lt;/i&gt;&lt;/p&gt;
&lt;h3&gt;Using Adorners&lt;/h3&gt;
&lt;p&gt;Once a ComponentArt DataVisualization control has been placed on the design surface most of it&amp;#39;s common options can be configured easily through it&amp;#39;s design-time adorner. This is a small rounded button which appears at the top right of the control and contains the control icon in it.&lt;/p&gt;
&lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/2308.CommonConcepts_5F00_DesignTime_5F00_02.PNG"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/2308.CommonConcepts_5F00_DesignTime_5F00_02.PNG" border="0" alt="" /&gt;&lt;/a&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Rolling the mouse over this adorner will cause it to expand and reveal the control type. Clicking on the adorner will reveal the control&amp;#39;s configuration panel.&lt;/p&gt;
&lt;h3&gt;Quick Start&lt;/h3&gt;
&lt;p&gt;Clicking on the adorner icon will reveal the initial panel for the control being designed. This initial panel has a number of sections, the first being the &lt;b&gt;Quick Start&lt;/b&gt; section.&lt;/p&gt;
&lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/6661.CommonConcepts_5F00_DesignTime_5F00_03.PNG"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/6661.CommonConcepts_5F00_DesignTime_5F00_03.PNG" border="0" alt="" /&gt;&lt;/a&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Within the Quick Start is everything one needs to ready a control instance for runtime.&lt;/p&gt;
&lt;h3&gt;Start from Gallery&lt;/h3&gt;
&lt;p&gt;For most DataVisualization controls the first option in the Quick Start section will be &lt;b&gt;Start from Gallery&lt;/b&gt; this allows one to select a starting point from the most popular control settings, many of these templates are populated directly from our extensive demos. Once selected a template will replace the entire control instance on the design surface, it is for this reason that &lt;b&gt;Start from Gallery&lt;/b&gt; should be one&amp;#39;s first step in the design process.&lt;/p&gt;
&lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/5504.CommonConcepts_5F00_DesignTime_5F00_04.PNG"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/5504.CommonConcepts_5F00_DesignTime_5F00_04.PNG" border="0" alt="" /&gt;&lt;/a&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Look and Feel&lt;/h3&gt;
&lt;p&gt;The second section in most designers is the &lt;b&gt;Look and Feel&lt;/b&gt; section. This contains relevant options in regards to Themes and Palettes.&lt;/p&gt;
&lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/3343.CommonConcepts_5F00_DesignTime_5F00_05.PNG"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/3343.CommonConcepts_5F00_DesignTime_5F00_05.PNG" border="0" alt="" /&gt;&lt;/a&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Themes&lt;/b&gt; define the chrome of your dashboard - corner radius, line thickness, text color, margins are all controlled by the Theme. Unlike Templates, selecting a Theme from the Theme Gallery will not overwrite the control instance but simply set the Theme and ThemeVariant properties of the control. The Theme and ThemeVariant properties are also inherited and overridable.&lt;/p&gt;
&lt;p&gt;Much like Themes, &lt;b&gt;Palettes&lt;/b&gt; are inherited and overridable. Palettes specify the color sets used to render data in the DataVisualization controls, whether it is a RadialGauge, an XYChart or a Map, Palettes harmonize your dashboard as each control in the suite is given careful attention when defining a new Palette for it.&lt;/p&gt;
&lt;h3&gt;Other Control Settings&lt;/h3&gt;
&lt;p&gt;While the Quick Start section can help one design a control instance which is ready for run time in short order, there are almost always additional settings. The most popular additional settings can be found categorized within this section of the designer.&lt;/p&gt;
&lt;h3&gt;Help&lt;/h3&gt;
&lt;p&gt;The Help section of the design time adorner offers links to our online forums as well as documentation.&lt;/p&gt;
&lt;h3&gt;Licensing&lt;/h3&gt;
&lt;p&gt;The final section in our design time adorner is the Licensing section. This section allows one to quickly find the license status of the current workstation as well as license the current project, or visit our site in order to purchase a license.&lt;/p&gt;
&lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/5078.CommonConcepts_5F00_DesignTime_5F00_06.PNG"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/5078.CommonConcepts_5F00_DesignTime_5F00_06.PNG" border="0" alt="" /&gt;&lt;/a&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Selecting &lt;b&gt;License Active Project&lt;/b&gt; will launch the ComponentArt License Manager in the background, export a License File ( .LIC ) and add that License File as an Embedded Resource in the current project. Adding a valid License File to the current project will prevent the controls from displaying the unlicensed watermark at runtime. Licensing projects for deployment has always been&amp;nbsp;a sticky point of control suites, no longer,&amp;nbsp;it couldn&amp;#39;t be easier,&amp;nbsp;just takes a single click&amp;nbsp;and it&amp;#39;s ready for launch.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.componentart.com/community/aggbug.aspx?PostID=102985" width="1" height="1"&gt;</description><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Design-Time/default.aspx">Design-Time</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/DesignTime/default.aspx">DesignTime</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/ComponentArt/default.aspx">ComponentArt</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Data/default.aspx">Data</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Adorner/default.aspx">Adorner</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/DataVisualization/default.aspx">DataVisualization</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Visualization/default.aspx">Visualization</category></item><item><title>ItemFlow: Live XAML Content</title><link>http://www.componentart.com/community/blogs/phil/archive/2010/02/23/itemflow-live-xaml-content.aspx</link><pubDate>Tue, 23 Feb 2010 18:33:00 GMT</pubDate><guid isPermaLink="false">9ff84d31-80d1-44bd-98c8-eba0322b9d03:98250</guid><dc:creator>phil</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.componentart.com/community/blogs/phil/rsscomments.aspx?PostID=98250</wfw:commentRss><comments>http://www.componentart.com/community/blogs/phil/archive/2010/02/23/itemflow-live-xaml-content.aspx#comments</comments><description>&lt;p&gt;&amp;nbsp; &lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/1106.ItemFlow_5F00_Form.png"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/1106.ItemFlow_5F00_Form.png" border="0" style="border:1px solid black;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Along with ComponentArt UI Framework&amp;nbsp;2010.1 for Silverlight and WPF comes fantastic new funtionality for our ItemFlow control, the ability to utilize live XAML content within ItemFlowItems. This brings to bear endless possiblities, anything from a simple form wizard spanning multiple ItemFlowItems to nesting an entire ItemFlow within an ItemFlowItem. &lt;br /&gt;Previously ItemFlow utilized a technique of overlapping skewed images in order to attain a perspective transform. Silverlight 3.0 has introduced these types of transforms natively both with 3D Matrix Transforms and the ProjectionPlane along with Writeable Bitmaps. These additional features allow ItemFlow to properly transform any content, not just images.&lt;/p&gt;
&lt;pre class="codeblock"&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#C71585;"&gt;ComponentArt&lt;/span&gt;:&lt;span style="color:#800000;"&gt;ItemFlow&lt;/span&gt; 
	 &lt;span style="color:#FF0000;"&gt;x&lt;/span&gt;:&lt;span style="color:#FF0000;"&gt;Name&lt;/span&gt;=&lt;span style="color:#0000FF;"&gt;&amp;quot;myItemFlow&amp;quot;&lt;/span&gt;
          &lt;span style="color:#FF0000;"&gt;Height&lt;/span&gt;=&lt;span style="color:#0000FF;"&gt;&amp;quot;300&amp;quot;&lt;/span&gt;
          &lt;span style="color:#FF0000;"&gt;Width&lt;/span&gt;=&lt;span style="color:#0000FF;"&gt;&amp;quot;800&amp;quot;&lt;/span&gt;
          &lt;span style="color:#FF0000;"&gt;ItemHeight&lt;/span&gt;=&lt;span style="color:#0000FF;"&gt;&amp;quot;200&amp;quot;&lt;/span&gt;
          &lt;span style="color:#FF0000;"&gt;ItemWidth&lt;/span&gt;=&lt;span style="color:#0000FF;"&gt;&amp;quot;200&amp;quot;&lt;/span&gt;
          &lt;span style="color:#FF0000;"&gt;ShowShading&lt;/span&gt;=&lt;span style="color:#0000FF;"&gt;&amp;quot;False&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#C71585;"&gt;ComponentArt&lt;/span&gt;:&lt;span style="color:#800000;"&gt;ItemFlow.Items&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#C71585;"&gt;ComponentArt&lt;/span&gt;:&lt;span style="color:#800000;"&gt;ItemFlowItem&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#C71585;"&gt;ComponentArt&lt;/span&gt;:&lt;span style="color:#800000;"&gt;ItemFlowItem.ItemTemplate&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;
       &lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;
         &lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Grid&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;
           &lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Border&lt;/span&gt; &lt;span style="color:#FF0000;"&gt;Height&lt;/span&gt;=&lt;span style="color:#0000FF;"&gt;&amp;quot;200&amp;quot;&lt;/span&gt; &lt;span style="color:#FF0000;"&gt;Width&lt;/span&gt;=&lt;span style="color:#0000FF;"&gt;&amp;quot;200&amp;quot;&lt;/span&gt; &lt;span style="color:#FF0000;"&gt;BorderBrush&lt;/span&gt;=&lt;span style="color:#0000FF;"&gt;&amp;quot;Black&amp;quot;&lt;/span&gt; &lt;span style="color:#FF0000;"&gt;BorderThickness&lt;/span&gt;=&lt;span style="color:#0000FF;"&gt;&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;
             &lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:#FF0000;"&gt;Text&lt;/span&gt;=&lt;span style="color:#0000FF;"&gt;&amp;quot;Hello World&amp;quot;&lt;/span&gt; &lt;span style="color:#FF0000;"&gt;VerticalAlignment&lt;/span&gt;=&lt;span style="color:#0000FF;"&gt;&amp;quot;Center&amp;quot;&lt;/span&gt; &lt;span style="color:#FF0000;"&gt;HorizontalAlignment&lt;/span&gt;=&lt;span style="color:#0000FF;"&gt;&amp;quot;Center&amp;quot;&lt;/span&gt; &lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span style="color:#0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Border&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;
          &lt;span style="color:#0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Grid&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color:#0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;
      &lt;span style="color:#0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#C71585;"&gt;ComponentArt&lt;/span&gt;:&lt;span style="color:#800000;"&gt;ItemFlowItem.ItemTemplate&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color:#0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#C71585;"&gt;ComponentArt&lt;/span&gt;:&lt;span style="color:#800000;"&gt;ItemFlowItem&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:#0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#C71585;"&gt;ComponentArt&lt;/span&gt;:&lt;span style="color:#800000;"&gt;ItemFlow.Items&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#C71585;"&gt;ComponentArt&lt;/span&gt;:&lt;span style="color:#800000;"&gt;ItemFlow&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;

&lt;/pre&gt;
&lt;p&gt;This example illustrates how XAML content can be used within an ItemTemplate.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;a href="http://www.componentart.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/8765.ItemFlow_5F00_HelloWorld.png"&gt;&lt;img src="http://www.componentart.com/community/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/phil/8765.ItemFlow_5F00_HelloWorld.png" style="border:1px solid black;" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;While this example does have the effect of adding a reflection to your XAML, ItemFlow requires a couple more items in order to shine. Tranditional ImageSource based items can be used along with items utilizing ItemTemplates, however&amp;nbsp;an ItemTemplate specified for an item will override ImageSource.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Focus&lt;/h3&gt;
&lt;p&gt;When using ItemFlow with XAML content focus quickly becomes an issue. Depending on one&amp;#39;s implementation they may require ItemFlow to prevent focus on XAML elements which are not contained within the currently&amp;nbsp;selected ItemFlowItem. Take for instance&amp;nbsp;the form wizard in the image at the top of this post, TextBoxes in flanking ItemFlowItems should not react to mouse clicks, instead these clicks should bring the flanking ItemFlowItem to the center where it can then be edited. This issue is solved by ItemFlow&amp;#39;s shading, setting ShowShading=&amp;quot;True&amp;quot; ( the default ) will prevent mouse interaction with flanking ItemFlowItems. When ShowShading is set to &amp;quot;False&amp;quot; the shading which overlaps items will not be shown and therefore will not prevent mouse events from interacting with XAML elements.&lt;/p&gt;
&lt;h3&gt;Loading&lt;/h3&gt;
&lt;p&gt;Another issue which arises along with XAML content is the question of load events and item sizing. ItemFlow is not aware of the current state of XAML content elements loaded into it&amp;#39;s ItemTemplates. It is up to the developer to size the ItemWidth and ItemHeight properly and in some cases call ItemFlow.Initialize() from Loaded events of relevant elements.&lt;/p&gt;
&lt;h3&gt;Accessing Elements&lt;/h3&gt;
&lt;p&gt;XAML content within ItemFlowItems would not be of much use if we could not access elements in order to retrieve values, or apply changes. Finding elements within DataTemplates is not as simple as one might hope, however we have included a method in our ComponentArt.Silverlight.UI.Utils namespace which helps with this endeavor:&lt;/p&gt;
&lt;pre class="codeblock"&gt;TextBlock myHelloWorldBlock = (TextBlock)ComponentArt.Silverlight.UI.Utils.Visual.FindElementByName(myItemFlow, &amp;quot;&lt;span style="color:#8B0000;"&gt;helloWorldBlock&lt;/span&gt;&amp;quot;);

&lt;/pre&gt;
&lt;p&gt;Elements may also register themselves with a pointer through their own Loaded events, or any other event in which they are a sender.&lt;/p&gt;
&lt;h3&gt;Final Notes&lt;/h3&gt;
&lt;p&gt;Although it may take some tweaking of settings and positions. Combining&amp;nbsp;the techniques described above to create a unique ItemFlow implementation can result in some very interesting innovations.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.componentart.com/community/aggbug.aspx?PostID=98250" width="1" height="1"&gt;</description><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Xaml/default.aspx">Xaml</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/WPF/default.aspx">WPF</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/ItemFlow/default.aspx">ItemFlow</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/ItemFlowItem/default.aspx">ItemFlowItem</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Editor's Second Skin</title><link>http://www.componentart.com/community/blogs/phil/archive/2008/03/31/editor-s-second-skin.aspx</link><pubDate>Mon, 31 Mar 2008 13:30:00 GMT</pubDate><guid isPermaLink="false">9ff84d31-80d1-44bd-98c8-eba0322b9d03:77928</guid><dc:creator>phil</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.componentart.com/community/blogs/phil/rsscomments.aspx?PostID=77928</wfw:commentRss><comments>http://www.componentart.com/community/blogs/phil/archive/2008/03/31/editor-s-second-skin.aspx#comments</comments><description>&lt;p&gt;With a mandate to continuously improve our products and suite as a whole each version of Web.UI can bring many upgrades. With Editor 2008.1 we decided to add a new method of skinning the Editor control. Previously, developers were required to employ our sample UserControl skins and not directly embed the Editor on to their ASPX page. While this kept the ASPX clear of detailed Template, ToolBar and Widget code, it abstracted the Editor tag and added an extra layer to the control hierarchy. Editor 2008.1 introduces a new skinning mechanism which accomplishes the goal of allowing a clean ASPX yet eliminates the need to refer to the Editor through a UserControl.&lt;/p&gt;&lt;p&gt;In Editor 2008.1 we have divided the required control references into a combination of Widgets, Templates and ToolBar definitions.&amp;nbsp;None of which&amp;nbsp;need to be defined inline. By separating the elements of the Editor it allows the control to optimized by only loading the widgets required by each specific skin or template of the Editor, this eliminates quite a bit of overhead depending on how minimal the skin is.&lt;/p&gt;&lt;h4&gt;How Skins Work in Editor 2008.1&lt;/h4&gt;&lt;p&gt;The main&amp;nbsp;template&amp;nbsp;for the Editor can be defined either inline or&amp;nbsp;by setting the Editor TemplateFile property. These files are located, or should be placed in the skin directory,&lt;/p&gt;&lt;p&gt;&lt;strong&gt;skins\skin_name\templates\&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Templates define the layout of the Editor instance. References are included in this Template for various&amp;nbsp;elements of the Editor:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;$$&lt;strong&gt;ToolBars[0]&lt;/strong&gt;$$&lt;/li&gt;&lt;li&gt;$$&lt;strong&gt;breadcrumbs&lt;/strong&gt;$$&lt;/li&gt;&lt;li&gt;$$&lt;strong&gt;wordcount&lt;/strong&gt;$$&lt;/li&gt;&lt;li&gt;$$&lt;strong&gt;charactercount&lt;/strong&gt;$$&lt;/li&gt;&lt;li&gt;$$&lt;strong&gt;parent&lt;/strong&gt;$$&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;ToolBars definitions one of the few elements which must still be defined inline in&amp;nbsp;the Editor&amp;nbsp;&amp;lt;ToolBars&amp;gt; collection, however, each ToolBar&amp;#39;s Items may be defined in XML and referenced via ToolBar&amp;#39;s &lt;strong&gt;SiteMapXml&lt;/strong&gt; property.&lt;/p&gt;&lt;div style="font-family:courier new;background-color:#e5e5e5;text-align:left;border:#808080 1px solid;padding:10px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ToolBars&amp;gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ComponentArt:ToolBar&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RunAt=&amp;quot;server&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Id=&amp;quot;CoreToolBar&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ImagesBaseUrl=&amp;quot;../../skins/blackice/images/toolbar/&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CssClass=&amp;quot;toolbar&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Height=&amp;quot;25&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DefaultItemImageWidth=&amp;quot;23&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DefaultItemImageHeight=&amp;quot;21&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UseFadeEffect=&amp;quot;false&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SiteMapXmlFile=&amp;quot;CoreToolBar.xml&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ClientEvents&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ItemMouseUp EventHandler=&amp;quot;font_toolbar_mouseup&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ClientEvents&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ComponentArt:ToolBar&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ToolBars&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;When defining ToolBarItems, whether in XML for use with SiteMapXml or inline, each ToolBarItem is given an &lt;strong&gt;EditorCommandType&lt;/strong&gt;. The EditorCommandType both defines the function of this ToolBarItem within the Editor context and dictates which Widget, if any, should be loaded to accompany this ToolBarItem.&lt;/p&gt;&lt;div style="font-family:courier new;background-color:#e5e5e5;text-align:left;border:#808080 1px solid;padding:10px;"&gt;&amp;lt;Items&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ToolBarItem EditorCommandType=&amp;quot;FormatStyle&amp;quot; &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ToolBarItem EditorCommandType=&amp;quot;FormatFontFace&amp;quot; &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ToolBarItem EditorCommandType=&amp;quot;FormatFontSize&amp;quot; &amp;gt; &lt;/div&gt;&lt;p&gt;Once the Template, ToolBars and ToolBarItems are defined, the Editor is ready to go! Of course, these steps are already taken in our samples and one may simply copy the skins directory and an Editor control tag to their application. This document is meant as a reference to some inner workings for those interested in skinning.&lt;/p&gt;&lt;p&gt;Customizing any of our sample skins is as easy as editing any of the elements defined above as well as any of the Widgets. &lt;/p&gt;&lt;h4&gt;Customizing Skins in Editor 2008.1&lt;/h4&gt;&lt;p&gt;ToolBars can be added or removed from the ToolBars collection in the Editor control tag, ToolBars may also be removed by removing their placeholder from the skin template.&lt;/p&gt;&lt;p&gt;ToolBarItems may be removed, added or edited by editing the corresponding xml file, such as &lt;strong&gt;StandardToolBar.xml&lt;/strong&gt;. If they are defined inline with each ToolBar editing can be done there as well.&lt;/p&gt;&lt;p&gt;Any other aspect of an existing skin may be customized through editing the template file, the widget UserControls for each ToolBarItem &lt;strong&gt;skins\skin_name\widgets\&lt;/strong&gt; and/or the corresponding image and CSS files. For example, to alter the InsertEditMedia Dialog you would edit the file &lt;strong&gt;skins\skin_name\widgets\InsertEditMedia.ascx&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&lt;img height="302" src="http://www.componentart.com/blogs/phil/images/widgets.gif" width="325" /&gt;&lt;/p&gt;&lt;p&gt;The UserControl method of skinning is still available, relevant files can be found in &lt;strong&gt;integrated_skins\&lt;/strong&gt;. While this method is still functional and available, it will most likely not be supported in a future iteration of the Editor control and may not contain all future fixes. The javascript engine to accompany this method, &lt;strong&gt;scripts.js&lt;/strong&gt;, is now compiled into the &lt;strong&gt;ComponentArt.Web.UI.DLL&lt;/strong&gt;. Therefore cannot&amp;nbsp;easily be&amp;nbsp;edited when using the new skinning method.&lt;/p&gt;&lt;p&gt;We&amp;#39;ve found this new skinning method to be easiler, both when implementing and when making customizations than it&amp;#39;s older counterpart. hopefully you will too.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.componentart.com/community/aggbug.aspx?PostID=77928" width="1" height="1"&gt;</description><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Editor+Web.UI+2008.1+Skinning+UserControls/default.aspx">Editor Web.UI 2008.1 Skinning UserControls</category></item><item><title>Dynamically Assigning Event Handlers w/ Arguments to Instance Methods in Javascript</title><link>http://www.componentart.com/community/blogs/phil/archive/2007/02/16/dynamically-assigning-event-handlers-w-arguments-to-prototypes-in-javascript.aspx</link><pubDate>Fri, 16 Feb 2007 21:34:00 GMT</pubDate><guid isPermaLink="false">9ff84d31-80d1-44bd-98c8-eba0322b9d03:61576</guid><dc:creator>phil</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.componentart.com/community/blogs/phil/rsscomments.aspx?PostID=61576</wfw:commentRss><comments>http://www.componentart.com/community/blogs/phil/archive/2007/02/16/dynamically-assigning-event-handlers-w-arguments-to-prototypes-in-javascript.aspx#comments</comments><description>&lt;p&gt;I ran into a speed bump of sorts when attempting to assign an object instance method as a DOM event handler, there&amp;#39;s some information floating around the net, but a post on the topic can&amp;#39;t hurt. Something like this on the server side would usually fit the bill:&lt;/p&gt;&lt;pre style="font-family:courier new;background-color:#e2e2e2;border:#a0a0a0 1px solid;"&gt;spaghetti.Attributes.Add(&amp;quot;&lt;span style="color:#8b0000;"&gt;onmousemove&lt;/span&gt;&amp;quot;,&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Id+&amp;quot;&lt;span style="color:#8b0000;"&gt;.myMouseMoveHandler(event)&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;p&gt;However since we want to create this same result completely on the client-side we&amp;#39;ll need to do this in the class constructor, something like this:&lt;/p&gt;&lt;pre style="font-family:courier new;background-color:#e2e2e2;border:#a0a0a0 1px solid;"&gt;&lt;span style="color:#0000ff;"&gt;document&lt;/span&gt;.getElementById(&amp;#39;spaghetti&amp;#39;).onmousemove = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.myMouseMoveHandler;&lt;/pre&gt;&lt;p&gt;May work in some situations, but arguments cannot be passed when assigning this way, also, unless the handler function is defined within the constructor it won&amp;#39;t be available yet. Something like this:&lt;/p&gt;&lt;pre style="font-family:courier new;background-color:#e2e2e2;border:#a0a0a0 1px solid;"&gt;&lt;span style="color:#0000ff;"&gt;document&lt;/span&gt;.getElementById(&amp;#39;spaghetti&amp;#39;).onmousemove = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Function&lt;/span&gt; (&amp;#39;e&amp;#39;,id+&amp;#39;.myMouseMoveHandler(e);&amp;#39;);&lt;/pre&gt;&lt;p&gt;Again will only work if the handler method has been defined within the constructor, but at least an argument may be passed. Next we add the dreaded eval so it can be evaluated on the fly, allowing us to define the handler method for the object instance outside of&amp;nbsp;the constructor:&lt;/p&gt;&lt;pre style="font-family:courier new;background-color:#e2e2e2;border:#a0a0a0 1px solid;"&gt;&lt;span style="color:#0000ff;"&gt;document&lt;/span&gt;.getElementById(&amp;#39;spaghetti&amp;#39;).onmousemove = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Function&lt;/span&gt; (&amp;#39;e&amp;#39;,&amp;#39;&lt;span style="color:#0000ff;"&gt;eval&lt;/span&gt;(&amp;quot;&lt;span style="color:#8b0000;"&gt;&amp;#39;+id+&amp;#39;.myMouseMoveHandler(e);&lt;/span&gt;&amp;quot;);&amp;#39;);&lt;/pre&gt;&lt;p&gt;Figured it was just convoluted enough to warrant a blog post.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.componentart.com/community/aggbug.aspx?PostID=61576" width="1" height="1"&gt;</description><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Dynamic/default.aspx">Dynamic</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Event+Handler/default.aspx">Event Handler</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Javascript/default.aspx">Javascript</category></item><item><title>Telligent Community Server 2.1</title><link>http://www.componentart.com/community/blogs/phil/archive/2006/10/31/Telligent-Community-Server-2.1-Blogs-Online.aspx</link><pubDate>Tue, 31 Oct 2006 09:45:00 GMT</pubDate><guid isPermaLink="false">9ff84d31-80d1-44bd-98c8-eba0322b9d03:60016</guid><dc:creator>phil</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.componentart.com/community/blogs/phil/rsscomments.aspx?PostID=60016</wfw:commentRss><comments>http://www.componentart.com/community/blogs/phil/archive/2006/10/31/Telligent-Community-Server-2.1-Blogs-Online.aspx#comments</comments><description>&lt;p&gt;We here at ComponentArt have long been working with the good folks at &lt;a href="http://telligent.com/"&gt;Telligent Systems&lt;/a&gt; and have been using a highly modified version of their &lt;a href="http://communityserver.org/"&gt;Community Server&lt;/a&gt; on our main site for quite some time. When&amp;nbsp;we decided to set up some&amp;nbsp;development/corporate blogs, selecting software didn&amp;#39;t take long. I&amp;#39;m currently involved in a number of projects here at ComponentArt, both in development and support of our products, the most recent being the implementation of Community Server 2.1 for these blogs. I&amp;#39;m sure&amp;nbsp;you all&amp;nbsp;envy me the tip-toeing through skin files and templates to get that look just right, but seriously, Telligent have a great product which we managed to completely customize and skin in less than three days. Some URL redirection, which it supports though a .config file, some virtual directory shuffling and we&amp;#39;ve got CS stripped down to the blog meat we wanted. Here&amp;#39;s to hoping these blogs provide the development community with some interesting reading now and then. Cheers.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.componentart.com/community/aggbug.aspx?PostID=60016" width="1" height="1"&gt;</description><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Telligent/default.aspx">Telligent</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Blogs/default.aspx">Blogs</category><category domain="http://www.componentart.com/community/blogs/phil/archive/tags/Community+Server/default.aspx">Community Server</category></item></channel></rss>
