<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="b2evolution/3.3.3" --><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
	<channel>
		<title>Ewert Technologies Blog</title>
		<link>http://ewert-technologies.ca/blog/blog5.php</link>
		
		<description />
		<language>en-CA</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=3.3.3" />
		<ttl>60</ttl>
				<feedburner:info uri="ewerttechnologiesblog" /><feedburner:info uri="ewerttechnologiesblog" /><feedburner:info uri="ewerttechnologiesblog" /><feedburner:info uri="ewerttechnologiesblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/EwertTechnologiesBlog" /><feedburner:info uri="ewerttechnologiesblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
			<title>BlackBerry Simulators Reference Guide for Eclipse 3.5 plugin (Part 2)</title>
			<link>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/SgGF1Sajz2M/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin-part-2</link>
			<pubDate>Thu, 11 Mar 2010 19:22:43 +0000</pubDate>			<dc:creator>victor.ewert</dc:creator>
			<category domain="main">Articles</category>			<guid isPermaLink="false">50@http://ewert-technologies.ca/blog/</guid>
						<description>&lt;p&gt;&lt;div style="float:right; clear:both; margin:5px;"&gt;

&lt;!-- Paste from here... --&gt;
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-6566853791813300";
/* Blog 468x60, created 11/30/09 */
google_ad_slot = "9411290377";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;!-- ...to here --&gt;

&lt;/div&gt;&lt;/p&gt;
&lt;p style="margin-bottom: 0in; text-align: left;"&gt;This is a follow up to my post: &lt;a href="/blog/blog5.php/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin"&gt;BlackBerry Simulators Reference Guide for Eclipse 3.5 plugin&lt;/a&gt;.  In this post I present the Simulator Guide grouped by simulator, rather than by Component Pack, making it easier to find a Component Pack that supports each simulator.&amp;#160; See the earlier post for a quick start guide to setting up BlackBerry development in Eclipse 3.5.&lt;/p&gt;
&lt;p style="margin-bottom: 0in; text-align: left;"&gt;&lt;strong&gt;Simulator Reference Guide&lt;/strong&gt;&lt;/p&gt;
&lt;table border="1" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr style="background-color: #b0c4de;"&gt;
&lt;td&gt;&lt;strong&gt;Device&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Family&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Display Screen Size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Interaction Method&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Component Pack&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7130&lt;/td&gt;
&lt;td&gt;7130&lt;/td&gt;
&lt;td&gt;240x260&lt;/td&gt;
&lt;td&gt;trackwheel&lt;/td&gt;
&lt;td&gt;4.2.1.19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7130e&lt;/td&gt;
&lt;td&gt;7130&lt;/td&gt;
&lt;td&gt;240x260&lt;/td&gt;
&lt;td&gt;trackwheel&lt;/td&gt;
&lt;td&gt;4.2.1.19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8100&lt;/td&gt;
&lt;td&gt;Pearl&lt;/td&gt;
&lt;td&gt;240x260&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;4.2.1.19&lt;/p&gt;
&lt;p&gt;4.5.0.21&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8110&lt;/td&gt;
&lt;td&gt;Pearl&lt;/td&gt;
&lt;td&gt;240x260&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;4.5.0.21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8120&lt;/td&gt;
&lt;td&gt;Pearl&lt;/td&gt;
&lt;td&gt;240x260&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;4.3.0.17&lt;/p&gt;
&lt;p&gt;4.5.0.21&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8130&lt;/td&gt;
&lt;td&gt;Pearl&lt;/td&gt;
&lt;td&gt;240x260&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;4.3.0.17&lt;/p&gt;
4.5.0.21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8300&lt;/td&gt;
&lt;td&gt;Curve&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;4.5.0.21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8310&lt;/td&gt;
&lt;td&gt;Curve&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;4.5.0.21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8320&lt;/td&gt;
&lt;td&gt;Curve&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;4.5.0.21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8330&lt;/td&gt;
&lt;td&gt;Curve&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;4.5.0.21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8350i&lt;/td&gt;
&lt;td&gt;Curve&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;4.6.1.36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8700-black&lt;/td&gt;
&lt;td&gt;Electron&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackwheel&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;4.2.1.19&lt;/p&gt;
&lt;p&gt;4.5.0.21&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8700-blue&lt;/td&gt;
&lt;td&gt;Electron&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackwheel&lt;/td&gt;
&lt;td&gt;4.2.1.19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8703e&lt;/td&gt;
&lt;td&gt;Electron&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackwheel&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;4.2.1.19&lt;/p&gt;
&lt;p&gt;4.5.0.21&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8707&lt;/td&gt;
&lt;td&gt;Electron&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackwheel&lt;/td&gt;
&lt;td&gt;4.2.1.19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8800&lt;/td&gt;
&lt;td&gt;88XX&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;4.2.1.19&lt;/p&gt;
&lt;p&gt;4.5.0.21&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8820&lt;/td&gt;
&lt;td&gt;88XX&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;4.5.0.21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8830&lt;/td&gt;
&lt;td&gt;88XX&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;4.5.0.21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8900&lt;/td&gt;
&lt;td&gt;Curve&lt;/td&gt;
&lt;td&gt;480x360&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;4.6.1.36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9000&lt;/td&gt;
&lt;td&gt;Bold&lt;/td&gt;
&lt;td&gt;360x480&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;4.6.0.21&lt;/p&gt;
&lt;p&gt;5.0.0.14&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9500&lt;/td&gt;
&lt;td&gt;Storm&lt;/td&gt;
&lt;td&gt;360x480&lt;/td&gt;
&lt;td&gt;touch screen&lt;/td&gt;
&lt;td&gt;4.7.0.53&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9530&lt;/td&gt;
&lt;td&gt;Storm&lt;/td&gt;
&lt;td&gt;360x480&lt;/td&gt;
&lt;td&gt;touch screen&lt;/td&gt;
&lt;td&gt;4.7.0.53&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9550&lt;/td&gt;
&lt;td&gt;Storm&lt;/td&gt;
&lt;td&gt;360x480&lt;/td&gt;
&lt;td&gt;touch screen&lt;/td&gt;
&lt;td&gt;5.0.0.14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9700&lt;/td&gt;
&lt;td&gt;Bold&lt;/td&gt;
&lt;td&gt;360x480&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;td&gt;5.0.0.14&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;div style="float:right; clear:both; margin:5px;"&gt;

&lt;!-- Paste from here... --&gt;
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-6566853791813300";
/* Blog 468x60, created 11/30/09 */
google_ad_slot = "9411290377";
google_ad_width = 468;
google_ad_height = 60;
//--&gt;
&lt;/script&gt;
&lt;script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
&lt;!-- ...to here --&gt;

&lt;/div&gt;&lt;/p&gt;&lt;div class="item_footer"&gt;&lt;p&gt;&lt;small&gt;&lt;a href="http://ewert-technologies.ca/blog/blog5.php/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin-part-2"&gt;Original post&lt;/a&gt; blogged on &lt;a href="http://b2evolution.net/"&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p><div style="float:right; clear:both; margin:5px;">

<!-- Paste from here... -->
<script type="text/javascript"><!--
google_ad_client = "pub-6566853791813300";
/* Blog 468x60, created 11/30/09 */
google_ad_slot = "9411290377";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- ...to here -->

</div></p>
<p style="margin-bottom: 0in; text-align: left;">This is a follow up to my post: <a href="http://ewert-technologies.ca/blog/blog5.php/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin">BlackBerry Simulators Reference Guide for Eclipse 3.5 plugin</a>.  In this post I present the Simulator Guide grouped by simulator, rather than by Component Pack, making it easier to find a Component Pack that supports each simulator.&#160; See the earlier post for a quick start guide to setting up BlackBerry development in Eclipse 3.5.</p>
<p style="margin-bottom: 0in; text-align: left;"><strong>Simulator Reference Guide</strong></p>
<table border="1" cellpadding="2">
<tbody>
<tr style="background-color: #b0c4de;">
<td><strong>Device</strong></td>
<td><strong>Family</strong></td>
<td><strong>Display Screen Size</strong></td>
<td><strong>Interaction Method</strong></td>
<td><strong>Component Pack</strong></td>
</tr>
<tr>
<td>7130</td>
<td>7130</td>
<td>240x260</td>
<td>trackwheel</td>
<td>4.2.1.19</td>
</tr>
<tr>
<td>7130e</td>
<td>7130</td>
<td>240x260</td>
<td>trackwheel</td>
<td>4.2.1.19</td>
</tr>
<tr>
<td>8100</td>
<td>Pearl</td>
<td>240x260</td>
<td>trackball</td>
<td>
<p>4.2.1.19</p>
<p>4.5.0.21</p>
</td>
</tr>
<tr>
<td>8110</td>
<td>Pearl</td>
<td>240x260</td>
<td>trackball</td>
<td>4.5.0.21</td>
</tr>
<tr>
<td>8120</td>
<td>Pearl</td>
<td>240x260</td>
<td>trackball</td>
<td>
<p>4.3.0.17</p>
<p>4.5.0.21</p>
</td>
</tr>
<tr>
<td>8130</td>
<td>Pearl</td>
<td>240x260</td>
<td>trackball</td>
<td>
<p>4.3.0.17</p>
4.5.0.21</td>
</tr>
<tr>
<td>8300</td>
<td>Curve</td>
<td>320x240</td>
<td>trackball</td>
<td>4.5.0.21</td>
</tr>
<tr>
<td>8310</td>
<td>Curve</td>
<td>320x240</td>
<td>trackball</td>
<td>4.5.0.21</td>
</tr>
<tr>
<td>8320</td>
<td>Curve</td>
<td>320x240</td>
<td>trackball</td>
<td>4.5.0.21</td>
</tr>
<tr>
<td>8330</td>
<td>Curve</td>
<td>320x240</td>
<td>trackball</td>
<td>4.5.0.21</td>
</tr>
<tr>
<td>8350i</td>
<td>Curve</td>
<td>320x240</td>
<td>trackball</td>
<td>4.6.1.36</td>
</tr>
<tr>
<td>8700-black</td>
<td>Electron</td>
<td>320x240</td>
<td>trackwheel</td>
<td>
<p>4.2.1.19</p>
<p>4.5.0.21</p>
</td>
</tr>
<tr>
<td>8700-blue</td>
<td>Electron</td>
<td>320x240</td>
<td>trackwheel</td>
<td>4.2.1.19</td>
</tr>
<tr>
<td>8703e</td>
<td>Electron</td>
<td>320x240</td>
<td>trackwheel</td>
<td>
<p>4.2.1.19</p>
<p>4.5.0.21</p>
</td>
</tr>
<tr>
<td>8707</td>
<td>Electron</td>
<td>320x240</td>
<td>trackwheel</td>
<td>4.2.1.19</td>
</tr>
<tr>
<td>8800</td>
<td>88XX</td>
<td>320x240</td>
<td>trackball</td>
<td>
<p>4.2.1.19</p>
<p>4.5.0.21</p>
</td>
</tr>
<tr>
<td>8820</td>
<td>88XX</td>
<td>320x240</td>
<td>trackball</td>
<td>4.5.0.21</td>
</tr>
<tr>
<td>8830</td>
<td>88XX</td>
<td>320x240</td>
<td>trackball</td>
<td>4.5.0.21</td>
</tr>
<tr>
<td>8900</td>
<td>Curve</td>
<td>480x360</td>
<td>trackball</td>
<td>4.6.1.36</td>
</tr>
<tr>
<td>9000</td>
<td>Bold</td>
<td>360x480</td>
<td>trackball</td>
<td>
<p>4.6.0.21</p>
<p>5.0.0.14</p>
</td>
</tr>
<tr>
<td>9500</td>
<td>Storm</td>
<td>360x480</td>
<td>touch screen</td>
<td>4.7.0.53</td>
</tr>
<tr>
<td>9530</td>
<td>Storm</td>
<td>360x480</td>
<td>touch screen</td>
<td>4.7.0.53</td>
</tr>
<tr>
<td>9550</td>
<td>Storm</td>
<td>360x480</td>
<td>touch screen</td>
<td>5.0.0.14</td>
</tr>
<tr>
<td>9700</td>
<td>Bold</td>
<td>360x480</td>
<td>trackball</td>
<td>5.0.0.14</td>
</tr>
</tbody>
</table>
<p><!-- Adsense block #4 not displayed since it exceed the limit of 3 --></p><div class="item_footer"><p><small><a href="http://ewert-technologies.ca/blog/blog5.php/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin-part-2">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>
<p><a href="http://feedads.g.doubleclick.net/~a/mv4tjoMHUtdbUw-enCvLcY33T6w/0/da"><img src="http://feedads.g.doubleclick.net/~a/mv4tjoMHUtdbUw-enCvLcY33T6w/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/mv4tjoMHUtdbUw-enCvLcY33T6w/1/da"><img src="http://feedads.g.doubleclick.net/~a/mv4tjoMHUtdbUw-enCvLcY33T6w/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/SzBoDZkZBlA" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/xJv3-8vv7CPlp2vEpE1ChPVIaQs/0/da"><img src="http://feedads.g.doubleclick.net/~a/xJv3-8vv7CPlp2vEpE1ChPVIaQs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/xJv3-8vv7CPlp2vEpE1ChPVIaQs/1/da"><img src="http://feedads.g.doubleclick.net/~a/xJv3-8vv7CPlp2vEpE1ChPVIaQs/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/4AMZBBXvb8w" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/3C_JmnyT_I8kuPiHmJBWFqZ_WqU/0/da"><img src="http://feedads.g.doubleclick.net/~a/3C_JmnyT_I8kuPiHmJBWFqZ_WqU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/3C_JmnyT_I8kuPiHmJBWFqZ_WqU/1/da"><img src="http://feedads.g.doubleclick.net/~a/3C_JmnyT_I8kuPiHmJBWFqZ_WqU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/vFVF4JxOE-8" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/OCkhpUJ6rbIwH_B0y1qQZKE38KE/0/da"><img src="http://feedads.g.doubleclick.net/~a/OCkhpUJ6rbIwH_B0y1qQZKE38KE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/OCkhpUJ6rbIwH_B0y1qQZKE38KE/1/da"><img src="http://feedads.g.doubleclick.net/~a/OCkhpUJ6rbIwH_B0y1qQZKE38KE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/v79n9Zsy4WU" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/zQFhDPwUoSl4OwU0VMgrFDcaisg/0/da"><img src="http://feedads.g.doubleclick.net/~a/zQFhDPwUoSl4OwU0VMgrFDcaisg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/zQFhDPwUoSl4OwU0VMgrFDcaisg/1/da"><img src="http://feedads.g.doubleclick.net/~a/zQFhDPwUoSl4OwU0VMgrFDcaisg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/SgGF1Sajz2M" height="1" width="1"/>]]></content:encoded>
								<comments>http://ewert-technologies.ca/blog/blog5.php/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin-part-2#comments</comments>
			<wfw:commentRss>http://ewert-technologies.ca/blog/blog5.php?tempskin=_rss2&amp;disp=comments&amp;p=50</wfw:commentRss>
		<feedburner:origLink>http://ewert-technologies.ca/blog/blog5.php/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin-part-2</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/SzBoDZkZBlA/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin-part-2</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/4AMZBBXvb8w/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin-part-2</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/vFVF4JxOE-8/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin-part-2</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/v79n9Zsy4WU/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin-part-2</feedburner:origLink></item>
				<item>
			<title>BlackBerry Simulators Reference Guide for Eclipse 3.5 plugin</title>
			<link>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/vdVbwlaeV_E/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin</link>
			<pubDate>Fri, 26 Feb 2010 19:47:44 +0000</pubDate>			<dc:creator>victor.ewert</dc:creator>
			<category domain="main">Articles</category>			<guid isPermaLink="false">49@http://ewert-technologies.ca/blog/</guid>
						<description>&lt;p style="text-align: left;"&gt;&lt;!-- Adsense block #5 not displayed since it exceed the limit of 3 --&gt;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;I have been using the BlackBerry  Java&amp;#174; Plug-in for Eclipse&amp;#174; v1.1 on Eclipse 3.5 (Galileo) for a while, using the various simulators that are available in the various component packs.&amp;#160; The base BlackBerry Plug-in comes with the 5.0.0 component pack, but others can added as additional plugins for Eclipse.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;During development I often want to try using different combinations of simulators and JREs, but couldn't find any quick references relating which simulators are available for which component pack.&amp;#160; I have compiled a reference guide to help myself with this, and hope others will find it helpful as well.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;Before providing a reference guide to the simulators available, here is a quick start guide to get going in Eclipse.&lt;/p&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;Download and install &lt;a title="Download Eclipse" href="http://www.eclipse.org/downloads/" target="_blank"&gt;Eclipse 3.5 (Galileo)&lt;/a&gt;.&amp;#160; I used the EE package.&lt;/li&gt;
