
EasyEclipse is an Eclipse distribution that packages together the Eclipse IDE and selected open source plugins targeted at various kinds of development. It is intended to make Eclipse easier to download, install, and use. Versions are available for Java (for desktop development, server side development, and mobile development), LAMP (Perl, Python, PHP), Ruby and Rails, C, C++ and for developing plug-ins for Eclipse itself (Plugin Warrior).
The latest release 1.3 is based on Eclipse 3.3 Europa.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:set="http://exslt.org/sets"
xmlns:xalan="http://xml.apache.org/xalan"
exclude-result-prefixes="set"
>
<xsl:param name="sdkname">Some Name</xsl:param>
<xsl:param name="dir">doc/html</xsl:param>
<xsl:output indent="yes" encoding="UTF-8" xalan:indent-amount="3"/>
<xsl:key name="allPackages" match="jelclass" use="@package"/>
<xsl:template match="/jel">
<toc label="{$sdkname}">
<topic label="Reference">
<xsl:for-each select="set:distinct(jelclass/@package)">
<topic label="{.}">
<xsl:apply-templates select="key('allPackages', .)"/>
</topic>
</xsl:for-each>
</topic>
</toc>
</xsl:template>
<xsl:template match="jelclass">
<topic label="{@fulltype}" href="{$dir}/{@fulltype}.html"/>
</xsl:template>
</xsl:stylesheet>
I had to help someone internationalize their RCP application today and I didn’t really have a straight forward simple example to point them to so I figure I’d share something here for everyone’s benefit. I’ll use the famous RCP mail example to get things started. The first step in internalization is making sure our strings are externalized so translators can actually do something with them. For Eclipse plug-ins, there will be two places you need to externalize strings:
Within Java files, the wonderful JDT tooling provides an Externalize Strings wizard (Source->Externalize Strings…):
Within plug-in artifacts, PDE also provides an Externalize Strings wizard (PDE Tools->Externalize Strings or click the hyperlink on the Overview page):
Once we have all our strings externalized, we need to create a fragment (e.g., org.eclipse.mail.nl1) to store our translations (File->New->Fragment Project):
From the screenshot above, you should see that the translated properties files are co-located in the same respective location of the original file. The translated properties files also have a naming convention of name_locale.properties (e.g., messages_es.properties).
So now that we have some translated properties file, how do we test our translations? PDE provides an easy way to set the locale you’re developing against… similar to the way you define a target platform. In the target platform preference page, head over to the Environment tab and choose the language you’re interested in:
Once you do that, simply launch like you normally would to test out the fancy translations:
That’s it! Also, if you need translations for Eclipse.org plug-ins… check out the Babel project!
Here is the code used in this tip if you need to take a test drive at home. Hope this helps.
The Bundle-NativeCode file {0} could not be not foundAn innocent mistake, really, but considering this has been in CVS for almost 2 1/2 years, I began wondering why the professional translators haven't spotted this. Or perhaps even worse, the pros simply translated the string as per their requirement and didn't bother to go the extra mile to have this fixed. I did.class NodeLabelProvider extends LabelProvider {
// ...
public Image getImage(Object element) {
Image result = LEAF;
Node node = (Node) element;
if (node.hasChildren()) {
result = viewer.getExpandedState(node) ? NODE_EXPANDED : NODE_COLLAPSED;
}
return result;
}
}class UpdateIconTreeListener implements TreeListener {
public void treeCollapsed(TreeEvent e) {
updateImage((TreeItem) e.item, true);
}
public void treeExpanded(TreeEvent e) {
updateImage((TreeItem) e.item, false);
}
private void updateImage(TreeItem item, boolean isCollapsed) {
Image image = isCollapsed ? NODE_COLLAPSED : NODE_EXPANDED;
item.setImage(image);
}
}viewer.expandToLevel(node, 1);
viewer.update(node, null);

