<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>Stefan Henß&#187; Eclipse</title> <atom:link href="http://stefanhenss.com/category/eclipse/feed" rel="self" type="application/rss+xml" /><link>http://stefanhenss.com</link> <description>Personal Weblog &#38; Online Portfolio</description> <lastBuildDate>Thu, 25 Aug 2011 04:08:51 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>Summing Up Eclipse ExtDoc</title><link>http://stefanhenss.com/summing-up-eclipse-extdoc?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=summing-up-eclipse-extdoc</link> <comments>http://stefanhenss.com/summing-up-eclipse-extdoc#comments</comments> <pubDate>Tue, 23 Aug 2011 09:42:40 +0000</pubDate> <dc:creator>Stefan Henß</dc:creator> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Code Recommenders]]></category> <category><![CDATA[Google Summer of Code]]></category><guid isPermaLink="false">http://stefanhenss.com/?p=756</guid> <description><![CDATA[This year I&#8217;ve participated in Google Summer of Code by contributing to Eclipse Code Recommenders. The goal of Code Recommenders is to develop various tools which analyze code frameworks and their usage to mine information useful for code documentation and to increase productivity. For example, it compares the user&#8217;s code with code from various sources [...]]]></description> <content:encoded><![CDATA[<p>This year I&#8217;ve participated in <a href="http://code.google.com/soc/">Google Summer of Code</a> by contributing to <a href="http://www.eclipse.org/recommenders/">Eclipse Code Recommenders</a>. The goal of Code Recommenders is to develop various tools which analyze code frameworks and their usage to mine information useful for code documentation and to increase productivity. For example, it compares the user&#8217;s code with code from various sources and makes statistical assumptions on which methods should be called next. ExtDoc was created to compile all available information into a handy documentation format integrated in Eclipse.</p><h2>The Idea</h2><p>ExtDoc&#8217;s approach is to adopt the way Eclipse displays Javadoc, i.e. in a view or when hovering code elements, and to create a framework which allows to contribute any information to similar displays. For instance, Code Recommenders holds statistical information of many kinds for many popular frameworks, but currently lacks a way of displaying all in one place. In order to have information displayed with ExtDoc, each information contributor simply has to implement a &#8220;provider&#8221; through which he is asked to submit his data for the current user selection. ExtDoc then puts together all providers and allows the user to navigate through the information in multiple spots.</p><h2>The ExtDoc View</h2><p>Just like the console or the Javadoc view, the ExtDoc view can be located somewhere around the main editor and reacts to any selection in the editor. In the following, all available providers are depicted as they appear in the ExtDoc view. Additional to the providers&#8217; contents, which are displayed as one scrollable &#8220;document&#8221; on the right, there is a table on the left indicating all available providers and their status. For example, providers are grayed out if they have nothing available for the current selection or are disabled by the user.</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/08/drag.png" rel="lightbox[756]"><img src="http://stefanhenss.com/wp-content/uploads/2011/08/drag.png" alt="" title="It is possible to select a subset of providers and to change their order." height="180" width="540" class="alignnone size-medium wp-image-689" /></a></p><p>The table also offers the possibility to change the provider order by drag and drop and to disable/re-enable providers perminately. Finally, on top of the table the selection&#8217;s location type is displayed (e.g. &#8220;field declaration&#8221;), since some providers distinct between up to 9 location types. For example, a user might find different information useful when selecting a type in an &#8220;extends&#8221; statement than in a method body. Therefore the user&#8217;s selection of providers is also location-sensitive.</p><h2>Currently available Providers</h2><p>The <strong>method calls</strong> provider offers information on which methods should typically be called for the selected Java element. For example, when selecting SWT&#8217;s <em>Text</em> type, it displays the most frequently called methods. When selecting a local variable of type <em>Text</em>, it even takes into consideration which methods have already been called on the variable, which usually influences the probabilities of further method calls.</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/08/calls.png" rel="lightbox[756]"><img src="http://stefanhenss.com/wp-content/uploads/2011/08/calls.png" alt="" title="The method calls provider suggests the most frequently used method calls for the given scenario." height="180" width="540" class="alignnone size-medium wp-image-689" /></a></p><p>Sometimes even whole blocks frequently occur in different source codes, e.g. the configuration of reoccurring elements. As a result, not only single method calls but also whole <strong>code examples</strong> are proposed by ExtDoc. Note: this provider is currently in development and only displays information for a few selected elements.</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/08/examples.png" rel="lightbox[756]"><img src="http://stefanhenss.com/wp-content/uploads/2011/08/examples.png" alt="" title="The code examples provider displays multi-line code blocks found in source code." height="180" width="540" class="alignnone size-medium wp-image-689" /></a></p><p>The usage of a framework typically involves extending provided interfaces, abstract classes or even concrete classes. Not seldom, one is expected to override already implemented methods in order to achieve certain tasks and therefore has to understand the superclass(es) code or rely on a comprehensive documentation. Code Recommenders computes which methods of a class typically are overriden, so-called <strong>subclassing directives</strong>, which are also displayed in ExtDoc. When selecting an overriden method, ExtDoc even displays which of the superclass&#8217; methods are typically called from the method implementation, e.g. for configuration purposes.</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/08/subclassing.png" rel="lightbox[756]"><img src="http://stefanhenss.com/wp-content/uploads/2011/08/subclassing.png" alt="" title="Subclassing directives suggest the superclass' most frequently overriden methods." height="180" width="540" class="alignnone size-medium wp-image-689" /></a></p><p>Often framework objects are such comprehensive that the set of overriden methods differs between tasks, i.e. one method might be required to be specified in one scenario, but of no interest at all in the other. Therefore also <strong>subclassing patterns</strong> are mined, as depicted in the following screenshot.</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/08/subclassingpatterns.png" rel="lightbox[756]"><img src="http://stefanhenss.com/wp-content/uploads/2011/08/subclassingpatterns.png" alt="" title="Subclassing patterns bundle subclassing directives that are typically found together." height="180" width="540" class="alignnone size-medium wp-image-689" /></a></p><p>Finally, the <strong>social bookmarks</strong> provider allows the users to share web resources. For example, when one experiences difficulties with an API element, he might submit a solution he found one the web as a reference for all other users that might come along this element and have similar issues. In order to filter the most relevant resources, the community is able to rate each link.</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/08/bookmarks.png" rel="lightbox[756]"><img src="http://stefanhenss.com/wp-content/uploads/2011/08/bookmarks.png" alt="" title="Social bookmarks allow the users to share links regarding Java elements." height="180" width="540" class="alignnone size-medium wp-image-689" /></a></p><h2>Community Feedback</h2><p>As depicted in all screenshots, all current providers allow users to rate their content through a 5-star system, either the displayed element information as a whole, or single items such as a specific patterns. Furthermore, there is a standard ExtDoc widget which allows commenting the provider content. The following screenshot depicts the expanded comments section underneath the subclassing patterns provider.</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/08/comments.png" rel="lightbox[756]"><img src="http://stefanhenss.com/wp-content/uploads/2011/08/comments.png" alt="" title="Some providers offer a comments section allowing users to discuss the presented information." height="180" width="540" class="alignnone size-medium wp-image-689" /></a></p><p>The ExtDoc community widgets allow both, communication between the users, e.g. additional information to the displayed data, and feedback to the provider author.</p><h2>Further ExtDoc Locations</h2><p>All above screenshots displayed the providers as they appear in the ExtDoc view. However, similar display is also available in two additional locations in which users typically look for documentation. First, the Javadoc pop-up, which is displayed when hovering an element in the editor, is replaced with an ExtDoc pop-up. It contains the same providers &#8220;document&#8221; as the view does and an additional toolbar underneath, which allows jumping/auto-scrolling to the specific provider. Now, there is no more Javadoc available!? Don&#8217;t worry, ExtDoc also contains a provider displaying the traditional Javadoc, as depicted in the very first screenshot :-)</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/08/hover.png" rel="lightbox[756]"><img src="http://stefanhenss.com/wp-content/uploads/2011/08/hover.png" alt="" title="ExtDoc providers are also displayed when hovering an element in the editor." height="180" class="alignnone size-medium wp-image-689" /></a></p><p>The third location for ExtDoc is the documentation of elements selected in the code assistant pop-up. It offers the same features as the hover pop-up does, as shown below:</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/08/completion.png" rel="lightbox[756]"><img src="http://stefanhenss.com/wp-content/uploads/2011/08/completion.png" alt="" title="Also when selecting elements in the code assistant ExtDoc displays its information." height="180" class="alignnone size-medium wp-image-689" /></a></p><h2>Obtaining ExtDoc</h2><p>Since ExtDoc, among some other Code Recommenders features, is in the testing phase for an upcoming drop, you have to access it either through the head update site or the ExtDoc update site. Both links are given below:</p><p><a href="http://www.eclipse.org/recommenders/download/">http://www.eclipse.org/recommenders/download/</a><br /> <a href="http://vandyk.st.informatik.tu-darmstadt.de/updates/extdoc/">http://vandyk.st.informatik.tu-darmstadt.de/updates/extdoc/</a></p><p>Feedback on the current state as well as suggestions for further development are much welcome :-)</p> ]]></content:encoded> <wfw:commentRss>http://stefanhenss.com/summing-up-eclipse-extdoc/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>An Update on Eclipse ExtDoc</title><link>http://stefanhenss.com/an-update-on-eclipse-extdoc?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=an-update-on-eclipse-extdoc</link> <comments>http://stefanhenss.com/an-update-on-eclipse-extdoc#comments</comments> <pubDate>Mon, 27 Jun 2011 15:38:49 +0000</pubDate> <dc:creator>Stefan Henß</dc:creator> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Code Recommenders]]></category> <category><![CDATA[ExtDoc]]></category> <category><![CDATA[Extended Documentation]]></category><guid isPermaLink="false">http://stefanhenss.com/?p=679</guid> <description><![CDATA[During the last weeks a couple of blog posts, accompanying our planning phase, introduced basic concepts of an upcoming Eclipse Code Recommenders feature. The &#8220;Extended Documentation Platform&#8221; &#8211; &#8220;ExtDoc&#8221; &#8211; will provide a framework for displaying various kinds of API documentation in Eclipse, ranging from community-driven Wiki-style Javadoc to usage statistics and usage patterns mined [...]]]></description> <content:encoded><![CDATA[<p>During the last weeks a couple of blog posts, accompanying our planning phase, introduced basic concepts of an upcoming <a href="http://www.eclipse.org/recommenders/">Eclipse Code Recommenders</a> feature. The &#8220;Extended Documentation Platform&#8221; &#8211; &#8220;ExtDoc&#8221; &#8211; will provide a framework for displaying various kinds of API documentation in Eclipse, ranging from community-driven Wiki-style Javadoc to usage statistics and usage patterns mined from actual uses of an API.</p><p>The following contains conceptual updates introduced with the first prototype already available for <a href="http://www.eclipse.org/forums/index.php/t/214255/">download</a>.</p><h2>The New ExtDoc View</h2><p>The most important user interface update is the relocation of the providers as well as their content. In the <a href="http://stefanhenss.com/ui-prototypes-for-extended-documentation-platform">first prototypes</a> each provider had a separate tab, now all content is listed in a single view, as seen below:</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/06/extdoc2.jpg" rel="lightbox[679]"><img src="http://stefanhenss.com/wp-content/uploads/2011/06/extdoc2-1024x364.jpg" alt="" title="All provider content is displayed in a single window." width="535" height="190" class="alignnone size-medium wp-image-689" /></a></p><p>This design has multiple advantages over a separation by tabs. The user can easily scroll through all information, i.e. you don&#8217;t have to click multiple places to access all available information and you might also maximize the window to have everything at eyesight. Additionally, no space is wasted, e.g. by single providers which would not fill the whole view. Furthermore, you don&#8217;t have to skip grayed out tabs in case of providers having no content for the current selection. Also configuration is much easier (see below).</p><h2>Providers Control</h2><p>The second important update is the provider list on the left of the view. Not only does this provide a better visualization of available providers, but also options to configure them. The following illustrates multiple states:</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/06/extdoc1.jpg" rel="lightbox[679]"><img src="http://stefanhenss.com/wp-content/uploads/2011/06/extdoc1-1024x364.jpg" alt="" title="A providers table indicates the provider state and allows to change selection and ordering." width="535" height="190" class="alignnone size-large wp-image-692" /></a></p><p>A provider in black font indicates content displayed in the main view, grayed out providers do not contribute. This is the case when they are active but don&#8217;t have information available (indicated by the blue selection box); or they are disabled by the user (the selection box isn&#8217;t ticked). Disabling/enabling instantly leads to content being removed or added on the right. You are also able to change the order in which provider content is displayed by drag and drop of items in the provider list. The selection of providers as well as their order is constantly stored.</p><h2>Location-Based Provider Sets</h2><p>Especially when the amount of content providers grows (several more are in development) you won&#8217;t always be interested in displaying all. But, what might be irrelevant now might be required with the next click in the editor.</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/06/extdoc3.jpg" rel="lightbox[679]"><img src="http://stefanhenss.com/wp-content/uploads/2011/06/extdoc3-1024x364.jpg" alt="" title="The provider selection depends on the location context indicated in the list header." width="535" height="190" class="alignnone size-large wp-image-692" /></a></p><p>We consider a distinction between location types, as described in an <a href="http://stefanhenss.com/location-sensitive-documentation-in-eclipse">earlier post</a>. For example, you might not be interested in how to subclass a type if it&#8217;s just the type of a variable you defined. You are rather interested in how to use it. Therefore the provider selection is stored per location type. What you select for one location (e.g. a field declaration) is not activated for another location (e.g. a method declaration) until it&#8217;s also selected there.</p><p>In the next days the current version will be improved in terms of design and stability. Then a further unofficial prototype will be released for download. First testers as well as any feedback is much welcome :-)</p> ]]></content:encoded> <wfw:commentRss>http://stefanhenss.com/an-update-on-eclipse-extdoc/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Location-Sensitive Documentation in Eclipse</title><link>http://stefanhenss.com/location-sensitive-documentation-in-eclipse?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=location-sensitive-documentation-in-eclipse</link> <comments>http://stefanhenss.com/location-sensitive-documentation-in-eclipse#comments</comments> <pubDate>Wed, 01 Jun 2011 10:12:55 +0000</pubDate> <dc:creator>Stefan Henß</dc:creator> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Code Recommenders]]></category> <category><![CDATA[Subclassing Directives]]></category><guid isPermaLink="false">http://stefanhenss.com/?p=485</guid> <description><![CDATA[When invoking the content assist in Eclipse usually you will be provided with reasonable suggestions on what you might want to write next. Those may include the completion of a variable name, available methods from a type API or even those methods which return the type you are looking for (e.g. in a variable assignment). [...]]]></description> <content:encoded><![CDATA[<p>When invoking the content assist in Eclipse usually you will be provided with reasonable suggestions on what you might want to write next. Those may include the completion of a variable name, available methods from a type API or even those methods which return the type you are looking for (e.g. in a variable assignment). Such completion proposals are context-sensitive, i.e. they depend on what you have written so far.</p><p>Documentation in Eclipse/JDT &#8211; the Javadoc &#8211; however is context-independent. There is at most one static text assigned to a type or method, which will be displayed no matter what context it is used in. This solution is obvious since usually there is only general information provided by the API designer. But when working with large amount of data mined from different contexts in order to automatically infer documentation, as the <a href="http://www.eclipse.org/recommenders/">Eclipse Code Recommenders</a> project does, it will become&nbsp;reasonable&nbsp;to apply a context-dependent filter on this data as well.</p><p>The <a href="http://stefanhenss.com/vision-extended-documentation-for-eclipse">Extended Documentation Platform</a> (ExtDoc), an upcoming feature of Code Recommenders, will host multiple documentation providers which require several information to identify the user&#8217;s current interest &#8211; such as the location of a Java element he selects. To give a better idea of the capabilities of location resolval, in the following different locations inside Java code will be discussed first. Then the usage of location information is illustrated by the example of one of the documentation providers which will be included in the ExtDoc feature.</p><h2>Java Element Locations</h2><p>The type is probably one of the most diversely used concepts in Java. This is due to the several roles a type can take just by different syntactical usage. The same type name in a single source code might indicate the variable type in one occasion and be the constructor identifier in the next. The following code snippet gives an example of different type usages within just a few lines of code &#8211; which could easily be extended, e.g. by type parameters. In each occasion the type has a different role within the class and different documentation might be relevant.</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/05/positions2.png" rel="lightbox[485]"><img class="aligncenter size-full wp-image-586" title="positions" src="http://stefanhenss.com/wp-content/uploads/2011/05/positions2.png" alt="" width="488" height="140" /></a></p><p>Discrimination between locations can also be applied to methods and variables. And it can be of high value to the documentation provider as well. Assuming that exemplary code snippets for a selected element are to be displayed, relevant examples for a variable in a field declaration might differ very much from relevant examples for the same field variable used inside a method, where methods might have already been invoked on the variable. Also a variable passed as a method argument could have other examples presented for since its common usage might differ, e.g. only getters might be invoked. A case study for using location information is given below.</p><h2>Case Study: Subclassing Directives</h2><p>Subclassing &#8211; the inheritance and extension/overloading of a type &#8211; is a powerful concept for software architects, but can also lead to a high complexity. Usually your IDE will show you all inherited methods and fields; to identify their usage however is up to you. This can lead to problems, especially if you are required to call certain methods (e.g. for configuration) or even override methods that are not declared as abstract by the superclass. One way to handle this is to read through the whole Javadoc &#8211; or to use subclassing directives mined from actual API usage!</p><p>Subclassing directives are mined and provided by the Code Recommenders project; one of the first ExtDoc providers will display them. The following image depicts a UI prototype for a subclassing documentation for the JFace Wizard type. Each line indicates in how many cases methods of Wizard are overridden by the subclass. Furthermore the methods of Wizard usually called from within subclasses will be displayed.</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/05/subclassing.png" rel="lightbox[485]"><img class="size-full wp-image-588 aligncenter" title="subclassing" src="http://stefanhenss.com/wp-content/uploads/2011/05/subclassing.png" alt="" width="488" height="218" /></a></p><p>It is obvious that you will want to have this information displayed when you are extending the Wizard type, e.g. when clicking on &#8220;Wizard&#8221; in the &#8220;extends&#8221; section of your class. Also the constructor might be a good place to learn more about the extension of the class. However, it would be quite pointless to display such information when Wizard is just the type of method&#8217;s parameter &#8211; you won&#8217;t be able to subclass the parameter anyway. Instead you will rather be interest in call patterns, i.e. which methods usually are invoked on Wizard. This also applies to other occasions of variable declarations and type usage, e.g. the method return type.</p><p>Another perspective on subclassing arises from single methods: Should an overridden method call its super implementation? And which other methods are expected to be called from within this particular method? The following is a UI prototype for subclassing directives on the method level:</p><p style="text-align: center;"><a href="http://stefanhenss.com/wp-content/uploads/2011/05/subclassing2.png" rel="lightbox[485]"><img class="size-full wp-image-592 aligncenter" title="subclassing2" src="http://stefanhenss.com/wp-content/uploads/2011/05/subclassing2.png" alt="" width="488" height="218" /></a></p><p>Again the relevance of this information differs significantly between different locations. As the information about methods usually called from within the new implementation is only relevant to be displayed when actually working &#8220;inside&#8221; the method, it would be confusing to have subclassing information displayed when the method is selected in the context of another method just referencing/calling it.</p><h2>Conclusion</h2><p>As a conclusion it can be of great benefit for the user to have a documentation system which tells apart the multiple different contexts and locations Java elements do appear in. Especially when dealing with large amounts of data the context is powerful information to discriminate between the relevance of information in order to just deliver documentation that is of interest to the user. The case study of a subclassing directives provider has given a first example of distinguishing between locations of a type. In upcoming articles further documentation providers, along with different aspects of using Java and Eclipse will be presented.</p> ]]></content:encoded> <wfw:commentRss>http://stefanhenss.com/location-sensitive-documentation-in-eclipse/feed</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Keeping Track of Java Element Selections in Eclipse</title><link>http://stefanhenss.com/keeping-track-of-java-element-selections-in-eclipse?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keeping-track-of-java-element-selections-in-eclipse</link> <comments>http://stefanhenss.com/keeping-track-of-java-element-selections-in-eclipse#comments</comments> <pubDate>Tue, 31 May 2011 07:39:02 +0000</pubDate> <dc:creator>Stefan Henß</dc:creator> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Code Recommenders]]></category> <category><![CDATA[ExtDoc]]></category> <category><![CDATA[Java]]></category><guid isPermaLink="false">http://stefanhenss.com/?p=425</guid> <description><![CDATA[Currently I am working on the &#8220;Extended Documentation Platform&#8221; for Eclipse, which is part of the Code Recommenders project (see Vision and UI prototypes). As the platform is intended to provide context-relevant information, it is important to know which elements the user selects. However, obtaining the required information from Eclipse/JDT is not always trivial, which is why [...]]]></description> <content:encoded><![CDATA[<p><a href="http://stefanhenss.com/wp-content/uploads/2011/05/selections2.png" rel="lightbox[425]"><img class="alignleft size-full wp-image-577" title="selections" src="http://stefanhenss.com/wp-content/uploads/2011/05/selections2.png" alt="" width="150" height="112" /></a>Currently I am working on the &#8220;Extended Documentation Platform&#8221; for Eclipse, which is part of the <a href="http://www.eclipse.org/recommenders/">Code Recommenders</a> project (see <a title="Vision: Extended Documentation for Eclipse" href="http://stefanhenss.com/vision-extended-documentation-for-eclipse">Vision</a> and <a title="UI Prototypes for Extended Documentation Platform" href="http://stefanhenss.com/ui-prototypes-for-extended-documentation-platform">UI prototypes</a>). As the platform is intended to provide context-relevant information, it is important to know which elements the user selects. However, obtaining the required information from Eclipse/JDT is not always trivial, which is why I will present my solution for tracking Java element selections in Java editors, the package explorer and alike.</p><h2>Listening to Selections</h2><p>There is a Eclipse standard solution for listening to GUI selection events, which includes implementing the <a title="Interface ISelectionListener" href="http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/ISelectionListener.html">ISelectionListener</a> interface. It will be notified on most selections inside editors and views (the <a href="http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/IWorkbenchPart.html">IWorkbenchPart</a>).</p><pre class="brush: java; title: ;">
class MySelectionListener implements ISelectionListener {
	@Override
	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
		...
	}
}
</pre><p>In order to register the listener, the current <a href="http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/IWorkbenchWindow.html">IWorkbenchWindow</a> and its <a title="Interface ISelectionService" href="http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/ISelectionService.html">ISelectionService</a> have to be accessed, which can be achieved using the three lines of code given below. Additional to the selection listener also a <a href="http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/IPartListener.html">IPartListener</a> is registered, which will be described later. The third line might result in a NullPointerException if it is called &#8220;too early&#8221;, e.g. when the plugin is started, because the window&#8217;s page (the container for all editors and views) might not yet be initialized. Therefore this listener should be registered after the plugin loaded. A safer way is, when providing a new window element like a view, to call getSite().getPage() from the <a href="http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/IWorkbenchPart.html">UI part</a> extension.</p><pre class="brush: java; title: ;">
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
window.getSelectionService().addSelectionListener(new MySelectionListener());
window.getActivePage().addPartListener(new MyPartListener());
</pre><p>A major problem with tracking Java element selections using the ISelectionListener is that it does not listen to all selections in editors. In fact, only marking and de-marking of text is tracked. In order to implement additional listeners tracking cursor position changes, the specific editor has to be accessed first. As there is no single &#8220;static&#8221; element like the workbench window, but instead each editor window/tab one opens has its own listener service, newly opened editors have to be detected using an <a href="http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/IPartListener.html">IPartListener</a>. Since all single windows (editors and views) are tracked by the IPartListener, all parts except editors &#8211; Java editors in particular- have to be filtered.</p><pre class="brush: java; title: ;">
class PartListener implements IPartListener {
	@Override
	public void partOpened(final IWorkbenchPart part) {
		if (workbenchPart instanceof JavaEditor) {
			final JavaEditor editor = (JavaEditor) workbenchPart;
			final StyledText text = (StyledText) editor.getAdapter(Control.class);
			text.addKeyListener(this.myCursorListener);
			text.addMouseListener(this.myCursorListener);
		}
	}
}
</pre><p>Having obtained access to a Java editor, one can add listeners for mouse- and key events to become aware of every cursor position change in any opened Java editor. Notice that, as we now have our own listener for Java editors, there is no need to fire selection events using the ISelectionListener, so one might want to add<br /> <code>if(!(part instanceof JavaEditor)){...}</code> to his/her implementation of <code>selectionChanged</code>.</p><pre class="brush: java; title: ;">
class MyCursorListener implements MouseListener, KeyListener {
	@Override
	public void keyPressed(final KeyEvent event) {
		...
	}
	@Override
	public void mouseUp(final KeyEvent event) {
		...
	}
}
</pre><h2>Resolving the Selection</h2><p>Being aware of selection events, one finally wants to know what exactly is selected by the user. The ISelectionListener already provides the IWorkbenchPart and the <a href="http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface/viewers/ISelection.html">ISelection</a>. However, the cursor listener does not. This is not much of a problem since those information can generally be accessed from any place at any time &#8211; assuming that there is an active IWorkbenchPage (see above).</p><pre class="brush: java; title: ;">
final IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IWorkbenchPart part = activePage.getActivePart();
ISelection selection = activePage.getSelection());
</pre><p>An ISelection will be one of IBlockTextSelection, IMarkSelection, IStructuredSelection, ITextSelection or ITreeSelection, where each selection type contains some specific information, e.g. the selected elements for a tree selection. However, we are interested in further information not available from the selection information. What we want in particular is indicated by the following interface.</p><pre class="brush: java; title: ;">
public interface IJavaElementSelection {
	IJavaElement getJavaElement();
	JavaElementLocation getElementLocation();
	JavaContentAssistInvocationContext getInvocationContext();
	ASTNode getAstNode();
}
</pre><p>The ASTNode and the JavaElementLocation are subject of an upcoming article. The IJavaElement (representing nearly everything in JDT &#8211; from projects to variables) and the JavaContentAssistInvocationContext (which is also created when invoking the content assist using ctrl+space and contains much useful information) have to be resolved depending on the selection type. The following method takes a workbench part and a selection as obtained above and resolves the required information for tree selections (package explorer, content outline, &#8230;) and selections in Java editors.</p><pre class="brush: java; title: ;">
public IJavaElementSelection resolve(IWorkbenchPart part, ISelection selection) {
	IJavaElementSelection context = null;
	if (selection instanceof ITreeSelection) {
		context = fromTreeSelection((ITreeSelection) selection);
	} else if (part instanceof JavaEditor &amp;&amp; selection instanceof ITextSelection){
		context = fromEditor((JavaEditor) part, (ITextSelection) selection);
	}
	return context;
}
</pre><p>Taking a Java element from a tree selection is fairly easy. We will assume that when several elements should be selected we are only interested in the first one as the ExtDoc Platform will only support single-element views. A JavaContentAssistInvocationContext can only be created for editors, so the Java element is enough for now.</p><pre class="brush: java; title: ;">
private IJavaElementSelection fromTreeSelection(final ITreeSelection selection) {
	IJavaElement javaElement = null;
	final Object firstElement = selection.getFirstElement();
	if (firstElement instanceof IJavaElement) {
		javaElement = (IJavaElement) firstElement;
	}
	return new JavaElementSelection(javaElement);
}
</pre><p>Since an ITextSelection is an &#8220;abstract&#8221; scenario applicable to any text editor, one cannot access the selected Java element directly. Instead, several steps have to be taken, as shown in the following method.</p><pre class="brush: java; title: ;">
private IJavaElementSelection resolveFromEditor(final JavaEditor editor, final ITextSelection selection) throws JavaModelException {
	IJavaElement javaElement = null;
	final IEditorInput input = editor.getEditorInput();
	final ITypeRoot root = (ITypeRoot) JavaUI.getEditorInputJavaElement(input);
	final IJavaElement[] elements = root.codeSelect(selection.getOffset(), 0);
	if (elements.length &gt; 0) {
		javaElement = elements[0];
	}
	return new JavaElementSelection(javaElement, selection.getOffset(), editor);
}
</pre><p>Now a different constructor for a JavaElementSelection (our own type, see the interface above) is called, also containing the selection offset and a reference to the editor. This extra information is stored as we might later be interested in creating a JavaContentAssistInvocationContext for the identified Java element selection. This can be achieved comparatively easily:</p><pre class="brush: java; title: ;">
new JavaContentAssistInvocationContext(editor.getViewer(), offset, editor);
</pre><h2>Conclusion</h2><p>As a conclusion one can say that the general Eclipse listener interface works well for most task of tracking user activity. However, since most of the effort is spend on tracking and resolving Java element selections in the Java editors, a JDT-specific selection listening service might be a relevant extension of the JDT API since one can image many different plugins built upon such information.</p><p>In an upcoming article the element selection information will be used to compute further context information, including the resolves abstract syntax tree (AST) node as well as the &#8220;code position&#8221; (is a variable name written as part of a field declaration, as a parameter declaration or just used inside a method block?) which is of interest to the Extended Documentation Platform as different information might be relevant for the same Java element used in unequal occasions.</p> ]]></content:encoded> <wfw:commentRss>http://stefanhenss.com/keeping-track-of-java-element-selections-in-eclipse/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>UI Prototypes for Extended Documentation Platform</title><link>http://stefanhenss.com/ui-prototypes-for-extended-documentation-platform?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ui-prototypes-for-extended-documentation-platform</link> <comments>http://stefanhenss.com/ui-prototypes-for-extended-documentation-platform#comments</comments> <pubDate>Thu, 19 May 2011 16:53:25 +0000</pubDate> <dc:creator>Stefan Henß</dc:creator> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Code Recommenders]]></category> <category><![CDATA[ExtDoc]]></category> <category><![CDATA[Google Summer of Code]]></category><guid isPermaLink="false">http://stefanhenss.com/?p=153</guid> <description><![CDATA[In my last article, I gave an overview of the main ideas behind the upcoming Extended Documentation Platform (ExtDoc), which is part of the Eclipse Code Recommenders project. In order to ease the integration of new API documentation content (e.g. usage statistics for Java elements) into the Eclipse IDE, the ExtDoc Platform will provide several [...]]]></description> <content:encoded><![CDATA[<p>In my <a title="Vision: Extended Documentation for Eclipse" href="http://stefanhenss.com/vision-extended-documentation-for-eclipse">last article</a>, I gave an overview of the main ideas behind the upcoming Extended Documentation Platform (ExtDoc), which is part of the <a title="Eclipse Code Recommenders" href="http://www.eclipse.org/recommenders/">Eclipse Code Recommenders</a> project. In order to ease the integration of new API documentation content (e.g. usage statistics for Java elements) into the Eclipse IDE, the ExtDoc Platform will provide several interfaces for contributing to a framework of Eclipse views and pop-ups. It will furthermore provide support for enriching the API documentation with &#8220;web 2.0&#8243; features like users sharing content (from new code patterns to Wiki-like Javadoc) or rating and commenting the documentation entries. In the following a couple of UI prototypes reflecting the current planning state are given. Your feedback is much appreciated :-)</p><h2>Extended Views</h2><p>The most important part of the ExtDoc Platform is its tabbed view, which will provide an independent page for each documentation provider. This means that despite being integrated into the same Eclipse view, each provider is free on how to present his content. To enable the provider to deliver information suiting the user&#8217;s focus the ExtDoc platform will inform him about any of the user&#8217;s new actions and selections inside the IDE.</p><p>As there will be many providers offered by Code Recommenders and also any third-party contributor is very much welcome to register his own documentation provider, the user will be given the possibility to choose which providers he wants to be displayed. Furthermore he will be able to define several ExtDoc views on his own to set up different collections of providers between which he might switch depending on the type of information he is currently interested in.</p><p>The following images show how different documentation might be integrated into the views. As mentioned, the provider is not limited to a specific kind of display (e.g. only text), instead he is free to compose his page using any SWT widgets. However, we decided to stick with the Javadoc appeal for our first prototypes.</p><p class="gallery"><a class="left" href="http://stefanhenss.com/wp-content/uploads/2011/05/view-subclassing1.jpg" rel="lightbox[153]"><img title="Subclassing provider: displays different patterns of extending a selected Java class, along with probabilities for each extension. Also each pattern can be commented, rated, given feedback on and be removed." src="http://stefanhenss.com/wp-content/uploads/2011/05/view-subclassing1-300x187.jpg" alt="" width="190" height="120" /></a><br /> <a href="http://stefanhenss.com/wp-content/uploads/2011/05/view-wiki1.jpg" rel="lightbox[153]"><img title="Wiki-like provider which allows users to share own text-only documentation. Again community features are available for each Wiki page." src="http://stefanhenss.com/wp-content/uploads/2011/05/view-wiki1-300x187.jpg" alt="" width="190" height="120" /></a><br /> <a class="right" href="http://stefanhenss.com/wp-content/uploads/2011/05/view-templates2.jpg" rel="lightbox[153]"><img title="Provider displaying relevant method call patterns for the selected class. The community features are similar to the subclassing provider, but templates can even be edited by users." src="http://stefanhenss.com/wp-content/uploads/2011/05/view-templates2-300x187.jpg" alt="" width="190" height="120" /></a></p><h2 class="clear">Extended Pop-Ups</h2><p>Other places Eclipse traditionally displays documentation (Javadoc) in include the pop-ups appearing when selecting or hovering over an element in the editor, as well as when selecting a completion proposal in the code assist. For such pop-ups the ExtDoc Platform will extend the original Javadoc with useful information obtained from its providers. Furthermore, it will again offer tabs to browse through the providers&#8217; single pages. The composition of documentation providers for pop-ups will also, again, be modifiable by the user.</p><p>The first two images show general pop-ups, first unselected and then expanded by selection; the third image illustrates the content that is shown along a selected completion proposal.</p><p class="gallery"><a class="left" href="http://stefanhenss.com/wp-content/uploads/2011/05/hover.jpg" rel="lightbox[153]"><img title="Default Javadoc pop-up extended with a relevance score and information about whether a parameter may be null or not." src="http://stefanhenss.com/wp-content/uploads/2011/05/hover-300x187.jpg" alt="" width="190" height="120" /></a><br /> <a href="http://stefanhenss.com/wp-content/uploads/2011/05/hover-extended.jpg" rel="lightbox[153]"><img title="When the pop-up is focused all single provider tabs are accessible and documentations can be browsed in place." src="http://stefanhenss.com/wp-content/uploads/2011/05/hover-extended-300x187.jpg" alt="" width="190" height="120" /></a><br /> <a class="right" href="http://stefanhenss.com/wp-content/uploads/2011/05/completion-overview.jpg" rel="lightbox[153]"><img title="Also the Javadoc pop-up besides the code assist is extended with documentation providers." src="http://stefanhenss.com/wp-content/uploads/2011/05/completion-overview-300x187.jpg" alt="" width="190" height="120" /></a></p><h2 class="clear">Community Features</h2><p>One of the core ideas of an &#8220;IDE 2.0&#8243; is users sharing information. Currently Code Recommenders supports this implicitly by distributing data mined from actual API usage. To make user contribution explicit, the ExtDoc Platform will provide several features to enable users to share content and communicate about it. Such content might, for example, include changes to a element-specific Wiki or new code templates for a class type.</p><p>Ways of sharing content will be displayed in the next section. In order to communicate over content, features such as ratings and comments are offered by the ExtDoc platform. A potential rating feature is indicated by the stars in the previous images, the comments feature is illustrated in the first of the following two images. As a user might want to directly address the provider author, e.g. to suggest new features, a feedback framework will also be provided, as illustrated in the second image.</p><p class="gallery2"><a href="http://stefanhenss.com/wp-content/uploads/2011/05/dialog-comments4.jpg" rel="lightbox[153]"><img title="Most of the information given by the ExtDoc providers can be commented on by the users." src="http://stefanhenss.com/wp-content/uploads/2011/05/dialog-comments4-300x187.jpg" alt="" width="190" height="120" /></a><br /> <a href="http://stefanhenss.com/wp-content/uploads/2011/05/dialog-feedback2.jpg" rel="lightbox[153]"><img title="Additionally, every provider is free to implement an own feedback form." src="http://stefanhenss.com/wp-content/uploads/2011/05/dialog-feedback2-300x187.jpg" alt="" width="190" height="120" /></a></p><h2 class="clear">Sharing Content</h2><p>As mentioned before, users will be able to contribute new content in various forms. Of course, the specific type of content depends on the documentation provider and which functionality he enables. The Code Recommenders providers will allow several types of content to be shared. For example, the definitions of new code patterns or subclassing templates. Another example is a community-driven Wiki-like Javadoc system.</p><p>As it applies to all aspects of the ExtDoc platform, each content provider is free in how to set-up his services, e.g. how to deal with user data, if user input should be enabled, which kind of input is entered in which way (e.g. an editor in the main perspective vs. dialog pop-ups) and how he proceeds with incoming data. However, resulting from the integration of several Code Recommenders providers, a variety of classes and interfaces will be provided to ease the set-up of content sharing systems.</p><p>The following two images show two different content editors as they might be implemented for Code Recommenders providers.</p><p class="gallery2"><a href="http://stefanhenss.com/wp-content/uploads/2011/05/editor-add1.jpg" rel="lightbox[153]"><img title="Editor for adding a new template definition to the templates provider." src="http://stefanhenss.com/wp-content/uploads/2011/05/editor-add1-300x187.jpg" alt="" width="190" height="120" /></a><br /> <a href="http://stefanhenss.com/wp-content/uploads/2011/05/dialog-edit1.jpg" rel="lightbox[153]"><img title="The same template editor integrated in a dialog window." src="http://stefanhenss.com/wp-content/uploads/2011/05/dialog-edit1-300x187.jpg" alt="" width="190" height="120" /></a></p><h2 class="clear">Settings</h2><p>Eventually, the variety of API documentation and the possibilities to deal with it have to be handled by the user. With a growing number of documentation providers one of the most important user decisions is which to display. However, the user preferences may change quickly, e.g. for one class he might only require his default selection, for another he might want to use a special documentation &#8220;toolkit&#8221;. Therefore, as displayed in the first picture, the user will be able to define multiple views and for each which providers should appear in which order.</p><p>Furthermore, also the providers displayed in pop-ups can be selected, as depicted in the second image.</p><p>Some documentation providers might also offer specific user settings. Again, this option is supported by the ExtDoc platform but not required or limited in any way. A possible preferences page for one of the providers is shown in the last picture.</p><p class="gallery"><a class="left" href="http://stefanhenss.com/wp-content/uploads/2011/05/settings-views2.jpg" rel="lightbox[153]"><img title="The user will be able to define several views and which provider should appear in each of them" src="http://stefanhenss.com/wp-content/uploads/2011/05/settings-views2-300x187.jpg" alt="" width="190" height="120" /></a><br /> <a href="http://stefanhenss.com/wp-content/uploads/2011/05/settings-popups2.jpg" rel="lightbox[153]"><img title="Also the providers appearing in the pop-up windows can be set by the user." src="http://stefanhenss.com/wp-content/uploads/2011/05/settings-popups2-300x187.jpg" alt="" width="190" height="120" /></a><br /> <a class="right" href="http://stefanhenss.com/wp-content/uploads/2011/05/settings-provider.jpg" rel="lightbox[153]"><img title="Some providers may add their own preferences page for adjusting display and functionality." src="http://stefanhenss.com/wp-content/uploads/2011/05/settings-provider-300x187.jpg" alt="" width="190" height="120" /></a></p><h2 class="clear">Summary</h2><p>To sum up, the UI prototypes show that ExtDoc will impact the way users are looking for information while coding. Up until now the developer has to search the Internet as soon as the Javadoc, written by the API designer, is missing of insufficient. With ExtDoc and its providers the intelligence of the community will come right into the IDE. The appropriate documentation might just be a tab away &#8230;</p><p>The next article(s) will go much more into the details of which individual providers are planned to be released from the first versions of ExtDoc on. This will include a general improvement on the Javadoc view, subclassing directives, code patterns / templates, a Wiki and more. See you there!</p> ]]></content:encoded> <wfw:commentRss>http://stefanhenss.com/ui-prototypes-for-extended-documentation-platform/feed</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Vision: Extended Documentation for Eclipse</title><link>http://stefanhenss.com/vision-extended-documentation-for-eclipse?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=vision-extended-documentation-for-eclipse</link> <comments>http://stefanhenss.com/vision-extended-documentation-for-eclipse#comments</comments> <pubDate>Mon, 09 May 2011 08:38:21 +0000</pubDate> <dc:creator>Stefan Henß</dc:creator> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Code Recommenders]]></category> <category><![CDATA[ExtDoc]]></category> <category><![CDATA[Google Summer of Code]]></category><guid isPermaLink="false">http://stefanhenss.com/?p=68</guid> <description><![CDATA[In his blog, Marcel Bruch, project lead of Eclipse Code Recommenders, discussed the problem of incomplete javadoc. He argues that &#8220;good and comprehensive documentation is crucial for the success of open source software&#8221;, but &#8220;is (too) often incomplete or outdated&#8221;. Probably a lot of developers will agree. To provide the developer with more information, the [...]]]></description> <content:encoded><![CDATA[<p><a href="http://stefanhenss.com/wp-content/uploads/2011/05/teaser1.jpg" rel="lightbox[68]"><img class="alignleft size-medium wp-image-151" title="Extended Documentation for Eclipse" src="http://stefanhenss.com/wp-content/uploads/2011/05/teaser1-300x233.jpg" alt="" width="150" height="117" /></a>In his blog, Marcel Bruch, project lead of <a title="Eclipse Code Recommenders" href="http://www.eclipse.org/recommenders/">Eclipse Code Recommenders</a>, discussed the <a title="The Problem of Incomplete Javadoc" href="http://code-recommenders.blogspot.com/2010/03/problem-of-incomplete-javadocs.html">problem of incomplete javadoc</a>. He argues that &#8220;good and comprehensive documentation is crucial for the success of open source software&#8221;, but &#8220;is (too) often incomplete or outdated&#8221;. Probably a lot of developers will agree. To provide the developer with more information, the Recommenders project analyzes the usage of APIs in public available source code. So far a couple of <a title="Intelligent Code Completion" href="http://www.eclipse.org/recommenders/documentation/completion/">Intelligent Code Completion</a> providers are already released, including the <a title="Dynamic, example-driven templates engine" href="http://code-recommenders.blogspot.com/2011/03/eclipse-code-recommenders-02.html">Dynamic Template Completion</a> I have recently developed. A lot more features are on their way, for example context-sensitive code examples or a stracktrace search engine. However, this information must be presented.</p><p>So Marcel and I sat together to discuss a framework for content providers to integrate their information into the Eclipse IDE as efficient as possible. Finally, we&#8217;ve proposed our ideas as an Eclipse project to <a title="Google Summer of Code" href="http://code.google.com/soc/">Google Summer of Code</a> and <a title="Code Recommenders: Extended &amp; Crowd-sourced Javadoc Platform" href="https://socghop.appspot.com/gsoc/project/google/gsoc2011/henss/10002">got accepted</a>! Thus, this blog post not only is a vision to our work, but an introduction for the Eclipse and GSOC communities as well.</p><h3>Extended Documentation (ExtDoc)</h3><p>For providing the user with very specific, context-sensitive information, Eclipse offers several extension points, e.g. to the editor&#8217;s code assist feature. Generally, however, most information is included in special views, for which &#8211; especially when presenting mainly text &#8211; a lot of design and implementation work is (re-)done by each plugin. Especially the Eclipse Code Recommenders project, with its tons of mined data regarding API usage, and its several sub-projects, has to deal with this issue when trying to provide the user with the most comprehensive documentation about the packages, classes, methods, etc. he wants to know more about.</p><p>To ease the integration into the IDE, the Code Recommenders ExtDoc framework will provide a single, tabbed view to which each provider can register and submit his content to. The user is then able to configure the view according to his current needs (e.g. which content to show) and easily browse through all available information. Furthermore, he will be able to interact with the content, share thoughts about it with the community, and provide feedback to the publisher &#8211; all through one view.</p><p>Additionally to the view, the provider content will also be available in the pop-ups that appear when hovering over elements in the editor, as well as when selecting, for example, a method in the completion proposals system. This will bring the information even closer to the user and will allow him to directly browse the provider content on the spot. Due to the size limitations of the pop-ups, the content provider will have the possibility to provider different content than for the view, for example to provide a summary or only the most important information. Once again, the standard Javadoc display will not be replaced, but enhanced with tabs</p><h3>Documentation 2.0</h3><p>Not only can the IDE be enriched by community-driven information, as done by the Recommenders project, the IDE can also be used to make API documentation &#8220;more 2.0&#8243; and to give feedback to  the publishers. To do so one important feature of ExtDoc will be to add standard solutions for interacting with provider content. First, depending on the content, the user will be able to add, modify and remove items, for example a code template. Furthermore, he will be able to communicate about the single items through ratings and a comments system. Finally, if desired, he can also provide direct feedback to the publisher, e.g. if he has a feature request.</p><h3>ExtDoc for Developers</h3><p>For the (third-party) providers of content, the goal of ExtDoc is to be as supportive and at the same time as flexible as possible. A lot of special interfaces, classes, methods, SWT components, design templates, etc. shipped with the ExtDoc framework can be deployed by your provider, but in principle the view is yours! Usually a plugin provides a SWT composite in order to define a view and so will ExtDoc ask for SWT composites from its providers. Thus you will be free in how to build your view and might only reuse certain components, e.g. the visual rating system. Also for other parts, like the feedback form, the ExtDoc framework will provide everything, from simple builders to absolute freedom. Even for dealing with user content we will offer you solutions, for example a client/server implementation for the comments, but in the end it&#8217;s up to you and your provider extension which features to make available and how to deal with the data.</p><p>One further thing to notice is the context information we will provide. The Recommenders project already does a great job in augmenting the default information given by the Eclipse API, for example by parsing ASTs. All this information is combined and delivered to each content provider as soon as the user changes his selection in the IDE. By doing so the providers&#8217; efforts in analyzing the context is reduced and they can decide on their own in which occasions their displayed content has to change in which way.</p><h3>Upcoming</h3><p>Despite the detailed information given in some sections, this vision should not have been more than an introduction to the topic. As the project evolves we will publish further information regarding the single aspects. As a next step, I will submit a series of GUI prototypes to concretize the ideas given here and give you the opportunity to help shaping this interesting project according to your needs and wishes.</p> ]]></content:encoded> <wfw:commentRss>http://stefanhenss.com/vision-extended-documentation-for-eclipse/feed</wfw:commentRss> <slash:comments>3</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk
Database Caching 1/36 queries in 0.006 seconds using disk
Object Caching 516/679 objects using disk

Served from: stefanhenss.com @ 2012-05-20 10:15:15 -->