&lt;li&gt;Download the &lt;a title="Download BlackBerry Java Plugin" href="http://na.blackberry.com/eng/developers/devbetasoftware/javaplugin.jsp" target="_blank"&gt;BlackBerry Java&amp;#174; Plug-in for Eclipse&amp;#174; v1.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Install the plug-in, pointing it to your Eclipse installation.&lt;/li&gt;
&lt;li&gt;In Eclipse-&amp;gt;Window-&amp;gt;Preferences-&amp;gt;Install/Update-&amp;gt;Available Software Sites add the following site: &lt;a href="http://www.blackberry.com/go/eclipseUpdate/3.5/java"&gt;http://www.blackberry.com/go/eclipseUpdate/3.5/java&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;In Eclipse-&amp;gt;Help-&amp;gt;Install New Software, using the Software site added above and download the desired Component Packs.&lt;/li&gt;
&lt;li&gt;Restart Eclipse after installing plugins&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Simulator Reference Guide&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Component Pack: 5.0.0.14&lt;br /&gt;Blackberry (JRE) version: 5.0.0&lt;/p&gt;
&lt;table border="1" cellpadding="2"&gt;
&lt;thead&gt; 
&lt;tr style="background-color: #b0c4de;"&gt;
&lt;td&gt;&lt;strong&gt;Device&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Family&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Display Screen Size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Interaction Method&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt; 
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;9000&lt;/td&gt;
&lt;td&gt;Bold&lt;/td&gt;
&lt;td&gt;480x320&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9550&lt;/td&gt;
&lt;td&gt;Storm&lt;/td&gt;
&lt;td&gt;360x480&lt;/td&gt;
&lt;td&gt;touch screen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9700&lt;/td&gt;
&lt;td&gt;Bold&lt;/td&gt;
&lt;td&gt;480x360&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Component Pack: 4.7.0.53&lt;br /&gt;Blackberry (JRE) version: 4.7.0&lt;/p&gt;
&lt;table border="1" cellpadding="2"&gt;
&lt;thead&gt; 
&lt;tr style="background-color: #b0c4de;"&gt;
&lt;td&gt;&lt;strong&gt;Device&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Family&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Display Screen Size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Interaction Method&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt; 
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;9500&lt;/td&gt;
&lt;td&gt;Storm&lt;/td&gt;
&lt;td&gt;360x480&lt;/td&gt;
&lt;td&gt;touch screen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9530&lt;/td&gt;
&lt;td&gt;Storm&lt;/td&gt;
&lt;td&gt;360x480&lt;/td&gt;
&lt;td&gt;touch screen&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Component Pack: 4.6.1.36&lt;br /&gt;Blackberry (JRE) version: 4.6.1&lt;/p&gt;
&lt;table border="1" cellpadding="2"&gt;
&lt;thead&gt; 
&lt;tr style="background-color: #b0c4de;"&gt;
&lt;td&gt;&lt;strong&gt;Device&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Family&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Display Screen Size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Interaction Method&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt; 
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;8350i&lt;/td&gt;
&lt;td&gt;Curve&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;320x240&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;trackball&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8900&lt;/td&gt;
&lt;td&gt;Curve&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;480x360&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;trackball&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Component Pack: 4.6.0.21&lt;br /&gt;Blackberry (JRE) version: 4.6.0&lt;/p&gt;
&lt;table border="1" cellpadding="2"&gt;
&lt;thead&gt; 
&lt;tr style="background-color: #b0c4de;"&gt;
&lt;td&gt;&lt;strong&gt;Device&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Family&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Display Screen Size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Interaction Method&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt; 
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;9000&lt;/td&gt;
&lt;td&gt;Bold&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;480x320&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;trackball&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Component Pack: 4.5.0.21&lt;br /&gt;Blackberry (JRE) version: 4.5.0&lt;/p&gt;
&lt;table border="1" cellpadding="2"&gt;
&lt;thead&gt; 
&lt;tr style="background-color: #b0c4de;"&gt;
&lt;td&gt;&lt;strong&gt;Device&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Family&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Display Screen Size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Interaction Method&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt; 
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;8100&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;Pearl&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;240x260&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;trackball&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8110&lt;/td&gt;
&lt;td&gt;Pearl&lt;/td&gt;
&lt;td&gt;240x260&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8120&lt;/td&gt;
&lt;td&gt;Pearl&lt;/td&gt;
&lt;td&gt;240x260&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8130&lt;/td&gt;
&lt;td&gt;Pearl&lt;/td&gt;
&lt;td&gt;240x260&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8300&lt;/td&gt;
&lt;td&gt;Curve&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8310&lt;/td&gt;
&lt;td&gt;Curve&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8320&lt;/td&gt;
&lt;td&gt;Curve&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8330&lt;/td&gt;
&lt;td&gt;Curve&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8700-black&lt;/td&gt;
&lt;td&gt;Electron&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackwheel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8703e&lt;/td&gt;
&lt;td&gt;Electron&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackwheel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8800&lt;/td&gt;
&lt;td&gt;88XX&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8820&lt;/td&gt;
&lt;td&gt;88XX&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8830&lt;/td&gt;
&lt;td&gt;88XX&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Component Pack: 4.3.0.17&lt;br /&gt;Blackberry (JRE) version: 4.3.0&lt;/p&gt;
&lt;table border="1" cellpadding="2"&gt;
&lt;thead&gt; 
&lt;tr style="background-color: #b0c4de;"&gt;
&lt;td&gt;&lt;strong&gt;Device&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Family&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Display Screen Size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Interaction Method&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt; 
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;8120&lt;/td&gt;
&lt;td&gt;Pearl&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;240x260&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;trackball&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8130&lt;/td&gt;
&lt;td&gt;Pearl&lt;/td&gt;
&lt;td&gt;240x260&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Component Pack: 4.2.1.19&lt;br /&gt;Blackberry (JRE) version: 4.2.1&lt;/p&gt;
&lt;table border="1" cellpadding="2"&gt;
&lt;thead&gt; 
&lt;tr style="background-color: #b0c4de;"&gt;
&lt;td&gt;&lt;strong&gt;Device&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Family&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Display Screen Size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Interaction Method&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/thead&gt; 
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;7130&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;7130&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;240x260&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;trackwheel&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7130e&lt;/td&gt;
&lt;td&gt;7130&lt;/td&gt;
&lt;td&gt;240x260&lt;/td&gt;
&lt;td&gt;trackwheel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8100&lt;/td&gt;
&lt;td&gt;Pearl&lt;/td&gt;
&lt;td&gt;240x260&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8700-black&lt;/td&gt;
&lt;td&gt;Electron&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackwheel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8700-blue&lt;/td&gt;
&lt;td&gt;Electron&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackwheel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8703e&lt;/td&gt;
&lt;td&gt;Electron&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackwheel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8707&lt;br /&gt;&lt;/td&gt;
&lt;td&gt;Electron&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackwheel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8800&lt;/td&gt;
&lt;td&gt;88XX&lt;/td&gt;
&lt;td&gt;320x240&lt;/td&gt;
&lt;td&gt;trackball&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;!-- Adsense block #6 not displayed since it exceed the limit of 3 --&gt;&lt;/p&gt;&lt;div class="item_footer"&gt;&lt;p&gt;&lt;small&gt;&lt;a href="http://ewert-technologies.ca/blog/blog5.php/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin"&gt;Original post&lt;/a&gt; blogged on &lt;a href="http://b2evolution.net/"&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p style="text-align: left;"><!-- Adsense block #7 not displayed since it exceed the limit of 3 --></p>
<p style="text-align: left;">I have been using the BlackBerry  Java&#174; Plug-in for Eclipse&#174; v1.1 on Eclipse 3.5 (Galileo) for a while, using the various simulators that are available in the various component packs.&#160; The base BlackBerry Plug-in comes with the 5.0.0 component pack, but others can added as additional plugins for Eclipse.</p>
<p style="text-align: left;">During development I often want to try using different combinations of simulators and JREs, but couldn't find any quick references relating which simulators are available for which component pack.&#160; I have compiled a reference guide to help myself with this, and hope others will find it helpful as well.</p>
<p style="text-align: left;">Before providing a reference guide to the simulators available, here is a quick start guide to get going in Eclipse.</p>
<ol style="text-align: left;">
<li>Download and install <a title="Download Eclipse" href="http://www.eclipse.org/downloads/" target="_blank">Eclipse 3.5 (Galileo)</a>.&#160; I used the EE package.</li>
<li>Download the <a title="Download BlackBerry Java Plugin" href="http://na.blackberry.com/eng/developers/devbetasoftware/javaplugin.jsp" target="_blank">BlackBerry Java&#174; Plug-in for Eclipse&#174; v1.1</a></li>
<li>Install the plug-in, pointing it to your Eclipse installation.</li>
<li>In Eclipse-&gt;Window-&gt;Preferences-&gt;Install/Update-&gt;Available Software Sites add the following site: <a href="http://www.blackberry.com/go/eclipseUpdate/3.5/java">http://www.blackberry.com/go/eclipseUpdate/3.5/java</a></li>
<li>In Eclipse-&gt;Help-&gt;Install New Software, using the Software site added above and download the desired Component Packs.</li>
<li>Restart Eclipse after installing plugins</li>
</ol>
<p>&#160;</p>
<p><strong>Simulator Reference Guide</strong></p>
<p>Component Pack: 5.0.0.14<br />Blackberry (JRE) version: 5.0.0</p>
<table border="1" cellpadding="2">
<thead> 
<tr style="background-color: #b0c4de;">
<td><strong>Device</strong></td>
<td><strong>Family</strong></td>
<td><strong>Display Screen Size</strong></td>
<td><strong>Interaction Method</strong></td>
</tr>
</thead> 
<tbody>
<tr>
<td>9000</td>
<td>Bold</td>
<td>480x320</td>
<td>trackball</td>
</tr>
<tr>
<td>9550</td>
<td>Storm</td>
<td>360x480</td>
<td>touch screen</td>
</tr>
<tr>
<td>9700</td>
<td>Bold</td>
<td>480x360</td>
<td>trackball</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>Component Pack: 4.7.0.53<br />Blackberry (JRE) version: 4.7.0</p>
<table border="1" cellpadding="2">
<thead> 
<tr style="background-color: #b0c4de;">
<td><strong>Device</strong></td>
<td><strong>Family</strong></td>
<td><strong>Display Screen Size</strong></td>
<td><strong>Interaction Method</strong></td>
</tr>
</thead> 
<tbody>
<tr>
<td>9500</td>
<td>Storm</td>
<td>360x480</td>
<td>touch screen</td>
</tr>
<tr>
<td>9530</td>
<td>Storm</td>
<td>360x480</td>
<td>touch screen</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>Component Pack: 4.6.1.36<br />Blackberry (JRE) version: 4.6.1</p>
<table border="1" cellpadding="2">
<thead> 
<tr style="background-color: #b0c4de;">
<td><strong>Device</strong></td>
<td><strong>Family</strong></td>
<td><strong>Display Screen Size</strong></td>
<td><strong>Interaction Method</strong></td>
</tr>
</thead> 
<tbody>
<tr>
<td>8350i</td>
<td>Curve<br /></td>
<td>320x240<br /></td>
<td>trackball<br /></td>
</tr>
<tr>
<td>8900</td>
<td>Curve<br /></td>
<td>480x360<br /></td>
<td>trackball<br /></td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>Component Pack: 4.6.0.21<br />Blackberry (JRE) version: 4.6.0</p>
<table border="1" cellpadding="2">
<thead> 
<tr style="background-color: #b0c4de;">
<td><strong>Device</strong></td>
<td><strong>Family</strong></td>
<td><strong>Display Screen Size</strong></td>
<td><strong>Interaction Method</strong></td>
</tr>
</thead> 
<tbody>
<tr>
<td>9000</td>
<td>Bold<br /></td>
<td>480x320<br /></td>
<td>trackball<br /></td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>Component Pack: 4.5.0.21<br />Blackberry (JRE) version: 4.5.0</p>
<table border="1" cellpadding="2">
<thead> 
<tr style="background-color: #b0c4de;">
<td><strong>Device</strong></td>
<td><strong>Family</strong></td>
<td><strong>Display Screen Size</strong></td>
<td><strong>Interaction Method</strong></td>
</tr>
</thead> 
<tbody>
<tr>
<td>8100<br /></td>
<td>Pearl<br /></td>
<td>240x260<br /></td>
<td>trackball<br /></td>
</tr>
<tr>
<td>8110</td>
<td>Pearl</td>
<td>240x260</td>
<td>trackball</td>
</tr>
<tr>
<td>8120</td>
<td>Pearl</td>
<td>240x260</td>
<td>trackball</td>
</tr>
<tr>
<td>8130</td>
<td>Pearl</td>
<td>240x260</td>
<td>trackball</td>
</tr>
<tr>
<td>8300</td>
<td>Curve</td>
<td>320x240</td>
<td>trackball</td>
</tr>
<tr>
<td>8310</td>
<td>Curve</td>
<td>320x240</td>
<td>trackball</td>
</tr>
<tr>
<td>8320</td>
<td>Curve</td>
<td>320x240</td>
<td>trackball</td>
</tr>
<tr>
<td>8330</td>
<td>Curve</td>
<td>320x240</td>
<td>trackball</td>
</tr>
<tr>
<td>8700-black</td>
<td>Electron</td>
<td>320x240</td>
<td>trackwheel</td>
</tr>
<tr>
<td>8703e</td>
<td>Electron</td>
<td>320x240</td>
<td>trackwheel</td>
</tr>
<tr>
<td>8800</td>
<td>88XX</td>
<td>320x240</td>
<td>trackball</td>
</tr>
<tr>
<td>8820</td>
<td>88XX</td>
<td>320x240</td>
<td>trackball</td>
</tr>
<tr>
<td>8830</td>
<td>88XX</td>
<td>320x240</td>
<td>trackball</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>Component Pack: 4.3.0.17<br />Blackberry (JRE) version: 4.3.0</p>
<table border="1" cellpadding="2">
<thead> 
<tr style="background-color: #b0c4de;">
<td><strong>Device</strong></td>
<td><strong>Family</strong></td>
<td><strong>Display Screen Size</strong></td>
<td><strong>Interaction Method</strong></td>
</tr>
</thead> 
<tbody>
<tr>
<td>8120</td>
<td>Pearl<br /></td>
<td>240x260<br /></td>
<td>trackball<br /></td>
</tr>
<tr>
<td>8130</td>
<td>Pearl</td>
<td>240x260</td>
<td>trackball</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>Component Pack: 4.2.1.19<br />Blackberry (JRE) version: 4.2.1</p>
<table border="1" cellpadding="2">
<thead> 
<tr style="background-color: #b0c4de;">
<td><strong>Device</strong></td>
<td><strong>Family</strong></td>
<td><strong>Display Screen Size</strong></td>
<td><strong>Interaction Method</strong></td>
</tr>
</thead> 
<tbody>
<tr>
<td>7130<br /></td>
<td>7130<br /></td>
<td>240x260<br /></td>
<td>trackwheel<br /></td>
</tr>
<tr>
<td>7130e</td>
<td>7130</td>
<td>240x260</td>
<td>trackwheel</td>
</tr>
<tr>
<td>8100</td>
<td>Pearl</td>
<td>240x260</td>
<td>trackball</td>
</tr>
<tr>
<td>8700-black</td>
<td>Electron</td>
<td>320x240</td>
<td>trackwheel</td>
</tr>
<tr>
<td>8700-blue</td>
<td>Electron</td>
<td>320x240</td>
<td>trackwheel</td>
</tr>
<tr>
<td>8703e</td>
<td>Electron</td>
<td>320x240</td>
<td>trackwheel</td>
</tr>
<tr>
<td>8707<br /></td>
<td>Electron</td>
<td>320x240</td>
<td>trackwheel</td>
</tr>
<tr>
<td>8800</td>
<td>88XX</td>
<td>320x240</td>
<td>trackball</td>
</tr>
</tbody>
</table>
<p><!-- Adsense block #8 not displayed since it exceed the limit of 3 --></p><div class="item_footer"><p><small><a href="http://ewert-technologies.ca/blog/blog5.php/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>
<p><a href="http://feedads.g.doubleclick.net/~a/hW6gSsG8PjD2lfleajBJq-3O_Y0/0/da"><img src="http://feedads.g.doubleclick.net/~a/hW6gSsG8PjD2lfleajBJq-3O_Y0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/hW6gSsG8PjD2lfleajBJq-3O_Y0/1/da"><img src="http://feedads.g.doubleclick.net/~a/hW6gSsG8PjD2lfleajBJq-3O_Y0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/qdf6b4mZcPA" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/-oq_iG2-qKV4fVbWi4pT3lZy5dA/0/da"><img src="http://feedads.g.doubleclick.net/~a/-oq_iG2-qKV4fVbWi4pT3lZy5dA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/-oq_iG2-qKV4fVbWi4pT3lZy5dA/1/da"><img src="http://feedads.g.doubleclick.net/~a/-oq_iG2-qKV4fVbWi4pT3lZy5dA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/hMNXi6XHebM" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/QcrTDSeL-wUJBqE1UTlX6kWCxSo/0/da"><img src="http://feedads.g.doubleclick.net/~a/QcrTDSeL-wUJBqE1UTlX6kWCxSo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QcrTDSeL-wUJBqE1UTlX6kWCxSo/1/da"><img src="http://feedads.g.doubleclick.net/~a/QcrTDSeL-wUJBqE1UTlX6kWCxSo/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/BJQWRMjZr_w" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/1YGlIB4Wh_QYoJYeX7icqt7eb_c/0/da"><img src="http://feedads.g.doubleclick.net/~a/1YGlIB4Wh_QYoJYeX7icqt7eb_c/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/1YGlIB4Wh_QYoJYeX7icqt7eb_c/1/da"><img src="http://feedads.g.doubleclick.net/~a/1YGlIB4Wh_QYoJYeX7icqt7eb_c/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/xrbM8JKsPiw" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/QtFwKB6lThUUrehe5H6KpCDQClU/0/da"><img src="http://feedads.g.doubleclick.net/~a/QtFwKB6lThUUrehe5H6KpCDQClU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QtFwKB6lThUUrehe5H6KpCDQClU/1/da"><img src="http://feedads.g.doubleclick.net/~a/QtFwKB6lThUUrehe5H6KpCDQClU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/vdVbwlaeV_E" height="1" width="1"/>]]></content:encoded>
								<comments>http://ewert-technologies.ca/blog/blog5.php/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin#comments</comments>
			<wfw:commentRss>http://ewert-technologies.ca/blog/blog5.php?tempskin=_rss2&amp;disp=comments&amp;p=49</wfw:commentRss>
		<feedburner:origLink>http://ewert-technologies.ca/blog/blog5.php/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/qdf6b4mZcPA/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/hMNXi6XHebM/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/BJQWRMjZr_w/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/xrbM8JKsPiw/blackberry-simulators-reference-guide-for-eclipse-3-5-plugin</feedburner:origLink></item>
				<item>
			<title>Adding Style and Color to Blackberry Labels</title>
			<link>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/NLhqu7h1Q40/adding-style-and-color-to-blackberry-labels</link>
			<pubDate>Tue, 16 Feb 2010 22:51:31 +0000</pubDate>			<dc:creator>victor.ewert</dc:creator>
			<category domain="main">Articles</category>			<guid isPermaLink="false">47@http://ewert-technologies.ca/blog/</guid>
						<description>&lt;p&gt;&lt;!-- Adsense block #9 not displayed since it exceed the limit of 3 --&gt;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;The Blackberry API provides the RichTextField class to allow for different styles, and the ActiveRichTextField to add color.&amp;#160; When I first tried using them I found them not very easy to figure out.&amp;#160; After playing around for a while, and finding a few examples I was able to figure it out.&amp;#160; To help others get started I have put together this little tutorial/example.&lt;/p&gt;