Returning to the two recent themes of bloated software and fixing broken computers, I spent this weekend with my in-laws for a family reunion. Unfortunately for me, visits to family members almost always include family computer maintenance. On tap this time was the usual problem: "my computer is running slowly". But in this case, the problem wasn't spyware. The computer in question is a P4 1.6 GHz with 256 MB of memory running XP. Not smoking by today's standards, but certainly capable of running XP and one additional app as long as the background crapware is kept to a minimum. My father-in-law runs a small business, and he's been using the same apps for several years to keep the books and manage his customer interactions.
In this case, the background crapware was the virus scanner. This machine was running a fairly recent version of Norton Internet Security. Norton Antivirus was on the computer when it was purchased several years ago, and at the time, the version running was commensurate with the resources and capabilities of the system. But software never gets smaller and faster, does it? It only gets slower and more bloated, and that's what's been happening to the Norton products for years.
So why did my father-in-law upgrade to a newer version? Because the software told him to. Virus and spyware scanners are notorious for dire warnings to ill-informed and fear-stricken users that they have to upgrade to the latest version in order to be "fully" protected. "You're one click away from having your identity stolen!" I'm not talking about keeping virus definitions up-to-date (always important). I'm talking about full upgrades of the software to get all of the latest "features". In the case of Norton, the task of virus/spyware scanning has morphed into an entire suite of products that plug into everything you do. This means more background processes, more memory consumed, and more strain on system resources…or on my father-in-law's computer: massive hard-drive thrashing.
This is an out-of-box experience problem. Norton (and other software packages like it) should check the current system specifications before suggesting a massive upgrade. A simple message like, "you really need more memory and a faster hard drive before you upgrade to this new version," would really be welcomed. An even a better solution would be to write better software. Just because computers have more cores, more speed, more memory, and faster and bigger hard drives doesn't mean software should expand to fit. The entire software industry, Eclipse included, needs to take a step back and take a hard look at this problem.
I really feel for computer users like my father-in-law. Outside of my "geek circle", everyone else I know is in the same user category as he is. They need us to make life easier for them. My advice to the fear-stricken: keep Windows and your browser up to date, install AVG Free instead of Norton or anything else, use Firefox with the NoScript add-on, and then use some common sense when browsing the web and reading emails.
P.S. If you find yourself in this situation with Norton, be warned that there are compatibility problems between Norton Internet Security Suite and XP SP3. In our case, internet browsing stopped working completely. Norton's uninstall was not successful removing all of the Norton stuff, and the only thing that saved the day is a nice removal utility on Symantec's website that appears to properly clean up everything. I was mere moments away from losing another entire day with a system reinstall.
tags: norton, avg, firefox, noscript, xp sp3, software bloat
Hi all!
Have you ever wondered how to get a DTP SQL Model Database object from a connected connection profile? I seem to run into this problem infrequently, but always have to go through many gyrations to find the answer.Larry from IBM, another member of the Connectivity team, was kind enough to provide the answer. It resulted in this chunk of code:
public Database getDatabaseForProfile (IConnectionProfile profile) {
IManagedConnection managedConnection = ((IConnectionProfile)profile).
getManagedConnection("org.eclipse.datatools.connectivity.sqm.core.connection.ConnectionInfo");
if (managedConnection != null) {
try {
ConnectionInfo connectionInfo = (ConnectionInfo) managedConnection.
getConnection().getRawConnection();
if (connectionInfo != null) {
return connectionInfo.getSharedDatabase();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
(Sorry the code's not pretty. I haven't found a great way of including code in Blogger blog posts yet.)So there you have it! Not that many people have a need for such a thing, but it's handy just in case!
--Fitz
From October 15th - 17th, the second workshop on model driven software development "MDSD Today" will take place in Elmshorn near Hamburg, Germany.
The goal of this conference is to provide a platform for professionals (managers, architects and engineers alike) in the field of model driven software development to meet and exchange ideas.
The three day will be organized into the following major blocks:
The management day will feature keynotes by Dr. Axel Uhl (Chief Development Architect with SAP) and Ed Merks (of Eclipse Modeling fame).
Tutorials on various MDSD-related topics (such as model-to-model transformations, model-to-text transformations, external textual DSLs) will be delivered by members of the Eclipse Modeling Project on day 2 and day 3 of the conference.
If you use model driven software development in your daily work, please consider giving a presentation.
If you do not use MDSD and would like to hear about other's experiences, you should consider participating in the conference and take the chance to attend the MDSD tutorials. At EUR 350 for three days, that's a real bargain.
The CfPs and more information on the conference can be found here (english) and here (german).
Hope to see you there!
Server side OSGi applications now can also be easily deployed on computing clouds implemented by Amazon (EC2). With several mouse clicks your exported bundles can be uploaded to remote storage (S3) and added to profile (Launch Configuration). Now virtual servers (EC2 instances) containing OSGi framework provisioned with selected bundles can easily be started.
OSGi on EC2 video presentation
For those who do not know what EC2 is: it is a very cool service coming from Amazon. It allows users to start virtual servers within it's "Elastic Compute Cloud". Compared to traditional server hosting, Compute Cloud allows you to scale your capacity according to your demands. By running servers in the cloud, you can avoid initial expenses of buying new hardware and such. Another attractive feature - you do not have to sign up for any long term contracts (which is usually almost always the case in Germany).
Amazon will charge you on "pay for what you use" basis. Their current prices start from 10 cents per instance hour plus some additional traffic fees.
In my opinion, this is a very good option to host Java based services. What makes it even better option is that hosting services with high quality Java support are usually expensive hard to find.
<jelclass superclass="NLS" visibility="public" superclassfulltype="NLS" fulltype="org.eclipse.wst.xsl.core.internal.Messages" type="Messages" package="org.eclipse.wst.xsl.core.internal">
<comment>
<attribute name="@author">
<description>Jesper Steen</description>
</attribute>
</comment>
<fields>
<field visibility="public" fulltype="java.lang.String" type="String" name="XSLCorePlugin_parserConfiguration" static="true">
<comment>
<description>TODO: Add JavaDoc</description>
</comment>
</field>
<field visibility="public" fulltype="java.lang.String" type="String" name="XSLCorePlugin_badInitializationData" static="true">
<comment>
<description>TODO: Add JavaDoc</description>
</comment>
</field>
<field visibility="public" fulltype="java.lang.String" type="String" name="XSLCorePlugin_coreError" static="true">
<comment>
<description>TODO: Add JavaDoc</description>
</comment>
</field>
</fields>
<methods>
<constructor visibility="public" name="Messages" />
<method visibility="public" fulltype="void" type="void" name="reloadMessages" static="true">
<comment>
<description>TODO: Add JavaDoc</description>
</comment>
</method>
</methods>
</jelclass>
<javadoc destdir="doc" package="true" docletpath="${workspace}/lib/jeldoclet.jar">
<fileset dir="${workspaceloc}/org.eclipse.wst.xsl.core/src">
<include name="**/*.java"/>
</fileset>
<doclet name="com.jeldoclet.JELDoclet" />
</javadoc>