﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Life at Java::Eric Lee's Blog-随笔分类-Eclipse Plug-ins/RCP</title><link>http://www.blogjava.net/hongjunli/category/15792.html</link><description>&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2864400419908115";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "image";
google_ad_channel = "";
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;</description><language>zh-cn</language><lastBuildDate>Fri, 17 Aug 2007 11:24:51 GMT</lastBuildDate><pubDate>Fri, 17 Aug 2007 11:24:51 GMT</pubDate><ttl>60</ttl><item><title>Enhance Eclipse RCP with Scripting[ZT]</title><link>http://www.blogjava.net/hongjunli/archive/2007/05/22/119248.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Tue, 22 May 2007 15:19:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2007/05/22/119248.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/119248.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2007/05/22/119248.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/119248.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/119248.html</trackback:ping><description><![CDATA[
<div class="articleDek">JSR-223 defines various kinds of interactions between scripting languages and the Java platform. Learn how to enhance the Eclipse platform and its Rich Client Platform applications with JSR-223 scripting capabilities.</div>
<p><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td align="left" class="articleAuthor">by Riccardo Govoni</td>
</tr>
</tbody>
</table>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td align="right" class="articleAuthor">May 9, 2007</td>
</tr>
</tbody>
</table>
<br/><br/><a href="http://www.devx.com/Java/Article/34545/0/page/1" target="_blank" title="查看原文点击此处">查看原文点击此处</a>
<p><img width="23" height="24" src="http://assets.devx.com/dropcaps/3579.gif"/><a href="http://jcp.org/en/jsr/detail?id=223" target="new">ava Specification Request (JSR) 223</a> defines a set of APIs and a related framework to integrate the Java platform with scripting languages. The APIs are part of the standard library that ships with <a href="http://java.sun.com/javase/6/" target="new">Java SE 6</a>, so you get free scripting support whenever you run applications on a SE 6 JVM. This also applies to applications built upon the Eclipse platform.</p>
<br/><a href="http://www.devx.com/Java/Article/34545#codeitemarea"><img width="141" height="33" border="0" src="http://assets.devx.com/articleicons/14096.gif"/></a>
<p><br/>JSR-223 defines various kinds of interactions between scripting languages and the Java platform, including:</p>
<ul>
<li>Embedding interpreted scripts into Java applications</li>
<li>Modifying and controlling Java objects from within a scripting context</li>
<li>Using the Java language to write and expose script interpreters</li>
</ul>
<p>This article demonstrates how to enhance the <a href="http://www.eclipse.org/" target="new">Eclipse platform</a> and the applications built upon it with the power and benefits of scripting languages, taking advantage of these <a href="http://www.devx.com/Java/Article/33206" target="new">new Java SE 6 capabilities</a>. You will learn how to extend the Eclipse Platform with scripts to enable the following:</p>
<ul>
<li>Automate repetitive tasks you usually perform within your integrated development environment</li>
<li>Perform fast user interface (UI) prototyping by modifying both the UI and the control logic on the fly</li>
<li>Allow users to customize your applications beyond the common sets of preferences, enabling users to add small snippets of logic into their preferred scripting or domain specific languages (<a href="http://en.wikipedia.org/wiki/Domain-specific_programming_language" target="new">DSL</a>s).</li>
</ul>
<p>Most of these benefits derive from the nature of scripting languages. They generally are dynamically typed, in some cases are specific to a particular domain of problems, usually are simpler to learn and write than compiled languages, and not bound to a write-compile-run cycle like older languages such as Java and C.</p>
<p><strong>What You Need</strong><br/>You need only a basic understanding of JSR-223 internals to follow this article. In fact, it is sufficient to understand only the following piece of code:</p>
<pre xml:space="preserve">
<code>
Map&lt;String,Object&gt; vars =
    getScriptVariables(); // fictional method
String scriptBody = getScriptBody(); // fictional method
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByExtension("js");

for (String key : vars.keySet()) 
   engine.put(key, vars.get(key));

engine.eval(scriptBody); 
   // ScriptException handling code omitted
</code>
</pre>
<p>The code basically does three things:</p>
<ol>
<li>It creates a javax.script.ScriptEngineManager (searching it by supported extensions), which is responsible for the discovery and instantiation of scripting engines. (Engines are the components that evaluate and effectively run scripts.)</li>
<li>It sets a bunch of script variables with the <span class="pf">ScriptEngine.put(String,Object)</span> method, thereby defining a binding between a Java object and the scripting environment so the script will be able to manipulate such objects. More generally, the script can control the Java environment.</li>
<li>It evaluates a given script with the <span class="pf">eval(String script)</span> method.</li>
</ol>
<p>The JVM discovers available engines using the <a href="http://java.sun.com/javase/6/docs/technotes/guides/jar/jar.html#Service%20Provider" target="new">Service Provider</a> mechanism, which involves scanning for particular configuration files in the META-INF/services directory of the jar files available to the application. To make a scripting engine available within your application, you need only add to the classpath a correctly configured jar file containing that script engine. This article uses some of the ones provided by the <a href="https://scripting.dev.java.net/" target="new">scripting project</a> at dev.java.net, such as the <a href="http://www.ruby-lang.org/" target="new">Ruby</a> and <a href="http://groovy.codehaus.org/" target="new">Groovy</a> engines.</p>
<p>This is an overly reductive use of the scripting APIs to be sure, but it serves the tutorial purposes of this article. (Refer to the Related Resources section in the left-hand column for a link to more detailed documentation.)</p>
<p><strong>The Scripting Plug-in and Its Fragments<br/></strong>In the <a href="http://assets.devx.com/sourcecode/19199.zip">accompanying source code</a> for this article, the merge between scripting languages and Eclipse (see <a href="javascript:showSupportItem('sidebar1')">Sidebar 1. The Eclipse Rich Client Platform</a>) goes through the definition of the com.devx.scripting plug-in (see <a href="javascript:showSupportItem('sidebar2')">Sidebar 2. Anatomy of an Eclipse Plug-in</a>), which provides the rest of the platform with common access to scripting resources and a set of plug-in fragments-one for every scripting language the application is going to support as shown in <a href="javascript:showSupportItem('figure1')">Figure 1</a>.</p>
<br/><p><a href="javascript:showSupportItem('figure1')"><img width="150" alt="Click to enlarge" height="225" border="0" src="http://assets.devx.com/articlefigs/19200.gif"/></a></p>
<table>
<tbody>
<tr>
<td class="smallfont"><a href="javascript:showSupportItem('figure1')"><strong>Figure 1</strong>.</a> The com.devx.scripting Plug-in Architecture</td>
</tr>
</tbody>
</table>
<p>Every fragment contributes a given interpreter (Ruby, JavaScript, AppleScript, etc.) and its respective JSR-223 engine, which exposes the interpreter through the javax.script scripting API. Interpreters and JSR-223 wrappers can be bundled together or developed and shipped separately.</p>
<p>This plug-in setup offers various advantages, including the following:</p>
<ul>
<li>You can control explicitly which languages are added to the platform by limiting the number of distributed fragments.</li>
<li>The user can slim down your application's installation by selecting from the update site only the scripting languages he or she needs.</li>
</ul>
<p>The plug-in defines the IScript interface, which represents the script shown in following listing:</p>
<pre xml:space="preserve">
<code>
public interface IScript {
   // @return the URI which points to the script code.
   public String getURI();
   // @return the script extension 
   public String getExtension();
   // @return a Reader which points to the script code
   public Reader getReader() throws IOException;
   // @return the script unique id
   public String getId();
   // @return the namespace (plug-in id) of the script
   public String getNamespace();
        // @return run the script in a modal context?
        public boolean isModal();
}
</code>
</pre>
<p>The scripting plug-in exposes the com.devx.scripting.ScriptSupport class, which defines public methods for common script-related needs that arise within the Eclipse platform. These needs include running a script in the context of a progress monitor (such as the one shown while compiling sources in Eclipse), or retrieving a list of the supported languages by querying the ScriptEngineManager. The following listing shows part of the public interface of the class (Refer to <a href="http://assets.devx.com/sourcecode/19199.zip">the source code</a> for the implementation):</p>
<pre xml:space="preserve">
<code>
public void runScript(final IScript script,
   Map&lt;String,Object&gt; params) throws ScriptException;