&lt;p style="text-align: left;"&gt;In this example, I will show how to created the following formatted text:&lt;/p&gt;

&lt;p style="text-align: left;"&gt;This is formatted text, containing &lt;strong&gt;bold&lt;/strong&gt;, and &lt;em&gt;italic &lt;/em&gt;text, as well as &lt;span style="color: #0000ff;"&gt;blue &lt;/span&gt;and &lt;span style="color: #ff0000;"&gt;red &lt;/span&gt;text.&lt;br /&gt;&lt;br /&gt;First, we define the text we want to format as a String:&lt;/p&gt;

&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_short"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;String text = "This is formatted text, containing bold, and italic text, as well as blue and red text.";&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p style="text-align: left;"&gt;The RichTextField formatting, is based on defining the regions of the text that should be formatted.&amp;#160; These regions are defined by offsets within the String.&amp;#160; So next we need to define an Array of offsets that set the boundaries of the regions we want to format.&amp;#160; It is important to set the first offset as the beginning of the text and the last offset as the end of the text (i.e. the must always be at least two offsets).&amp;#160; The offsets can be specified as hard coded integer offsets, but this is not very maintainable.&amp;#160; I try to define the offsets using the indexOf() method in the String class, as the following shows:&lt;/p&gt;

&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_short"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;int[] offsets = new int[10];&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc3"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;offsets[0] = 0; //This is the beginning of the text&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc4"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;offsets[1] = text.indexOf("bold");&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc5"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;offsets[2] = text.indexOf("bold") + "bold".length();&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc6"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;offsets[3] = text.indexOf("italic");&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc7"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;offsets[4] = text.indexOf("italic") + "italic".length();&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc8"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;offsets[5] = text.indexOf("blue");&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc9"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;offsets[6] = text.indexOf("blue") + "blue".length();&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc0"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;offsets[7] = text.indexOf("red");&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;offsets[8] = text.indexOf("red") + "red".length();&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc2"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;offsets[9] = text.length(); //End of the text&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p style="text-align: left;"&gt;Now we have or text chunked into all the necessary regions.&amp;#160; The next step is to define the Font styles and Colors we want to use for the formatting.&lt;/p&gt;

&lt;p style="text-align: left;"&gt;When using a RichTextField with only Fonts (no Colors) it is relatively straight forward.&amp;#160; You create an Array of Fonts and then define an Array of Attributes that link an Offset to a Font.&amp;#160; When using both Font styles and Colors these attribute must be thought of as Font style/Color pairs.&amp;#160; The easiest way to try to set this up is to set up a grid.&amp;#160; For our example the grid could be as follows:&lt;/p&gt;
&lt;table border="1" align="center"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Offset&lt;/td&gt;
&lt;td&gt;Font&lt;/td&gt;
&lt;td&gt;Color&lt;/td&gt;
&lt;td&gt;Attribute Value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;PLAIN (default)&lt;/td&gt;
&lt;td&gt;BLACK&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;BOLD&lt;/td&gt;
&lt;td&gt;BLACK&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;PLAIN (default)&lt;/td&gt;
&lt;td&gt;BLACK&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;ITALIC&lt;/td&gt;
&lt;td&gt;BLACK&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;PLAIN (default)&lt;/td&gt;
&lt;td&gt;BLACK&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;PLAIN (default)&lt;/td&gt;
&lt;td&gt;BLUE&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;PLAIN (default)&lt;/td&gt;
&lt;td&gt;BLACK&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;PLAIN (default)&lt;/td&gt;
&lt;td&gt;RED&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;PLAIN (default)&lt;/td&gt;
&lt;td&gt;BLACK&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style="text-align: left;"&gt;In this grid I first laid out the offsets, then defined the Font style/Color pair I wanted for each offset.&amp;#160; I then went and gave each unique pair an incremental attribute value.&amp;#160; I can then use this attribute value to set up the Font and Color arrays:&lt;/p&gt;

&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_short"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc3"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;Font[] fonts = new Font[5];&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc4"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;fonts[0] = Font.getDefault();&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc5"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;fonts[1] = Font.getDefault().derive(Font.BOLD);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc6"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;fonts[2] = Font.getDefault().derive(Font.ITALIC);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc7"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;fonts[3] = Font.getDefault();&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc8"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;fonts[4] = Font.getDefault();&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc9"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc0"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;int[] foregroundColors = new int[5];&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;foregroundColors[0] = Color.BLACK;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc2"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;foregroundColors[1] = Color.BLACK;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc3"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;foregroundColors[2] = Color.BLACK;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc4"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;foregroundColors[3] = Color.BLUE;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc5"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;foregroundColors[4] = Color.RED;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p style="text-align: left;"&gt;Once I have created the Fonts and Colors I create the Attributes Array to link the Font style/Color pairs, to the Offsets.&lt;/p&gt;

&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_short"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc6"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;byte[] attributes = new byte[9];&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc7"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;attributes[0] = 0;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc8"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;attributes[1] = 1;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc9"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;attributes[2] = 0;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc0"&gt;&lt;div class="amc3"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;attributes[3] = 2;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;div class="amc3"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;attributes[4] = 0;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc2"&gt;&lt;div class="amc3"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;attributes[5] = 3;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc3"&gt;&lt;div class="amc3"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;attributes[6] = 0;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc4"&gt;&lt;div class="amc3"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;attributes[7] = 4;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc5"&gt;&lt;div class="amc3"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;attributes[8] = 0;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p style="text-align: left;"&gt;Finally once all of the Offsets, Fonts, Colors and Attribute are defined, we can create an instance of our class:&lt;/p&gt;

&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_short"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc6"&gt;&lt;div class="amc3"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;ActiveRichTextField formattedTextField = new ActiveRichTextField(text, offsets, attributes, fonts, foregroundColors, null, Field.NON_FOCUSABLE);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p style="text-align: left;"&gt;In this example, I didn't want to do anything to the background color so I passed in null, I also wanted this field to act as a simple label, so I set the field as non focusable.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;This field can then be added the screen.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;A few things to watch out for:&lt;/p&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Make sure the offsets array contains an element for the start of the String and an element for the end of the String.&lt;/li&gt;
&lt;li&gt;The length of the attributes array should be one less than the length of the offsets array.&lt;/li&gt;
&lt;li&gt;Make sure the length used in the definition of the array, matches the actual number of elements you include; it is easy to go added a font element, but forget to change the value in the array definition.&amp;#160; This will lead to ArrayIndexOutOfBounds Exceptions.&lt;/li&gt;
&lt;li&gt;In your attributes array, make sure you have corresponding elements in your font/color arrays for each value you set.&amp;#160; For example, setting attribute[8] to 5 would be a problem since there isn't a fifth element in the font or color arrays.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: left;"&gt;
This may not be the only way, or even the best way to accomplish this, but it worked for me, and hopefully some people find this helpful.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Check out the great deal in
&lt;a href="http://affiliate.buy.com/gateway.aspx?adid=17662&amp;amp;aid=10389981&amp;amp;pid=3479743&amp;amp;sURL=http%3A//www.buy.com/dept/Home_Electronics_Stereos_Speakers_Headphones/111.html" target="_blank"&gt;Electronics&lt;/a&gt;&lt;img src="http://www.afcyhf.com/image-3479743-10389981" width="1" height="1" border="0" /&gt;
at Best Buy!
&lt;/p&gt;
&lt;p&gt;&lt;!-- Adsense block #10 not displayed since it exceed the limit of 3 --&gt;&lt;/p&gt;&lt;div class="item_footer"&gt;&lt;p&gt;&lt;small&gt;&lt;a href="http://ewert-technologies.ca/blog/blog5.php/adding-style-and-color-to-blackberry-labels"&gt;Original post&lt;/a&gt; blogged on &lt;a href="http://b2evolution.net/"&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p><!-- Adsense block #11 not displayed since it exceed the limit of 3 --></p>
<p style="text-align: left;">The Blackberry API provides the RichTextField class to allow for different styles, and the ActiveRichTextField to add color.&#160; When I first tried using them I found them not very easy to figure out.&#160; After playing around for a while, and finding a few examples I was able to figure it out.&#160; To help others get started I have put together this little tutorial/example.</p>

<p style="text-align: left;">In this example, I will show how to created the following formatted text:</p>

<p style="text-align: left;">This is formatted text, containing <strong>bold</strong>, and <em>italic </em>text, as well as <span style="color: #0000ff;">blue </span>and <span style="color: #ff0000;">red </span>text.<br /><br />First, we define the text we want to format as a String:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">String text = "This is formatted text, containing bold, and italic text, as well as blue and red text.";</span></code></td></tr>
</table></div>

<p style="text-align: left;">The RichTextField formatting, is based on defining the regions of the text that should be formatted.&#160; These regions are defined by offsets within the String.&#160; So next we need to define an Array of offsets that set the boundaries of the regions we want to format.&#160; It is important to set the first offset as the beginning of the text and the last offset as the end of the text (i.e. the must always be at least two offsets).&#160; The offsets can be specified as hard coded integer offsets, but this is not very maintainable.&#160; I try to define the offsets using the indexOf() method in the String class, as the following shows:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">int[] offsets = new int[10];</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">offsets[0] = 0; //This is the beginning of the text</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">offsets[1] = text.indexOf("bold");</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc5"></div></td><td><code><span class="amc_default">offsets[2] = text.indexOf("bold") + "bold".length();</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc6"></div></td><td><code><span class="amc_default">offsets[3] = text.indexOf("italic");</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc7"></div></td><td><code><span class="amc_default">offsets[4] = text.indexOf("italic") + "italic".length();</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc8"></div></td><td><code><span class="amc_default">offsets[5] = text.indexOf("blue");</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc9"></div></td><td><code><span class="amc_default">offsets[6] = text.indexOf("blue") + "blue".length();</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc0"><div class="amc1"></div></div></td><td><code><span class="amc_default">offsets[7] = text.indexOf("red");</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc1"><div class="amc1"></div></div></td><td><code><span class="amc_default">offsets[8] = text.indexOf("red") + "red".length();</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc2"><div class="amc1"></div></div></td><td><code><span class="amc_default">offsets[9] = text.length(); //End of the text</span></code></td></tr>
</table></div>

