<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-13303249</id><updated>2011-04-26T07:21:34.034-04:00</updated><title type='text'>Tod Creasey's Eclipse Blog</title><subtitle type='html'>This is the Eclipse blog for Tod Creasey. I am a committer on the Platform UI team here in Ottawa Canada.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://todcreaseyeclipse.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://todcreaseyeclipse.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tod Creasey</name><uri>http://www.blogger.com/profile/07656530357132016605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13303249.post-117510711405146024</id><published>2007-03-28T15:24:00.000-04:00</published><updated>2007-03-28T15:48:24.953-04:00</updated><title type='text'>TextProcessor and BIDI</title><content type='html'>As a follow on from my post a couple of days ago I thought I would dive a bit deeper in when to use the Text Processor.&lt;br /&gt;&lt;br /&gt;Lets start from the javadoc:&lt;br /&gt;&lt;br /&gt;"This class is used to process strings that have special semantic meaning (such as file paths) in RTL-oriented locales so that they render in a way that does not corrupt the semantic meaning of the string but also maintains compliance with the Unicode BiDi algorithm of rendering Bidirectional text.&lt;br /&gt;&lt;br /&gt;Processing of the string is done by breaking it down into segments that are specified by a set of user provided delimiters. Directional punctuation characters are injected into the string in order to ensure the string retains its semantic meaning and conforms with the Unicode BiDi algorithm within each segment."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;So where do I use it?&lt;/span&gt;&lt;br /&gt;Anywhere where the string you are displaying has a series of segments where the ordering of the segments is the same no matter what language you are displaying. The most common examples are file associations, file paths, URLS and URIs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;When is it processing Strings?&lt;/span&gt;&lt;br /&gt;The TextProcessor will do bidirectional String processing anytime you are running with your Locale set to one of the four bidirectional languages (Arabic, Farsi, Hebrew or Urdu).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Will it process if my layout is right to left?&lt;/span&gt;&lt;br /&gt;Only if your Locale is one of the languages mentioned above.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Do these extra characters get picked up if I copy the String?&lt;/span&gt;&lt;br /&gt;Yes. In some applications that do not try and interpret these characters (such as Notepad) they will show up as control characters.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How do I strip the extra directional characters out?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;TextProcessor#deprocess(String)&lt;/span&gt;will allow you to remove them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What should I do about input fields for these Strings?&lt;/span&gt;&lt;br /&gt;The Eclipse Platform tries to avoid creating behaviour that is inconsistent with the operating system as much as possible. As a result we do not process the input String - the user gets whatever the operating system wants to show them.&lt;br /&gt;&lt;br /&gt;Once again we would love to hear from anyone who is using our bidirectional support day to day to give us more feedback.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13303249-117510711405146024?l=todcreaseyeclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://todcreaseyeclipse.blogspot.com/feeds/117510711405146024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13303249&amp;postID=117510711405146024' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/117510711405146024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/117510711405146024'/><link rel='alternate' type='text/html' href='http://todcreaseyeclipse.blogspot.com/2007/03/textprocessor-and-bidi.html' title='TextProcessor and BIDI'/><author><name>Tod Creasey</name><uri>http://www.blogger.com/profile/07656530357132016605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13303249.post-117492991058938030</id><published>2007-03-26T12:39:00.000-04:00</published><updated>2007-03-27T13:39:19.890-04:00</updated><title type='text'>Bidirectional Support  FAQ</title><content type='html'>Here on the Platform team we have had a series of questions about how the bidirectional support in Eclipse works and I thought it was time I blogged about it. Here are some commonly asked questions:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) What is the difference between using -dir rtl and -nl iw?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-dir rtl was a command line parameter that Help was using before the workbench added it's general BIDI support in 3.1. When we added the BIDI support ourselves we continued to support the old flag but we also felt that the -nl command line parameter made more sense. If you are using a Arabic, Farsi, Hebrew or Urdu locale as the argument to the -nl parameter you will get right to left support.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-family:courier new;"&gt;TextProcessor &lt;/span&gt;does not support the -dir rtl parameter so it is recommended that you use the -nl parameter to get all of the bidi support. Note that &lt;span style="font-family: courier new;"&gt;TextProcessor &lt;/span&gt;will process BIDI strings whenever the Locale is bidirectional whether or not the Locale was set by -nl or taken from the OS.&lt;br /&gt;&lt;br /&gt;So if you use -dir rtl your orientation will be set to right to left but your paths etc. will not use the text processing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) What is the difference between &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;TextProcessor &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;and &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Window#getDefaultOrientation &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;TextProcessor &lt;/span&gt;is a class supplied by OSGi to used to process strings that have special semantic meaning (such as file paths) in RTL-oriented locales so that they render in a way that does not corrupt the semantic meaning of the string but also maintains compliance with the Unicode BiDi algorithm of rendering Bidirectional text. (from the javadoc).&lt;br /&gt;&lt;br /&gt;So for instance http://www.eclipse.org/&lt;somethingbidi&gt; will render the entire String in left to right order but will process each segment right to left.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;org.eclipse.jface.Window#getDefaultOrientation &lt;/span&gt;is a method used to determine the default orientation for windows. If it is not set the default value will be unspecified (SWT#NONE) (also from the javadoc)&lt;span style="font-family:courier new;"&gt;.&lt;br /&gt;&lt;br /&gt;Dialogs, Windows, IWorkbenchParts&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;FormToolkits &lt;/span&gt;use this value to determine their default orientation. All of these classes allow the orientation to be overridden.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3) Why do I not get bidirectional text processing in left to right orientations?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Using the &lt;span style="font-family:courier new;"&gt;TextProcessor&lt;/span&gt; to evaluate paths is slower than not processing them at all (of course). For performance reasons we do not use &lt;/somethingbidi&gt;&lt;span style="font-family:courier new;"&gt;TextProcessor&lt;/span&gt; &lt;somethingbidi&gt;unless you are in a bidirectional Locale.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4) How do I set my inputs to use bidirectional support?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All input processing is done using the platform widgets. Eclipse generally does not try and work differently than the OS so we use the OS input methods.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5) What happens if I use multiple direction parameters?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There is a precedence of these parameters. As document in the help at org.eclipse.platform.doc.isv/reference/misc/bidi.html:&lt;br /&gt;&lt;br /&gt;&lt;/somethingbidi&gt;&lt;p&gt;The orientation of the workbench is determined in one of the following ways  (in order of priority):&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;-dir command line parameter&lt;/strong&gt;. If the -dir command line  option is used this will be the default orientation. Valid values are -dir rtl  or -dir ltr.  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;system properties&lt;/strong&gt;. If the system property  &lt;tt&gt;eclipse.orientation&lt;/tt&gt; is set this will be used. The recognized values of  this property are the same as the -dir command line argument.  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;-nl command line parameter&lt;/strong&gt;. If the -nl option is used and  the language is Arabic, Farsi, Hebrew or Urdu the orientation will be right to  left.  &lt;/li&gt;&lt;li&gt;Failing all of the above, the platform defaults to a left to right  orientation. &lt;/li&gt;&lt;/ul&gt;The &lt;span style="font-family: courier new;"&gt;TextProcessor &lt;/span&gt;is only checking Locale and does not use this precedence.&lt;br /&gt;&lt;br /&gt;So...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;-dir rtl &lt;/span&gt;will give you right to left windows but no text processing&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;-nl fa &lt;/span&gt;will give you right to left windows and text processing&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;-nl ur -dir ltr &lt;/span&gt;will give you left to right windows and text processing&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Starting Eclipse in a bidirectional Locale&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;with no arguments&lt;/span&gt; will give you left to right windows and text processing &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6) Is right to left ever the default?&lt;/span&gt;&lt;br /&gt;No. When we initially did this work we made right to left the default for users in the right to left locales but the overwhelming response was that they developed in left to right and then we should only switch orientation if explicitly asked to.&lt;br /&gt;&lt;br /&gt;So if you start Eclipse on an Urdu machine with no command line arguments you will get left to right orientation. If you start Eclipse using the command line argument -nl ur on the same machine you will get right to left orientation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7) Who uses this support?&lt;/span&gt;&lt;br /&gt;This is actually a question for you. We know there are lots of users who use Eclipse left to right in a right to left locale but we are interesting in hearing from&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Users who use right to left for their Eclipse development - especially if they want some right to left support changes in JDT or EMF.&lt;/li&gt;&lt;li&gt;Users who use left to right but frequently have to deal with right to left strings and find the lack of bidirectional text support problematic&lt;/li&gt;&lt;/ul&gt;If you are one of these people please log a bug to Bugzilla or add a comment to this blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13303249-117492991058938030?l=todcreaseyeclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://todcreaseyeclipse.blogspot.com/feeds/117492991058938030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13303249&amp;postID=117492991058938030' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/117492991058938030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/117492991058938030'/><link rel='alternate' type='text/html' href='http://todcreaseyeclipse.blogspot.com/2007/03/bidirectional-support-faq.html' title='Bidirectional Support  FAQ'/><author><name>Tod Creasey</name><uri>http://www.blogger.com/profile/07656530357132016605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13303249.post-116541803816365538</id><published>2006-12-06T09:47:00.000-05:00</published><updated>2006-12-06T10:13:58.276-05:00</updated><title type='text'>Accessibility, Editable Text and Labels</title><content type='html'>You may have noticed that throughout the Eclipse UI we will periodically use an editable Text instead of a Label. There are two reasons for this&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;You might want to allow the user to select the text for copying. We use it in the Resource Property Page to allow you to select the path of a resource for instance.&lt;/li&gt;   &lt;li&gt;Accessibility. If a label needs to be read to make a dialog usable it has to be able to take focus for screen reader users. The wizard dialog error message area is an example of this. Note that we don't do this if the label is just a secondary note.&lt;br /&gt; &lt;/li&gt; &lt;/ul&gt; You will of course notice that there are Labels all over the place in the UI. If a label is beside an unlabelled widget (like a Text) that can take focus it will be used as the title by a screen reader.&lt;br /&gt;&lt;br /&gt;This only works if the label and the widget that can take focus have the same parent and are one after the other in the z-order. z-order is order of creation by default - if that doesn't work for you because of how your code is structured check out &lt;span style="font-family:courier new;"&gt;Control#moveAbove&lt;/span&gt; or&lt;span style="font-family:courier new;"&gt; Control#moveBelow&lt;/span&gt; to adjust this order.&lt;br /&gt;&lt;br /&gt;If you want more details you can check out &lt;a href="http://www.eclipse.org/articles/Article-Accessibility/accessibility.html"&gt;my article on eclipse.org&lt;/a&gt; at or better yet vote and then go to &lt;a href="http://eclipsezilla.eclipsecon.org/show_bug.cgi?id=3801"&gt;Cori Ryan's talk&lt;/a&gt; at Eclipsecon .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13303249-116541803816365538?l=todcreaseyeclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://todcreaseyeclipse.blogspot.com/feeds/116541803816365538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13303249&amp;postID=116541803816365538' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/116541803816365538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/116541803816365538'/><link rel='alternate' type='text/html' href='http://todcreaseyeclipse.blogspot.com/2006/12/accessibility-editable-text-and-labels.html' title='Accessibility, Editable Text and Labels'/><author><name>Tod Creasey</name><uri>http://www.blogger.com/profile/07656530357132016605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13303249.post-116068392378841246</id><published>2006-10-12T15:54:00.000-04:00</published><updated>2006-10-12T16:12:03.813-04:00</updated><title type='text'>Safer ways to parent your Shells</title><content type='html'>I have recently seen a fair amount of code where people are creating Dialogs parented off of the active shell using &lt;code&gt;Display#getActiveShell()&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;There are a lot of shells in Eclipse. Beyond the obvious ones (the Workbench Window and any modal Dialogs you have open) you can have a Shell to animate trim, a Shell to show a tool tip, a Shell for content assist and so on. If one of these is the active shell you could parent your Shell off of all sorts of things.&lt;br /&gt;&lt;br /&gt;To be safe try and use a Shell that you are aware of - i.e. if you are creating something off of another Dialog use the Shell of that Dialog. Of course this doesn't help you for your first Dialog which should use the Workbench Window as a parent.&lt;br /&gt;&lt;br /&gt;If you look at ProgressManagerUtil#getNonModalShell() you can see how we do it for the Progress manager.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt; IWorkbenchWindow window =&lt;br /&gt;   PlatformUI.getWorkbench().getActiveWorkbenchWindow();&lt;br /&gt;     if (window == null) {&lt;br /&gt;      IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();&lt;br /&gt;      if (windows.length &gt; 0)&lt;br /&gt;  return windows[0].getShell();&lt;br /&gt;     } else&lt;br /&gt;  return window.getShell();&lt;br /&gt;&lt;br /&gt;   return null;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;you still need to handle the null case but it is not particularly common that you have no Workbench windows.&lt;br /&gt;&lt;br /&gt;To be even safer in 3.1 &lt;code&gt;org.eclipse.jface.ShellProvider&lt;/code&gt; was implemented. This can be used to parent any window and allows you to choose the Shell when the dialog is about to be created rather than when you create the instance.&lt;br /&gt;&lt;br /&gt;This is really handy if you want to delay opening the dialog for some reason or are concerned about the shell you have selected closing on you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13303249-116068392378841246?l=todcreaseyeclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://todcreaseyeclipse.blogspot.com/feeds/116068392378841246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13303249&amp;postID=116068392378841246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/116068392378841246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/116068392378841246'/><link rel='alternate' type='text/html' href='http://todcreaseyeclipse.blogspot.com/2006/10/safer-ways-to-parent-your-shells.html' title='Safer ways to parent your Shells'/><author><name>Tod Creasey</name><uri>http://www.blogger.com/profile/07656530357132016605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13303249.post-116015753525386993</id><published>2006-10-06T13:51:00.000-04:00</published><updated>2006-10-06T13:58:55.266-04:00</updated><title type='text'>Widget tickling in JFace</title><content type='html'>Some of you may have noticed that in M2 we have refactored the way refreshing happens in Table and Tree Viewers so that if you want to access the widget during a refresh you can now. This is really useful for things like using the new SWT owner draw support but also eliminates the need for the plethora of color,font, text and image providers we used to use.&lt;br /&gt;&lt;br /&gt;We of course support your old code but if you want to check out our new streamlined code have a look at &lt;code&gt;org.eclipse.jface.viewers.CellLabelProvider#update(ViewerCell cell)&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Special thanks to Tom Schindl and Boris (our UI API Polizei) for all of his help hammering the new API out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13303249-116015753525386993?l=todcreaseyeclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://todcreaseyeclipse.blogspot.com/feeds/116015753525386993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13303249&amp;postID=116015753525386993' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/116015753525386993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/116015753525386993'/><link rel='alternate' type='text/html' href='http://todcreaseyeclipse.blogspot.com/2006/10/widget-tickling-in-jface.html' title='Widget tickling in JFace'/><author><name>Tod Creasey</name><uri>http://www.blogger.com/profile/07656530357132016605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13303249.post-114622907094336778</id><published>2006-04-28T08:37:00.000-04:00</published><updated>2006-04-28T08:57:50.966-04:00</updated><title type='text'>Imagine there is no Image#isDisposed....</title><content type='html'>Michael Valenta and I were talking today about the Eclipse Image management story and I thought I might post a quick pointer here.&lt;br /&gt;&lt;br /&gt;So when do you want an ImageRegistry and when do you want a ResourceManager? First off you want to use either of them to prevent the need to manage Images yourself - you can reference your Images using an ImageDescriptor or a String and let the ResourceManager clean them up when it shuts down.&lt;br /&gt;&lt;br /&gt;The ImageRegistry allows you to register an image based on a keyword (String), the ResourceManager allows you to do so with an ImageDescriptor.  The ResourceManager is the back end of the ImageRegistry. Usually you use the ImageRegistry to allow lookup based on a constant (like we do for the JFace Dialog constants) and you use the ResourceManager to do lookup based on an ImageDescriptor you are holding onto.&lt;br /&gt;&lt;br /&gt;Many people just use the the JFace ImageRegistry or ResourceManager. That will work but if everyone did that large applications will have every image loaded for the duration of thier Eclipse session (those images are generally not disposed until shutdown of JFace).  The DeviceResourceManager that JFace uses has reference counting which will cut down on some of the redundant Images but you might be surprised at the references you have if you are not thinking about it.&lt;br /&gt;&lt;br /&gt;If you can bound the lifecycle better (especially if you are one of the cool kids who really do dynamically load and unload plug-ins) using your own LocalResourceManager parented off of the JFace one is a great way to keep your OS resource load down.&lt;br /&gt;&lt;br /&gt;Doing that will make Stefan Xenos (the ResourceManager mastermind) almost as happy as getting him that Corvette he lusts after &lt;grin&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13303249-114622907094336778?l=todcreaseyeclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://todcreaseyeclipse.blogspot.com/feeds/114622907094336778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13303249&amp;postID=114622907094336778' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/114622907094336778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/114622907094336778'/><link rel='alternate' type='text/html' href='http://todcreaseyeclipse.blogspot.com/2006/04/imagine-there-is-no-imageisdisposed.html' title='Imagine there is no Image#isDisposed....'/><author><name>Tod Creasey</name><uri>http://www.blogger.com/profile/07656530357132016605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13303249.post-114312655644871991</id><published>2006-03-23T10:06:00.000-05:00</published><updated>2006-03-23T10:09:16.460-05:00</updated><title type='text'>Question from those of us not at EclipseCon</title><content type='html'>As part of the imminent Eclipse Platform baby boom (6 babies just arrived or on thier way!) I am here in Ottawa working during EclipseCon so I have seen the Steve splash screen about 400 times now.&lt;br /&gt;&lt;br /&gt;What we all want to know is where is Steve's other hand?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13303249-114312655644871991?l=todcreaseyeclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://todcreaseyeclipse.blogspot.com/feeds/114312655644871991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13303249&amp;postID=114312655644871991' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/114312655644871991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/114312655644871991'/><link rel='alternate' type='text/html' href='http://todcreaseyeclipse.blogspot.com/2006/03/question-from-those-of-us-not-at.html' title='Question from those of us not at EclipseCon'/><author><name>Tod Creasey</name><uri>http://www.blogger.com/profile/07656530357132016605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13303249.post-113777866649878090</id><published>2006-01-20T12:31:00.000-05:00</published><updated>2006-01-20T12:37:46.510-05:00</updated><title type='text'>So how do I check I'm accessible on Windows?</title><content type='html'>We get a lot of problem reports detailing that something in Eclipse is not working well with a screen reader (usually Window Eyes or JAWS).&lt;br /&gt;&lt;br /&gt;A lot of the time the screen reader is not following the MSAA (Microsoft Active Accessibility) API and so when you find a problem you need to double check with a tool that does use it. MSAA is the API that SWT calls out to to provide accessibility information.&lt;br /&gt;&lt;br /&gt;We found the easiest one to use is the inspect32 tool from Microsoft (Google inspect32 MSAA to find it - I won't post the link here as it may be out of date soon).  Start inspect32 up, give the widget you are concerned about focus and it will tell you what MSAA information you have.&lt;br /&gt;&lt;br /&gt;And by the way skip using the Narrator that comes for free with XP, it is not nearly robust enough for using with an SDK.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13303249-113777866649878090?l=todcreaseyeclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://todcreaseyeclipse.blogspot.com/feeds/113777866649878090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13303249&amp;postID=113777866649878090' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/113777866649878090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/113777866649878090'/><link rel='alternate' type='text/html' href='http://todcreaseyeclipse.blogspot.com/2006/01/so-how-do-i-check-im-accessible-on.html' title='So how do I check I&apos;m accessible on Windows?'/><author><name>Tod Creasey</name><uri>http://www.blogger.com/profile/07656530357132016605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13303249.post-112326798940969905</id><published>2005-08-05T14:44:00.000-04:00</published><updated>2005-08-05T14:53:09.416-04:00</updated><title type='text'>So how VIRTUAL are you?</title><content type='html'>Steve Northover and I were talking this morning about some of the extra support (and fixes) we want to do in the JFace VIRTUAL support in 3.2.&lt;br /&gt;&lt;br /&gt;One use case we hear about is that when you scroll enough on a Table it populates so much that the Table is effectively a normal Table.&lt;br /&gt;&lt;br /&gt;If you had 1,000,000 entries this would be a problem. But does anyone actually have this case? I would be interested to hear if there is a product out there that users will periodically overpopulate thier table with scrolling.&lt;br /&gt;&lt;br /&gt;There is one case I can see that is easy to get - that is a shift-selecting the whole table (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=98248).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13303249-112326798940969905?l=todcreaseyeclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://todcreaseyeclipse.blogspot.com/feeds/112326798940969905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13303249&amp;postID=112326798940969905' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/112326798940969905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/112326798940969905'/><link rel='alternate' type='text/html' href='http://todcreaseyeclipse.blogspot.com/2005/08/so-how-virtual-are-you.html' title='So how VIRTUAL are you?'/><author><name>Tod Creasey</name><uri>http://www.blogger.com/profile/07656530357132016605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13303249.post-111756744017851357</id><published>2005-05-31T15:23:00.000-04:00</published><updated>2005-05-31T15:24:00.176-04:00</updated><title type='text'>Accessibility: lines in the sand</title><content type='html'>I have been asked a few times now about how accessibility should be tested using Eclipse. The Eclipse team is testing using the following parameters:&lt;br /&gt;&lt;br /&gt;Windows XP High Contrast&lt;br /&gt;1152x768 Display&lt;br /&gt;&lt;br /&gt;If we don't scale right for you with this settings please log us a bug.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13303249-111756744017851357?l=todcreaseyeclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://todcreaseyeclipse.blogspot.com/feeds/111756744017851357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13303249&amp;postID=111756744017851357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/111756744017851357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/111756744017851357'/><link rel='alternate' type='text/html' href='http://todcreaseyeclipse.blogspot.com/2005/05/accessibility-lines-in-sand_31.html' title='Accessibility: lines in the sand'/><author><name>Tod Creasey</name><uri>http://www.blogger.com/profile/07656530357132016605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13303249.post-111754426719138088</id><published>2005-05-31T11:20:00.000-04:00</published><updated>2005-05-31T08:57:47.196-04:00</updated><title type='text'>Icons in the nl world</title><content type='html'>Eclipse 3.1 is going to support bidirectional languages (those that can type right to left as well as left to right such as Arabic). This means that for a lot of Eclipse applications you are going to want to provide alternative icons to those you ship (mostly those with a horizontal arrow or something like that).&lt;br /&gt;&lt;br /&gt;First step is nl'ing your icon lookup. The Platform does this internally in a bunch of places by creating a URL and using the Runtime API to look it up. The secret is the $nl$ in your path - that tells the runtime to look in fragments as well.&lt;br /&gt;&lt;br /&gt;Here is an example&lt;br /&gt;     &lt;br /&gt;        String iconPath = "$nl$/icons/myicon.gif";&lt;br /&gt;&lt;br /&gt;        URL url = Platform.find( Platform.getBundle(MyPluginId), new Path(iconPath));&lt;br /&gt;&lt;br /&gt;        Image Descriptor descriptor = ImageDescriptor.createFromURL(url);&lt;br /&gt;&lt;br /&gt;If you want to dig around more have a look at org.eclipse.ui.internal.util.BundleUtility to see how we do it.&lt;br /&gt;&lt;br /&gt;If the icon reference  is in your plugin.xml just make sure you have the $nl$ prefix on your path. We will handle this for you (and log us a bug if not!). Just make sure if you create your own extension point that it loads ImageDescriptors this way.&lt;br /&gt;&lt;br /&gt;Second step is creating a fragment - icons are done the same way as message catalogs so no rocket science there.&lt;br /&gt;&lt;br /&gt;Finally test it. You can switch orientation using the -dir rtl command line option or by specifying a bidirectional language using the -nl option (iw (Hebrew), ar (Arabic), fa (Farsi) or ur (Urdu)). Note we don't do this for free as a lot of users in these locales still want the left to right look.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13303249-111754426719138088?l=todcreaseyeclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://todcreaseyeclipse.blogspot.com/feeds/111754426719138088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13303249&amp;postID=111754426719138088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/111754426719138088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/111754426719138088'/><link rel='alternate' type='text/html' href='http://todcreaseyeclipse.blogspot.com/2005/05/icons-in-nl-world.html' title='Icons in the nl world'/><author><name>Tod Creasey</name><uri>http://www.blogger.com/profile/07656530357132016605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13303249.post-111754165081878219</id><published>2005-05-31T08:13:00.000-04:00</published><updated>2005-05-31T08:14:10.820-04:00</updated><title type='text'>Welcomes to Tods Eclipse Blog</title><content type='html'>Welcome to my Eclipse Blog. I am going to post random snippets of info here as I come across them in my daily work on the Eclipse UI team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13303249-111754165081878219?l=todcreaseyeclipse.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://todcreaseyeclipse.blogspot.com/feeds/111754165081878219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13303249&amp;postID=111754165081878219' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/111754165081878219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13303249/posts/default/111754165081878219'/><link rel='alternate' type='text/html' href='http://todcreaseyeclipse.blogspot.com/2005/05/welcomes-to-tods-eclipse-blog.html' title='Welcomes to Tods Eclipse Blog'/><author><name>Tod Creasey</name><uri>http://www.blogger.com/profile/07656530357132016605</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