public List&lt;Language&gt; getSupportedLanguages();
</code>
</pre>
<p><strong>Execution of External Scripts</strong><br/>With only these basic elements, you can already provide a way to run custom scripts inside your Eclipse application. As an example, you can contribute an Eclipse action that allows the user to choose a script from the file system and run it within the platform. <a href="javascript:showSupportItem('figure2')">Figure 2</a> and <a href="javascript:showSupportItem('figure3')">Figure 3</a> preview the final results.</p>
<table cellpadding="3" width="95%" align="center" border="0">
<tbody>
<tr>
<td valign="top"><a href="javascript:showSupportItem('figure2')"><img width="150" height="100" border="0" src="http://assets.devx.com/articlefigs/19201.gif"/></a><br/><span class="caption"><a href="javascript:showSupportItem('figure2')"><strong>Figure 2</strong></a>. The 'Run Script' Action</span></td>
<td width="12"/>
<td valign="top"><a href="javascript:showSupportItem('figure3')"><img width="235" height="183" border="0" src="http://assets.devx.com/articlefigs/19202.gif"/></a><br/><span width="235" class="caption"><a href="javascript:showSupportItem('figure3')"><strong>Figure 3</strong></a>. The 'Run Script' File Selector Allowing Scripts of All Supported Types</span></td>
</tr>
</tbody>
</table>
The action shows a file selector that filters only the available scripting languages by querying the com.devx.scripting.ScriptSupport class, which in turn asks the javax.script.ScriptEngineManager for the supported languages. Finally, the javax.script.ScriptEngineManager scans the plug-in classpath and its fragments using the Service Provider mechanism.
<p>To obtain the previewed result, you define an extension to the org.eclipse.ui.actionSets extension point, which provides an additional menu action to the application, implemented by the com.devx.scripting.actions.RunScriptAction class shown in <a href="javascript:showSupportItem('listing1')">Listing 1</a>.</p>
<p>That's it. You can now run Ruby, Groovy, and other scripts within your application, taking advantage of their power and peculiarities. You can prepare scripts that perform a bulk change on part of the workspace or you can have part of your build and deploy process written in a scripting language and invoked by the developer from within the platform when needed.</p>
<br/><br/><p><strong>Scripted Contributions to the Platform</strong><br/>Now you're ready to take a step forward and explore a way to directly access and modify the Eclipse platform using a scripting language and use scripts to add contributions to the platform. This requires the definition of a binding layer between scripted contributions and the platform. Such layer will have:</p>
<ul>
<li>Extension points that mimic the standard Eclipse ones such as scriptedView instead of a standard view contribution item to provide Eclipse views backed by a script</li>
<li>Proxy classes that implement the standard Eclipse interfaces such as org.eclipse.ui.part.ViewPart and delegate method calls to the underlying script</li>
<li>An extension to the org.eclipse.ui.startup extension point to perform all the plumbing and binding between the scripting contributions and the platform at startup time .</li>
</ul>
<br/><p>Consider the sample case of an Eclipse view backed by a JavaScript implementation. <a href="javascript:showSupportItem('figure4')">Figure 4</a> shows the entire cycle for the sample case and differentiates between actions performed at configuration/startup time and those performed at runtime. (See the sample code for other types of contributions, such as Eclipse action sets.)</p>
<p><a href="javascript:showSupportItem('figure4')"><img width="425" alt="Click to enlarge" height="165" border="0" src="http://assets.devx.com/articlefigs/19203.gif"/></a></p>
<table>
<tbody>
<tr>
<td class="smallfont"><a href="javascript:showSupportItem('figure4')"><strong>Figure 4</strong>.</a> The Cycle That Handles Scripted Contributions</td>
</tr>
</tbody>
</table>
<p>The first step is defining the contribution, as shown in the following listing:</p>
<pre xml:space="preserve">
<code>
&lt;plugin&gt;
   &lt;extension
      point="com.devx.scripting.scriptedContribution"&gt;
      &lt;scriptedView
         allowMultiple="false"
         id="com.devx.scripting.jsCalculator
         name="JavaScript Calculator"&gt;
         &lt;script
            extension="js"
            id="com.devx.scripting.jsCalculator.script"
            uri="scripts/jsCalculator.js"&gt;
         &lt;/script&gt;
      &lt;/scriptedView&gt;
   &lt;/extension&gt;
&lt;/plugin&gt;
</code>
</pre>
<p>The extension is very similar to the standard org.eclipse.ui.views. The only difference is the additional <span class="pf">&lt;script&gt;</span> element, which defines the underlying script (the <span class="pf">uri</span> attribute can point to either a resource within the plug-in by using a relative URI or an external resource using the <span class="pf">file://</span> scheme).</p>
<p>When the application starts up, the class com.devx.scripting.ScriptingStartup, registered as an extension to the org.eclipse.ui.startup extension point, scans available scripted contributions and dynamically adds them to the platform via the <span class="pf">IExtensionRegistry.addContribution()</span> method. Note that dynamic contributions require a special permit, which you give by adding the <span class="pf">-Declipse.registry.nulltoken=true</span> command-line option when launching the application.</p>
<p>The ScriptingStartup class translates between the scripted contribution and the contribution that will act as a proxy for your scripts. <a href="javascript:showSupportItem('listing2')">Listing 2</a> shows the <span class="pf">getContribution()</span> method involved in the translation process.</p>
<p>As you can see, the code just copies the scripted contribution and translates it into a standard contribution to org.eclipse.ui.views. The view implementation class com.devx.scripting.view.ScriptProxyView will delegate to the underlying script the calls made to the view by the Eclipse platform. For example, the following listing shows the delegation of the rendering process to the script, performed when Eclipse calls <span class="pf">createPartControl(Composite parent)</span> to draw the view:</p>
<pre xml:space="preserve">
<code>
scriptParent = new Composite(parent,SWT.NONE);
scriptParent.setLayoutData(new
   GridData(GridData.FILL_BOTH));
scriptParent.setLayout(new FillLayout(SWT.HORIZONTAL));

// this call returns the script associated with this view
IScript script = getScript();

Map&lt;String,Object&gt; params = new HashMap&lt;String,Object&gt;();
params.put("parent", scriptParent);
new ScriptSupport().runScript(script, params);
</code>
</pre>
<p>This approach enables the developer to perform fast UI prototyping, since a change to the script is immediately reflected in the view (he or she can just close and reopen it).</p>
<p>You are now able to use the benefits of scripting languages to achieve results that are complex to obtain with traditional Java code, such as a simple calculator. Using JavaScript and its <span class="pf">eval()</span> function, you do not have to worry about writing code to evaluate the mathematical expressions submitted by the user. <a href="javascript:showSupportItem('figure5')">Figure 5</a> shows the final result, and <a href="javascript:showSupportItem('listing3')">Listing 3</a> shows the JavaScript code that produces it.</p>
<p><a href="javascript:showSupportItem('figure5')"><img width="203" alt="Click to enlarge" height="153" border="0" src="http://assets.devx.com/articlefigs/19204.gif"/></a></p>
<table>
<tbody>
<tr>
<td class="smallfont"><a href="javascript:showSupportItem('figure5')"><strong>Figure 5</strong>.</a> The JavaScript Calculator</td>
</tr>
</tbody>
</table>
<p>The refresh button will reload the script and immediately apply changes to the UI.</p>
<p>Scripting languages can help draw interfaces within Eclipse in many other scenarios. For example, you can take advantage of the builder paradigm by using <a href="http://groovy.codehaus.org/GroovySWT" target="new">Groovy to build SWT interfaces</a> or <a href="http://sweetgui.rubyforge.org/doc/" target="new">this Ruby library</a> to build <a href="http://www.rubyinside.com/jruby-swt-future-cross-platform-ruby-desktop-app-development-298.html" target="new">SWT interfaces with Ruby</a>.</p>
<p><strong>Towards Full Integration of Scripting Languages Within Eclipse</strong><br/>Now that you know how easy the integration between Eclipse and the new scripting capabilities offered by the Java platform is, you can wrap engines into the Eclipse plug-in architecture and invoke scripts from the Eclipse environment. You have also learned a way (not necessarily the best way) to use scripting languages at the very core of the Eclipse platform to provide extensions to standard extension points, such as views and action sets.</p>
<p>In addition to the approach described here, other projects bring scripting support to the Eclipse platform, namely the <a href="http://www.eclipse.org/dash/" target="new">Eclipse Monkey</a> and the <a href="http://eclipse-shell.sourceforge.net/" target="new">EclipseShell</a> projects. They were omitted from this discussion mainly because at the time of writing they weren't yet updated to support JSR-223, which is the main focus of the article. However, both feature some interesting ideas that have in part been ported into the sample code (such as monkey doms, which use Eclipse extensions to provide custom objects to the scripts). It's worth spending some time with them.</p>
<br/><hr style="BORDER-TOP: blue 1px dashed; COLOR: #fff; HEIGHT: 4px; BACKGROUND-COLOR: #fff"/>
<p><a name="codeitemarea" id="codeitemarea"><img width="281" height="33" border="0" src="http://assets.devx.com/articleicons/14097.gif"/></a></p>
<ul style="LIST-STYLE-IMAGE: url(http://assets.devx.com/devx/4412.gif)">
<li class="basiclink"><a href="http://assets.devx.com/sourcecode/19199.zip" class="basiclink"><strong>Download the Code!</strong></a></li>
</ul>
<br/><p><br/><br/><br/></p>
<img src ="http://www.blogjava.net/hongjunli/aggbug/119248.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2007-05-22 23:19 <a href="http://www.blogjava.net/hongjunli/archive/2007/05/22/119248.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Brand your Eclipse RCP applications [ZT]</title><link>http://www.blogjava.net/hongjunli/archive/2007/05/22/119247.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Tue, 22 May 2007 15:01:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2007/05/22/119247.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/119247.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2007/05/22/119247.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/119247.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/119247.html</trackback:ping><description><![CDATA[
<p id="subtitle"><em>Brand your Eclipse RCP applications</em></p>
<p><em>How to understand and use Eclipse Production Configuration</em></p>
<p><img width="1" height="6" class="display-img" src="http://www.ibm.com/i/c.gif"/></p>
<p><a href="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/?ca=dgr-lnxw02BrandEclipseRCP#author">Xing Xing Li</a> (<a href="mailto:lixx@cn.ibm.com?subject=Brand%20your%20Eclipse%20RCP%20applications&amp;cc=cappel@us.ibm.com">lixx@cn.ibm.com</a>), Software Engineer, IBM<br/><a href="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/?ca=dgr-lnxw02BrandEclipseRCP#author">Ying Xi Zhao</a> (<a href="mailto:lois_alert@sohu.com?subject=Brand%20your%20Eclipse%20RCP%20applications&amp;cc=cappel@us.ibm.com">lois_alert@sohu.com</a>), Software Engineer<br/></p>
<p>08 May 2007</p>
<p><a href="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/?ca=dgr-lnxw02BrandEclipseRCP" target="_blank" title="查看原文请点此处">查看原文请点此处</a></p>
<p>This article provides step-by-step guidelines on how to package and manage a Rich Client Platform (RCP) application as a product with your own branding by using Eclipse's Production Configuration and PDE. Besides common concepts such as splash screen and an icon file's color and size, this article also introduces advanced branding aspects of production configuration: the RCP executable file and its configuration file, progress bar and message, RCP window image, About dialog and welcome page (i.e., introduction). With this article, you can grasp the main skills on encapsulating your RCP application as a distributable product, independent of Eclipse platform.</p>
<!--START RESERVED FOR FUTURE USE INCLUDE FILES-->
<script xml:space="preserve" type="text/javascript" language="JavaScript">
//
//
&amp;lt;!--
if (document.referrer&amp;amp;&amp;amp;document.referrer!="") { 
   // document.write(document.referrer);
   var q = document.referrer;
   var engine = q;
   var isG = engine.search(/google\.com/i);
   var searchTerms;
   //var searchTermsForDisplay;
   if (isG != -1) { 
           var i = q.search(/q=/);
           var q2 = q.substring(i+2);
           var j = q2.search(/&amp;amp;/);
           j = (j == -1)?q2.length:j;
           searchTerms = q.substring(i+2,i+2+j);
           if (searchTerms.length != 0) {
               searchQuery(searchTerms);
               document.write("&amp;lt;div id=\"contents\"&amp;gt;&amp;lt;\/div&amp;gt;");
           }
   } 
}
//--&amp;gt;
//
//
</script><!--END RESERVED FOR FUTURE USE INCLUDE FILES-->
<p>Before Production Configuration was introduced in Eclipse V3.1, RCP developers confronted the problem of how to effectively and efficiently package, and deliver their RCP projects with the required plug-ins. This problem, in fact, is a consumption issue because it essentially determines the distribution and usability of their software. Thanks to Eclipse V3.1's new Production Configuration feature, you can now wrap their applications with dependencies and branding elements easily. This article details how to leverage Eclipse Product Configuration with a sample RCP application: a game called Frog Across River.</p>
<p>To get the most out of this article, you need an Eclipse development environment and the sample code. If you don't have Eclipse already, download the following:</p>
<ol>
<li><a href="http://www.java.com/en/download/">JRE V1.5.0 or later</a>; Eclipse requires the Java Runtime Environment to operate</li>
<li><a href="http://www.eclipse.org/downloads/">Eclipse Platform</a> or <a href="http://www14.software.ibm.com/webapp/download/brand.jsp?b=Rational">IBM Rational Software Development Platform V7.X</a></li>
<li>The sample code in the <a href="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/?ca=dgr-lnxw02BrandEclipseRCP#download">Download</a> section</li>
</ol>
<p><a name="N10095" id="N10095"><span class="atitle">Prerequisite: An RCP application</span></a></p>
<p>The prerequisite of Eclipse Product Configuration is an existing RCP application. You will need it as the bootstrap entry of your product. In this section, you will develop a game of Frog Across River as an RCP application using the following instructions. This RCP application is a plug-in project that will extend the <code>org.eclipse.core.runtime.applications</code> extension and play the entry role of your product. Alternately, you can skip through this section by importing the whole project by downloading the attached (see <a href="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/?ca=dgr-lnxw02BrandEclipseRCP#downloads">Download</a>) to get a sample RCP application for later scenarios.</p>
<p><a name="N100A6" id="N100A6"><span class="smalltitle">Create a sample RCP plug-in</span></a></p>
<p>First, we generate a plug-in project following these steps. Launch Eclipse, shift to the plug-in development perspective by selecting <strong>Window &gt; Open Perspective &gt; Other... &gt; Plug-in Development</strong>.</p>
<ol>
<li>From the Eclipse menu, select <strong>File &gt; New &gt; Project... &gt; Plug-in Development &gt; Plug-in Project</strong> and click <strong>Next</strong>.</li>
<li>In the <strong>Plug-in Project</strong> wizard page, input <code>com.example.zyx</code> as project name and click <strong>Next</strong>.</li>
<li>In the <strong>Plug-in Content</strong> wizard page, accept all default settings and click <strong>Yes</strong> for the "Would you like to create a rich client application?" option, then click <strong>Next</strong>.</li>
<li>In the <strong>Templates</strong> wizard page, select <strong>Hello RCP</strong> template and click <strong>Finish</strong>. Afterward, you will find a project named <code>com.example.zyx</code> in the workspace.</li>
</ol>
<p><a name="N100E7" id="N100E7"><span class="smalltitle">Import the RCP game source code</span></a></p>
<p>Copy all Java source files (.java files) from <code>com.example.zyx.zip</code> to the workspace, replacing the existing ones:</p>
<ul>
<li>Application.java</li>
<li>ApplicationActionBarAdvisor.java</li>
<li>ApplicationworkbenchAdvisor.java</li>
<li>ApplicationWorkbenchWindowAdvisor.java</li>
<li>Perspective.java</li>
<li>GameView.java</li>
</ul>
<p>This RCP project will create the Frog Across River game in a GUI view that enables mouse and keyboard input on the menu bar and canvas. Its design architecture is shown in Figure 1.</p>
<p><br/><a name="N1010E" id="N1010E"><strong>Figure 1. Class diagram of RCP application</strong></a><br/><img width="466" alt="Class diagram of RCP application" height="271" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure1.jpg"/><br/><br/></p>
<p>Among them, <code>Application.java</code> must implement the IPlatformRunnable interface because the plugin.xml file has extended the extension point of <code>org.eclipse.core.runtime.applications</code>. That means you should implement the <code>run()</code> method of IPlatformRunnable, which is responsible for creating the SWT display and starting up a workbench.</p>
<p><br/><a name="listing1" id="listing1"><strong>Listing 1. Application.java</strong></a><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td class="code-outline">
<pre xml:space="preserve" class="displaycode">
                
public class Application implements IPlatformRunnable {
    public Object run(Object args) throws Exception {
        ...
        int returnCode = PlatformUI.createAndRunWorkbench(display, 
                         new ApplicationWorkbenchAdvisor());
        ...
    }
}
</pre></td>
</tr>
</tbody>
</table>
<br/><p><code>ApplicationActionBarAdvisor.java</code> is used to create and display menu bar.</p>
<p><br/><a name="listing2" id="listing2"><strong>Listing 2. ApplicationActionBarAdvisor.java</strong></a><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td class="code-outline">
<pre xml:space="preserve" class="displaycode">
                
public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
    ...
    private IWorkbenchAction exitAction;
    private IAction gameAction;
    ...
    protected void fillMenuBar(IMenuManager menuBar) {
        IMenuManager viewMenu = new MenuManager("&amp;Game","Game");
        menuBar.add(viewMenu);
         viewMenu.add(gameAction);
         viewMenu.add(exitAction);
    }
}
</pre></td>
</tr>
</tbody>
</table>
<br/><p><code>GameView.java</code> is the core of this RCP game. It loads images, renders the display, responds to user actions (mouse and keyboard events), and controls the whole process of the game.</p>
<p>Double-buffer technology is applied to avert screen flicker and flash during animation. Why? When you instruct JVM to display an animation, JVM will clear the screen, show the window, paint the screen, and show it again. That degrades your application's appearance. Double-buffering boosts performance by painting an off-screen image, then dumping it to the display.</p>
<p><br/><a name="listing3" id="listing3"><strong>Listing 3. GameView.java</strong></a><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td class="code-outline">
<pre xml:space="preserve" class="displaycode">
                