<p style="text-align: left;">Now we have or text chunked into all the necessary regions.&#160; The next step is to define the Font styles and Colors we want to use for the formatting.</p>

<p style="text-align: left;">When using a RichTextField with only Fonts (no Colors) it is relatively straight forward.&#160; You create an Array of Fonts and then define an Array of Attributes that link an Offset to a Font.&#160; When using both Font styles and Colors these attribute must be thought of as Font style/Color pairs.&#160; The easiest way to try to set this up is to set up a grid.&#160; For our example the grid could be as follows:</p>
<table border="1" align="center">
<tbody>
<tr>
<td>Offset</td>
<td>Font</td>
<td>Color</td>
<td>Attribute Value</td>
</tr>
<tr>
<td>0</td>
<td>PLAIN (default)</td>
<td>BLACK</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>BOLD</td>
<td>BLACK</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>PLAIN (default)</td>
<td>BLACK</td>
<td>0</td>
</tr>
<tr>
<td>3</td>
<td>ITALIC</td>
<td>BLACK</td>
<td>1</td>
</tr>
<tr>
<td>4</td>
<td>PLAIN (default)</td>
<td>BLACK</td>
<td>0</td>
</tr>
<tr>
<td>5</td>
<td>PLAIN (default)</td>
<td>BLUE</td>
<td>3</td>
</tr>
<tr>
<td>6</td>
<td>PLAIN (default)</td>
<td>BLACK</td>
<td>0</td>
</tr>
<tr>
<td>7</td>
<td>PLAIN (default)</td>
<td>RED</td>
<td>4</td>
</tr>
<tr>
<td>8</td>
<td>PLAIN (default)</td>
<td>BLACK</td>
<td>0</td>
</tr>
</tbody>
</table>
<p style="text-align: left;">In this grid I first laid out the offsets, then defined the Font style/Color pair I wanted for each offset.&#160; I then went and gave each unique pair an incremental attribute value.&#160; I can then use this attribute value to set up the Font and Color arrays:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc1"></div></div></td><td><code><span class="amc_default">Font[] fonts = new Font[5];</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc1"></div></div></td><td><code><span class="amc_default">fonts[0] = Font.getDefault();</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc1"></div></div></td><td><code><span class="amc_default">fonts[1] = Font.getDefault().derive(Font.BOLD);</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"><div class="amc1"></div></div></td><td><code><span class="amc_default">fonts[2] = Font.getDefault().derive(Font.ITALIC);</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc7"><div class="amc1"></div></div></td><td><code><span class="amc_default">fonts[3] = Font.getDefault();</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc8"><div class="amc1"></div></div></td><td><code><span class="amc_default">fonts[4] = Font.getDefault();</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc9"><div class="amc1"></div></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc2"></div></div></td><td><code><span class="amc_default">int[] foregroundColors = new int[5];</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc2"></div></div></td><td><code><span class="amc_default">foregroundColors[0] = Color.BLACK;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc2"></div></div></td><td><code><span class="amc_default">foregroundColors[1] = Color.BLACK;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc2"></div></div></td><td><code><span class="amc_default">foregroundColors[2] = Color.BLACK;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc2"></div></div></td><td><code><span class="amc_default">foregroundColors[3] = Color.BLUE;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc2"></div></div></td><td><code><span class="amc_default">foregroundColors[4] = Color.RED;</span></code></td></tr>
</table></div>

<p style="text-align: left;">Once I have created the Fonts and Colors I create the Attributes Array to link the Font style/Color pairs, to the Offsets.</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc6"><div class="amc2"></div></div></td><td><code><span class="amc_default">byte[] attributes = new byte[9];</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc7"><div class="amc2"></div></div></td><td><code><span class="amc_default">attributes[0] = 0;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc8"><div class="amc2"></div></div></td><td><code><span class="amc_default">attributes[1] = 1;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc9"><div class="amc2"></div></div></td><td><code><span class="amc_default">attributes[2] = 0;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc0"><div class="amc3"></div></div></td><td><code><span class="amc_default">attributes[3] = 2;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc1"><div class="amc3"></div></div></td><td><code><span class="amc_default">attributes[4] = 0;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc2"><div class="amc3"></div></div></td><td><code><span class="amc_default">attributes[5] = 3;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc3"><div class="amc3"></div></div></td><td><code><span class="amc_default">attributes[6] = 0;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc4"><div class="amc3"></div></div></td><td><code><span class="amc_default">attributes[7] = 4;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc5"><div class="amc3"></div></div></td><td><code><span class="amc_default">attributes[8] = 0;</span></code></td></tr>
</table></div>

<p style="text-align: left;">Finally once all of the Offsets, Fonts, Colors and Attribute are defined, we can create an instance of our class:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc6"><div class="amc3"></div></div></td><td><code><span class="amc_default">ActiveRichTextField formattedTextField = new ActiveRichTextField(text, offsets, attributes, fonts, foregroundColors, null, Field.NON_FOCUSABLE);</span></code></td></tr>
</table></div>

<p style="text-align: left;">In this example, I didn't want to do anything to the background color so I passed in null, I also wanted this field to act as a simple label, so I set the field as non focusable.</p>
<p style="text-align: left;">This field can then be added the screen.</p>
<p style="text-align: left;">A few things to watch out for:</p>
<ul style="text-align: left;">
<li>Make sure the offsets array contains an element for the start of the String and an element for the end of the String.</li>
<li>The length of the attributes array should be one less than the length of the offsets array.</li>
<li>Make sure the length used in the definition of the array, matches the actual number of elements you include; it is easy to go added a font element, but forget to change the value in the array definition.&#160; This will lead to ArrayIndexOutOfBounds Exceptions.</li>
<li>In your attributes array, make sure you have corresponding elements in your font/color arrays for each value you set.&#160; For example, setting attribute[8] to 5 would be a problem since there isn't a fifth element in the font or color arrays.</li>
</ul>
<p style="text-align: left;">
This may not be the only way, or even the best way to accomplish this, but it worked for me, and hopefully some people find this helpful.
</p>
<hr />
<p>Check out the great deal in
<a href="http://affiliate.buy.com/gateway.aspx?adid=17662&amp;aid=10389981&amp;pid=3479743&amp;sURL=http%3A//www.buy.com/dept/Home_Electronics_Stereos_Speakers_Headphones/111.html" target="_blank">Electronics</a><img src="http://www.afcyhf.com/image-3479743-10389981" width="1" height="1" border="0" />
at Best Buy!
</p>
<p><!-- Adsense block #12 not displayed since it exceed the limit of 3 --></p><div class="item_footer"><p><small><a href="http://ewert-technologies.ca/blog/blog5.php/adding-style-and-color-to-blackberry-labels">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>
<p><a href="http://feedads.g.doubleclick.net/~a/buM6HPmN3JIcPJu0Al8ZbLZieCg/0/da"><img src="http://feedads.g.doubleclick.net/~a/buM6HPmN3JIcPJu0Al8ZbLZieCg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/buM6HPmN3JIcPJu0Al8ZbLZieCg/1/da"><img src="http://feedads.g.doubleclick.net/~a/buM6HPmN3JIcPJu0Al8ZbLZieCg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/nK8pQB7s-4E" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/6a_NWQtiRnRqr1A9yvD57rF3zrs/0/da"><img src="http://feedads.g.doubleclick.net/~a/6a_NWQtiRnRqr1A9yvD57rF3zrs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6a_NWQtiRnRqr1A9yvD57rF3zrs/1/da"><img src="http://feedads.g.doubleclick.net/~a/6a_NWQtiRnRqr1A9yvD57rF3zrs/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/i7fQ2MlTCeQ" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/Fz3y3P8Gughfjdxf-xMXEDqpkMo/0/da"><img src="http://feedads.g.doubleclick.net/~a/Fz3y3P8Gughfjdxf-xMXEDqpkMo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Fz3y3P8Gughfjdxf-xMXEDqpkMo/1/da"><img src="http://feedads.g.doubleclick.net/~a/Fz3y3P8Gughfjdxf-xMXEDqpkMo/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/DkK75H0Uuis" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/MMSZynmM6wjJ5XYCC3IOU49We50/0/da"><img src="http://feedads.g.doubleclick.net/~a/MMSZynmM6wjJ5XYCC3IOU49We50/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/MMSZynmM6wjJ5XYCC3IOU49We50/1/da"><img src="http://feedads.g.doubleclick.net/~a/MMSZynmM6wjJ5XYCC3IOU49We50/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/ewa45HC2Et4" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/JXzhXXBfPl948Z05jEjOABIZrG0/0/da"><img src="http://feedads.g.doubleclick.net/~a/JXzhXXBfPl948Z05jEjOABIZrG0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/JXzhXXBfPl948Z05jEjOABIZrG0/1/da"><img src="http://feedads.g.doubleclick.net/~a/JXzhXXBfPl948Z05jEjOABIZrG0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/NLhqu7h1Q40" height="1" width="1"/>]]></content:encoded>
								<comments>http://ewert-technologies.ca/blog/blog5.php/adding-style-and-color-to-blackberry-labels#comments</comments>
			<wfw:commentRss>http://ewert-technologies.ca/blog/blog5.php?tempskin=_rss2&amp;disp=comments&amp;p=47</wfw:commentRss>
		<feedburner:origLink>http://ewert-technologies.ca/blog/blog5.php/adding-style-and-color-to-blackberry-labels</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/nK8pQB7s-4E/adding-style-and-color-to-blackberry-labels</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/i7fQ2MlTCeQ/adding-style-and-color-to-blackberry-labels</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/DkK75H0Uuis/adding-style-and-color-to-blackberry-labels</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/ewa45HC2Et4/adding-style-and-color-to-blackberry-labels</feedburner:origLink></item>
				<item>
			<title>How to get rid of DAO.msi pop up, after installing Roxio Media Manager</title>
			<link>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/hqL228GV3aY/get-rid-dao-msi-popup</link>
			<pubDate>Fri, 12 Feb 2010 20:06:43 +0000</pubDate>			<dc:creator>victor.ewert</dc:creator>
			<category domain="main">Articles</category>			<guid isPermaLink="false">46@http://ewert-technologies.ca/blog/</guid>
						<description>&lt;p style="text-align: left;"&gt;&lt;!-- Adsense block #13 not displayed since it exceed the limit of 3 --&gt;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;I recently installed Blackberry Desktop Manager 5.0, and then as part of that, installed Roxio Media Manager.&amp;#160; Ever since, I would get sporadic pop-ups looking for DAO.msi to install.&amp;#160; I tried to find a way to get rid of this annoying problem, and most solutions I found told me to unregister and then re-register the .dll as follows:&lt;/p&gt;
