<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Life's Passion</title>
	<atom:link href="http://dev.eclipse.org/blogs/yvesyang/feed/" rel="self" type="application/rss+xml" />
	<link>http://dev.eclipse.org/blogs/yvesyang</link>
	<description>My Projects in Eclipse</description>
	<pubDate>Fri, 13 Nov 2009 12:02:42 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
	<language>en</language>
			<item>
		<title>Declarative Data Binding - Part 1</title>
		<link>http://dev.eclipse.org/blogs/yvesyang/2009/11/13/declarative-data-binding-part-1/</link>
		<comments>http://dev.eclipse.org/blogs/yvesyang/2009/11/13/declarative-data-binding-part-1/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 11:34:53 +0000</pubDate>
		<dc:creator>Yves YANG</dc:creator>
		
		<category><![CDATA[Data binding]]></category>

		<category><![CDATA[Declarative UI]]></category>

		<category><![CDATA[XWT]]></category>

		<guid isPermaLink="false">http://dev.eclipse.org/blogs/yvesyang/?p=107</guid>
		<description><![CDATA[Why Data Binding?
Data binding is a process that establishes a connection between the application UI and business logic. Since 2006, eclipse has worked on this solution. Here is the purpose of JFace data binding, given in JFace Data Binding Introduction:
Developing line of business applications as Eclipse Rich Client Platform applications presents a number of unique [...]]]></description>
			<content:encoded><![CDATA[<h1>Why Data Binding?</h1>
<p>Data binding is a process that establishes a connection between the application UI and business logic. Since 2006, eclipse has worked on this solution. Here is the purpose of JFace data binding, given in <a href="http://wiki.eclipse.org/JFace_Data_Binding_Introduction">JFace Data Binding Introduction</a>:</p>
<p>Developing line of business applications as Eclipse Rich Client Platform applications presents a number of unique challenges. </p>
<ul>
<li>How does one validate data entry when the number of possible interactions between validation rules rises proportional to the square of the number of data entry fields on an input form? </li>
<li>How does one avoid coding repetitive, dull, tedious, and error-prone SWT event handlers?</li>
<li>How can one improve reuse of data-driven user interfaces?</li>
</ul>
<p>All of these concerns are improved upon by using JFace Data Binding. </p>
<p>This component gains the popularity day by day, not only in enterprise applications, but also in eclipse it-self. But in the practice, a lot of users have noticed this solution needs to be improved. There are still some problems which are still an obstacle for a wide adoption:</p>
<ul>
<li>Requires a deep knowledge in the implementation of this component</li>
<li>A lot of codes with poor lisibility</li>
<li>Hard codes for a specific data model</li>
</ul>
<h1>What&#8217;s Declarative Data Binding?</h1>
<p>Declarative Data Binding is an expression of the Data binding concept  in abstract and high level langauge. XWT has developed this concept in two ways:</p>
<ul>
<li>Pure XML</li>
<li>XWT Data Binding expression</li>
</ul>
<p>For example, we have a class Person that contains two attributes: First name and last name. We&#8217;d like to create a UI presentation for this object:</p>
<p><a href="http://dev.eclipse.org/blogs/yvesyang/files/2009/11/data-binding-person.png"><img src="http://dev.eclipse.org/blogs/yvesyang/files/2009/11/data-binding-person.png" alt="" width="481" height="111" class="aligncenter size-full wp-image-109" /></a></p>
<p>Here is the declaration in pure XML, </p>
<pre>
&lt;Label Text=&quot;First name:&quot;/&gt;
&lt;Text&gt;
   &lt;Text.text&gt;
     <span class="style1">&lt;Binding path=&quot;firstName&quot;</span>/&gt;
   &lt;/Text.text&gt;
&lt;/Text&gt;
&lt;Label Text=&quot;Last name:&quot;/&gt;
&lt;Text&gt;
   &lt;Text.text&gt;
     <span class="style1">&lt;Binding path=&quot;lastName&quot;</span>/&gt;
   &lt;/Text.text&gt;
&lt;/Text&gt;
</pre>
<p>And the version in XWT Data Binding expression, which is more compact:</p>
<pre>&lt;Label Text=&quot;First name:&quot;/&gt;
&lt;Text text=<span class="style1">&quot;{Binding Path=FirstName}&quot;</span>/&gt;
&lt;Label Text=&quot;Last name:&quot;/&gt;
&lt;Text text=<span class="style1">&quot;{Binding Path=LastName}&quot;</span>/&gt;
</pre>
<p>This solution presents the following benefices:</p>
<table width="647" border="1">
<tr>
<td width="120">Data model neutral</td>
<td width="511">The same Data binding expression can be used for any kind of data model like Java Bean, Pojo, Dynamic EMF, XML, Web services, etc. Even it is programming language independent.</td>
</tr>
<tr>
<td>Easy to use</td>
<td>Developers need only to know the basic concept of Data Binding, </td>
</tr>
<tr>
<td>Basic foundation of visual tools</td>
<td>It is really straight forward to provide a UI edition in a visual tools like VE. XWT Designer has provided this feature, which allows no software programmers to develop applications.</td>
</tr>
</table>
<p><a href="http://dev.eclipse.org/blogs/yvesyang/files/2009/11/control-binding.png"><img src="http://dev.eclipse.org/blogs/yvesyang/files/2009/11/control-binding.png" alt="" width="500" height="394" class="aligncenter size-full wp-image-98" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.eclipse.org/blogs/yvesyang/2009/11/13/declarative-data-binding-part-1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>XWT Designer</title>
		<link>http://dev.eclipse.org/blogs/yvesyang/2009/11/02/xwt-designer/</link>
		<comments>http://dev.eclipse.org/blogs/yvesyang/2009/11/02/xwt-designer/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 22:07:23 +0000</pubDate>
		<dc:creator>Yves YANG</dc:creator>
		
		<category><![CDATA[Announcement]]></category>

		<category><![CDATA[Declarative UI]]></category>

		<category><![CDATA[VE]]></category>

		<category><![CDATA[Visual Editor for XAML]]></category>

		<category><![CDATA[XWT]]></category>

		<guid isPermaLink="false">http://dev.eclipse.org/blogs/yvesyang/?p=96</guid>
		<description><![CDATA[During the ESE 2009 last week, I have shown a demo with a WYSIWYG editor for XWT in e4 Symphosium and XWT session. It is a tool like VE of eclipse. But the architecture is completely different. XWT Designer relies on XML, instead of Java in VE. And also it doesn&#8217;t have two JVMs as [...]]]></description>
			<content:encoded><![CDATA[<p>During the ESE 2009 last week, I have shown a demo with a WYSIWYG editor for <a href="http://wiki.eclipse.org/e4/XWT">XWT</a> in e4 Symphosium and XWT session. It is a tool like <a href="http://www.eclipse.org/vep">VE</a> of eclipse. But the architecture is completely different. XWT Designer relies on XML, instead of Java in VE. And also it doesn&#8217;t have two JVMs as <a href="http://www.eclipse.org/vep">VE</a>.</p>
<p>In terms of features, <a href="http://wiki.eclipse.org/e4/XWT">XWT</a> supports already all layouts and controls with Tabbed propertiew view. In summary, all feature of <a href="http://www.eclipse.org/vep">VE</a> has been supported such as:<br />
  - Palette<br />
  - DnD<br />
  - Event<br />
  - Layout<br />
  - User-firendly Tabbed Properties View<br />
  - Tree View</p>
<p><a href="http://dev.eclipse.org/blogs/yvesyang/files/2009/11/xw-designer.png"><img src="http://dev.eclipse.org/blogs/yvesyang/files/2009/11/xw-designer.png" alt="" width="500" height="389" class="aligncenter size-full wp-image-97" /></a></p>
<p>And furthermore, it overcomes the limitations of <a href="http://www.eclipse.org/vep">VE</a> by providing some tools for Data/Control Binding edition. And it is definitively designed for non-SWT programmer.</p>
<p><a href="http://dev.eclipse.org/blogs/yvesyang/files/2009/11/control-binding.png"><img src="http://dev.eclipse.org/blogs/yvesyang/files/2009/11/control-binding.png" alt="" width="500" height="394" class="aligncenter size-full wp-image-98" /></a></p>
<p>Soyatec has planned to contribute it as a subproject of <a href="http://www.eclipse.org/vep">VE</a>. It takes some time to get in eclipse. But by now, you can already install it using the following URL with the last daily build (<a href="http://download.eclipse.org/e4/downloads/drops/I20091029-2100/index.html">here</a>) of e4 :<br />
  <a href="http://www.xwtdesigner.org/update">http://www.xwtdesigner.org/update</a></p>
<p>Any feedback and suggestion are welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.eclipse.org/blogs/yvesyang/2009/11/02/xwt-designer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>XWT - Data Trigger (2)</title>
		<link>http://dev.eclipse.org/blogs/yvesyang/2009/11/01/xwt-data-trigger-2/</link>
		<comments>http://dev.eclipse.org/blogs/yvesyang/2009/11/01/xwt-data-trigger-2/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 15:35:38 +0000</pubDate>
		<dc:creator>Yves YANG</dc:creator>
		
		<category><![CDATA[Declarative UI]]></category>

		<category><![CDATA[XWT]]></category>

		<category><![CDATA[e4]]></category>

		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://dev.eclipse.org/blogs/yvesyang/?p=84</guid>
		<description><![CDATA[In the previous post, I have shown up the Trigger, which is in fact a Control Trigger. The source of Trigger is a UI Control such as Button. It looks like Control Binding, but it is a little bit different in features. Control binding is used to synchronize the state of the two controls. It [...]]]></description>
			<content:encoded><![CDATA[<p>In the previous post, I have shown up the Trigger, which is in fact a Control Trigger. The source of Trigger is a UI Control such as Button. It looks like Control Binding, but it is a little bit different in features. Control binding is used to synchronize the state of the two controls. It is always bidirectinal and one to one property synchronization. Trigger is one direction from source to target, and it supports the property binding of 1 to N, N to 1 and also N to N .</p>
<p>This post will deal with Data Trigger. The source of Trigger is data context of UI control instead of UI Control it-self. Like Trigger, Data Trigger has also two implementation classes, one for the simple case and another for the complexe one:
</p>
<ul>
<li>DataTrigger</li>
<li>MultiDataTrigger</li>
</ul>
<h2>DataTrigger</h2>
<p>A DataTrigger allows you to set property values when a property value of the data object matches a specified Value. For example, if you are displaying a list of Employee objects, you may want the foreground color of the name to be different based on each Employee&#8217;s current attendance: employees who are currently on vacation are displayed with a purple foreground.
</p>
<pre>&lt;Label&gt;
  &lt;Label.triggers&gt;
    &lt;DataTrigger binding=&quot;{Binding path=attendance}&quot; value=&quot;inVacation&quot; &gt;
      &lt;Setter property=&quot;foreground&quot; value=&quot;Purple&quot;/&gt;	 &lt;/DataTrigger&gt;
  &lt;/Label.triggers&gt;
&lt;/Label&gt;</pre>
<h2>MultiDataTrigger<br />
</h2>
<p>A MultiDataTrigger object is similar to a MultiTrigger, except the conditions of a MultiDataTrigger are based on property values of bound data instead of those of a UI Control. In a MultiDataTrigger, a condition is met when the property value of the data item matches the specified Value. You can then use setters to apply changes when all conditions are met.</p>
<p>Using the same example above, we can add a new condition like location is in France. </p>
<pre>&lt;Label&gt;
  &lt;Label.triggers&gt;
     &lt;MultiDataTrigger&gt;
        &lt;MultiDataTrigger.conditions&gt;
          &lt;Condition binding=&quot;{Binding path=attendance}&quot; value=&quot;inVacation&quot;/&gt;
          &lt;Condition binding=&quot;{Binding path=location}&quot; value=&quot;France&quot; /&gt;
        &lt;/MultiDataTrigger.conditions&gt;
        &lt;Setter property=&quot;foreground&quot; value=&quot;Purple&quot;/&gt;
     &lt;/MultiDataTrigger&gt;
  &lt;/Label.triggers&gt;
&lt;/Label&gt;</pre>
<p>Another trigger we have not talked about is <strong>EventTrigger</strong>. The source of <strong>EventTrigger</strong> is an event of UI Control. This trigger is mainly used with graphic animation. It will be supported later.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.eclipse.org/blogs/yvesyang/2009/11/01/xwt-data-trigger-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>XWT - UI Trigger (1)</title>
		<link>http://dev.eclipse.org/blogs/yvesyang/2009/10/12/xwt-ui-trigger-1/</link>
		<comments>http://dev.eclipse.org/blogs/yvesyang/2009/10/12/xwt-ui-trigger-1/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 16:47:31 +0000</pubDate>
		<dc:creator>Yves YANG</dc:creator>
		
		<category><![CDATA[XWT]]></category>

		<category><![CDATA[e4]]></category>

		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://dev.eclipse.org/blogs/yvesyang/?p=51</guid>
		<description><![CDATA[One of the most common features of any modern application, whether web-based or client-based, is the dynamic aspect of user interface elements. These include buttons that highlight when focused or clicked, images that change when the mouse is rolled over them, text boxes that change color to indicate errors, the visibility/edit-ability of input fields through [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most common features of any modern application, whether web-based or client-based, is the dynamic aspect of user interface elements. These include buttons that highlight when focused or clicked, images that change when the mouse is rolled over them, text boxes that change color to indicate errors, the visibility/edit-ability of input fields through operator profile or/and data behind.</p>
<p>In almost of cases, this kind of interactivity is achieved through the use of some kind of scripting mechanism or in Java through event handling. In web pages, for example, there is usually some JavaScript code that is assigned to execute when certain events are triggered on a given page element, like an  &lt;IMG&gt; tag whose src attribute changes in response to mouse-over and mouse-out events.  </p>
<p>In XWT, you can achieve the same kinds of interactive effects without writing a single line of script or Java code by using a feature known as Triggers. These triggers are defined within styles or a specific UI element to respond to changes on a given property and event of the object. When they are triggered, some actions defined in XML will be executed. One of the most useful action is the Setter, which set the values of other properties on the object.  In general, a trigger is somewhat like an <strong>if</strong> block in procedural code; it only executes what it contains when some condition evaluates to true. </p>
<p>There are five kinds of triggers, each has a different way of determining when it should execute:</p>
<ul>
<li>UI  Property trigger</li>
<li>Multiple UI  Property triggers</li>
<li>Data Property trigger</li>
<li>Multiple Data Property trigger</li>
<li>UI  Event trigger</li>
</ul>
<p>Along with Control Binding, Trigger is another powerful feature to minimize the pure UI codes in Java and keep Java code more readable.</p>
<h2>UI Element Property trigger</h2>
<p>The source of a property trigger is UI Element. The condition is defined by two attributes: property and value. Each <strong>Trigger</strong> has a list of <strong>Setter</strong>. </p>
<p>The  properties changed by triggers are automatically reset to their  previous value when the triggered condition is no longer satisfied.  Triggers are optimized for transient states which are expected to  change and return to original state, such as selection of a check button.</p>
<p>The property Trigger construction  is very simple. It consists of a &lt;Trigger&gt; tag, which usually encloses one or more &lt;Setter&gt; tags. The &lt;Trigger&gt; tag also has attributes that govern its actions. The Property attribute indicates the property of the triggered object that the trigger is listening for changes on. The Value  attribute contains the value that will cause the Trigger to  fire when it is equal to the value of the property that is being  watched. It usually looks something like this:</p>
<pre>&lt;Trigger Property=&quot;selection&quot; Value=&quot;true&quot;&gt;
   &lt;Set Property=&quot;text&quot; Value=&quot;green&quot;/&gt;
&lt;/Trigger&gt; </pre>
<p>This trigger can be defined in the property <strong>triggers</strong> of a <strong>Style</strong>, which will be applied to all buttons:</p>
<pre>&lt;Style targetType=&quot;Button&quot;&gt;
  &lt;Style.triggers&gt;
   &lt;Trigger property=&quot;Selection&quot; value=&quot;true&quot;&gt;
      &lt;Setter property=&quot;text&quot; value=&quot;Selected&quot;/&gt;
   &lt;/Trigger&gt;
  &lt;/Style.triggers&gt;
&lt;/Style&gt;
</pre>
<p>or directly in a UI Element </p>
<pre>&lt;Button x:Style=&quot;CHECK&quot; text=&quot;Unselected&quot;&gt;
  &lt;Button.triggers&gt;
   &lt;Trigger property=&quot;Selection&quot; value=&quot;true&quot;&gt;
     &lt;Setter property=&quot;Text&quot; value=&quot;Selected&quot;/&gt;
     &lt;/Trigger&gt;
  &lt;/Button.triggers&gt;
&lt;/Button&gt;
</pre>
<p>This code indicates when the CheckBox Button gets selected, the text value will be changed to &quot;Selected&quot;. When you deselect this button, the previous value will be restored.</p>
<p><a href="http://dev.eclipse.org/blogs/yvesyang/files/2009/10/trigger1.png"><img src="http://dev.eclipse.org/blogs/yvesyang/files/2009/10/trigger1.png" alt="" width="436" height="92" class="aligncenter size-full wp-image-69" /></a></p>
<p>If you want to apply the action to another UI element, you just need to add an attribute targetName with the name of referenced UI element as value:</p>
<pre>&lt;Button Name=&quot;Button1&quot; x:Style=&quot;CHECK&quot; text=&quot;Unselected&quot;/&gt;
&lt;Button x:Style=&quot;CHECK&quot; text=&quot;Button State&quot;&gt;
  &lt;Button.triggers&gt;
   &lt;Trigger property=&quot;selection&quot; value=&quot;true&quot;&gt;
     &lt;Setter property=&quot;Text&quot; value=&quot;selected&quot; targetName=&quot;Button1&quot;/&gt;
     &lt;/Trigger&gt;
  &lt;/Button.triggers&gt;
&lt;/Button&gt;</pre>
<p><a href="http://dev.eclipse.org/blogs/yvesyang/files/2009/10/trigger2.png"><img src="http://dev.eclipse.org/blogs/yvesyang/files/2009/10/trigger2.png" alt="" width="500" height="88" class="aligncenter size-full wp-image-70" /></a></p>
<p>You&#8217;re not limited to just one Setter in a Trigger. You can have as many  Setter as you like. And for a style or a UI Element, you can have as many Trigger as you like.
</p>
<pre>&lt;Button Name=&quot;Button1&quot; x:Style=&quot;CHECK&quot; text=&quot;Unselected&quot;/&gt;
&lt;Button x:Style=&quot;CHECK&quot; text=&quot;Button State&quot;&gt;
  &lt;Button.triggers&gt;
   &lt;Trigger property=&quot;selection&quot; value=&quot;true&quot;&gt;
     &lt;Setter property=&quot;Text&quot; value=&quot;selected&quot; targetName=&quot;Button1&quot;/&gt;
     &lt;Setter property=&quot;selection&quot; value=&quot;true&quot; targetName=&quot;Button1&quot;/&gt;
     &lt;/Trigger&gt;
  &lt;/Button.triggers&gt;
&lt;/Button&gt;</pre>
</p>
<p><a href="http://dev.eclipse.org/blogs/yvesyang/files/2009/10/trigger3.png"><img src="http://dev.eclipse.org/blogs/yvesyang/files/2009/10/trigger3.png" alt="" width="500" height="99" class="aligncenter size-full wp-image-71" /></a></p>
<h2>Multiple UI Element Property trigger</h2>
<p>I can imagine many  of you saying &quot;well, that&#8217;s pretty nice feature, but what if I want  some actions only when two different or more triggers match  their Value conditions at the same time?&quot;. For example, you might want  to call Setter to a control only when that control <strong>both</strong> has the input focus <strong>and</strong> has the mouse over it. </p>
<p>The <strong>MultiTrigger</strong> is defined for this purpose. Each MultiTrigger has a list of <strong>Condition</strong>. Each condition is composed of at least two attributes: property and value. An optional attribute &quot;sourceName&quot; can be used to indicate the source of condition. </p>
<pre>&lt;Composite&gt;
   &lt;Button Name=&quot;button1&quot; x:Style=&quot;CHECK&quot; text=&quot;Condition 1&quot;/&gt;
   &lt;Button Name=&quot;button2&quot; x:Style=&quot;CHECK&quot; text=&quot;Condition 2&quot;/&gt;
   &lt;Label Name=&quot;messageLabel&quot;/&gt;
   &lt;Composite.triggers&gt;
      &lt;MultiTrigger&gt;
          &lt;MultiTrigger.conditions&gt;
              &lt;Condition property=&quot;selection&quot; value=&quot;True&quot; sourceName=&quot;button1&quot; /&gt;
              &lt;Condition property=&quot;selection&quot; value=&quot;True&quot; sourceName=&quot;button2&quot; /&gt;
          &lt;/MultiTrigger.conditions&gt;
          &lt;Setter property=&quot;text&quot; value=&quot;OK&quot; targetName=&quot;messageLabel&quot; /&gt;
      &lt;/MultiTrigger&gt;
   &lt;/Composite.triggers&gt;
&lt;/Composite&gt;
</pre>
<p>In this example, we define a MultiTrigger in a Composite which contains two CheckBox buttons. When and only when both buttons get selected, a message &quot;OK&quot; will be displayed in Label.</p>
<p><a href="http://dev.eclipse.org/blogs/yvesyang/files/2009/10/multitrigger1.png"><img src="http://dev.eclipse.org/blogs/yvesyang/files/2009/10/multitrigger1.png" alt="" width="451" height="248" class="aligncenter size-full wp-image-72" /></a></p>
<p>Next post will address on Data Trigger and Multiple Data Trigger. The Event trigger is used to UI animation, which will be covered  later. Keep tune!</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.eclipse.org/blogs/yvesyang/2009/10/12/xwt-ui-trigger-1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>XWT - Getting started II</title>
		<link>http://dev.eclipse.org/blogs/yvesyang/2009/07/05/xwt-getting-started-ii/</link>
		<comments>http://dev.eclipse.org/blogs/yvesyang/2009/07/05/xwt-getting-started-ii/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 20:31:06 +0000</pubDate>
		<dc:creator>Yves YANG</dc:creator>
		
		<category><![CDATA[Declarative UI]]></category>

		<guid isPermaLink="false">http://dev.eclipse.org/blogs/yvesyang/?p=40</guid>
		<description><![CDATA[Here is the screencast to help getting started XWT:

]]></description>
			<content:encoded><![CDATA[<p>Here is the screencast to help getting started XWT:</p>
<p><a href="http://www.soyatec.org/eclipse/xwt/getting-started/getting-started.html"><img src="http://www.soyatec.org/eclipse/xwt/getting-started/getting-started.png" width="584" height="416" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.eclipse.org/blogs/yvesyang/2009/07/05/xwt-getting-started-ii/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Eclipse VE gets revived!</title>
		<link>http://dev.eclipse.org/blogs/yvesyang/2009/06/26/eclipse-ve-gets-revived/</link>
		<comments>http://dev.eclipse.org/blogs/yvesyang/2009/06/26/eclipse-ve-gets-revived/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 15:35:08 +0000</pubDate>
		<dc:creator>Yves YANG</dc:creator>
		
		<category><![CDATA[Announcement]]></category>

		<category><![CDATA[VE]]></category>

		<guid isPermaLink="false">http://dev.eclipse.org/blogs/yvesyang/?p=32</guid>
		<description><![CDATA[I&#8217;m pleased to announce the come-back of VE in Eclipse stream after more than two years&#8217; sleeping. Now the builds for eclipse 3.4 and 3.5 are available here:
http://www.eclipse.org/vep/downloads/ 
The VE home page gets updated as well. 
I&#8217;d like to thank Nick Boldt who had done an excellent job to re-integrate VE into eclipse build system [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce the come-back of VE in Eclipse stream after more than two years&#8217; sleeping. Now the builds for eclipse 3.4 and 3.5 are available here:<br />
<a href="http://www.eclipse.org/vep/downloads/">http://www.eclipse.org/vep/downloads/</a> </p>
<p>The <a href="http://www.eclipse.org/vep/">VE home page</a> gets updated as well. </p>
<p>I&#8217;d like to thank <a href="http://www.eclipse.org/projects/lists.php?list=projectsforcommitter&amp;param=nickb">Nick Boldt</a> who had done an excellent job to re-integrate VE into eclipse build system and update the Web page. </p>
<p>Now, it is time to consider new features and the development plan for the next release 1.5. Please use ve-dev@eclipse.org to send us your feedback and requests.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.eclipse.org/blogs/yvesyang/2009/06/26/eclipse-ve-gets-revived/feed/</wfw:commentRss>
		</item>
		<item>
		<title>XWT - Getting started</title>
		<link>http://dev.eclipse.org/blogs/yvesyang/2009/01/17/xwt-getting-started/</link>
		<comments>http://dev.eclipse.org/blogs/yvesyang/2009/01/17/xwt-getting-started/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 02:04:15 +0000</pubDate>
		<dc:creator>Yves YANG</dc:creator>
		
		<category><![CDATA[Declarative UI]]></category>

		<guid isPermaLink="false">http://dev.eclipse.org/blogs/yvesyang/?p=8</guid>
		<description><![CDATA[As a candidate of the declarative UI solution in e4, XWT contributed by Soyatec has been integrated in e4 official CVS repository and is available for download. Click here to jump on the download page. 
This framework consists of two features:

Runtime engine (org.eclipse.e4.xwt)
Development tools (org.eclipse.e4.xwt.tools)

The tools &#8220;feature&#8221; provides some wizards and a powerful XML editor [...]]]></description>
			<content:encoded><![CDATA[<p>As a candidate of the declarative UI solution in <a href="http://wiki.eclipse.org/E4">e4</a>, XWT contributed by <a href="http://www.soyatec.com">Soyatec</a> has been integrated in e4 official CVS repository and is available for download. Click <a href="http://download.eclipse.org/e4/downloads/">here</a> to jump on the download page. </p>
<p>This framework consists of two features:</p>
<ul>
<li>Runtime engine (org.eclipse.e4.xwt)</li>
<li>Development tools (org.eclipse.e4.xwt.tools)</li>
</ul>
<p>The tools &#8220;feature&#8221; provides some wizards and a powerful XML editor with instant preview to simplify the development tasks. Of course, for development purpose, you needs to install both features. </p>
<p>This release has already implemented the following features:</p>
<ul>
<li>All SWT Widgets</li>
<li>JFace support</li>
<li>Basic support of Data binding based on JFace data binding.</li>
<li>UI Component.</li>
</ul>
<p>I take your attention that this version is certified on Windows XP/Vista and Mac OS with eclipse Ganymede and eclipse 3.5M4 with JDK//JRE 1.5. </p>
<h2>Hello world</h2>
<p>The following tutorial shows you how to get started with XWT by developing step by step a simple Java application. It illustrates the following aspects:</p>
<ul>
<li>Create a UI component</li>
<li>Use XWL editor to develop UI appearance</li>
<li>Load and open a UI component in API</li>
</ul>
<p>To use XWT, you should import at least the following plugins in your project:<br />
<code><br />
org.eclipse.swt<br />
org.eclipse.jface<br />
org.eclipse.e4.xwt<br />
org.eclipse.jface.databinding<br />
org.eclipse.core.databinding<br />
org.eclipse.core.databinding.beans<br />
org.eclipse.core.databinding.property<br />
com.ibm.icu<br />
</code></p>
<h3>Create a UI Component</h3>
<p>First of all, we need to create a Java project to host our application. If you have already one, you can reuse it without any additional configuration.<br />
In Java project,  you can create a UI component via the context menu in Package explorer: New -&gt; Other&#8230; -&gt; XWT -&gt; New UI Component:<br />
<a href="http://dev.eclipse.org/blogs/yvesyang/files/2009/01/hello_01.png"><img src="http://dev.eclipse.org/blogs/yvesyang/files/2009/01/hello_01-300x300.png" alt="" width="300" height="300" class="aligncenter size-medium wp-image-15" /></a></p>
<p>In the pop-up dialog, fill the Package as &#8216;demo&#8217; and Name as &#8216;Hello&#8217;.</p>
<p><a href="http://dev.eclipse.org/blogs/yvesyang/files/2009/01/hello_02.png"><img src="http://dev.eclipse.org/blogs/yvesyang/files/2009/01/hello_02-300x277.png" alt="" width="300" height="277" class="aligncenter size-medium wp-image-16" /></a></p>
<p>Click the Finish button. We have created a UI component which consists of the two files: Hello.xwt and Hello.java. The Hello.xwt is UI resource file, and Hello.java is the associated Java class to handle relative events. </p>
<p>Now our project looks like below.<br />
<a href="http://dev.eclipse.org/blogs/yvesyang/files/2009/01/hello_03.png"><img src="http://dev.eclipse.org/blogs/yvesyang/files/2009/01/hello_03-300x234.png" alt="" width="300" height="234" class="aligncenter size-medium wp-image-17" /></a></p>
<h3>Use XWT editor to develop UI appearance</h3>
<p>Open Hello.xwt file, switch on the &#8220;Source&#8221; mode edition in the XWT UI editor to modify directly the XML code. This editor provides a powerful code completion and palette tools to help the UI design. </p>
<p>Modify the XWT code as below:</p>
<pre>
<span class="XMLElementTag">&lt;Composite</span> <span class="XMLAttrTag">xmlns</span>=<span class="XMLAttrValue">"http://www.eclipse.org/xwt/presentation"</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="XMLAttrTag">xmlns:x</span>=<span class="XMLAttrValue">"http://www.eclipse.org/xwt"</span> <span class="XMLAttrTag">xmlns:j</span>=<span class="XMLAttrValue">"clr-namespace:demo"</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="XMLAttrTag">x:Class</span>=<span class="XMLAttrValue">"demo.Hello"</span><span class="XMLElementTag">&gt;</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="XMLElementTag">&lt;Composite.layout&gt;</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="XMLElementTag">&lt;FillLayout /&gt;</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="XMLElementTag">&lt;/Composite.layout&gt;</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="XMLElementTag">&lt;Button</span> <span class="XMLAttrTag">text</span>=<span class="XMLAttrValue">"Hello, world!"</span><span class="XMLElementTag">&gt;</span>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="XMLElementTag">&lt;/Button&gt;</span>
<span class="XMLElementTag">&lt;/Composite&gt;</span>
</pre>
<p>If you are a SWT developer, you can find the mapping from XML to SWT library is direct 1-1. It gives the result as the corresponding code in Java:</p>
<pre>Composite composite = <span class="JavaKeyword">new</span> Composite(parent, SWT.NONE);
composite.addLayout(<span class="JavaKeyword">new</span> FillLayout());
Button button = <span class="JavaKeyword">new</span> Button(composite, SWT.NONE);
button.setText(<span class="JavaString">"Hello, world!"</span>);
</pre>
<p>Save the file, and click <a href="http://dev.eclipse.org/blogs/yvesyang/files/2009/01/hello_08.png"><img src="http://dev.eclipse.org/blogs/yvesyang/files/2009/01/hello_08.png" alt="" width="26" height="24" class="alignnone size-medium wp-image-19" /></a> to view it. A new window will open as below.<br />
<a href="http://dev.eclipse.org/blogs/yvesyang/files/2009/01/hello_04.png"><img src="http://dev.eclipse.org/blogs/yvesyang/files/2009/01/hello_04.png" alt="" width="140" height="68" class="aligncenter size-medium wp-image-20" /></a></p>
<h3>Load and open a UI component in API</h3>
<p>The load and open a UI component in API is pretty straightforward. We need call the services of the class XWT: load() or open() . </p>
<p>Create a new Java class named &#8216;Application&#8217; with main method and you can use the following codes to load and open our UI component.</p>
<pre>
public class Application {
    public static void main(String[] argus){
        URI content = Hello.class.getResource("Hello.xwt");
        Shell shell = XWT.load(content).getShell();
        shell.pack();
        shell.open();
        while (!shell.isDisposed()) {
            if (!shell.getDisplay().readAndDispatch()) {
                shell.getDisplay().sleep();
            }
        }
    }
}
</pre>
<p>Or simply </p>
<pre>
public class Application {
    public static void main(String[] argus){
        URI content = Hello.class.getResource("Hello.xwt");
        try {
              XWT.open(content);
        } catch (Exception e) {
              e.printStackTrace();
        }
    }
}
</pre>
<p>Please feel free to give us your feedback and feature requests via <a href="https://bugs.eclipse.org/bugs/">https://bugs.eclipse.org/bugs/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.eclipse.org/blogs/yvesyang/2009/01/17/xwt-getting-started/feed/</wfw:commentRss>
		</item>
		<item>
		<title>XWT - Declarative UI designed for Eclipse</title>
		<link>http://dev.eclipse.org/blogs/yvesyang/2008/11/28/xwt-declarative-ui-designed-for-eclipse/</link>
		<comments>http://dev.eclipse.org/blogs/yvesyang/2008/11/28/xwt-declarative-ui-designed-for-eclipse/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 21:15:49 +0000</pubDate>
		<dc:creator>Yves YANG</dc:creator>
		
		<category><![CDATA[Declarative UI]]></category>

		<guid isPermaLink="false">http://dev.eclipse.org/blogs/yvesyang/2008/11/28/xwt-declarative-ui-designed-for-eclipse/</guid>
		<description><![CDATA[Introduction
With today&#8217;s Eclipse 3.x stream, UI development uses still direct programming mode: UI controls and event handling are directly created in Java. This solution presents several drawbacks:

High technology pre-requisite as UI developer
Difficult to separate UI appearance and business logic
Poor reusability
Limitation of the dynamic UI support
Very hard to integrate with develop tools 

A new UI programming [...]]]></description>
			<content:encoded><![CDATA[<h1>Introduction</h1>
<p>With today&#8217;s Eclipse 3.x stream, UI development uses still direct programming mode: UI controls and event handling are directly created in Java. This solution presents several drawbacks:</p>
<ul>
<li>High technology pre-requisite as UI developer</li>
<li>Difficult to separate UI appearance and business logic</li>
<li>Poor reusability</li>
<li>Limitation of the dynamic UI support</li>
<li>Very hard to integrate with develop tools </li>
</ul>
<p>A new UI programming paradigm is widely used in Web Application development: Declarative UI. In fact, this approach is perfectly applicable in Desktop Applications such as Eclipse RCP. This is what Microsoft does in .NET 3 with XAML. NetBeans provides also a similar solution with Matisse. Fortunately, in e4, Declarative UI becomes a important <a href="http://wiki.eclipse.org/E4/Work_Areas#Declarative_UI.2FCSS.2FUI_Model">work area.</a></p>
<p>The purpose of our project XWT (EPL license) is to provide a foundation framework to resolve above problems. Some of them can be resolved directly, and some of them needs a tool built on top of this framework such Visual Editor, Modeling tool.</p>
<p><a href='http://dev.eclipse.org/blogs/yvesyang/files/2008/11/position.png' title='position.png'><img src='http://dev.eclipse.org/blogs/yvesyang/files/2008/11/position.png' alt='position.png' /></a></p>
<p>XWT should address three kinds of developer directly or indirectly:</p>
<h3>SWT Developer</h3>
<p>SWT Developer, with a deep knowledge on UI technology (such as SWT/JFace, JFace databindng, PDE, etc), needs a &#8221;&#8217;component-based&#8221;&#8217; framework to develop reusable UI Components for Domain UI Designer.</p>
<h3>UI designer</h3>
<p>UI Designer, as a domain application developer, focuses on building domain application using UI Components provided by SWT Developer. The knowledge on SWT/JFace is not necessary.</p>
<h3>Model designer</h3>
<p>Model Designer is a domain application developer using MDA tools. The UI generation via Template engine is key requirement from the business model.</p>
<h2>Essential features</h2>
<p>The following features are critical for a Declarative UI framework:</p>
<ul>
<li><strong>Extensibility </strong>- Dynamic mapping with UI technology library such as SWT/Jface</li>
<li><strong>Component</strong> approach to guarantee the reusability</li>
<li>Support of Data Binding</li>
<li>Support of the MDA tools</li>
</ul>
<h2>Try out</h2>
<p>A POC is available via Eclipse update manager: <a href="http://www.soyatec.org/update/xwt">http://www.soyatec.org/update/xwt</a>. After the installation, you can check out some samples and a demo with EMF model + Nebula via our SVN server: <a href="http://www.soyatec.org/xwt">http://www.soyatec.org/xwt</a>. </p>
<p><a href='http://dev.eclipse.org/blogs/yvesyang/files/2008/11/demo.png' title='demo.png'><img src='http://dev.eclipse.org/blogs/yvesyang/files/2008/11/demo.png' alt='demo.png' /></a></p>
<p>Your feedback is welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.eclipse.org/blogs/yvesyang/2008/11/28/xwt-declarative-ui-designed-for-eclipse/feed/</wfw:commentRss>
		</item>
		<item>
		<title>VEX in SLDT</title>
		<link>http://dev.eclipse.org/blogs/yvesyang/2008/10/17/vex-in-sldt/</link>
		<comments>http://dev.eclipse.org/blogs/yvesyang/2008/10/17/vex-in-sldt/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 01:39:56 +0000</pubDate>
		<dc:creator>Yves YANG</dc:creator>
		
		<category><![CDATA[Visual Editor for XAML]]></category>

		<guid isPermaLink="false">http://dev.eclipse.org/blogs/yvesyang/2008/10/17/vex-in-sldt/</guid>
		<description><![CDATA[Dave has dropped a post in his blog about the WTP Visual Editor for XML: VEX. By coincidence, the project SLDT known as eclipse4SL  in Sourceforge, has also a VEX, which is used by eFace and eclipse4SL  for XAML edition. This component is our donation to the Open Source community via eclipse4SL.  [...]]]></description>
			<content:encoded><![CDATA[<p>Dave has dropped a post in his blog about the WTP Visual Editor for XML: VEX. By coincidence, the project <a href="http://www.eclipse.org/proposals/sldt/">SLDT</a> known as <a href="http://www.eclipse4SL.org/">eclipse4SL </a> in Sourceforge, has also a VEX, which is used by <a href="http://www.soyatec.com/eface">eFace</a> and <a href="http://www.eclipse4SL.org/">eclipse4SL </a> for XAML edition. This component is our donation to the Open Source community via <a href="http://www.eclipse4SL.org/">eclipse4SL</a>.   </p>
<p>It seems that two projects start from the same concept and try to target the same problem. I believe we should put them together. In our VEX, we have developed following features:</p>
<ul>
<li>Multiple renderers support</li>
<li>Instant Preview</li>
<li>Template</li>
<li>Palatte with template</li>
</ul>
<p>Here is a screen shot of <a href="http://www.eclipse4SL.org/">eclipse4SL</a>:<br />
<img src="http://www.eclipse4sl.org/images/About_xaml.png" width="660" height="500" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.eclipse.org/blogs/yvesyang/2008/10/17/vex-in-sldt/feed/</wfw:commentRss>
		</item>
		<item>
		<title>From eclipse4SL to Eclipse SLDT</title>
		<link>http://dev.eclipse.org/blogs/yvesyang/2008/10/16/from-eclipse4sl-to-eclipse-sldt/</link>
		<comments>http://dev.eclipse.org/blogs/yvesyang/2008/10/16/from-eclipse4sl-to-eclipse-sldt/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 07:16:20 +0000</pubDate>
		<dc:creator>Yves YANG</dc:creator>
		
		<category><![CDATA[Announcement]]></category>

		<guid isPermaLink="false">http://dev.eclipse.org/blogs/yvesyang/2008/10/16/from-eclipse4sl-to-eclipse-sldt/</guid>
		<description><![CDATA[eclipse4SL is the code named of Eclipse Tools for Microsoft Silverlight. The purpose of this project is to provide a cross-platform development environment to build Rich Internet Application (RIA) Web application on Microsoft Silverlight in Eclipse. It consists in a set of plug-ins that addresses two main issues: Silverlight applications development, and easing the integration [...]]]></description>
			<content:encoded><![CDATA[<p>eclipse4SL is the code named of <a href="http://www.eclipse4sl.org">Eclipse Tools for Microsoft Silverlight</a>. The purpose of this project is to provide a cross-platform development environment to build Rich Internet Application (RIA) Web application on Microsoft Silverlight in Eclipse. It consists in a set of plug-ins that addresses two main issues: Silverlight applications development, and easing the integration of Java-based web sites and services into Silverlight applications.</p>
<p>Community Technology Preview(Alpha) version of the Eclipse tools for Microsoft Silverlight is available on the SourceForge Site under the Eclipse Public License Version 1.0. The final complete version Eclipse Tools will be released in spring 2009. </p>
<p>The project has been submitted to the Eclipse Foundation: <a href="http://www.eclipse.org/proposals/sldt/">Eclipse Project Proposal</a>. Hope shortly eclipse4SL will become Eclipse SLDT. </p>
<p>Yves</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.eclipse.org/blogs/yvesyang/2008/10/16/from-eclipse4sl-to-eclipse-sldt/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