public class GameView extends ViewPart {
    ...
    public void createPartControl(final Composite parent) {
    ...
    canvas.addMouseListener(new MouseAdapter() {
        public void mouseDoubleClick(MouseEvent e) {
        
        }
    });
    canvas.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e) {
        ...
    }
    canvas.addPaintListener(new PaintListener() {
        public void paintControl(PaintEvent event) {
            final Image image = new Image(parent.getDisplay(), canvas.getBounds());
            final GC gcImage = new GC(image);
            ...
            event.gc.drawImage(image, 0, 0);
            ...
}
</pre></td>
</tr>
</tbody>
</table>
<br/><p>Copy the code list below into <code>plugin.xml</code> file because your RCP game will show up a view as the GUI to interact with users.</p>
<p><br/><a name="listing4" id="listing4"><strong>Listing 4. plugin.xml</strong></a><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td class="code-outline">
<pre xml:space="preserve" class="displaycode">
                
&lt;extension point="org.eclipse.ui.views"&gt;
      &lt;category id="com.example.zyx.browser"
                name="Browser Example"/&gt;
      &lt;view id="com.example.zyx.GameView"
            name="Browser"
            icon="icons/window16x16.gif"
            class="com.example.zyx.GameView"
            category="com.example.zyx.browser"/&gt;
&lt;/extension&gt;
</pre></td>
</tr>
</tbody>
</table>
<br/><p><a name="N1016B" id="N1016B"><span class="smalltitle">Launch the RCP game in Eclipse</span></a></p>
<p>To execute the RCP game application in Eclipse, switch to the Overview tab of <code>plugin.xml</code> and click <strong>Launch an Eclipse application</strong>. A new Eclipse application launch configuration will be created for you, and you will find the execution result of your RCP game, as shown in Figure 2.</p>
<p><br/><a name="N1017D" id="N1017D"><strong>Figure 2. Execution of the sample RCP application</strong></a><br/><img width="570" alt="Execution of the sample RCP application" height="539" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure2.jpg"/><br/><br/><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td><img width="539" height="1" src="http://www.ibm.com/i/v14/rules/blue_rule.gif"/></td>
</tr>
</tbody>
</table>
<table cellpadding="0" align="right" cellspacing="0" class="no-print">
<tbody>
<tr align="right">
<td>
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td valign="center"><img width="16" height="16" border="0" src="http://www.ibm.com/i/v14/icons/u_bold.gif"/><br/></td>
<td align="right" valign="top"><a href="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/?ca=dgr-lnxw02BrandEclipseRCP#main" class="fbox"><strong>Back to top</strong></a></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<br/><br/><p><a name="N1018B" id="N1018B"><span class="atitle">Create your product configuration</span></a></p>
<p>You will create a Product Configuration file (<code>.product</code>) to wrap up the Frog Across River RCP application as a product. You can locate it in any project or folder.</p>
<p>To generate a Product Configuration file, select <strong>File &gt; New &gt; Other &gt; Plug-in Development &gt; Product Configuration</strong>, then click <strong>Next</strong>. When the Product Configuration wizard page appears, select <code>com.example.zyx</code> plug-in project as its parent folder, input <code>myProduct.product</code> as its file name, select "Create a configuration file with basic settings" and click <strong>Finish</strong> (see Figure 3).</p>
<p><br/><a name="N101AE" id="N101AE"><strong>Figure 3. Wizard to create new Product Configuration</strong></a><br/><img width="471" alt="Wizard to create new Product Configuration" height="449" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure3.jpg"/><br/><br/><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td><img width="539" height="1" src="http://www.ibm.com/i/v14/rules/blue_rule.gif"/></td>
</tr>
</tbody>
</table>
<table cellpadding="0" align="right" cellspacing="0" class="no-print">
<tbody>
<tr align="right">
<td>
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td valign="center"><img width="16" height="16" border="0" src="http://www.ibm.com/i/v14/icons/u_bold.gif"/><br/></td>
<td align="right" valign="top"><a href="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/?ca=dgr-lnxw02BrandEclipseRCP#main" class="fbox"><strong>Back to top</strong></a></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<br/><br/><p><a name="N101BC" id="N101BC"><span class="atitle">Configure</span></a></p>
<p>In this section, we introduce how to define and customize the product published with your RCP application after you create your .product file. You need to import some files and folders into your plug-in project from <code>com.example.zyx.zip</code> before you set up the Product Configuration. They are listed in Figure 4.</p>
<p><br/><a name="N101CB" id="N101CB"><strong>Figure 4. Imported resources</strong></a><br/><img width="253" alt="Imported resources" height="341" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure4.jpg"/><br/><br/></p>
<p>The following table provides the description of these resources.</p>
<p><br/><a name="table1" id="table1"><strong>Table 1. Resource description</strong></a><br/></p>
<table cellspacing="0" summary="Resource description" width="100%" cellpadding="0" border="0" class="data-table-1">
<tbody>
<tr>
<th scope="col">File/folder name</th>
<th scope="col">Function</th>
</tr>
<tr>
<th scope="row" class="tb-row">splash.bmp</th>
<td>Comes up when product is launching</td>
</tr>
<tr>
<th scope="row" class="tb-row">plugin_customization.ini</th>
<td>Defines default preference values</td>
</tr>
<tr>
<th scope="row" class="tb-row">plugin_customization.properties</th>
<td>Contains externalized strings for plugin_customization.ini file</td>
</tr>
<tr>
<th scope="row" class="tb-row">plugin.properties</th>
<td>Contains translating values from plugin.xml file</td>
</tr>
<tr>
<th scope="row" class="tb-row">intoContent.xml</th>
<td>Configures welcome page</td>
</tr>
<tr>
<th scope="row" class="tb-row">content</th>
<td>Contains welcome page resources</td>
</tr>
<tr>
<th scope="row" class="tb-row">icon</th>
<td>Contains useful icons, etc.</td>
</tr>
<tr>
<th scope="row" class="tb-row">image</th>
<td>Contains useful images resources, such as window images, etc.</td>
</tr>
<tr>
<th scope="row" class="tb-row">about.html</th>
<td>Provides information about host plug-in; a plug-in must contribute this file</td>
</tr>
</tbody>
</table>
<br/><p><a name="N1025A" id="N1025A"><span class="smalltitle">Overview tab</span></a></p>
<p>First, click the <strong>Overview</strong> tab (see Figure 5). You will set up the Product Definition here. The product definition consists of Product Name, Product ID, and an Application associate with the Product ID. What's more, it is specified whether the product configuration unit is based on plug-in or feature.</p>
<p><br/><a name="N10268" id="N10268"><strong>Figure 5. Overview tab</strong></a><br/><img width="541" alt="Overview tab" height="375" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure5.jpg"/><br/><br/></p>
<p>Product Name defines the name of the product, which will be shown in the title bar. Input <code>%productName</code> in the Product Name text field, which will automatically refer to the values in plugin.properties file according to the locale. Product ID defines the product ID and it associates with the Application ID. Click <strong>New...</strong> to the right of Product ID. When the Product Definition window pops up, choose <strong>com.example.zyx</strong> as the Defining Plug-in, then select <strong>com.example.zyx.application</strong> as its associated application, and use <code>product</code> as its product ID. Click <strong>Finish</strong> to return to the Overview tab. Select <strong>plug-ins</strong> radio button in the "The product configuration is based on" section.</p>
<p>You can see the product name in the title bar when you launch the product, as shown below.</p>
<p><br/><a name="N10295" id="N10295"><strong>Figure 6. Product name in title bar of my product</strong></a><br/><img width="165" alt="Product name in title bar of my product" height="26" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure6.jpg"/><br/><br/></p>
<p><a name="N102A3" id="N102A3"><span class="smalltitle">Configuration tab</span></a></p>
<p>Click the <strong>Configuration</strong> tab. You will define the elements in you product and the configuration file. The "Plug-ins and Fragments section" lists all plug-ins and fragments that will be packaged in your product.</p>
<p><br/><a name="N102B1" id="N102B1"><strong>Figure 7. Configuration tab</strong></a><br/><img width="533" alt="Configuration tab" height="490" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure7.jpg"/><br/><br/></p>
<p>Click <strong>Add...</strong> to the right of the Plug-ins and Fragments list, then select the <strong>com.example.zyx</strong> plug-in, and click <strong>OK</strong>. Click the <strong>Add Required Plug-ins</strong> button, then all required plug-ins and fragments are added. The "Configuration File" section is used to set up the product runtime information. This file must be named config.ini. You can accept its default setting, which will generate a default config.ini file in configuration folder when the product is exported. The following gives a sample of the file's content.</p>
<p><br/><a name="listing5" id="listing5"><strong>Listing 5. Content of config.ini</strong></a><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td class="code-outline">
<pre xml:space="preserve" class="displaycode">
                
#Product Runtime Configuration File
osgi.splashPath=platform:/base/plugins/com.example.zyx
eclipse.product=com.example.zyx.product
osgi.bundles=org.eclipse.equinox.common@2:start,org.eclipse.update.configurator@3:start,
org.eclipse.core.runtime@start
osgi.bundles.defaultStartLevel=4
</pre></td>
</tr>
</tbody>
</table>
<br/><p>The first line determines the location of splash screen, which will be displayed when product launches. The second line defines the product name.</p>
<p>In the last two lines, <code>StartLevel</code> is used by the product to launch plug-ins after they have been successfully installed and resolved. In other words, <code>StartLevel</code> defines the startup sequence of these core plug-ins. A start level is defined as a non-negative integer. The products will launch plug-ins with Start Level 0. Afterward, it's the turn of all plug-ins with start level 1. This progress won't end until it reaches its designated start level: the <code>defaultStartLevel</code> or the <code>osgi.startLevel</code>. In this sample config.ini file, the <code>defaultStartLevel</code> is 4. The default value for the <code>osgi.startLevel</code> property is 6.</p>
<p><a name="N102F6" id="N102F6"><span class="smalltitle">Launcher tab</span></a></p>
<p>Click the <strong>Launcher</strong> tab, where you will set the Program Launcher and Launching Arguments.</p>
<p><br/><a name="N10304" id="N10304"><strong>Figure 8. Launcher tab</strong></a><br/><img width="569" alt="Launcher tab" height="504" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure8.jpg"/><br/><br/></p>
<p>Program Launcher is used to specify launcher name and launcher icons, in the form of an .exe file for Windows® to launch your product after you have exported it. Input <strong>FrogAcrossRiver</strong> in the Launcher Name text field. Click the radio button <strong>Use a single ICO file containing 7 images as specified above</strong>, then click <strong>Browse...</strong> and navigate to select the 7Images.ico file in the icons folder. You can generate and use your own icon file or just leverage BMP images by clicking <strong>Specify separate BMP images</strong>.</p>
<p>An .ico file is a container that includes required image files with different size and color modes for its host application. Windows selects the image it needs to use, based on the user's display settings. If the icon does not contain the appropriate size or color mode, Windows will take the closest size and resolution, and render the icon to suit.</p>
<p><br/><a name="table1" id="table1"><strong>Table 2. Icon properties</strong></a><br/></p>
<table cellspacing="0" summary="Icon properties" width="100%" cellpadding="0" border="0" class="data-table-1">
<tbody>
<tr>
<th scope="col">Icon property</th>
<th scope="col">Value</th>
<th scope="col">Usage</th>
</tr>
<tr>
<th scope="row" class="tb-row">Size</th>
<td>16x16 pixels</td>
<td>When the view is Detail or Small Icons mode, it's used on the top left-hand corner of the program window, the Windows Task Bar, the Start, and in the Windows Explorer or My Computer.</td>
</tr>
<tr>
<th scope="row" class="tb-row"/>
<td>24x24 pixels</td>
<td>This is used on the left side of the Start menu in Windows XP.</td>
</tr>
<tr>
<th scope="row" class="tb-row"/>
<td>32x32 pixels</td>
<td>When the view is Icon view mode, this is used for Windows desktop and Windows Explorer.</td>
</tr>
<tr>
<th scope="row" class="tb-row"/>
<td>48x48 pixels</td>
<td>When the view is Large Icons mode, this is used.</td>
</tr>
<tr>
<th scope="row" class="tb-row">Color depth</th>
<td>4-bit (16 colors)</td>
<td>Low quality, used in safe mode.</td>
</tr>
<tr>
<th scope="row" class="tb-row"/>
<td>8-bit (256 colors)</td>
<td>Medium quality, used with display color depth of 16-bit or higher.</td>
</tr>
<tr>
<th scope="row" class="tb-row"/>
<td>32-bit (24-bit full colors with 8-bit alpha)</td>
<td>High quality with smooth anti-aliased edges and optional translucent drop shadows; supported in Windows XP.</td>
</tr>
</tbody>
</table>
<br/><p>Launching arguments provides the product with the default program arguments and VM arguments. In its way, an .ini file with the same name as the launcher mame will be generated in the root of the exported folder to record these arguments. Input <strong>-console</strong> in the Program Arguments text field, which will open a console window when your product is launched. After you export the product, go to the exported folder, you can find the .exe and .ini files as shown below.</p>
<p><br/><a name="N103AA" id="N103AA"><strong>Figure 9. Executable file and config file</strong></a><br/><img width="346" alt="Executable file and config file" height="53" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure9.jpg"/><br/><br/></p>
<p><a name="N103B8" id="N103B8"><span class="smalltitle">Splash screen</span></a></p>
<p>A splash screen will appear when the product launches. This file must be located in the root folder and be named splash.bmp. Otherwise, the product will not find it at runtime.</p>
<p><br/><a name="N103C3" id="N103C3"><strong>Figure 10. Splash screen configuration in Branding tab</strong></a><br/><img width="552" alt="Splash screen configuration in Branding tab" height="248" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure10.jpg"/><br/><br/></p>
<p>Click <strong>Browse...</strong> on the right of <strong>Plug-in</strong> test field and select the plug-in project where the splash file resides. Progress bar and Progress message are used to indicate the process status on the splash screen. Add the following value into the plugin_customization.ini file.</p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td class="code-outline">
<pre xml:space="preserve" class="displaycode">
org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP=true
</pre></td>
</tr>
</tbody>
</table>
<br/><p>Next, add the following property to the product extension section of the plugin.xml file.</p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td class="code-outline">
<pre xml:space="preserve" class="displaycode">
&lt;property name="preferenceCustomization" value="plugin_customization.ini"&gt;   
&lt;/property&gt;
</pre></td>
</tr>
</tbody>
</table>
<br/><p>Then select <strong>Add a progress bar</strong>. Input <code>0</code> and <code>280</code> for <strong>x-offset</strong> and <strong>y-offset</strong>, and input <code>455</code> and <code>15</code> for <strong>width</strong> and <strong>height</strong>. Then select <strong>Add a progress message</strong>. Input <code>7</code> and <code>220</code> for <strong>x-offset</strong> and <strong>y-offset</strong>, and input <code>441</code> and <code>20</code> for <strong>width</strong> and <strong>height</strong>. Select your favorite color in <strong>Text Color</strong> for the progress message. When you launch the product, you can see the splash screen come up, and the progress bar and progress message appear.</p>
<p><br/><a name="N1042D" id="N1042D"><strong>Figure 11. Progress bar and progress message at the product's start up</strong></a><br/><img width="456" alt="Progress bar and progress message at the product's start up" height="296" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure11.jpg"/><br/><br/></p>
<p><a name="N1043B" id="N1043B"><span class="smalltitle">Window images</span></a></p>
<p>Images for your application window are configured in this section (see Figure 12). These images must be in GIF format. An image with a size of 16x16 appears in the upper-left corner of the window and task bar. A 32x32 image appears in the <strong>Alt+Tab</strong> application switcher.</p>
<p><br/><a name="N10449" id="N10449"><strong>Figure 12. Window image configuration in Branding tab</strong></a><br/><img width="324" alt="Window image configuration in Branding tab" height="194" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure12.jpg"/><br/><br/></p>
<p>With the <strong>Browse...</strong> button, define the 16x16 and 32x32 images you want from your project's icon folder. Then go to the plugin.xml file to verify your configuration with following declaration:</p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td class="code-outline">
<pre xml:space="preserve" class="displaycode">
&lt;property name="windowImages" value="icons/alt_window_16.gif,icons/alt_window_32.gif"&gt;
&lt;/property&gt;
</pre></td>
</tr>
</tbody>
</table>
<br/><p>After you launch the product, you will see the images is displayed in Figure 13.</p>
<p><br/><a name="N10467" id="N10467"><strong>Figure 13. 32x32 image in Alt+Tab application switcher</strong></a><br/><img width="327" alt="32x32 image in Alt+Tab application switcher" height="149" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure13.jpg"/><br/><br/></p>
<p><a name="N10475" id="N10475"><span class="smalltitle">About dialog</span></a></p>
<p>The About dialog consists of the about image rendered on the left and the about text briefly introducing your product. You will manage these two items in this section.</p>
<p><br/><a name="N10480" id="N10480"><strong>Figure 14. About dialog configuration in Branding tab</strong></a><br/><img width="318" alt="About dialog configuration in Branding tab" height="136" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure14.jpg"/><br/><br/></p>
<p>Click <strong>Browse...</strong> to the right of Image text field and select a GIF file from the icon folder.</p>
<p>There are two ways to define the about text. One is to directly input the text in the Text field; the other is to define a key and value pair in the plugin.properties file and refer to the key in the Text field. As you will leverage the second one, just input <code>%productBlurb</code> in the Text field as shown in Figure 14. <code>productBlurb</code> is the key defined in the plugin.properties file, as shown below.</p>
<p><br/><a name="listing6" id="listing6"><strong>Listing 6. plugin.properties</strong></a><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td class="code-outline">
<pre xml:space="preserve" class="displaycode">
                
pluginName=Frog Across River
providerName=Xing Xing Li and Ying Xi Zhao
productName=My Product
productBlurb=My Product based on Eclipse Platform\n\
\n\
Version: 1.0.0\n\
Build id: M20061124-1422 \n\
\n\
Welcome to my Product based on Eclipse Product Configuration. \n\
A RCP game is encapsulated in it with customized branding elements.\n\
\n\
This product is developed by Xing Xing Li and Ying Xi Zhao \n\
(c) Copyright by authors. All rights reserved\n\
</pre></td>
</tr>
</tbody>
</table>
<br/><p>You need to add an action so that the menu item for the About dialog will appear in the menu bar of your product, such as <strong>Help &gt; About</strong>. Open the ApplicationActionBarAdvisor.java file and remove the comment tags to activate the following code.</p>
<p><br/><a name="listing7" id="listing7"><strong>Listing 7. ApplicationActionBarAdvisor.java</strong></a><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td class="code-outline">
<pre xml:space="preserve" class="displaycode">
                
public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
    ...
    private IWorkbenchAction aboutAction;
    protected void makeActions(final IWorkbenchWindow window) {
        ...
        aboutAction = ActionFactory.ABOUT.create(window);
        register(aboutAction);
        ...
    }
    protected void fillMenuBar(IMenuManager menuBar) {
        //Help
        MenuManager helpMenu = new MenuManager("&amp;Help",IWorkbenchActionConstants.M_HELP);
        menuBar.add(helpMenu);
        // About &gt; Help
        helpMenu.add(new Separator());
        helpMenu.add(aboutAction);
        ...
    }
}
</pre></td>
</tr>
</tbody>
</table>
<br/><p>After you launch your product and select <strong>Help &gt; About</strong>, the About dialog will appear.</p>
<p><br/><a name="N104C1" id="N104C1"><strong>Figure 15. About dialog sample</strong></a><br/><img width="548" alt="About dialog sample" height="269" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure15.jpg"/><br/><br/></p>
<p><a name="N104CF" id="N104CF"><span class="smalltitle">Welcome page</span></a></p>
<p>A welcome page is used to introduce the product information, which is especially helpful for new users. You can depict all features, usage, and tips of your product via the welcome page.</p>
<p><br/><a name="N104DA" id="N104DA"><strong>Figure 16. Welcome page configuration in Branding tab</strong></a><br/><img width="327" alt="Welcome page configuration in Branding tab" height="113" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure16.jpg"/><br/><br/></p>
<p>To enable a welcome page in your product, you will extend two extensions: <code>org.eclipse.ui.intro</code> and <code>org.eclipse.ui.intro.config</code>. Add the following code into the plugin.xml file.</p>
<p><br/><a name="listing8" id="listing8"><strong>Listing 8. Intro configuration in plugin.xml</strong></a><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td class="code-outline">
<pre xml:space="preserve" class="displaycode">
                
&lt;extension
         point="org.eclipse.ui.intro"&gt;
         &lt;intro
               class="org.eclipse.ui.intro.config.CustomizableIntroPart"
               icon="icons/alt_window_16.gif"
               id="com.example.zyx.intro"&gt;
      &lt;/intro&gt;
      &lt;introProductBinding
            introId="com.example.zyx.intro"
            productId="com.example.zyx.product"&gt;
      &lt;/introProductBinding&gt;
   &lt;/extension&gt;
&lt;extension
         point="org.eclipse.ui.intro.config"&gt;
      &lt;config
            content="introContent.xml"
            id="com.example.zyx.configId"
            introId="com.example.zyx.intro"&gt;
            &lt;presentation
               home-page-id="root"&gt;
            &lt;implementation
                  kind="html"
                  os="win32,linux,macosx"&gt;
            &lt;/implementation&gt;
         &lt;/presentation&gt;
         &lt;/config&gt;
   &lt;/extension&gt;
</pre></td>
</tr>
</tbody>
</table>
<br/><p>Next, add an action in menu bar by selecting <strong>Help &gt; Welcome</strong>. Open the <code>ApplicationActionBarAdvisor.java</code> file again and remove the comment tag of the following code.</p>
<p><br/><a name="listing9" id="listing9"><strong>Listing 9. ApplicationActionBarAdvisor.java</strong></a><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td class="code-outline">
<pre xml:space="preserve" class="displaycode">
                
public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
    ...
    private IWorkbenchAction introAction;
    protected void makeActions(final IWorkbenchWindow window) {
         ...
        introAction = ActionFactory.INTRO.create(window);
        register(introAction);
    }
    protected void fillMenuBar(IMenuManager menuBar) {          
        ...
        helpMenu.add(introAction);
         ...
    }
}
</pre></td>
</tr>
</tbody>
</table>
<br/><p>You will see the following welcome page when you launch your product.</p>
<p><br/><a name="N10516" id="N10516"><strong>Figure 17. Welcome page sample</strong></a><br/><img width="472" alt="Welcome page sample" height="337" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure17.jpg"/><br/><br/><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td><img width="539" height="1" src="http://www.ibm.com/i/v14/rules/blue_rule.gif"/></td>
</tr>
</tbody>
</table>
<table cellpadding="0" align="right" cellspacing="0" class="no-print">
<tbody>
<tr align="right">
<td>
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td valign="center"><img width="16" height="16" border="0" src="http://www.ibm.com/i/v14/icons/u_bold.gif"/><br/></td>
<td align="right" valign="top"><a href="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/?ca=dgr-lnxw02BrandEclipseRCP#main" class="fbox"><strong>Back to top</strong></a></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<br/><br/><p><a name="N10524" id="N10524"><span class="atitle">Publish Your RCP product</span></a></p>
<p><a name="N1052A" id="N1052A"><span class="smalltitle">Test before publishing</span></a></p>
<p>Go back to the <strong>Overview</strong> tab and find the <strong>Testing</strong> section. When you have changed the product name, window images, about image and about text, etc., click <strong>Synchronize</strong> link to reflect your changes to plugin.xml to ensure that the plug-in manifest is up to date. Click <strong>Launch the product</strong> to test your product before it's exported.</p>
<p>There is an example of how the <strong>Synchronize</strong> link works. Change the product name from <code>%productName</code> to <code>my product</code>, then click <strong>Synchronize</strong>. Go to the plugin.xml file and verify whether the product name value ws changed to <code>my product</code>. After that, change it back to <code>%productName</code> and click <strong>Synchronize</strong>, then click <strong>Launch the product</strong>, and your product will launch.</p>
<p><a name="N1055F" id="N1055F"><span class="smalltitle">Export product</span></a></p>
<p>Go to the find Exporting section of the Overview tab, where there is a link to export your product. Click the <strong>Eclipse Product export wizard</strong>. In the export dialog that pops up, specify MyProduct as the Root directory and C:\export as the destination directory.</p>
<p>After clicking <strong>Finish</strong>, verify the export result by navigating to the C:\export\MyProduct directory. You will find the FrogAcrossRiver.exe and FrogAcrossRiver.ini files in which your launching arguments are recorded. You will also verify that the icon of the FrogAcrossRiver.exe file is what you desire.</p>
<p><br/><a name="N10573" id="N10573"><strong>Figure 18. Exported RCP product in file system</strong></a><br/><img width="418" alt="Exported RCP product in file system" height="206" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure18.jpg"/><br/><br/></p>
<p>If you have installed JRE, double-click the <code>FrogAcrossRiver.exe</code> to launch your product.</p>
<p>Congratulations! You configured and published your RCP application as a product successfully.</p>
<p><a name="N1058B" id="N1058B"><span class="smalltitle">JRE</span></a></p>
<p>This tip can help you publish your product on a non-JRE OS: Just find a platform with JRE installed, copy its JRE directory into the root folder of your exported product, as shown below.</p>
<p><br/><a name="N10596" id="N10596"><strong>Figure 19. JRE added to exported RCP product</strong></a><br/><img width="353" alt="JRE added to exported RCP product" height="142" src="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/figure19.jpg"/><br/><br/></p>
<p>Double-click FrogAcrossRiver.exe and it launches your RCP product successfully.</p>
<p><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td><img width="539" height="1" src="http://www.ibm.com/i/v14/rules/blue_rule.gif"/></td>
</tr>
</tbody>
</table>
<table cellpadding="0" align="right" cellspacing="0" class="no-print">
<tbody>
<tr align="right">
<td>
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td valign="center"><img width="16" height="16" border="0" src="http://www.ibm.com/i/v14/icons/u_bold.gif"/><br/></td>
<td align="right" valign="top"><a href="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/?ca=dgr-lnxw02BrandEclipseRCP#main" class="fbox"><strong>Back to top</strong></a></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<br/><br/><p><a name="N105A7" id="N105A7"><span class="atitle">Troubleshooting</span></a></p>
<ol>
<li>You will be notified if your .ico file doesn't include the required image files in the specified sizes or color depths with the error message: <em>[Program Launcher] The launcher may not get branded correctly, .ico file is missing its image</em>. Similarly, you will get the following warning message if you specified an invalid image in the .product file: <em>[About Dialog] Image: path/ImageName - is not a path to a valid file</em>.</li>
<li>If you add <code>-clean</code> in Program Arguments and launch the product from an exported folder, you will not see the splash screen. However, you can see it when launched from the <strong>Launch the product</strong> link.</li>
</ol>
<p><br/></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td><img width="539" height="1" src="http://www.ibm.com/i/v14/rules/blue_rule.gif"/></td>
</tr>
</tbody>
</table>
<table cellpadding="0" align="right" cellspacing="0" class="no-print">
<tbody>
<tr align="right">
<td>
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td valign="center"><img width="16" height="16" border="0" src="http://www.ibm.com/i/v14/icons/u_bold.gif"/><br/></td>
<td align="right" valign="top"><a href="http://www-128.ibm.com/developerworks/opensource/library/os-eclipse-brand/?ca=dgr-lnxw02BrandEclipseRCP#main" class="fbox"><strong>Back to top</strong></a></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<br/><br/><p><a name="N105C5" id="N105C5"><span class="atitle">Summary</span></a></p>
<p>This article has shown how to create and pack your branded Eclipse product by leveraging Eclipse's Product Configuration and PDE. Although you can do this using a script, we have demonstrated a more effective and efficient way to produce the product where you can configure and manage all branding information and elements. Most importantly, this article has shown the possibilities of an RCP world with the aid of the Eclipse Production Configuration feature.</p>
<p><span class="atitle"><a name="download" id="download">Download</a></span></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0" class="data-table-1">
<tbody>
<tr>
<th scope="col">Description</th>
<th scope="col">Name</th>
<th scope="col" align="right">Size</th>
<th scope="col">Download method</th>
</tr>
<tr>
<th scope="row" class="tb-row">Sample jar files</th>
<td nowrap="nowrap">os-eclipse-brand.example.zyx.zip</td>
<td align="right" nowrap="nowrap">45KB</td>
<td nowrap="nowrap"><a href="http://www.ibm.com/developerworks/views/download.jsp?contentid=216839&amp;filename=os-eclipse-brand.example.zyx.zip&amp;method=http&amp;locale=worldwide" class="fbox"><strong>HTTP</strong></a></td>
</tr>
</tbody>
</table>
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr valign="top">
<td colspan="5"><img width="12" height="12" border="0" src="http://www.ibm.com/i/c.gif"/></td>
</tr>
<tr>
<td><img width="16" height="16" src="http://www.ibm.com/i/v14/icons/fw.gif"/></td>
<td><a href="http://www-128.ibm.com/developerworks/library/whichmethod.html" class="fbox">Information about download methods</a></td>
<td><img width="50" height="1" src="http://www.ibm.com/i/c.gif"/></td>
</tr>
</tbody>
</table>
<br/><br/><p><a name="resources" id="resources"><span class="atitle">Resources</span></a></p>
<p><strong>Learn</strong><br/></p>
<ul>
<li>The "<a href="http://www.eclipse.org/articles/Article-RCP-1/tutorial1.html">Rich Client Tutorial Part 1</a>" introduces basic instructions of RCP development.<br/><br/></li>
<li>"<a href="http://www.eclipse.org/articles/Article-PDE-does-plugins/PDE-intro.html">PDE Does Plug-ins</a>" gives a background description on how to develop in Eclipse's PDE.<br/><br/></li>
<li>Read "<a href="http://dev.eclipse.org/viewcvs/index.cgi/pde-ui-home/Attic/product.html?rev=1.3">How to Build an Eclipse Product</a>" to learn more about Eclipse product primary principles.<br/><br/></li>
<li>"<a href="http://www.eclipse.org/articles/product-guide/guide.html">Creating product branding</a>" describes some elements (such as icon and splash screen) in product banding.<br/><br/></li>
<li>Check out the "<a href="http://www.ibm.com/developerworks/library/os-ecl-read">Recommended Eclipse reading list</a>."<br/><br/></li>
<li>Browse all the <a href="http://www.ibm.com/developerworks/views/opensource/libraryview.jsp?search_by=eclipse">Eclipse content</a> on developerWorks.<br/><br/></li>
<li>Users new to Eclipse should look at the <a href="http://www.ibm.com/developerworks/opensource/top-projects/eclipse-starthere.html">Eclipse start here</a>.<br/><br/></li>
<li>Expand your Eclipse skills by checking out IBM developerWorks' <a href="http://www.ibm.com/developerworks/opensource/top-projects/eclipse.html">Eclipse project resources</a>.<br/><br/></li>
<li>To listen to interesting interviews and discussions for software developers, check out check out <a href="http://www.ibm.com/developerworks/podcast/">developerWorks podcasts</a>.<br/><br/></li>
<li>For an introduction to the Eclipse platform, see "<a href="http://www.ibm.com/developerworks/opensource/library/os-ecov/">Getting started with the Eclipse Platform</a>."<br/><br/></li>
<li>Stay current with developerWorks' <a href="http://www.ibm.com/developerworks/offers/techbriefings/?S_TACT=105AGX03&amp;S_CMP=art">Technical events and webcasts</a>.<br/><br/></li>
<li>Check out upcoming conferences, trade shows, webcasts, and other <a href="http://www.ibm.com/developerworks/views/opensource/events.jsp">Events</a> around the world that are of interest to IBM open source developers.<br/><br/></li>
<li>Visit the developerWorks <a href="http://www.ibm.com/developerworks/opensource">Open source zone</a> for extensive how-to information, tools, and project updates to help you develop with open source technologies and use them with IBM's products.<br/><br/></li>
</ul>
<p><br/><strong>Get products and technologies</strong><br/></p>
<ul>
<li>Download the latest <a href="http://www.eclipse.org/downloads/">Eclipse</a> SDK and try its Product Configuration feature with your RCP projects.<br/><br/></li>
<li>Check out the latest <a href="http://www.alphaworks.ibm.com/eclipse">Eclipse technology downloads</a> at IBM <a href="http://www.alphaworks.ibm.com/">alphaWorks</a>.<br/><br/></li>
<li>Download <a href="http://www.ibm.com/developerworks/downloads/?S_TACT=105AGX01&amp;S_CMP=ART">IBM product evaluation versions</a>, and get your hands on application development tools and middleware products from DB2®, Lotus®, Rational®, Tivoli®, and WebSphere®.<br/><br/></li>
<li>Innovate your next open source development project with <a href="http://www.ibm.com/developerworks/downloads/?S_TACT=105AGX44">IBM trial software</a>, available for download or on DVD.</li>
</ul>
<p><br/><strong>Discuss</strong><br/></p>
<ul>
<li>Learn more about RCP from the Eclipse Foundation's <a href="http://wiki.eclipse.org/index.php/Rich_Client_Platform">Official Eclipse FAQs</a>.<br/><br/></li>
<li>The <a href="news://news.eclipse.org/eclipse.platform">Eclipse Platform newsgroups</a> should be your first stop to discuss questions regarding Eclipse. (Selecting this will launch your default Usenet news reader application and open eclipse.platform.)<br/><br/></li>
<li>The <a href="http://www.eclipse.org/newsgroups/">Eclipse newsgroups</a> has many resources for people interested in using and extending Eclipse.<br/><br/></li>
<li>Participate in <a href="http://www.ibm.com/developerworks/blogs">developerWorks blogs</a> and get involved in the developerWorks community.<br/><br/></li>
</ul>
<p><br/><br/></p>
<p><a name="author" id="author"><span class="atitle">About the authors</span></a></p>
<table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td colspan="3"><img width="539" height="5" src="http://www.ibm.com/i/c.gif"/></td>
</tr>
<tr align="left" valign="top">
<td>
<p><img src="http://www-128.ibm.com/developerworks/i/p-xxli.jpg" align="left" height="80" width="64" valign="top" alt="Xing Xing Li"/></p>
</td>
<td><img width="4" height="5" src="http://www.ibm.com/i/c.gif"/></td>
<td width="100%">
<p>Xing Xing Li joined the IBM China Software Development Lab in Beijing China in 2004 as a software engineer for IBM Lotus. He focuses on software development and testing on Eclipse platform and Java technologies. He is also interested in user interface design, design pattern and algorithmic research. He received his master's degree in computer science from Chongqing University.</p>
</td>
</tr>
</tbody>
</table>
<br/><table cellpadding="0" width="100%" cellspacing="0" border="0">
<tbody>
<tr>
<td colspan="3"><img width="539" height="5" src="http://www.ibm.com/i/c.gif"/></td>
</tr>
<tr align="left" valign="top">
<td>
<p><img src="http://www-128.ibm.com/developerworks/i/p-yxzhao.jpg" align="left" height="80" width="64" valign="top" alt="Ying Xi Zhao"/></p>
</td>
<td><img width="4" height="5" src="http://www.ibm.com/i/c.gif"/></td>
<td width="100%">
<p>Ying Xi Zhao has contributed to IBM Lotus products since 2006. She is a software engineer at Wistron Information Technology and Services Corp., China. She specializes in Java and Eclipse-based software development and testing, as well as other open source technologies. She comes from JiLin province of China, and likes to read books, climb hills, take photos, and maintain collections in her spare time.</p>
</td>
</tr>
</tbody>
</table>
<br/><img src ="http://www.blogjava.net/hongjunli/aggbug/119247.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2007-05-22 23:01 <a href="http://www.blogjava.net/hongjunli/archive/2007/05/22/119247.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Deploying Eclipse RCP Projects【ZT】</title><link>http://www.blogjava.net/hongjunli/archive/2007/05/17/117990.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Thu, 17 May 2007 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2007/05/17/117990.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/117990.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2007/05/17/117990.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/117990.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/117990.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: the export for multiple platforms via the Delta Pack &nbsp;&nbsp;<a href='http://www.blogjava.net/hongjunli/archive/2007/05/17/117990.html'>阅读全文</a><img src ="http://www.blogjava.net/hongjunli/aggbug/117990.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2007-05-17 10:13 <a href="http://www.blogjava.net/hongjunli/archive/2007/05/17/117990.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JFormDesigner 3.0.4 released </title><link>http://www.blogjava.net/hongjunli/archive/2007/05/07/115752.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Mon, 07 May 2007 12:57:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2007/05/07/115752.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/115752.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2007/05/07/115752.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/115752.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/115752.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JFormDesigner 3.0.5 released &nbsp;&nbsp;<a href='http://www.blogjava.net/hongjunli/archive/2007/05/07/115752.html'>阅读全文</a><img src ="http://www.blogjava.net/hongjunli/aggbug/115752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2007-05-07 20:57 <a href="http://www.blogjava.net/hongjunli/archive/2007/05/07/115752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]Eclipse使用技巧(六)Updated your lomboz from 3.2 to 3.2.1 RC1&amp;mdash;make sure that your installation is successful!</title><link>http://www.blogjava.net/hongjunli/archive/2007/04/18/111711.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Wed, 18 Apr 2007 10:55:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2007/04/18/111711.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/111711.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2007/04/18/111711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/111711.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/111711.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Eclipse,Lomboz,如何确认eclipse正确加载lomboz插件<br> &nbsp;&nbsp;<a href='http://www.blogjava.net/hongjunli/archive/2007/04/18/111711.html'>阅读全文</a><img src ="http://www.blogjava.net/hongjunli/aggbug/111711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2007-04-18 18:55 <a href="http://www.blogjava.net/hongjunli/archive/2007/04/18/111711.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse下的J2EE开发[第一篇.第二部分]</title><link>http://www.blogjava.net/hongjunli/archive/2007/01/07/92271.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Sun, 07 Jan 2007 14:43:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2007/01/07/92271.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/92271.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2007/01/07/92271.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/92271.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/92271.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Eclipse web Tomcat ,Jsp,Lomboz for Eclipse 3.1, Lomboz for Eclipse 3.2 , WTP&nbsp;&nbsp;<a href='http://www.blogjava.net/hongjunli/archive/2007/01/07/92271.html'>阅读全文</a><img src ="http://www.blogjava.net/hongjunli/aggbug/92271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2007-01-07 22:43 <a href="http://www.blogjava.net/hongjunli/archive/2007/01/07/92271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse下的J2EE开发[第一篇.第一部分]</title><link>http://www.blogjava.net/hongjunli/archive/2007/01/07/92248.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Sun, 07 Jan 2007 10:27:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2007/01/07/92248.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/92248.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2007/01/07/92248.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/92248.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/92248.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Eclipse web Tomcat ,Jsp,Lomboz for Eclipse 3.1 Lomboz for Eclipse 3.2&nbsp;&nbsp;<a href='http://www.blogjava.net/hongjunli/archive/2007/01/07/92248.html'>阅读全文</a><img src ="http://www.blogjava.net/hongjunli/aggbug/92248.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2007-01-07 18:27 <a href="http://www.blogjava.net/hongjunli/archive/2007/01/07/92248.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWT Designer V6.0 &amp; V5.1.x (Window Builder Pro) 安装及注册,3月11日更新，适用于目前最新版本6.X</title><link>http://www.blogjava.net/hongjunli/archive/2006/12/28/90557.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Thu, 28 Dec 2006 10:14:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2006/12/28/90557.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/90557.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2006/12/28/90557.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/90557.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/90557.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  swt designer v6  v6.2 , Window Builder Pro  &nbsp;&nbsp;<a href='http://www.blogjava.net/hongjunli/archive/2006/12/28/90557.html'>阅读全文</a><img src ="http://www.blogjava.net/hongjunli/aggbug/90557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2006-12-28 18:14 <a href="http://www.blogjava.net/hongjunli/archive/2006/12/28/90557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>好消息, MyEclipse 5.1 正式发布 - 包括集成版本( All-in-One)的安装</title><link>http://www.blogjava.net/hongjunli/archive/2006/11/14/81122.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Tue, 14 Nov 2006 14:52:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2006/11/14/81122.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/81122.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2006/11/14/81122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/81122.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/81122.html</trackback:ping><description><![CDATA[
		<p>[新闻]MyEclipse 5.1 正式发布 - 包括集成版本( All-in-One)的安装</p>
		<p>新特性包括:<br /><br />与Eclipse3.2.1兼容</p>
		<p>
				<br />All-in-One Installer包括MyEclipse 5.1, Eclipse 3.2.1 和 Java 5 JRE</p>
		<p>
				<br />从任意WSDL文件本地或者远程(URL)来创建Web Service Client 的向导</p>
		<p>更新Web Services XFire 至最新版本(1.2.2)</p>
		<p>对 Spring IDE 1.3.6的整合</p>
		<p>更多特性请参见:New and Noteworthy <br /><a href="http://www.myeclipseide.com/ContentExpress-display-ceid-93.html">http://www.myeclipseide.com/ContentExpress-display-ceid-93.html</a></p>
		<p>说明:</p>
		<p>MyEclipse 5.1 是基于Eclipse 3.2.1版本的.</p>
		<p>如果你的机器上已经安装了Eclipse 3.2.1 ,你只需要下载“Plugin” 版本的即可.如果你的Eclipse还没有更新到3.2.1, MyEclipse All-in-OneInstaller 将为你安装更新到最新的3.2.1,包括Eclipse 3.2.1, MyEclipse 5.1和Java 5 JRE . <br />注意: 目前 All-in-One Installer 仅仅对 Windows 操作系统用户使用,而Mac 和 Linux 操作系统用户需要安装Eclipse 3.2.1 并安装MyEclipse 5.1.</p>
		<p>下载地址:http://www.myeclipseide.com/Downloads%2Bindex-req-viewsdownload-sid-15.html</p>
<img src ="http://www.blogjava.net/hongjunli/aggbug/81122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2006-11-14 22:52 <a href="http://www.blogjava.net/hongjunli/archive/2006/11/14/81122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>好消息,Lomboz 3.2正式Release了</title><link>http://www.blogjava.net/hongjunli/archive/2006/10/22/76653.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Sun, 22 Oct 2006 12:41:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2006/10/22/76653.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/76653.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2006/10/22/76653.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/76653.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/76653.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 好消息,Lomboz 3.2正式Release了&nbsp;&nbsp;<a href='http://www.blogjava.net/hongjunli/archive/2006/10/22/76653.html'>阅读全文</a><img src ="http://www.blogjava.net/hongjunli/aggbug/76653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2006-10-22 20:41 <a href="http://www.blogjava.net/hongjunli/archive/2006/10/22/76653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse RCP学习笔记[1]</title><link>http://www.blogjava.net/hongjunli/archive/2006/08/31/66884.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Thu, 31 Aug 2006 07:40:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2006/08/31/66884.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/66884.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2006/08/31/66884.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/66884.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/66884.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: RCP的全称是Rich Client Platform（RCP可以看成是Eclipse的插件，只不过是脱离Eclipse运行的），可以把它看成是Eclipse的骨架，其他的插件是器官与血肉。&nbsp;&nbsp;<a href='http://www.blogjava.net/hongjunli/archive/2006/08/31/66884.html'>阅读全文</a><img src ="http://www.blogjava.net/hongjunli/aggbug/66884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2006-08-31 15:40 <a href="http://www.blogjava.net/hongjunli/archive/2006/08/31/66884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse Lomboz J2EE开发</title><link>http://www.blogjava.net/hongjunli/archive/2006/08/31/66860.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Thu, 31 Aug 2006 06:32:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2006/08/31/66860.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/66860.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2006/08/31/66860.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/66860.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/66860.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 主要介绍Lomboz插件的功能、 Lomboz插件的下载与安装（ Lomboz for Eclipse3.0.x 、 Lomboz for Eclipse3.1.x 、 Lomboz for Eclipse3.2）  配置Lomboz插件、用Lomboz Eclipse构建J2EE项目（Eclipse 3.1和3.2为例子讲解）。通过介绍Eclipse不同版本下的Lomboz插件的安装、配置及J2EE开发，并注意比较他们之间的区别。本文主要参考了“精通Eclipse Web开发——Java体系结构、工具及框架整合应用”，在此基础上增加了最新版Eclipse 3.2的内容。在本文中讲解的是用Lomboz Eclipse构建J2EE项目以一个简单的Hello World为例，重在说明在Eclipse下J2EE开发的一般步骤和过程，更加深入的内容请继续关注后续的文章。<br><br><br>参考资料：<br><br>精通Eclipse Web开发——Java体系结构、工具及框架整合应用<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/hongjunli/archive/2006/08/31/66860.html'>阅读全文</a><img src ="http://www.blogjava.net/hongjunli/aggbug/66860.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2006-08-31 14:32 <a href="http://www.blogjava.net/hongjunli/archive/2006/08/31/66860.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse插件收集[更新中]</title><link>http://www.blogjava.net/hongjunli/archive/2006/08/28/66080.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Mon, 28 Aug 2006 00:45:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2006/08/28/66080.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/66080.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2006/08/28/66080.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/66080.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/66080.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Eclipse插件收集&nbsp;&nbsp;<a href='http://www.blogjava.net/hongjunli/archive/2006/08/28/66080.html'>阅读全文</a><img src ="http://www.blogjava.net/hongjunli/aggbug/66080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2006-08-28 08:45 <a href="http://www.blogjava.net/hongjunli/archive/2006/08/28/66080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BEA Workshop™  Studio  for Eclipse </title><link>http://www.blogjava.net/hongjunli/archive/2006/07/16/58378.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Sat, 15 Jul 2006 16:20:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2006/07/16/58378.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/58378.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2006/07/16/58378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/58378.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/58378.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Eclipse平台已成为一个很流行的开发工具,部分因为它是基于插件的，部分因为它对于Web框架的支持。现在，出现了众多的Eclipse插件，甚至完整的基于Eclipse的IDE。许多插件被设计适合于Struts框架开发,例如MyEclipse(www.myeclipse.org)或M7(www.m7.com)<br>在这里谈谈BEA Workshop &nbsp;&nbsp;<a href='http://www.blogjava.net/hongjunli/archive/2006/07/16/58378.html'>阅读全文</a><img src ="http://www.blogjava.net/hongjunli/aggbug/58378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2006-07-16 00:20 <a href="http://www.blogjava.net/hongjunli/archive/2006/07/16/58378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZZ]Matisse4MyEclipse Now Available for Download</title><link>http://www.blogjava.net/hongjunli/archive/2006/05/06/44785.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Sat, 06 May 2006 10:15:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2006/05/06/44785.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/44785.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2006/05/06/44785.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/44785.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/44785.html</trackback:ping><description><![CDATA[
		<p>
				<strong>
						<font size="+1">
								<strong>Matisse4MyEclipse Now Available for Download<br /></strong>
						</font>
				</strong> come from    ：  <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.myeclipseide.com/" target="_blank">MyEclipseide.com</a><br />The first milestone release (M1) of Matisse4MyEclipse for the Windows platform is now available for immediate installation either through the MyEclipse <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.myeclipseide.com/images/tutorials/quickstarts/matisse-install/" target="_blank">update site</a> or by downloading the archived update site from the "Development Releases" section of the <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.myeclipseide.com/ContentExpress-display-ceid-10.html" target="_blank">MyEclipse website</a>. Instructions on installing with either method are available <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.myeclipseide.com/images/tutorials/quickstarts/matisse-install/" target="_blank">here</a>. A developmental quickstart guide that covers usage is also available <a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.myeclipseide.com/images/tutorials/quickstarts/matisse/" target="_blank">here</a>. <br /><br />Matisse4MyEclipse is the first Swing UI designer to integrate the best features from the Eclipse platform and Sun's Netbeans project to enable the easy creation of Java rich client applications within the MyEclipse environment. Maintaining development transparency, Matisse4MyEclipse offers full control and round trip development between RAD visual design tools and underlying Java Source code. It consists of a form designer with a source mode, an extensible palette of Swing and AWT controls with drag-and-drop placement support, advanced alignment guides and sizing tools as well as property and outline views. For additional details, screen shots, and online demo please view the
<script><!--
D(["mb","<a href\u003d\"http://www.myeclipseide.com/ContentExpress-display-ceid-77.html\" target\u003d\"_blank\" onclick\u003d\"return top.js.OpenExtLink(window,event,this)\">Matisse4MyEclipse\n\n                                  section</a> of the website. <br>\n                                  <br>\n                                  This new feature set is available for\ntrial for all users but\n\t\t\t\t  please make sure that \n                                  you already have Eclipse 3.1.2 and\nMyEclipse \n                                  4.1.1 prior to installing\nMatisse4MyEclipse. \n                                  <br>\n                                  <br>\n                                  Matisse4MyEclipse on Linux will be\navailable \n                                  as part of the MyEclipse 5.0 release, for\nEclipse \n                                  3.2. The first Milestone release for\nMyEclipse \n                                  5.0 should be available mid May. Mac OS/X\nsupport \n                                  is currently contingent on the resolution\nfor \n                                  <a href\u003d\"https://bugs.eclipse.org/bugs/show_bug.cgi?id\u003d67384\" target\u003d\"_blank\" onclick\u003d\"return top.js.OpenExtLink(window,event,this)\">Eclipse \n                                  Bug 67384</a>. </p>\n                                                                           \n              </td>\n\t\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t\t\t<tr valign\u003d\"top\">\n\t\t\t\t\t\t\t\t\t<td><br>\n\t\t\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t\t\t\t<td><br>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t<td width\u003d\"2%\"><br>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t</td>\n\t\t</tr>\n\n\t\t<tr>\n\t\t\t<td><img width\u003d\"1\" height\u003d\"2\" border\u003d\"0\" alt\u003d\"\"></td>\n\t\t</tr>\n\n\t\t<tr>\n\t\t\t\n      <td align\u003d\"center\" bgcolor\u003d\"#33699f\"><div align\u003d\"center\">You \n          were sent this message because you previously registered at <a href\u003d\"http://www.myeclipseide.com\" target\u003d\"_blank\" onclick\u003d\"return top.js.OpenExtLink(window,event,this)\">MyEclipseide.com</a>",1]
);

//--></script><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.myeclipseide.com/ContentExpress-display-ceid-77.html" target="_blank">Matisse4MyEclipse section</a> of the website. <br /><br />This new feature set is available for trial for all users but please make sure that you already have Eclipse 3.1.2 and MyEclipse 4.1.1 prior to installing Matisse4MyEclipse. <br /><br />Matisse4MyEclipse on Linux will be available as part of the MyEclipse 5.0 release, for Eclipse 3.2. The first Milestone release for MyEclipse 5.0 should be available mid May. Mac OS/X support is currently contingent on the resolution for <a onclick="return top.js.OpenExtLink(window,event,this)" href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=67384" target="_blank">Eclipse Bug 67384</a>. </p>
<img src ="http://www.blogjava.net/hongjunli/aggbug/44785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2006-05-06 18:15 <a href="http://www.blogjava.net/hongjunli/archive/2006/05/06/44785.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse 3.1.1+中文包release</title><link>http://www.blogjava.net/hongjunli/archive/2006/05/05/44284.html</link><dc:creator>李红军</dc:creator><author>李红军</author><pubDate>Fri, 05 May 2006 04:13:00 GMT</pubDate><guid>http://www.blogjava.net/hongjunli/archive/2006/05/05/44284.html</guid><wfw:comment>http://www.blogjava.net/hongjunli/comments/44284.html</wfw:comment><comments>http://www.blogjava.net/hongjunli/archive/2006/05/05/44284.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hongjunli/comments/commentRss/44284.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hongjunli/services/trackbacks/44284.html</trackback:ping><description><![CDATA[
		<table class="text" cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td height="25">
										<p align="center">
												<font class="diary_title" size="4">
														<strong>Eclipse 3.1.1+中文包release</strong>
												</font>
										</p>
								</td>
						</tr>
						<tr>
								<td>
										<span class="postbody">
												<span class="postbody">
														<font size="2">
																<br />我想这是很多人都希望听到的消息吧！ <br /><br />现在正在使用3.1的朋友想要升级一下自己的eclipse，然后才能使用汉化包！ <br />如果升级请看！ <br /></font>
														<a href="http://www.eclipse.org/eclipse/platform-releng/updatesfor3.1.1.html" target="_blank">
																<font color="#006699" size="2">http://www.eclipse.org/eclipse/platform-releng/updatesfor3.1.1.html</font>
														</a>
														<font size="2">
																<br />
																<br />升级以后可以下载汉化包了，汉化包的地址为： <br /></font>
														<a href="http://www.eclipse.org/org/press-release/20051012nlscb.html" target="_blank">
																<font color="#006699" size="2">http://www.eclipse.org/org/press-release/20051012nlscb.html</font>
														</a>
														<font size="2">
																<br />
																<br />呵呵，不妨试试吧！ <br />有人说还是E文的好，其实萝卜白菜各有所爱！祝你好运！</font>
												</span>
										</span>
								</td>
						</tr>
						<tr>
								<td> </td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/hongjunli/aggbug/44284.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hongjunli/" target="_blank">李红军</a> 2006-05-05 12:13 <a href="http://www.blogjava.net/hongjunli/archive/2006/05/05/44284.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>