&lt;p style="text-align: left;"&gt;Unregister:&lt;/p&gt;
&lt;ol style="list-style-type: decimal; text-align: left;"&gt;
&lt;li&gt;On the taskbar, click &lt;strong&gt;Start&lt;/strong&gt; &amp;gt; &lt;strong&gt;Run&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the Run dialog box, type the following:&lt;br /&gt; &lt;code&gt;regsvr32 /u "C:\Program Files\Common Files\Microsoft  Shared\DAO\dao360.dll&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="text-align: left;"&gt;Register:&lt;/p&gt;
&lt;ol style="list-style-type: decimal; text-align: left;"&gt;
&lt;li&gt;On the taskbar, click &lt;strong&gt;Start&lt;/strong&gt; &amp;gt; &lt;strong&gt;Run&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the Run dialog box, type the following: &lt;br /&gt; &lt;code&gt;regsvr32 "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="text-align: left;"&gt;I tried this, but it didn't work.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;I also read about solutions to reinstall Microsoft Office, but I never had Office installed.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;I think the problem I had, came from having an ATI video card a while back, and then I switched to an NVidia card and in the process I uninstalled my ATI software.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;The solution I finally found to work, was to go to the ATI/AMD site and download and install the DAO/MDAC which is part of ATI Multimedia Center.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;The link to download is here: &lt;a title="ATI Multimedia Software" href="http://support.amd.com/us/gpudownload/Pages/mmc9-14.aspx" target="_blank"&gt;http://support.amd.com/us/gpudownload/Pages/mmc9-14.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;This link may change, so the way I found it was to go to ATI/AMD driver site.&amp;#160; I then searched for drivers for Windows XP Professional/Home, All-in-Wonder, All-in-Wonder Radeon Series.&amp;#160; I then went to ATI Multimedia Software, which includes 4 components.&amp;#160; I downloaded component 1: DAO/MDAC (9-14_mmc_uci.exe).&amp;#160; After installing this, my problem went away.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;Hopefully this can help someone else who is facing this annoying problem.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;My System: Windows XP Pro SP3&lt;/p&gt;
&lt;p style="text-align: left;"&gt;&lt;!-- Adsense block #14 not displayed since it exceed the limit of 3 --&gt;&lt;/p&gt;&lt;div class="item_footer"&gt;&lt;p&gt;&lt;small&gt;&lt;a href="http://ewert-technologies.ca/blog/blog5.php/get-rid-dao-msi-popup"&gt;Original post&lt;/a&gt; blogged on &lt;a href="http://b2evolution.net/"&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p style="text-align: left;"><!-- Adsense block #15 not displayed since it exceed the limit of 3 --></p>
<p style="text-align: left;">I recently installed Blackberry Desktop Manager 5.0, and then as part of that, installed Roxio Media Manager.&#160; Ever since, I would get sporadic pop-ups looking for DAO.msi to install.&#160; I tried to find a way to get rid of this annoying problem, and most solutions I found told me to unregister and then re-register the .dll as follows:</p>
<p style="text-align: left;">Unregister:</p>
<ol style="list-style-type: decimal; text-align: left;">
<li>On the taskbar, click <strong>Start</strong> &gt; <strong>Run</strong>.</li>
<li>In the Run dialog box, type the following:<br /> <code>regsvr32 /u "C:\Program Files\Common Files\Microsoft  Shared\DAO\dao360.dll</code></li>
<li>Click <strong>OK</strong>.</li>
</ol>
<p style="text-align: left;">Register:</p>
<ol style="list-style-type: decimal; text-align: left;">
<li>On the taskbar, click <strong>Start</strong> &gt; <strong>Run</strong>.</li>
<li>In the Run dialog box, type the following: <br /> <code>regsvr32 "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll"</code></li>
<li>Click <strong>OK</strong>.</li>
</ol>
<p style="text-align: left;">I tried this, but it didn't work.</p>
<p style="text-align: left;">I also read about solutions to reinstall Microsoft Office, but I never had Office installed.</p>
<p style="text-align: left;">I think the problem I had, came from having an ATI video card a while back, and then I switched to an NVidia card and in the process I uninstalled my ATI software.</p>
<p style="text-align: left;">The solution I finally found to work, was to go to the ATI/AMD site and download and install the DAO/MDAC which is part of ATI Multimedia Center.</p>
<p style="text-align: left;">The link to download is here: <a title="ATI Multimedia Software" href="http://support.amd.com/us/gpudownload/Pages/mmc9-14.aspx" target="_blank">http://support.amd.com/us/gpudownload/Pages/mmc9-14.aspx</a></p>
<p style="text-align: left;">This link may change, so the way I found it was to go to ATI/AMD driver site.&#160; I then searched for drivers for Windows XP Professional/Home, All-in-Wonder, All-in-Wonder Radeon Series.&#160; I then went to ATI Multimedia Software, which includes 4 components.&#160; I downloaded component 1: DAO/MDAC (9-14_mmc_uci.exe).&#160; After installing this, my problem went away.</p>
<p style="text-align: left;">Hopefully this can help someone else who is facing this annoying problem.</p>
<p style="text-align: left;">My System: Windows XP Pro SP3</p>
<p style="text-align: left;"><!-- Adsense block #16 not displayed since it exceed the limit of 3 --></p><div class="item_footer"><p><small><a href="http://ewert-technologies.ca/blog/blog5.php/get-rid-dao-msi-popup">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>
<p><a href="http://feedads.g.doubleclick.net/~a/DPdFZCGpIWHz6X5qveWaeZ5nVXM/0/da"><img src="http://feedads.g.doubleclick.net/~a/DPdFZCGpIWHz6X5qveWaeZ5nVXM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/DPdFZCGpIWHz6X5qveWaeZ5nVXM/1/da"><img src="http://feedads.g.doubleclick.net/~a/DPdFZCGpIWHz6X5qveWaeZ5nVXM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/iOSW0Uf-WlM" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/ozPAJh3jw1DGgwEJDgGF1vsUSXI/0/da"><img src="http://feedads.g.doubleclick.net/~a/ozPAJh3jw1DGgwEJDgGF1vsUSXI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ozPAJh3jw1DGgwEJDgGF1vsUSXI/1/da"><img src="http://feedads.g.doubleclick.net/~a/ozPAJh3jw1DGgwEJDgGF1vsUSXI/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/QWQJK0CexVM" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/CMdNvBNVNjc7i0RfGBkW_BJjMdg/0/da"><img src="http://feedads.g.doubleclick.net/~a/CMdNvBNVNjc7i0RfGBkW_BJjMdg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/CMdNvBNVNjc7i0RfGBkW_BJjMdg/1/da"><img src="http://feedads.g.doubleclick.net/~a/CMdNvBNVNjc7i0RfGBkW_BJjMdg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/_ERan5pYhqU" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/Y4_l-DNAdf2jP8Avr8xKy6xw5b4/0/da"><img src="http://feedads.g.doubleclick.net/~a/Y4_l-DNAdf2jP8Avr8xKy6xw5b4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Y4_l-DNAdf2jP8Avr8xKy6xw5b4/1/da"><img src="http://feedads.g.doubleclick.net/~a/Y4_l-DNAdf2jP8Avr8xKy6xw5b4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/2RwXQS3eScg" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/07BicWGNrxyP-DvFSMRgGBpO_ks/0/da"><img src="http://feedads.g.doubleclick.net/~a/07BicWGNrxyP-DvFSMRgGBpO_ks/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/07BicWGNrxyP-DvFSMRgGBpO_ks/1/da"><img src="http://feedads.g.doubleclick.net/~a/07BicWGNrxyP-DvFSMRgGBpO_ks/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/hqL228GV3aY" height="1" width="1"/>]]></content:encoded>
								<comments>http://ewert-technologies.ca/blog/blog5.php/get-rid-dao-msi-popup#comments</comments>
			<wfw:commentRss>http://ewert-technologies.ca/blog/blog5.php?tempskin=_rss2&amp;disp=comments&amp;p=46</wfw:commentRss>
		<feedburner:origLink>http://ewert-technologies.ca/blog/blog5.php/get-rid-dao-msi-popup</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/iOSW0Uf-WlM/get-rid-dao-msi-popup</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/QWQJK0CexVM/get-rid-dao-msi-popup</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/_ERan5pYhqU/get-rid-dao-msi-popup</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/2RwXQS3eScg/get-rid-dao-msi-popup</feedburner:origLink></item>
				<item>
			<title>PWMinder Going Mobile</title>
			<link>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/ncjknvxNbgs/pwminder-going-mobile</link>
			<pubDate>Fri, 29 Jan 2010 17:45:27 +0000</pubDate>			<dc:creator>victor.ewert</dc:creator>
			<category domain="main">Software News</category>			<guid isPermaLink="false">45@http://ewert-technologies.ca/blog/</guid>
						<description>&lt;p&gt;&lt;!-- Adsense block #17 not displayed since it exceed the limit of 3 --&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;a title="PWMinder" href="http://www.ewert-technologies.ca/products/pwminder/index.html" target="_blank"&gt;PWMinder&lt;/a&gt; is a cross-platform Password Management System, that allows users to securely store and manage all of their personal password information.&amp;#160; Currently PWMinder can run on Windows, Linux and Mac (intel), and the password repository files generated are portable from one platform to another.&amp;#160; For example, a password repository file could be created on a Windows computer; the file could then be moved to Mac, opened, edited, and then moved to a different Windows computer to be accessed.&lt;/p&gt;
&lt;p&gt;This is great if all you use are desktop computers, but what about password management on your mobile devices, such as a Blackberry or iPhone? Good new! Development is currently underway to create PWMinder for the Blackberry, with plans to follow up with a version for iPhone/iPod.&amp;#160; If there is demand, versions may also be created for Android phones and/or Palm devices.&lt;/p&gt;
&lt;p&gt;Once complete, a users could create a password repository at work on a Windows desktop, copy the file to their Blackberry to access passwords on their way home.&amp;#160; They could then copy the file to their Mac at home, add a few more passwords, then copy the file to their iPhone for use on the weekend.&amp;#160; With PWMinder you will be able to have access to all of your passwords, no matter what platform, OS, or handheld device you are on!&lt;/p&gt;
&lt;p&gt;Planned features for PWMinder on the Blackberry:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Password records can be organized into Categories&lt;/li&gt;
&lt;li&gt;Ability to search for password records&lt;/li&gt;
&lt;li&gt;Easy copying of logins and passwords&lt;/li&gt;
&lt;li&gt;Open web links directly from within PWMinder&lt;/li&gt;
&lt;li&gt;Reminders for password expiry can be added to you calendar or todo list&lt;/li&gt;
&lt;li&gt;Includes a Password Generator tool to create secure passwords&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have any other ideas for what you would like a Password Manager to do for you, on the mobile device, either add comment to this blog, enter a suggestion on the &lt;a title="Ewert Technologies Support" href="http://www.ewert-technologies.ca/support.html" target="_blank"&gt;Ewert Technologies support page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PWMinder on the Blackberry should be available at the end of March, 2010 with development of PWMinder for the iPhone to follow.&amp;#160; Stay tuned for updates.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;a href="http://affiliate.buy.com/gateway.aspx?adid=17662&amp;amp;aid=10486053&amp;amp;pid=3479743&amp;amp;sURL=http%3A//www.buy.com/specialty_store_7/new-iphone-accessories/64643.html" target="_blank"&gt;iPhone Accessories! Get them while they're HOT!&lt;/a&gt;&lt;img src="http://www.afcyhf.com/image-3479743-10486053" width="1" height="1" border="0" /&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;!-- Adsense block #18 not displayed since it exceed the limit of 3 --&gt;&lt;/p&gt;&lt;div class="item_footer"&gt;&lt;p&gt;&lt;small&gt;&lt;a href="http://ewert-technologies.ca/blog/blog5.php/pwminder-going-mobile"&gt;Original post&lt;/a&gt; blogged on &lt;a href="http://b2evolution.net/"&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p><!-- Adsense block #19 not displayed since it exceed the limit of 3 --></p>
<p>&#160;</p>
<p><a title="PWMinder" href="http://www.ewert-technologies.ca/products/pwminder/index.html" target="_blank">PWMinder</a> is a cross-platform Password Management System, that allows users to securely store and manage all of their personal password information.&#160; Currently PWMinder can run on Windows, Linux and Mac (intel), and the password repository files generated are portable from one platform to another.&#160; For example, a password repository file could be created on a Windows computer; the file could then be moved to Mac, opened, edited, and then moved to a different Windows computer to be accessed.</p>
<p>This is great if all you use are desktop computers, but what about password management on your mobile devices, such as a Blackberry or iPhone? Good new! Development is currently underway to create PWMinder for the Blackberry, with plans to follow up with a version for iPhone/iPod.&#160; If there is demand, versions may also be created for Android phones and/or Palm devices.</p>
<p>Once complete, a users could create a password repository at work on a Windows desktop, copy the file to their Blackberry to access passwords on their way home.&#160; They could then copy the file to their Mac at home, add a few more passwords, then copy the file to their iPhone for use on the weekend.&#160; With PWMinder you will be able to have access to all of your passwords, no matter what platform, OS, or handheld device you are on!</p>
<p>Planned features for PWMinder on the Blackberry:</p>
<ul>
<li>Password records can be organized into Categories</li>
<li>Ability to search for password records</li>
<li>Easy copying of logins and passwords</li>
<li>Open web links directly from within PWMinder</li>
<li>Reminders for password expiry can be added to you calendar or todo list</li>
<li>Includes a Password Generator tool to create secure passwords</li>
</ul>
<p>If you have any other ideas for what you would like a Password Manager to do for you, on the mobile device, either add comment to this blog, enter a suggestion on the <a title="Ewert Technologies Support" href="http://www.ewert-technologies.ca/support.html" target="_blank">Ewert Technologies support page</a>.</p>
<p>PWMinder on the Blackberry should be available at the end of March, 2010 with development of PWMinder for the iPhone to follow.&#160; Stay tuned for updates.</p>
<p></p>
<a href="http://affiliate.buy.com/gateway.aspx?adid=17662&amp;aid=10486053&amp;pid=3479743&amp;sURL=http%3A//www.buy.com/specialty_store_7/new-iphone-accessories/64643.html" target="_blank">iPhone Accessories! Get them while they're HOT!</a><img src="http://www.afcyhf.com/image-3479743-10486053" width="1" height="1" border="0" />
<p>&#160;</p>
<p><!-- Adsense block #20 not displayed since it exceed the limit of 3 --></p><div class="item_footer"><p><small><a href="http://ewert-technologies.ca/blog/blog5.php/pwminder-going-mobile">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>
<p><a href="http://feedads.g.doubleclick.net/~a/0tT1YnoRuq-5HBIpB7l9HH2xQKg/0/da"><img src="http://feedads.g.doubleclick.net/~a/0tT1YnoRuq-5HBIpB7l9HH2xQKg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/0tT1YnoRuq-5HBIpB7l9HH2xQKg/1/da"><img src="http://feedads.g.doubleclick.net/~a/0tT1YnoRuq-5HBIpB7l9HH2xQKg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/toAVBdtheKA" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/kmY0y74YhH5ZGxGMDyjO07KpgQE/0/da"><img src="http://feedads.g.doubleclick.net/~a/kmY0y74YhH5ZGxGMDyjO07KpgQE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/kmY0y74YhH5ZGxGMDyjO07KpgQE/1/da"><img src="http://feedads.g.doubleclick.net/~a/kmY0y74YhH5ZGxGMDyjO07KpgQE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/lcShhj5y_i8" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/WttRQnDVpRzLIQ7wKOOfNb8LWTY/0/da"><img src="http://feedads.g.doubleclick.net/~a/WttRQnDVpRzLIQ7wKOOfNb8LWTY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/WttRQnDVpRzLIQ7wKOOfNb8LWTY/1/da"><img src="http://feedads.g.doubleclick.net/~a/WttRQnDVpRzLIQ7wKOOfNb8LWTY/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/vHJa7B2Cvh8" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/H9rwUbeX_o5Q1AOfs78GzS2YtmM/0/da"><img src="http://feedads.g.doubleclick.net/~a/H9rwUbeX_o5Q1AOfs78GzS2YtmM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/H9rwUbeX_o5Q1AOfs78GzS2YtmM/1/da"><img src="http://feedads.g.doubleclick.net/~a/H9rwUbeX_o5Q1AOfs78GzS2YtmM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/E_rqCv2Slow" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/57hR4lEovRZsilM-xaFbsDC9rKo/0/da"><img src="http://feedads.g.doubleclick.net/~a/57hR4lEovRZsilM-xaFbsDC9rKo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/57hR4lEovRZsilM-xaFbsDC9rKo/1/da"><img src="http://feedads.g.doubleclick.net/~a/57hR4lEovRZsilM-xaFbsDC9rKo/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/ncjknvxNbgs" height="1" width="1"/>]]></content:encoded>
								<comments>http://ewert-technologies.ca/blog/blog5.php/pwminder-going-mobile#comments</comments>
			<wfw:commentRss>http://ewert-technologies.ca/blog/blog5.php?tempskin=_rss2&amp;disp=comments&amp;p=45</wfw:commentRss>
		<feedburner:origLink>http://ewert-technologies.ca/blog/blog5.php/pwminder-going-mobile</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/toAVBdtheKA/pwminder-going-mobile</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/lcShhj5y_i8/pwminder-going-mobile</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/vHJa7B2Cvh8/pwminder-going-mobile</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/E_rqCv2Slow/pwminder-going-mobile</feedburner:origLink></item>
				<item>
			<title>Installing Cross-Platform Java Applications on a Budget</title>
			<link>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/JzHMcPYH87A/install-cross-platform-java-applications</link>
			<pubDate>Mon, 04 Jan 2010 21:13:05 +0000</pubDate>			<dc:creator>victor.ewert</dc:creator>
			<category domain="main">Articles</category>			<guid isPermaLink="false">44@http://ewert-technologies.ca/blog/</guid>
						<description>&lt;p style="text-align: left;"&gt;&lt;!-- Adsense block #21 not displayed since it exceed the limit of 3 --&gt;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;&amp;#160;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;&lt;span style="font-size: x-small;"&gt;Note: this article originally appeard in the December 2009 issue of &lt;strong&gt;ASPects&lt;/strong&gt;, &lt;em&gt;The Monthly Newsletter of the &lt;a title="ASP" href="http://www.asp-shareware.org/" target="_blank"&gt;Association of Shareware Professionals&lt;/a&gt;&lt;/em&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;As most Java developers have come to realize, one of the most challenging aspects of developing cross-platform Java applications, is how to deploy them, in the most native way possible, to their various target platforms e.g. Windows, Linux and Mac.&amp;#160; There are several commercial solutions available, but these cost in the range of $500 to $2000, which may be a bit steep for an independent software developer.&amp;#160; In this article, I will provide an overview of how I approached this problem, while developing &lt;a title="PWMinder" href="http://www.ewert-technologies.ca/products/pwminder/index.html" target="_blank"&gt;PWMinder&lt;/a&gt;, using a combination of open source tools; and I hope this will provide a framework for those of you facing similar issues.&lt;br /&gt;&lt;br /&gt;In my search for a free solution, the first thing I had to accept was, that no single solution would meet all of my needs, and instead, I would need to us a combination of different tools.&amp;#160; This approach requires a lot more work than would be needed using a commercial solution, but this is the price for having something for free.&amp;#160; The following are the tools I used to create the installers.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;&lt;br /&gt;&lt;strong&gt;Apache Ant&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Most Java developers should be familiar with Apache Ant.&amp;#160; It is a build tool that comes with many built-in tasks, for things such as moving and deleting files, creating folder structures, archiving files, etc., to build and packages applications.&amp;#160; While it can be used for building any kind of software, it is targeted for Java applications and includes tasks to compile Java code, create jar files, create Javadoc API documentation, etc.&amp;#160;&amp;#160; Apache Ant is also extensible, and custom tasks can be created for it.&amp;#160; Many third party tools can be incorporated directly into Ant by using their supplied tasks.&amp;#160; In my process of creating cross-platform installers, ApacheAnt serves the main control center.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;&lt;br /&gt;&lt;strong&gt;Launch4j&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Launch4j is a tool that wraps an executable .jar file into a native Windows executable (.exe).&amp;#160; Using Launch4j you can set an icon for your .exe, set Windows file manifests, create a native pre-JRE splash screen, set both environment variables and Java runtime parameters, and more.&amp;#160; Launch4J come with a GUI front end, that is used to set up the configuration parameters.&amp;#160; This configuration is saved as an .xml file that can also be edited by hand.&amp;#160; Launch4j comes with an Ant task, and can, therefore, be easily integrated into an Ant script.&amp;#160; When launching from an Ant script, variables defined in the Ant script, such as build number, etc., can be passed in to Launch4j, providing even more flexibility.&amp;#160; Launch4j basically allows your executable .jar file to act like a Windows .exe.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;NSIS&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;NSIS is a tool used to generate standard Windows based installers.&amp;#160; NSIS is script based and is quite powerful, allowing for a lot of flexibility when creating an installer.&amp;#160; I found that this flexibility comes with some complexity, and found there to be a bit of a learning curve when it comes to using NSIS scripts.&amp;#160; Having said that, there are many examples available, that can help to set up a basic installer quite quickly.&amp;#160; The installer allows for creation of Windows short cuts, creation of an uninstaller, adding and/or updating Windows registry settings.&amp;#160; During the install, It can display panels prompting users for install location, display an license screen and even start he application when the installer has completed.&amp;#160; As mentioned NSIS is script based, and while you can use any text editor, I would recommend either using EclipseNSIS (plugin for Eclipse) or HM NSIS edit, which both include wizards to help get you started.&amp;#160; While NSIS does not come with Ant task, it can be&amp;#160; run from Ant, using Ant's ability to execute commands.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;JarBundler Ant Task&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;JarBundler is an Ant extension that is used to create a Mac .app bundle from an executable .jar file, which can be used to run a Java application on a Mac.&amp;#160; An .app bundle is basically a specialized folder structure containing resources, and configuration information to run an application.&amp;#160; When this folder is copied onto a Mac, it appears as a file that is used to start the application.&amp;#160; JarBundler is configured within an Ant script as an Ant task.&amp;#160; The configuration is quite extensive and allows you to control many properties of the .app bundle including its icon, version, working directory, help book location and more.&amp;#160; Most of these properties are mapped to bundle variables defined in Mac OS X Runtime Configuration Guidelines (http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPRuntimeConfig/Runtime_Configuration.pdf)&lt;/p&gt;
&lt;p style="text-align: left;"&gt;&lt;br /&gt;&lt;strong&gt;IzPack&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;IzPack is a cross-platform installers that creates an installers as an executable .jar file.&amp;#160; Similar to NSIS, it allow for panels to display license information, select installation folder, etc.&amp;#160; It also includes a utility to create short cuts for both Windows and Unix, and supports creating an uninstaller.&amp;#160; Both the installer and uninstaller are .jar files, however, which may not be what users are expecting when installing software.&amp;#160; IzPack is configured using one or more xml files and can then be executed within Ant using an IzPack task.&amp;#160; While it can create installers for Windows, the installer produced by NSIS looks more native and has more Windows specific features, which is why for Windows I use NSIS.&lt;br /&gt;&lt;br /&gt;The Diagram below gives the basic flow I used to create the installers.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;&lt;img title="Installer Flow Diagram" src="/blog/custom_img/installer_flow.png" alt="Installer Flow Diagram" /&gt;&lt;br /&gt;&lt;br /&gt;The first step is to use Ant, to compile the Java source, generate an executable .jar file (app.jar in the figure above) and collect and organize any other files necessary for the application (e.g. library .jar file, and support files such as user guide, release notes, license files, images, etc.) into a staging area.&amp;#160; Starting from app.jar, the library and support files, the paths for each Operating System diverge.&lt;br /&gt;&lt;br /&gt;On Windows, most user would expect to download an executable (.exe) setup file, which when executed, would launch an installation wizard, that would lead them through a set of steps to install the application.&amp;#160; The application itself would be available also as an .exe, and shortcuts would be generated in the Start menu.&amp;#160; To accomplish this, I first used Launch4j, to convert the app.jar file to a Windows .exe file (app.exe).&amp;#160; Next, using Ant, I organized app.exe with any necessary library .jar file and support files into a staging location.&amp;#160; I then used NSIS to to create an installer (setup_win.exe) which, when run creates the short cuts, uninstaller, registry entries, etc.&amp;#160; The user can then download setup_win.exe directly and run it.&lt;br /&gt;&lt;br /&gt;Linux users are a little more relaxed about how to install software, but I still wanted something more professional, than to simply unzip the files to a desired location.&amp;#160; For Linux, I kept app.jar as it is, and created a bash script to execute it.&amp;#160;&amp;#160; Next, using Ant, I organized app.jar with any necessary library .jar files, the bash script and support files into a staging location. I then used IzPack to create the installer, as setup.jar file.&amp;#160; Rather than have the user download a .jar file, which they may not be as familiar with, I put the setup.jar file into a .tar.gz file. The user would download the setup_lin.tar.gz file and extract setup.jar file.&amp;#160; They would then run the setup.jar, which would install the application and create shortcuts.&amp;#160; The user can then either start the application using the short cuts created or by running the bash scripts.&lt;br /&gt;&lt;br /&gt;On Mac, users expect use .app bundles to run their applications.&amp;#160; So for Mac deployment, I used the ant based utility call JarBundler to convert app.jar, to a an .app bundle (app.app).&amp;#160; I then used IzPack to take app.app, the library files, and the support files and create an installer .jar file (setup.jar).&amp;#160; I then used IzPack's own utility to convert this setup.jar to an installer .app (setup_mac.app).&amp;#160; Lastly, to facilitate downloading of the setup_mac.app folder structure, I put it into a .zip file (setup_mac.zip).&amp;#160; The user would download the setup_mac.zip file, extract the setup_mac.app.&amp;#160; They would then run setup_mac.app which would install the application, including app.app.&amp;#160; To run the application the user would then double-click the app.app, just as they would for any other application they have.&lt;br /&gt;&lt;br /&gt;While there are a lot of steps involved, what is nice about all of the above tools is that they can be all integrated into Apache Ant, so at the end I can&amp;#160; compile the code, create the executable .jar file, organize the files and then create the installers for Windows, Linux and Mac, all from one Ant script.&lt;/p&gt;
&lt;p style="text-align: left;"&gt;&lt;br /&gt;&lt;strong&gt;Resources&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Apache Ant - &lt;a title="Apache Ant" href="http://ant.apache.org/" target="_blank"&gt;http://ant.apache.org/&lt;/a&gt; &lt;br /&gt;Launch4j - &lt;a title="Launch4j" href="http://launch4j.sourceforge.net/" target="_blank"&gt;http://launch4j.sourceforge.net/&lt;/a&gt; &lt;br /&gt;NSIS - &lt;a title="NSIS" href="http://nsis.sourceforge.net/" target="_blank"&gt;http://nsis.sourceforge.net/&lt;/a&gt; &lt;br /&gt;JarBundler Ant Task - &lt;a title="JarBundler" href="http://informagen.com/JarBundler/" target="_blank"&gt;http://informagen.com/JarBundler/&lt;/a&gt; &lt;br /&gt;IzPack - &lt;a title="IzPack" href="http://izpack.org/" target="_blank"&gt;http://izpack.org/&lt;/a&gt;&lt;/p&gt;&lt;div class="item_footer"&gt;&lt;p&gt;&lt;small&gt;&lt;a href="http://ewert-technologies.ca/blog/blog5.php/install-cross-platform-java-applications"&gt;Original post&lt;/a&gt; blogged on &lt;a href="http://b2evolution.net/"&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p style="text-align: left;"><!-- Adsense block #22 not displayed since it exceed the limit of 3 --></p>
<p style="text-align: left;">&#160;</p>
<p style="text-align: left;"><span style="font-size: x-small;">Note: this article originally appeard in the December 2009 issue of <strong>ASPects</strong>, <em>The Monthly Newsletter of the <a title="ASP" href="http://www.asp-shareware.org/" target="_blank">Association of Shareware Professionals</a></em>.</span></p>
<p style="text-align: left;">As most Java developers have come to realize, one of the most challenging aspects of developing cross-platform Java applications, is how to deploy them, in the most native way possible, to their various target platforms e.g. Windows, Linux and Mac.&#160; There are several commercial solutions available, but these cost in the range of $500 to $2000, which may be a bit steep for an independent software developer.&#160; In this article, I will provide an overview of how I approached this problem, while developing <a title="PWMinder" href="http://www.ewert-technologies.ca/products/pwminder/index.html" target="_blank">PWMinder</a>, using a combination of open source tools; and I hope this will provide a framework for those of you facing similar issues.<br /><br />In my search for a free solution, the first thing I had to accept was, that no single solution would meet all of my needs, and instead, I would need to us a combination of different tools.&#160; This approach requires a lot more work than would be needed using a commercial solution, but this is the price for having something for free.&#160; The following are the tools I used to create the installers.</p>
<p style="text-align: left;"><br /><strong>Apache Ant</strong><br /><br />Most Java developers should be familiar with Apache Ant.&#160; It is a build tool that comes with many built-in tasks, for things such as moving and deleting files, creating folder structures, archiving files, etc., to build and packages applications.&#160; While it can be used for building any kind of software, it is targeted for Java applications and includes tasks to compile Java code, create jar files, create Javadoc API documentation, etc.&#160;&#160; Apache Ant is also extensible, and custom tasks can be created for it.&#160; Many third party tools can be incorporated directly into Ant by using their supplied tasks.&#160; In my process of creating cross-platform installers, ApacheAnt serves the main control center.</p>
<p style="text-align: left;"><br /><strong>Launch4j</strong><br /><br />Launch4j is a tool that wraps an executable .jar file into a native Windows executable (.exe).&#160; Using Launch4j you can set an icon for your .exe, set Windows file manifests, create a native pre-JRE splash screen, set both environment variables and Java runtime parameters, and more.&#160; Launch4J come with a GUI front end, that is used to set up the configuration parameters.&#160; This configuration is saved as an .xml file that can also be edited by hand.&#160; Launch4j comes with an Ant task, and can, therefore, be easily integrated into an Ant script.&#160; When launching from an Ant script, variables defined in the Ant script, such as build number, etc., can be passed in to Launch4j, providing even more flexibility.&#160; Launch4j basically allows your executable .jar file to act like a Windows .exe.<br /><br /><br /><strong>NSIS</strong><br /><br />NSIS is a tool used to generate standard Windows based installers.&#160; NSIS is script based and is quite powerful, allowing for a lot of flexibility when creating an installer.&#160; I found that this flexibility comes with some complexity, and found there to be a bit of a learning curve when it comes to using NSIS scripts.&#160; Having said that, there are many examples available, that can help to set up a basic installer quite quickly.&#160; The installer allows for creation of Windows short cuts, creation of an uninstaller, adding and/or updating Windows registry settings.&#160; During the install, It can display panels prompting users for install location, display an license screen and even start he application when the installer has completed.&#160; As mentioned NSIS is script based, and while you can use any text editor, I would recommend either using EclipseNSIS (plugin for Eclipse) or HM NSIS edit, which both include wizards to help get you started.&#160; While NSIS does not come with Ant task, it can be&#160; run from Ant, using Ant's ability to execute commands.<br /><br /><br /><strong>JarBundler Ant Task</strong><br /><br />JarBundler is an Ant extension that is used to create a Mac .app bundle from an executable .jar file, which can be used to run a Java application on a Mac.&#160; An .app bundle is basically a specialized folder structure containing resources, and configuration information to run an application.&#160; When this folder is copied onto a Mac, it appears as a file that is used to start the application.&#160; JarBundler is configured within an Ant script as an Ant task.&#160; The configuration is quite extensive and allows you to control many properties of the .app bundle including its icon, version, working directory, help book location and more.&#160; Most of these properties are mapped to bundle variables defined in Mac OS X Runtime Configuration Guidelines (http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPRuntimeConfig/Runtime_Configuration.pdf)</p>
<p style="text-align: left;"><br /><strong>IzPack</strong><br /><br />IzPack is a cross-platform installers that creates an installers as an executable .jar file.&#160; Similar to NSIS, it allow for panels to display license information, select installation folder, etc.&#160; It also includes a utility to create short cuts for both Windows and Unix, and supports creating an uninstaller.&#160; Both the installer and uninstaller are .jar files, however, which may not be what users are expecting when installing software.&#160; IzPack is configured using one or more xml files and can then be executed within Ant using an IzPack task.&#160; While it can create installers for Windows, the installer produced by NSIS looks more native and has more Windows specific features, which is why for Windows I use NSIS.<br /><br />The Diagram below gives the basic flow I used to create the installers.</p>
<p style="text-align: left;"><img title="Installer Flow Diagram" src="http://ewert-technologies.ca/blog/custom_img/installer_flow.png" alt="Installer Flow Diagram" /><br /><br />The first step is to use Ant, to compile the Java source, generate an executable .jar file (app.jar in the figure above) and collect and organize any other files necessary for the application (e.g. library .jar file, and support files such as user guide, release notes, license files, images, etc.) into a staging area.&#160; Starting from app.jar, the library and support files, the paths for each Operating System diverge.<br /><br />On Windows, most user would expect to download an executable (.exe) setup file, which when executed, would launch an installation wizard, that would lead them through a set of steps to install the application.&#160; The application itself would be available also as an .exe, and shortcuts would be generated in the Start menu.&#160; To accomplish this, I first used Launch4j, to convert the app.jar file to a Windows .exe file (app.exe).&#160; Next, using Ant, I organized app.exe with any necessary library .jar file and support files into a staging location.&#160; I then used NSIS to to create an installer (setup_win.exe) which, when run creates the short cuts, uninstaller, registry entries, etc.&#160; The user can then download setup_win.exe directly and run it.<br /><br />Linux users are a little more relaxed about how to install software, but I still wanted something more professional, than to simply unzip the files to a desired location.&#160; For Linux, I kept app.jar as it is, and created a bash script to execute it.&#160;&#160; Next, using Ant, I organized app.jar with any necessary library .jar files, the bash script and support files into a staging location. I then used IzPack to create the installer, as setup.jar file.&#160; Rather than have the user download a .jar file, which they may not be as familiar with, I put the setup.jar file into a .tar.gz file. The user would download the setup_lin.tar.gz file and extract setup.jar file.&#160; They would then run the setup.jar, which would install the application and create shortcuts.&#160; The user can then either start the application using the short cuts created or by running the bash scripts.<br /><br />On Mac, users expect use .app bundles to run their applications.&#160; So for Mac deployment, I used the ant based utility call JarBundler to convert app.jar, to a an .app bundle (app.app).&#160; I then used IzPack to take app.app, the library files, and the support files and create an installer .jar file (setup.jar).&#160; I then used IzPack's own utility to convert this setup.jar to an installer .app (setup_mac.app).&#160; Lastly, to facilitate downloading of the setup_mac.app folder structure, I put it into a .zip file (setup_mac.zip).&#160; The user would download the setup_mac.zip file, extract the setup_mac.app.&#160; They would then run setup_mac.app which would install the application, including app.app.&#160; To run the application the user would then double-click the app.app, just as they would for any other application they have.<br /><br />While there are a lot of steps involved, what is nice about all of the above tools is that they can be all integrated into Apache Ant, so at the end I can&#160; compile the code, create the executable .jar file, organize the files and then create the installers for Windows, Linux and Mac, all from one Ant script.</p>
<p style="text-align: left;"><br /><strong>Resources</strong><br /><br />Apache Ant - <a title="Apache Ant" href="http://ant.apache.org/" target="_blank">http://ant.apache.org/</a> <br />Launch4j - <a title="Launch4j" href="http://launch4j.sourceforge.net/" target="_blank">http://launch4j.sourceforge.net/</a> <br />NSIS - <a title="NSIS" href="http://nsis.sourceforge.net/" target="_blank">http://nsis.sourceforge.net/</a> <br />JarBundler Ant Task - <a title="JarBundler" href="http://informagen.com/JarBundler/" target="_blank">http://informagen.com/JarBundler/</a> <br />IzPack - <a title="IzPack" href="http://izpack.org/" target="_blank">http://izpack.org/</a></p><div class="item_footer"><p><small><a href="http://ewert-technologies.ca/blog/blog5.php/install-cross-platform-java-applications">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>
<p><a href="http://feedads.g.doubleclick.net/~a/Z-JRiIQZwtN_T6kbFSb5N71Ci6w/0/da"><img src="http://feedads.g.doubleclick.net/~a/Z-JRiIQZwtN_T6kbFSb5N71Ci6w/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Z-JRiIQZwtN_T6kbFSb5N71Ci6w/1/da"><img src="http://feedads.g.doubleclick.net/~a/Z-JRiIQZwtN_T6kbFSb5N71Ci6w/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/_fdUKLxkmuI" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/9rN9aXGoiwucKVQyyaO9JF6dIU8/0/da"><img src="http://feedads.g.doubleclick.net/~a/9rN9aXGoiwucKVQyyaO9JF6dIU8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9rN9aXGoiwucKVQyyaO9JF6dIU8/1/da"><img src="http://feedads.g.doubleclick.net/~a/9rN9aXGoiwucKVQyyaO9JF6dIU8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/SwqfTgKh9EY" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/nE8cbBH5X_iNXooGWjLUxuxPa0s/0/da"><img src="http://feedads.g.doubleclick.net/~a/nE8cbBH5X_iNXooGWjLUxuxPa0s/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/nE8cbBH5X_iNXooGWjLUxuxPa0s/1/da"><img src="http://feedads.g.doubleclick.net/~a/nE8cbBH5X_iNXooGWjLUxuxPa0s/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/4_d-3wu-CBY" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/Ab8VKt_OisVsXk-CDxgE3Y0Wong/0/da"><img src="http://feedads.g.doubleclick.net/~a/Ab8VKt_OisVsXk-CDxgE3Y0Wong/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Ab8VKt_OisVsXk-CDxgE3Y0Wong/1/da"><img src="http://feedads.g.doubleclick.net/~a/Ab8VKt_OisVsXk-CDxgE3Y0Wong/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/Gs__uwLE9ZQ" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/fjzsbKFsqqqZxYDKGzfBa-ILGL0/0/da"><img src="http://feedads.g.doubleclick.net/~a/fjzsbKFsqqqZxYDKGzfBa-ILGL0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/fjzsbKFsqqqZxYDKGzfBa-ILGL0/1/da"><img src="http://feedads.g.doubleclick.net/~a/fjzsbKFsqqqZxYDKGzfBa-ILGL0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/JzHMcPYH87A" height="1" width="1"/>]]></content:encoded>
								<comments>http://ewert-technologies.ca/blog/blog5.php/install-cross-platform-java-applications#comments</comments>
			<wfw:commentRss>http://ewert-technologies.ca/blog/blog5.php?tempskin=_rss2&amp;disp=comments&amp;p=44</wfw:commentRss>
		<feedburner:origLink>http://ewert-technologies.ca/blog/blog5.php/install-cross-platform-java-applications</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/_fdUKLxkmuI/install-cross-platform-java-applications</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/SwqfTgKh9EY/install-cross-platform-java-applications</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/4_d-3wu-CBY/install-cross-platform-java-applications</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/Gs__uwLE9ZQ/install-cross-platform-java-applications</feedburner:origLink></item>
				<item>
			<title>Simplifying Logging for Blackberry Development, Part 2</title>
			<link>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/gKt3g3FodqM/simplifying-logging-for-blackberry-development-part-2</link>
			<pubDate>Thu, 31 Dec 2009 05:41:31 +0000</pubDate>			<dc:creator>victor.ewert</dc:creator>
			<category domain="main">Articles</category>			<guid isPermaLink="false">43@http://ewert-technologies.ca/blog/</guid>
						<description>&lt;p&gt;&lt;!-- Adsense block #23 not displayed since it exceed the limit of 3 --&gt;&lt;/p&gt;
&lt;p align="left"&gt;In Part 1, I talked about how to simplify logging to System.out, by creating a set of convenience methods.&amp;#160; In Part 2, I will discuss logging to Blackberry's Event Log.&amp;#160; The Event Log is a log on the Blackberry device itself and is the place, as the name indicates, where applications can write event logs.&amp;#160; This is the place applications should write error logs that can help in troubleshooting problems in the field where the device is not attached to the debugger.&amp;#160; Users can access the Event Log by going to the Home screen then holding down ALT and typing "LGLG"&lt;br /&gt;&lt;br /&gt;Before an application can write to the event log, it needs to register itself using a GUID and an Application Name.&amp;#160; The GUID must be unique for the device, and the Application Name will be used in the log.&amp;#160; I suggest setting up some constants for these:&lt;/p&gt;

&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_short"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;public static final long GUID = 0x2051fd67b72d11L;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;public static final String APP_NAME = "PWMinder";&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;To register your application use the following method, typically in the main method of your application:&lt;/p&gt;

&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_short"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;EventLogger.register(Constants.GUID, Constants.APP_NAME, EventLogger.VIEWER_STRING);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;EventLogger.VIEWER_STRING&lt;/code&gt; indicates that you want to log String messages.&amp;#160; This can be changed later to log other message types.&lt;br /&gt;&lt;br /&gt;To log an event, use the &lt;code&gt;logEvent()&lt;/code&gt; method of &lt;code&gt;EventLogger&lt;/code&gt; as follows:&lt;/p&gt;

&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_short"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;String msg = "PWMinder has started";&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;EventLogger.logEvent(Constants.GUID, msg.getBytes(), EventLogger.ALWAYS_LOG);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;EventLogger.ALWAYS_LOG&lt;/code&gt; sets the logging level.&amp;#160; The following levels are available:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;DEBUG_INFO&lt;br /&gt;INFORMATION&lt;br /&gt;WARNING&lt;br /&gt;ERROR&lt;br /&gt;SEVERE_ERROR&lt;br /&gt;ALWAYS_LOG&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;By default, only events at &lt;code&gt;WARNING&lt;/code&gt; or lower are logged, but the default level can be changed by calling the &lt;code&gt;setMinimumLevel()&lt;/code&gt; method.&amp;#160; See the &lt;code&gt;&lt;a title="EventLogger API" href="http://www.blackberry.com/developers/docs/4.2.1api/net/rim/device/api/system/EventLogger.html" target="_blank"&gt;EventLogger&lt;/a&gt;&lt;/code&gt;&lt;a title="EventLogger API" href="http://www.blackberry.com/developers/docs/4.2.1api/net/rim/device/api/system/EventLogger.html" target="_blank"&gt;&lt;/a&gt; API for more details.&lt;br /&gt;&lt;br /&gt;To simplify logging to the event log, I have added the following static methods (modelled after &lt;a title="log4j" href="http://logging.apache.org/log4j/1.2/index.html]" target="_blank"&gt;log4j&lt;/a&gt;) to the Logger class from Part 1:&lt;/p&gt;

&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_long"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;private static void logEvent(String msg, int level) {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;EventLogger.logEvent(Constants.GUID, msg.getBytes(), level);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc3"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc4"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc5"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;public static void logDebugEvent(String msg) {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc6"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;logEvent(msg, EventLogger.DEBUG_INFO);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc7"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc8"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc9"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;public static void logInformationEvent(String msg) {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc0"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;logEvent(msg, EventLogger.INFORMATION);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc2"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc3"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;public static void logWarningEvent(String msg) {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc4"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;logEvent(msg, EventLogger.WARNING);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc5"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc6"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc7"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;public static void logErrorEvent(String msg) {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc8"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;logEvent(msg, EventLogger.ERROR);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc9"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc0"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;public static void logSevereErrorEvent(String msg) {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc2"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;logEvent(msg, EventLogger.SEVERE_ERROR);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc3"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc4"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc5"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;public static void logAlwaysEvent(String msg) {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc6"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;logEvent(msg, EventLogger.ALWAYS_LOG);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc7"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So to log an information message, in my code, I use:&lt;/p&gt;

&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_short"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;Logger.logInformationEvent("This is an information method");&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Much simpler!&lt;br /&gt;&lt;br /&gt;In the future, I might look into incorporating changing the viewer type, but so far I mainly just use the STRING_VIEWER.&lt;br /&gt;&lt;br /&gt;Hope this is helpful, and happy coding!&lt;/p&gt;
&lt;p&gt;&lt;!-- Adsense block #24 not displayed since it exceed the limit of 3 --&gt;&lt;/p&gt;&lt;div class="item_footer"&gt;&lt;p&gt;&lt;small&gt;&lt;a href="http://ewert-technologies.ca/blog/blog5.php/simplifying-logging-for-blackberry-development-part-2"&gt;Original post&lt;/a&gt; blogged on &lt;a href="http://b2evolution.net/"&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p><!-- Adsense block #25 not displayed since it exceed the limit of 3 --></p>
<p align="left">In Part 1, I talked about how to simplify logging to System.out, by creating a set of convenience methods.&#160; In Part 2, I will discuss logging to Blackberry's Event Log.&#160; The Event Log is a log on the Blackberry device itself and is the place, as the name indicates, where applications can write event logs.&#160; This is the place applications should write error logs that can help in troubleshooting problems in the field where the device is not attached to the debugger.&#160; Users can access the Event Log by going to the Home screen then holding down ALT and typing "LGLG"<br /><br />Before an application can write to the event log, it needs to register itself using a GUID and an Application Name.&#160; The GUID must be unique for the device, and the Application Name will be used in the log.&#160; I suggest setting up some constants for these:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">public static final long GUID = 0x2051fd67b72d11L;</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">public static final String APP_NAME = "PWMinder";</span></code></td></tr>
</table></div>

<p>To register your application use the following method, typically in the main method of your application:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">EventLogger.register(Constants.GUID, Constants.APP_NAME, EventLogger.VIEWER_STRING);</span></code></td></tr>
</table></div>

<p><code>EventLogger.VIEWER_STRING</code> indicates that you want to log String messages.&#160; This can be changed later to log other message types.<br /><br />To log an event, use the <code>logEvent()</code> method of <code>EventLogger</code> as follows:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">String msg = "PWMinder has started";</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">EventLogger.logEvent(Constants.GUID, msg.getBytes(), EventLogger.ALWAYS_LOG);</span></code></td></tr>
</table></div>

<p><code>EventLogger.ALWAYS_LOG</code> sets the logging level.&#160; The following levels are available:<br /><br /><code>DEBUG_INFO<br />INFORMATION<br />WARNING<br />ERROR<br />SEVERE_ERROR<br />ALWAYS_LOG</code><br /><br />By default, only events at <code>WARNING</code> or lower are logged, but the default level can be changed by calling the <code>setMinimumLevel()</code> method.&#160; See the <code><a title="EventLogger API" href="http://www.blackberry.com/developers/docs/4.2.1api/net/rim/device/api/system/EventLogger.html" target="_blank">EventLogger</a></code><a title="EventLogger API" href="http://www.blackberry.com/developers/docs/4.2.1api/net/rim/device/api/system/EventLogger.html" target="_blank"></a> API for more details.<br /><br />To simplify logging to the event log, I have added the following static methods (modelled after <a title="log4j" href="http://logging.apache.org/log4j/1.2/index.html]" target="_blank">log4j</a>) to the Logger class from Part 1:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_long"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">private static void logEvent(String msg, int level) {</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">&#160;&#160;EventLogger.logEvent(Constants.GUID, msg.getBytes(), level);</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">}</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code><span class="amc_default">public static void logDebugEvent(String msg) {</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"></div></td><td><code><span class="amc_default">&#160;&#160;logEvent(msg, EventLogger.DEBUG_INFO);</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc7"></div></td><td><code><span class="amc_default">}</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc8"></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc9"></div></td><td><code><span class="amc_default">public static void logInformationEvent(String msg) {</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc1"></div></div></td><td><code><span class="amc_default">&#160;&#160;logEvent(msg, EventLogger.INFORMATION);</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc1"></div></div></td><td><code><span class="amc_default">}</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc1"></div></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc1"></div></div></td><td><code><span class="amc_default">public static void logWarningEvent(String msg) {</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc1"></div></div></td><td><code><span class="amc_default">&#160;&#160;logEvent(msg, EventLogger.WARNING);</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc1"></div></div></td><td><code><span class="amc_default">}</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"><div class="amc1"></div></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc7"><div class="amc1"></div></div></td><td><code><span class="amc_default">public static void logErrorEvent(String msg) {</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc8"><div class="amc1"></div></div></td><td><code><span class="amc_default">&#160;&#160;logEvent(msg, EventLogger.ERROR);</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc9"><div class="amc1"></div></div></td><td><code><span class="amc_default">}</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc2"></div></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc2"></div></div></td><td><code><span class="amc_default">public static void logSevereErrorEvent(String msg) {</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc2"></div></div></td><td><code><span class="amc_default">&#160;&#160;logEvent(msg, EventLogger.SEVERE_ERROR);</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc2"></div></div></td><td><code><span class="amc_default">}</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc2"></div></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc2"></div></div></td><td><code><span class="amc_default">public static void logAlwaysEvent(String msg) {</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"><div class="amc2"></div></div></td><td><code><span class="amc_default">&#160;&#160;logEvent(msg, EventLogger.ALWAYS_LOG);</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc7"><div class="amc2"></div></div></td><td><code><span class="amc_default">}</span></code></td></tr>
</table></div>

<p>So to log an information message, in my code, I use:</p>

<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">Logger.logInformationEvent("This is an information method");</span></code></td></tr>
</table></div>

<p>Much simpler!<br /><br />In the future, I might look into incorporating changing the viewer type, but so far I mainly just use the STRING_VIEWER.<br /><br />Hope this is helpful, and happy coding!</p>
<p><!-- Adsense block #26 not displayed since it exceed the limit of 3 --></p><div class="item_footer"><p><small><a href="http://ewert-technologies.ca/blog/blog5.php/simplifying-logging-for-blackberry-development-part-2">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>
<p><a href="http://feedads.g.doubleclick.net/~a/dmtVCRrGVMyBnhi4f6TaY4h2Weg/0/da"><img src="http://feedads.g.doubleclick.net/~a/dmtVCRrGVMyBnhi4f6TaY4h2Weg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dmtVCRrGVMyBnhi4f6TaY4h2Weg/1/da"><img src="http://feedads.g.doubleclick.net/~a/dmtVCRrGVMyBnhi4f6TaY4h2Weg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/RphbmT4zQEo" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/4BhfklSZeZTE4J95ThfKmXhBqr8/0/da"><img src="http://feedads.g.doubleclick.net/~a/4BhfklSZeZTE4J95ThfKmXhBqr8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/4BhfklSZeZTE4J95ThfKmXhBqr8/1/da"><img src="http://feedads.g.doubleclick.net/~a/4BhfklSZeZTE4J95ThfKmXhBqr8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/95itELyW1-c" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/dqk0jHOrsN_QdCoLlibEIDCqac0/0/da"><img src="http://feedads.g.doubleclick.net/~a/dqk0jHOrsN_QdCoLlibEIDCqac0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dqk0jHOrsN_QdCoLlibEIDCqac0/1/da"><img src="http://feedads.g.doubleclick.net/~a/dqk0jHOrsN_QdCoLlibEIDCqac0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/lzXseYXkBDw" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/POfirmQFRLM7nyNWArdtkW86QP8/0/da"><img src="http://feedads.g.doubleclick.net/~a/POfirmQFRLM7nyNWArdtkW86QP8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/POfirmQFRLM7nyNWArdtkW86QP8/1/da"><img src="http://feedads.g.doubleclick.net/~a/POfirmQFRLM7nyNWArdtkW86QP8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/CtdJYr-YwYs" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/9JHmSrRhOw4RdLAMueKpV_pIyNA/0/da"><img src="http://feedads.g.doubleclick.net/~a/9JHmSrRhOw4RdLAMueKpV_pIyNA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9JHmSrRhOw4RdLAMueKpV_pIyNA/1/da"><img src="http://feedads.g.doubleclick.net/~a/9JHmSrRhOw4RdLAMueKpV_pIyNA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/gKt3g3FodqM" height="1" width="1"/>]]></content:encoded>
								<comments>http://ewert-technologies.ca/blog/blog5.php/simplifying-logging-for-blackberry-development-part-2#comments</comments>
			<wfw:commentRss>http://ewert-technologies.ca/blog/blog5.php?tempskin=_rss2&amp;disp=comments&amp;p=43</wfw:commentRss>
		<feedburner:origLink>http://ewert-technologies.ca/blog/blog5.php/simplifying-logging-for-blackberry-development-part-2</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/RphbmT4zQEo/simplifying-logging-for-blackberry-development-part-2</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/95itELyW1-c/simplifying-logging-for-blackberry-development-part-2</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/lzXseYXkBDw/simplifying-logging-for-blackberry-development-part-2</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/CtdJYr-YwYs/simplifying-logging-for-blackberry-development-part-2</feedburner:origLink></item>
				<item>
			<title>Simplifying Logging for Blackberry Development, Part 1</title>
			<link>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/WUSivv-ejQM/logging-to-system-out-on-blackberry</link>
			<pubDate>Fri, 18 Dec 2009 18:05:29 +0000</pubDate>			<dc:creator>victor.ewert</dc:creator>
			<category domain="main">Articles</category>			<guid isPermaLink="false">42@http://ewert-technologies.ca/blog/</guid>
						<description>&lt;p&gt;&lt;!-- Adsense block #27 not displayed since it exceed the limit of 3 --&gt;&lt;/p&gt;
&lt;p&gt;I have recently started developing a version of &lt;a href="http://www.ewert-technologies.ca/products/pwminder/index.html"&gt;PWMinder&lt;/a&gt;, for the Blackberry, using the JDE plugin for Eclipse.&amp;#160; When developing applications, especially when starting out, developers often like to send debug/log statements to System.out, to test or check certain values.&amp;#160; My first problem was, when I ran my programs using the simulator, I didn't see any of my System.out messages going to the console.&amp;#160; After searching on the Blackberry Developer forums, I found that in order to see messages on the console, the program needs to be run in debug mode.&amp;#160; That was fine, until I realized that not only my messages were going to the console but a lot of message produced by the simuator; messages like:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;VM:+GC(F)w=9&lt;br /&gt;VM:-GCt=3,b=1,r=0,g=1&lt;br /&gt;VM:+CR&lt;br /&gt;VM:TI2Rv=31&lt;br /&gt;VM:-CR=1&lt;br /&gt;VM:IGCSc=0&lt;br /&gt;JVM: bklt @15785: timer&lt;br /&gt;JVM: bklt @15787: idle 23&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;So the problem became finding my messages among all those others.&amp;#160; One tip I learned was to add some unique constant value in front of all messages like: *** to make them stand out.&amp;#160; While a good idea, this means extra work every time I want to send a log message.&amp;#160; To get around this, I decided to make a couple methods that I could use to log messages to System.out in a standard format.&lt;br /&gt;&lt;br /&gt;Firstly, I created a Class called &lt;code&gt;Constants&lt;/code&gt; where I store several Global constants and I declared the following:&lt;/p&gt;
&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_short"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;public static final String APP_NAME = "PWMinder";&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Next, I created a class called &lt;code&gt;Logger&lt;/code&gt;, which contains several static methods to used for logging messages.&lt;/p&gt;
&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_long"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;public class Logger {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc3"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;//Used to format dates into a standard format&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc4"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z");&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc5"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt; &lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc6"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;public static void out(String msg) {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc7"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;System.out.println(setUpMessageString(msg));&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc8"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;}&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc9"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc0"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;public static void err(String msg, Throwable t) {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;System.err.println(setUpMessageString(msg));&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc2"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;t.printStackTrace();&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc3"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;}&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc4"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc5"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;private static String setUpMessageString(String msg) {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc6"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Date timestamp = new Date();&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc7"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;StringBuffer sb = new StringBuffer();&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc8"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;sb.append("***");&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc9"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;sb.append(Constants.APP_NAME);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc0"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;sb.append(" - ");&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;sb.append(dateFormat.format(timestamp));&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc2"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;sb.append(": ");&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc3"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;sb.append(msg);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc4"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;return sb.toString();&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc5"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;}&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc6"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Now, when I'm coding, whenever I want to send a message to System.out I used the following:&lt;/p&gt;
&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_short"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;Logger.out("This is my message");&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Which when run would give:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;***PWMinder - 2009-12-17 10:30:46.577 America/Los_Angeles: This is my message&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;In the same way, I could send something to System.err:&lt;/p&gt;
&lt;p class="amcode"&gt;Code:&lt;/p&gt;&lt;div class="codeblock amc_code amc_short"&gt;&lt;table&gt;&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc1"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;try {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc2"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;//come code&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc3"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;} catch (Exception e) {&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_even"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc4"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;&amp;#160;&amp;#160;Logger.err("Something bad happened", t);&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="amc_code_odd"&gt;&lt;td class="amc_line"&gt;&lt;div class="amc5"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;&lt;span class="amc_default"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;This makes logging to the console easier, and provides consistent output, making it easier to search for my messages among all the other message.&amp;#160; It also allows me to easily make changes to my logging format (e.g. change my date format, etc.) by only changing the code in one place.&lt;br /&gt;&lt;br /&gt;Hope this was helpful.&lt;br /&gt;&lt;br /&gt;Environment:&lt;br /&gt;Eclipse 3.5&lt;br /&gt;Blackberry JDE plugin 4.2.1&lt;br /&gt;&lt;br /&gt;In Part 2, I will discuss logging to the Event Logger, on the Blackberry and/or simulator&lt;/p&gt;
&lt;p&gt;&lt;!-- Adsense block #28 not displayed since it exceed the limit of 3 --&gt;&lt;/p&gt;&lt;div class="item_footer"&gt;&lt;p&gt;&lt;small&gt;&lt;a href="http://ewert-technologies.ca/blog/blog5.php/logging-to-system-out-on-blackberry"&gt;Original post&lt;/a&gt; blogged on &lt;a href="http://b2evolution.net/"&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p><!-- Adsense block #29 not displayed since it exceed the limit of 3 --></p>
<p>I have recently started developing a version of <a href="http://www.ewert-technologies.ca/products/pwminder/index.html">PWMinder</a>, for the Blackberry, using the JDE plugin for Eclipse.&#160; When developing applications, especially when starting out, developers often like to send debug/log statements to System.out, to test or check certain values.&#160; My first problem was, when I ran my programs using the simulator, I didn't see any of my System.out messages going to the console.&#160; After searching on the Blackberry Developer forums, I found that in order to see messages on the console, the program needs to be run in debug mode.&#160; That was fine, until I realized that not only my messages were going to the console but a lot of message produced by the simuator; messages like:</p>
<p><code>VM:+GC(F)w=9<br />VM:-GCt=3,b=1,r=0,g=1<br />VM:+CR<br />VM:TI2Rv=31<br />VM:-CR=1<br />VM:IGCSc=0<br />JVM: bklt @15785: timer<br />JVM: bklt @15787: idle 23</code></p>
<p>So the problem became finding my messages among all those others.&#160; One tip I learned was to add some unique constant value in front of all messages like: *** to make them stand out.&#160; While a good idea, this means extra work every time I want to send a log message.&#160; To get around this, I decided to make a couple methods that I could use to log messages to System.out in a standard format.<br /><br />Firstly, I created a Class called <code>Constants</code> where I store several Global constants and I declared the following:</p>
<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">public static final String APP_NAME = "PWMinder";</span></code></td></tr>
</table></div>
<p>Next, I created a class called <code>Logger</code>, which contains several static methods to used for logging messages.</p>
<p class="amcode">Code:</p><div class="codeblock amc_code amc_long"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">public class Logger {</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">&#160;&#160;</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">&#160;&#160;//Used to format dates into a standard format</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">&#160;&#160;private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS z");</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code><span class="amc_default"> </span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"></div></td><td><code><span class="amc_default">&#160;&#160;public static void out(String msg) {</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc7"></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;System.out.println(setUpMessageString(msg));</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc8"></div></td><td><code><span class="amc_default">&#160;&#160;}</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc9"></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc1"></div></div></td><td><code><span class="amc_default">&#160;&#160;public static void err(String msg, Throwable t) {</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc1"></div></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;System.err.println(setUpMessageString(msg));</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc1"></div></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;t.printStackTrace();</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc1"></div></div></td><td><code><span class="amc_default">&#160;&#160;}</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc1"></div></div></td><td><code>&nbsp;</code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc1"></div></div></td><td><code><span class="amc_default">&#160;&#160;private static String setUpMessageString(String msg) {</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"><div class="amc1"></div></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;Date timestamp = new Date();</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc7"><div class="amc1"></div></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;StringBuffer sb = new StringBuffer();</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc8"><div class="amc1"></div></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;sb.append("***");</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc9"><div class="amc1"></div></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;sb.append(Constants.APP_NAME);</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc2"></div></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;sb.append(" - ");</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc2"></div></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;sb.append(dateFormat.format(timestamp));</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc2"></div></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;sb.append(": ");</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc2"></div></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;sb.append(msg);</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc2"></div></div></td><td><code><span class="amc_default">&#160;&#160;&#160;&#160;return sb.toString();</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc2"></div></div></td><td><code><span class="amc_default">&#160;&#160;}</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc6"><div class="amc2"></div></div></td><td><code><span class="amc_default">}</span></code></td></tr>
</table></div>
<p>Now, when I'm coding, whenever I want to send a message to System.out I used the following:</p>
<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">Logger.out("This is my message");</span></code></td></tr>
</table></div>
<p>Which when run would give:<br /><br /><code>***PWMinder - 2009-12-17 10:30:46.577 America/Los_Angeles: This is my message</code><br /><br />In the same way, I could send something to System.err:</p>
<p class="amcode">Code:</p><div class="codeblock amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code><span class="amc_default">try {</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code><span class="amc_default">&#160;&#160;//come code</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code><span class="amc_default">} catch (Exception e) {</span></code></td></tr>
<tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code><span class="amc_default">&#160;&#160;Logger.err("Something bad happened", t);</span></code></td></tr>
<tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code><span class="amc_default">}</span></code></td></tr>
</table></div>
<p>This makes logging to the console easier, and provides consistent output, making it easier to search for my messages among all the other message.&#160; It also allows me to easily make changes to my logging format (e.g. change my date format, etc.) by only changing the code in one place.<br /><br />Hope this was helpful.<br /><br />Environment:<br />Eclipse 3.5<br />Blackberry JDE plugin 4.2.1<br /><br />In Part 2, I will discuss logging to the Event Logger, on the Blackberry and/or simulator</p>
<p><!-- Adsense block #30 not displayed since it exceed the limit of 3 --></p><div class="item_footer"><p><small><a href="http://ewert-technologies.ca/blog/blog5.php/logging-to-system-out-on-blackberry">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>
<p><a href="http://feedads.g.doubleclick.net/~a/5IOlF2n466k0faFInMvpY-hqsOg/0/da"><img src="http://feedads.g.doubleclick.net/~a/5IOlF2n466k0faFInMvpY-hqsOg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/5IOlF2n466k0faFInMvpY-hqsOg/1/da"><img src="http://feedads.g.doubleclick.net/~a/5IOlF2n466k0faFInMvpY-hqsOg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/TvnSa3G4UWI" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/82ane9aAH7x6-oOFEDEGYX3ZCK4/0/da"><img src="http://feedads.g.doubleclick.net/~a/82ane9aAH7x6-oOFEDEGYX3ZCK4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/82ane9aAH7x6-oOFEDEGYX3ZCK4/1/da"><img src="http://feedads.g.doubleclick.net/~a/82ane9aAH7x6-oOFEDEGYX3ZCK4/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/Whs6AYz8USU" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/YH3MptQp3ZdVZqMZZfnOa7UjGh8/0/da"><img src="http://feedads.g.doubleclick.net/~a/YH3MptQp3ZdVZqMZZfnOa7UjGh8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/YH3MptQp3ZdVZqMZZfnOa7UjGh8/1/da"><img src="http://feedads.g.doubleclick.net/~a/YH3MptQp3ZdVZqMZZfnOa7UjGh8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/rAuhlUCwNVg" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/SesPeLThFqP4231egGjA9RPZRc8/0/da"><img src="http://feedads.g.doubleclick.net/~a/SesPeLThFqP4231egGjA9RPZRc8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/SesPeLThFqP4231egGjA9RPZRc8/1/da"><img src="http://feedads.g.doubleclick.net/~a/SesPeLThFqP4231egGjA9RPZRc8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/dgm87piSypo" height="1" width="1"/>
<p><a href="http://feedads.g.doubleclick.net/~a/nr2-_HuzouA1a5kSMVUReYCtG0M/0/da"><img src="http://feedads.g.doubleclick.net/~a/nr2-_HuzouA1a5kSMVUReYCtG0M/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/nr2-_HuzouA1a5kSMVUReYCtG0M/1/da"><img src="http://feedads.g.doubleclick.net/~a/nr2-_HuzouA1a5kSMVUReYCtG0M/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/EwertTechnologiesBlog/~4/WUSivv-ejQM" height="1" width="1"/>]]></content:encoded>
								<comments>http://ewert-technologies.ca/blog/blog5.php/logging-to-system-out-on-blackberry#comments</comments>
			<wfw:commentRss>http://ewert-technologies.ca/blog/blog5.php?tempskin=_rss2&amp;disp=comments&amp;p=42</wfw:commentRss>
		<feedburner:origLink>http://ewert-technologies.ca/blog/blog5.php/logging-to-system-out-on-blackberry</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/TvnSa3G4UWI/logging-to-system-out-on-blackberry</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/Whs6AYz8USU/logging-to-system-out-on-blackberry</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/rAuhlUCwNVg/logging-to-system-out-on-blackberry</feedburner:origLink><feedburner:origLink>http://feedproxy.google.com/~r/EwertTechnologiesBlog/~3/dgm87piSypo/logging-to-system-out-on-blackberry</feedburner:origLink></item>
			</channel>
</rss>
