tag:blogger.com,1999:blog-300499632024-03-13T19:42:40.766-05:00Eclipse Lives In WinnipegThe Winnipeg team develops a pile of Eclipse projectsMichael Renniehttp://www.blogger.com/profile/11412892738963099114noreply@blogger.comBlogger54125tag:blogger.com,1999:blog-30049963.post-56039584222763365382012-06-28T14:46:00.001-05:002012-06-28T14:46:10.432-05:00Searching Bugzilla Faster with Firefox KeywordsJust a few ideas that can make <a href="https://bugs.eclipse.org/bugs/page.cgi?id=quicksearch.html">searching</a> for bugs faster.<br />
<br />
<b>1) Use the shortened url</b><br />
<br />
Simply enter the url: bugs.eclipse.org/######<br />
where ###### is the bug number and bugzilla will open the full url (https://bugs.eclipse.org/bugs/show_bug.cgi?id=######) <br />
<br />
<b>2) Install the quick search plug-in</b><br />
<br />
From the <a href="https://bugs.eclipse.org/bugs/">main page</a> just hit the link: <a href="javascript:window.external.AddSearchProvider('https://bugs.eclipse.org/bugs/search_plugin.cgi')">Install the Quick Search plugin.</a><br />
<br />
<b>3) Use Firefox <a href="http://superuser.com/questions/7327/how-to-add-a-custom-search-engine-to-firefox">keywords</a> for advanced searches</b><br />
<br />
In Firefox, open up the bugzilla search page and right click on the search field. Select "Add a keyword for this search". This will create a bookmark that you can access directly from the address bar using whatever key word you chose.<br />
<br />
Assuming you use 'bug' as a keyword, entering bug 123456 will take you directly to that bug. Entering 'bug import package' will search for bugs with the words in the summary.<br />
<br />
Assuming you are logged in, you can use your saved advanced search settings to get more specific results. My default advanced search only looks at certain products/components, so I have a separate keyword for this narrowed search scope.<br />
<br />
You can also craft more complex search urls and save them as bookmarks to save a variety of search settings. See Firefox's <a href="http://kb.mozillazine.org/Using_keyword_searches">zine entry</a> on keywords.<br />
<br />
<i>Hope this helps save you some time!</i>Curtishttp://www.blogger.com/profile/07823163562402913233noreply@blogger.com0tag:blogger.com,1999:blog-30049963.post-34848391892869994322011-10-12T11:18:00.004-05:002011-10-12T11:37:22.222-05:00Debug Top-level ToolbarRecently the platform debug team has been working on a new idea for debug-view-less debugging. We have come up with the idea of a top-level toolbar for the common debug commands; so (in theory) you can debug with needing the debug view front and center of your current perspective. The new toolbar can be activated from within the debug view using the <span style="font-weight:bold;">View Menu > Debug Toolbar</span> menu item.<br /><br />The root Eclipse bug for the enhancement is <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=258767">bug 258767</a><br /><br />We have already found lots of room for improvement:<br /><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=359151">bug 359151</a>, <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=264485">bug 264485</a>, <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=360172">bug 360172</a>, <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=360636">bug 360636</a> and <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=360637">bug 360637</a><br /><br />So for all those interested in the debug-view-less debugging idea, please spend some time and try out the new toolbar, just remember to file bugs!<br /><br />The toolbar look and feel:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-7WjkXV0sbOw/TpXA5gfPgqI/AAAAAAAAAAo/WZTiCMgxg_8/s1600/debug-toolbar.png"><img style="display:block; margin:0px auto 10px; text-align:left;cursor:pointer; cursor:hand;width: 320px; height: 108px;" src="http://1.bp.blogspot.com/-7WjkXV0sbOw/TpXA5gfPgqI/AAAAAAAAAAo/WZTiCMgxg_8/s320/debug-toolbar.png" border="0" alt="The debug top-level toolbar"id="BLOGGER_PHOTO_ID_5662644200694317730" /></a>Michael Renniehttp://www.blogger.com/profile/11412892738963099114noreply@blogger.com0tag:blogger.com,1999:blog-30049963.post-382032351269092752011-01-14T16:12:00.000-06:002011-01-14T16:12:04.460-06:00Debugging Ant Tasks with Self HostingDo you know that Eclipse Ant support has debugging capabilities?<br />
<br />
If not, check out <a href="http://www.ibm.com/developerworks/opensource/tutorials/os-ecl-easyant/">this tutorial</a> to get started.<br />
<br />
Do you know how to self-host with Eclipse to test plug-ins?<br />
<br />
If not <a href="http://wiki.eclipse.org/PDE/FAQ#How_do_test_my_plug-ins">here is a quick overview</a>.<br />
<br />
To debug ant tasks in a self hosted environment, the tasks must be included in a plug-in project. If you are working with tasks outside of a plug-in development scenario, you can use remote debugging instead. Here is a <a href="http://www.vitorrodrigues.com/blog/2009/07/10/debugging-ant-tasks-in-eclipse/">blog post</a> to get you started.<br />
<br />
Scenario:<br />
<br />
<br />
You are developing an ant task to be included in an Eclipse plug-in. You have the java code to execute the task in a plug-in that defines the task as an ant task extension in the plug-in xml. The task runs, but the output is a bit off. Time to start debugging. <br />
<br />
<br />
1) Start a runtime workbench<br />
<br />
Same as you would when debugging any other plug-in.<br />
<br />
2) Create a new ant script<br />
<br />
It doesn't matter what kind of project you put the script in.<br />
<br />
Fill in the script with the proper targets and properties. When calling your tasks, you will have to put in their full name as defined in the <i>org.eclipse.ant.core.antTasks</i> extension. When running from a built jar, just the name of the class is satisfactory, but when self hosting we need the full name.<br />
<br />
3) Create a new ant launch configuration<br />
<br />
Right click on the script and hold down Ctrl while clicking "Debug > Ant Script". You can also open the launch config dialog from the main menu, "Run > External Tools > External Tools Configurations".<br />
<br />
4) Set up configuration options<br />
<br />
Give the configuration a name. On the JRE tab, select "Run in the same JRE as the workspace". If you don't change this option, debugging won't work correctly.<br />
<br />
5) Run the configuration<br />
<br />
If there is a problem running the task, check that you have the full name of the task written in. You can also check that Ant knows about your task by looking on the Ant > Runtime preference page (the Tasks tab will list all known tasks).<br />
<br />
6) Start debugging<br />
<br />
Set some breakpoints in the host workspace. Make sure you debug your ant script (not just run it).<br />
<br />
Note: Hot Code Replace does not work when debugging this way as the jar containing the tasks must be rebuilt.Curtishttp://www.blogger.com/profile/07823163562402913233noreply@blogger.com0tag:blogger.com,1999:blog-30049963.post-84916498371708309512010-10-20T10:15:00.004-05:002010-10-20T10:31:52.349-05:00Weird SVN StateToday when I got to work and tried to sync a pile of my projects, I was met with the following exception (and a cute dialog telling me the same thing, but without as many red X's):<br /><br />org.eclipse.team.svn.core.connector.SVNConnectorException: svn: '/home/mrennie/workspaces/workspace/CommandLineDebugger' is not a working copy<br />svn: Cannot read from '/home/mrennie/workspaces/workspace/CommandLineDebugger/.svn/format': /home/mrennie/workspaces/workspace/CommandLineDebugger/.svn/format (No such file or directory)<br />at org.polarion.team.svn.connector.svnkit.SVNKitConnector.handleClientException(SVNKitConnector.java:1400)<br />at org.polarion.team.svn.connector.svnkit.SVNKitConnector.status(SVNKitConnector.java:337)<br />at org.eclipse.team.svn.core.extension.factory.ThreadNameModifier.status(ThreadNameModifier.java:608)<br />at org.eclipse.team.svn.core.operation.local.RemoteStatusOperation$2.run(RemoteStatusOperation.java:147)<br />at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doSubTask(ProgressMonitorUtility.java:118)<br />at org.eclipse.team.svn.core.operation.AbstractActionOperation.protectStep(AbstractActionOperation.java:154)<br />at org.eclipse.team.svn.core.operation.AbstractActionOperation.protectStep(AbstractActionOperation.java:149)<br />at org.eclipse.team.svn.core.operation.local.RemoteStatusOperation.runImpl(RemoteStatusOperation.java:145)<br />at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)<br />at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)<br />at org.eclipse.team.svn.core.operation.CompositeOperation.runImpl(CompositeOperation.java:95)<br />at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)<br />at org.eclipse.team.svn.core.operation.LoggedOperation.run(LoggedOperation.java:39)<br />at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)<br />at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternal(ProgressMonitorUtility.java:90)<br />at org.eclipse.team.svn.core.synchronize.AbstractSVNSubscriber.findChanges(AbstractSVNSubscriber.java:314)<br />at org.eclipse.team.svn.core.synchronize.AbstractSVNSubscriber$UpdateStatusOperation$2.run(AbstractSVNSubscriber.java:349)<br />at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doSubTask(ProgressMonitorUtility.java:118)<br />at org.eclipse.team.svn.core.operation.AbstractActionOperation.protectStep(AbstractActionOperation.java:154)<br />at org.eclipse.team.svn.core.operation.AbstractActionOperation.protectStep(AbstractActionOperation.java:149)<br />at org.eclipse.team.svn.core.synchronize.AbstractSVNSubscriber$UpdateStatusOperation.runImpl(AbstractSVNSubscriber.java:347)<br />at org.eclipse.team.svn.core.operation.AbstractActionOperation.run(AbstractActionOperation.java:81)<br />at org.eclipse.team.svn.core.operation.LoggedOperation.run(LoggedOperation.java:39)<br />at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTask(ProgressMonitorUtility.java:104)<br />at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternal(ProgressMonitorUtility.java:90)<br />at org.eclipse.team.svn.core.utility.ProgressMonitorUtility.doTaskExternal(ProgressMonitorUtility.java:81)<br />at org.eclipse.team.svn.core.synchronize.AbstractSVNSubscriber.refresh(AbstractSVNSubscriber.java:186)<br />at org.eclipse.team.svn.core.synchronize.UpdateSubscriber.refresh(UpdateSubscriber.java:73)<br />at org.eclipse.team.core.subscribers.Subscriber.refresh(Subscriber.java:466)<br />at org.eclipse.team.core.subscribers.SubscriberMergeContext.refresh(SubscriberMergeContext.java:85)<br />at org.eclipse.team.core.mapping.provider.SynchronizationContext.refresh(SynchronizationContext.java:109)<br />at org.eclipse.team.internal.ui.synchronize.RefreshModelParticipantJob.doRefresh(RefreshModelParticipantJob.java:69)<br />at org.eclipse.team.internal.ui.synchronize.RefreshParticipantJob.run(RefreshParticipantJob.java:309)<br />at org.eclipse.team.internal.ui.synchronize.RefreshModelParticipantJob.run(RefreshModelParticipantJob.java:117)<br />at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)<br />Caused by: org.tigris.subversion.javahl.ClientException: svn: '/home/mrennie/workspaces/workspace/CommandLineDebugger' is not a working copy<br />svn: Cannot read from '/home/mrennie/workspaces/workspace/CommandLineDebugger/.svn/format': /home/mrennie/workspaces/workspace/CommandLineDebugger/.svn/format (No such file or directory)<br />at org.tigris.subversion.javahl.JavaHLObjectFactory.throwException(JavaHLObjectFactory.java:724)<br />at org.tmatesoft.svn.core.javahl.SVNClientImpl.throwException(SVNClientImpl.java:1929)<br />at org.tmatesoft.svn.core.javahl.SVNClientImpl.status(SVNClientImpl.java:304)<br />at org.tmatesoft.svn.core.javahl.SVNClientImpl.status(SVNClientImpl.java:282)<br />at org.polarion.team.svn.connector.svnkit.SVNKitConnector.status(SVNKitConnector.java:334)<br />... 33 more<br />Caused by: org.tmatesoft.svn.core.SVNException: svn: '/home/mrennie/workspaces/workspace/CommandLineDebugger' is not a working copy<br />svn: Cannot read from '/home/mrennie/workspaces/workspace/CommandLineDebugger/.svn/format': /home/mrennie/workspaces/workspace/CommandLineDebugger/.svn/format (No such file or directory)<br />at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)<br />at org.tmatesoft.svn.core.internal.wc.admin.SVNAdminAreaFactory.open(SVNAdminAreaFactory.java:149)<br />at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.doOpen(SVNWCAccess.java:355)<br />at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.open(SVNWCAccess.java:263)<br />at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.open(SVNWCAccess.java:256)<br />at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.openAnchor(SVNWCAccess.java:151)<br />at org.tmatesoft.svn.core.wc.SVNStatusClient.doStatus(SVNStatusClient.java:320)<br />at org.tmatesoft.svn.core.javahl.SVNClientImpl.status(SVNClientImpl.java:300)<br />... 35 more<br /><br />After swearing for a bit and asking Google what I should do (and having no luck) I tried deleting suspicious looking files from the /.svn folder located in each affected project. The winner - at least for me - was to delete the /.svn/tmp folder and all of its contents and then restart Eclipse. After that all is well and I can sync to my hearts content.<br /><br />I filed a bug for this state problem here:<br />https://bugs.eclipse.org/bugs/show_bug.cgi?id=328258Michael Renniehttp://www.blogger.com/profile/11412892738963099114noreply@blogger.com0tag:blogger.com,1999:blog-30049963.post-5846300139899789712010-09-15T13:38:00.002-05:002010-09-15T14:17:20.041-05:00How p2 based targets workSoftware Site locations in Target Definitions, typically described as "p2 based targets" are targets that get their bundles from an update site or p2 repository. This article will go over some of the implementation details of these targets. Knowing how the bundles are downloaded and added to the target can help to reproduce bugs and find workarounds.<br /><br />For more general information on Target Platforms, see my <a href="http://eclipse-debug.blogspot.com/2010/09/what-is-target-platform.html">previous article</a>. The Eclipse help doc also explains a lot about how to create p2 based targets and add content to them.<br /><br /><span style="font-weight: bold;">The Basics:</span><br /><br />Target definitions are created using the preference page or the editor. To create a p2 based target, at least one 'software site' location must be added to the target. The actual site location is abstracted from PDE. A local zipped repo, a remote site or a local profile will all be treated the same. A software site location specifies a site (or a category such as "all available sites") as well as one or more <span style="font-style: italic;">Root IUs</span>. The root IUs describe what is being downloaded from the site, they are often high level features that effectively group a collection of bundles.<br /><br />Target definitions must be <span style="font-style: italic;">resolved</span> to modify the bundle list on the content tab or to set one as the active target platform. The resolve operation runs for each location independently. For most locations the resolve simply scans the location to get a list of file locations for bundles. In the case of a software site location, a more complex operation must be run.<br /><br /><span style="font-weight: bold;">Resolving Software Sites:</span><br /><br />For each software site location, the following steps are taken:<br /><br /><ol><li>Load the repositories. This will create a queryable repository object. p2 will often request a repo's contents.xml file.</li><li>Get the root IUs. If the location didn't already have actual installable units for the root units, the root IUs will be obtained from the site.</li><li>Setup the planner or slicer. More on this later.</li><li>Create a profile.</li><li>Run the operation. Downloads and installs the units into the profile.</li><li>Collect bundle locations for the target platform.</li></ol>Note: In 3.7 a new performance enhancement was added that will skip the above steps and instead attempt to get a list of bundles from the stored profile. If the profile doesn't contain all the expected bundles or a problem occurs, the operation reverts to following the above steps.<br /><br /><span style="font-weight: bold;">Important Locations:</span><br /><br />The following directories describe where PDE/p2 stores information related to the target resolution. Those familiar with p2 can modify the contents of the directories to force things to be recreated or to use the contents for a special purpose.<br /><br />Target Definition Files:<br /><workspace>/.metadata/.plugins/org.eclipse.pde.core/.local_targets<br />Where PDE stores the targets it creates from the preference page.<br /><br />Profile Location:<br /><eclipse>/p2/org.eclipse.equinox.p2.engine/profileRegistry<br />Where profiles are created and persisted<br /><br />Bundle Pool:<br /><workspace>/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool<br />Where p2 will download the bundles to during the operation<br /><br /><span style="font-weight: bold;">Planning vs Slicing</span><br /><br />Once we have one or more sites and root IUs, we run a provisioning operation to download the required bundles and install them into a profile. The operation can be done using a <span style="font-style: italic;">slicer</span>, which is typically used for mirroring a site or a <span style="font-style: italic;">planner</span>, which is used by Eclipse to safely install and update itself. <br /><br />Which one to use is determined by the options at the bottom of the wizard when editing a software site location. If "Include required software" is checked the planner is used. If unchecked the slicer is used. The include all environments setting determines if environment properties are set on the slicer.<br /><br />The planner behaves the same as though we were installing the root IUs into an application. Therefore it checks that the complete set of required IUs are available to be downloaded and installed. If any IU is missing, the planner will report an error saying that a requirement is missing. This can be convenient as you may not realize some important piece is missing from your target. However, the target does not need to be a complete, runnable install, so forcibly requiring everything may be optimal.<br /><br />The slicer uses an operation that copies IUs from a remote site to a local location. The slicer does create a list of required IUs, however it does not fail if the requirements are missing. Instead it will download all requirements it can from the site or sites that have been provided. This is a lot more flexible than the planner as all available IUs (even IUs that don't apply to the current environment settings) will be downloaded.<br /><br /><span style="font-weight: bold;">Conclusion:</span><br /><br />After the resolve operation is complete, a list of bundles will be returned (pointing to the local copies in the bundle pool). PDE will use the local bundles as the target.Curtishttp://www.blogger.com/profile/07823163562402913233noreply@blogger.com2tag:blogger.com,1999:blog-30049963.post-50265952550349891922010-09-15T10:57:00.007-05:002010-09-15T12:05:44.170-05:00What is a Target Platform<span><span class="resultofText" name="resultofMatch">The current Target Platform in PDE is very important to anyone developing bundles in Eclipse. Whether you are developing SDK Plug-ins, an RCP product or a OSGi application, managing the contents of your target platform is important.<br /><br /><span style="font-weight: bold;">So what is a target platform?</span><br /><br />At its core, a target platform is a collection of plug-ins (aka bundles) that PDE can use to compile against, launch with, lookup in</span></span><span><span class="resultofText" name="resultofMatch">formation in and more. When developing a bundle it is almost guaranteed that you will depend on other bundles. While you can have the complete required set of bundles in your workspace, it clutters the navigator views and degrades performance. The target platform provides an easy way to manage the bundles you build against.<br /></span></span><br /><span><span class="resultofText" name="resultofMatch">The target platform is used for the following in PDE:</span></span><ol><li><span>Compile - Plug-ins in the workspace are built against the <span class="resultofText" name="resultofMatch">target</span> platform so you do not have to have everything in your workspace</span></li><li><span>Launch - When using PDE's launchers you can choose the set of plug-ins you want to launch. By default the Eclipse Application Launcher will start with all plug-ins in the <span class="resultofText" name="resultofMatch">target</span>, but will use workspace plug-ins instead when available</span></li><li><span>Calculate Dependencies - PDE assists you in finding the plug-ins your plug-ins was include/require to compile correctly by looking at what is available in the <span class="resultofText" name="resultofMatch">target</span> platform</span></li></ol><span><span class="resultofText" name="resultofMatch"><br /><span style="font-weight: bold;">Where do I edit the target platform?</span><br /><br />The target platform is managed on the <span style="font-style: italic;">PDE > Target Platform</span> preference page. When you go to that page (3.5 and later) you will see a list of all the <span style="font-style: italic;">target definitions </span>you have available with the current target platform bolded. PDE only has a single active target platform that all bundles in the workspace use (this might <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=159072">change someday</a>).<br /><br /></span></span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx00pTAThMwEnQWP3hVM_QbZIfQrR7gvb2ajlqhD8KbG3ouk9IPbzY-NELZwPbVj7kNBcilH82zu5NmGINJ2eAK8qbXSoSRKP_8l3egfhkODL16YtlmFfN5WTvXua80z0_tcVm/s1600/prefdialog.png"><img style="cursor: pointer; width: 320px; height: 283px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjx00pTAThMwEnQWP3hVM_QbZIfQrR7gvb2ajlqhD8KbG3ouk9IPbzY-NELZwPbVj7kNBcilH82zu5NmGINJ2eAK8qbXSoSRKP_8l3egfhkODL16YtlmFfN5WTvXua80z0_tcVm/s320/prefdialog.png" alt="" id="BLOGGER_PHOTO_ID_5517185480955909746" border="0" /></a><br /><span><span class="resultofText" name="resultofMatch"><br />However, you can have multiple target definitions. A target definition describes the contents of a target. You can select any target definition as the target platform and that is what PDE will build against. For users who only build one product, you only need to create and modify a single definition, but users who develop different applications (or different versions of the same application) in the same workspace will find that having multiple target definitions makes it easy to switch modes.<br /><br /><span style="font-weight: bold;">How do I create a target?</span><br /><br />To get started, go to the preference page and hit add to create a new target. There are some options to create targets from existing templates, but for now select <span style="font-style: italic;">Nothing</span> and hit next.<br /><br />There are many options when setting up a target, but only a few are needed for basic setups. The first step is to give the target definition a name so we can recognize it later.<br /><br /><pic></pic></span></span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF3PNSbLHg0Bzj3RwgNv-xjq4Hp864q5opaBWDKPS6yjpIaRq1Jn2mtyiJmaLB116iwLamAA2Cwseiw2YLATyVHtsH7r7xKFVot84clFWsu8X3CGYCMo0YBhrHUW28zXDfglQh/s1600/newtarget.png"><img style="cursor: pointer; width: 320px; height: 227px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF3PNSbLHg0Bzj3RwgNv-xjq4Hp864q5opaBWDKPS6yjpIaRq1Jn2mtyiJmaLB116iwLamAA2Cwseiw2YLATyVHtsH7r7xKFVot84clFWsu8X3CGYCMo0YBhrHUW28zXDfglQh/s320/newtarget.png" alt="" id="BLOGGER_PHOTO_ID_5517187022428978306" border="0" /></a><br /><span><span class="resultofText" name="resultofMatch"><pic><br />The important parts of a target definition is its locations and its content. The locations define where the target should find bundles, the content defines which bundles from the location to take.<br /><br />On the locations tab you can add 4 types of locations. A directory will just collect any bundles found in the directory you point it to. An installation will treat the location as an Eclipse application. Rather than just looking in a directory, the installation location will consider link folders, a platform.xml if the app uses update manager, or a bundles.info file if the app uses p2 (simple configurator). A feature location will add a single feature and its included bundles to the target. Finally, a software site location will allow bundles to be retrieved from a local or remote update site or p2 repository.<br /><br />The content tab is only important if you need to limit the bundles in the target. For plug-in developers this step is unecessary, but for RCP developers it can be more important. <a href="http://www.modumind.com/2008/04/21/why-create-a-custom-target-platform/">This article</a> explains the reasoning. The content tab will list all the bundles in the target, along with check boxes to remove them. The tab also provides a number of ways to filter the list so you can quickly remove certain types.<br /><br /><pic></pic></pic></span></span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfmEx8mk7VKwb3S8cq57454Z3DuAZLZnQTkhDmkLs85t6Re04hF37QYt6pF6-R0lq0KbgiS_J2sIP4N90Q6CKcr65yewsTwRvG8ZvBFZMjsXWF7tmZaFd072aRZwj7xdyWWFuf/s1600/targetcontent.png"><img style="cursor: pointer; width: 320px; height: 227px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfmEx8mk7VKwb3S8cq57454Z3DuAZLZnQTkhDmkLs85t6Re04hF37QYt6pF6-R0lq0KbgiS_J2sIP4N90Q6CKcr65yewsTwRvG8ZvBFZMjsXWF7tmZaFd072aRZwj7xdyWWFuf/s320/targetcontent.png" alt="" id="BLOGGER_PHOTO_ID_5517187261091451970" border="0" /></a><br /><span><span class="resultofText" name="resultofMatch"><pic><pic><br />One internal detail that target platform users may want to know is that when bundles are unchecked, the remaining list of bundles is stored as an include list, independant of the locations. This was a change from the <3.5 style="font-style: italic;">share</pic></pic></span> button on the preference page. You can also create a new target definition file in the workspace using File > New. The target files can be added to a version control system and shared among team members.<br /><br /><span style="font-weight: bold;">What other features use targets?</span><br /><br />The Target Platform State View can be used to see what is in your target.<br /><a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/eclipse-news-part4.html#pdetargetdialog">Add new content</a> to your target on the fly.<br />You can <a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/eclipse-news-part4.html#exporttarget">export the contents</a> of your target platform.<br />Manage your target <a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/eclipse-news-part4.html#featuretarget">contents using features</a>.<br />Add the target platform to the<a href="http://download.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/eclipse-news-part4.html#synch-java-search"> java search path</a>.<br /><br /><span style="font-weight: bold;">What is in the future for targets?</span><br /><br />In 3.7 there have been multiple improvements around software site (p2) based targets, including improved <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=276326">resolution performance</a> and better <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=295576">offline support</a>. PDE's API Tooling features already leverage some of the target code, but hopefully in the near future there will be even <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=324310">better integration</a>.<br /><br />Expect another blog post soon explaining more about how p2 targets work.</span>Curtishttp://www.blogger.com/profile/07823163562402913233noreply@blogger.com0tag:blogger.com,1999:blog-30049963.post-15332956810910535772010-05-13T12:20:00.004-05:002010-05-13T12:46:45.545-05:00"Add new expression" inline in Expressions View<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zT-lAlLsQQ8/S-w321MrG9I/AAAAAAAAABI/_sIdXBr5QsQ/s1600/Add_new_expression.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 200px;" src="http://1.bp.blogspot.com/_zT-lAlLsQQ8/S-w321MrG9I/AAAAAAAAABI/_sIdXBr5QsQ/s400/Add_new_expression.png" alt="" id="BLOGGER_PHOTO_ID_5470809062481009618" border="0" /></a><br />The debugger expressions view has a new feature: the ability to add a new expression without opening a dialog. When user clicks on "Add new expression" entry, a cell editor is activated to enter the new expression. <br /><br />I hope most people will appreciate this little convenience but since introducing it few months ago I got <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=312177">one complaint</a> and a request to make it optional. What do you think? Is it worth adding yet another preference to try to make everyone happy?Pawel Piechhttp://www.blogger.com/profile/16885370055529903756noreply@blogger.com5tag:blogger.com,1999:blog-30049963.post-18577052463130862082009-09-16T12:13:00.007-05:002009-09-16T13:12:00.625-05:00API Use ReportsIt's no longer rocket science - mere mortals can create API Use Reports using Eclipse 3.6 M2. Report generation is integrated as an external tool. Simply open the External Tools dialog (<strong>Run > External Tools > External Tools Configurations...</strong>), create a new "API Use Report" configuration, tweak settings, and press "Run". <div><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPTEjBfSmhVghpBDqUwLmaPfKPzl3l2nDK_-wYHFJjn24frND9eafgsrtIEcXuRy_fAdeCGvRVHCPsyHNkOS3kTokGTbCduOMkgLe21Q63_RaGGAhqpoooLecZNJkR_AGDWCbeJA/s1600-h/api-report-settings.png"><img id="BLOGGER_PHOTO_ID_5382128719404524114" style="WIDTH: 314px; CURSOR: hand; HEIGHT: 320px" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPTEjBfSmhVghpBDqUwLmaPfKPzl3l2nDK_-wYHFJjn24frND9eafgsrtIEcXuRy_fAdeCGvRVHCPsyHNkOS3kTokGTbCduOMkgLe21Q63_RaGGAhqpoooLecZNJkR_AGDWCbeJA/s320/api-report-settings.png" border="0" /></a><br /></div><div></div><div><br />You have to specify:</div><ul><li>The <strong>bundles</strong> to analyze (which can be provided as an API baseline, a PDE target definition, or simply as a directory)</li><li>Whether to report <strong>API</strong> and/or <strong>internal </strong>references</li><li>Optionally, the <strong>scope</strong> to analyze (use regular expressions to include bundles to search and bundles you are interested in references to, or leave blank to scan everything)</li><li>A <strong>directory</strong> to write the report in </li></ul><p>In this example, I ran a report for API & internal references in one of the M2 warm up builds. I only included references between <code>org.eclipse.*</code> bundles. What does it show? Lots of stuff.</p><div align="left"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJhZCLKwXqrsNPHoLuw05ujgh3p_hEppx7ezEm8aI28d_0SPvKe8me4hHvPWZvgs5pAl8Dsfy6CbJ0cJaPjQOPd1Hwvk5yD-F3pi68xln2dUg_ej3PfRra6M2hdVjLW-uliF8tdg/s1600-h/report.png"><img id="BLOGGER_PHOTO_ID_5382127402481832130" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 270px" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJhZCLKwXqrsNPHoLuw05ujgh3p_hEppx7ezEm8aI28d_0SPvKe8me4hHvPWZvgs5pAl8Dsfy6CbJ0cJaPjQOPd1Hwvk5yD-F3pi68xln2dUg_ej3PfRra6M2hdVjLW-uliF8tdg/s320/report.png" border="0" /></a><br /></div><div><br /><br /></div><div><br /></div><div><br /><br /></div><p></p>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-30049963.post-70732854252574147822009-07-21T11:47:00.001-05:002009-07-21T11:47:32.603-05:003.6 PDE plan ideasWe have updated our PDE 3.6 plan ideas page here : <a href="http://wiki.eclipse.org/PDE/Plan/3.6">http://wiki.eclipse.org/PDE/Plan/3.6</a> so check it out...feedback is always welcome.<br>Sent on the TELUS Mobility network with BlackBerryMichael Renniehttp://www.blogger.com/profile/11412892738963099114noreply@blogger.com0tag:blogger.com,1999:blog-30049963.post-82330014664500645102009-06-11T11:59:00.001-05:002009-06-11T12:02:13.659-05:00Breakpoints Not Being Hit?<p>Just wanted to bring attention to an issue discovered with Sun’s recently released 1.6.0_14 virtual machine. Breakpoints are unreliable - i.e. do not always suspend execution. The problem occurs on Windows and Linux platforms. The associated Eclipse bug is:</p><p><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=279137">https://bugs.eclipse.org/bugs/show_bug.cgi?id=279137</a></p><p>At this point, it appears to be an issue with the VM rather than Eclipse. The workaround is to use the 1.6.0_13 virtual machine.</p>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-30049963.post-31742128691519182512009-05-01T09:45:00.007-05:002009-05-01T10:57:22.364-05:00Target Platforms in 3.5What a milestone for <a href="http://www.eclipse.org/pde/pde-ui/"><span class="blsp-spelling-error" id="SPELLING_ERROR_0">PDE</span></a>. <a href="http://eclipsesource.com/blogs/author/zx/">Chris</a> has been blogging away about things in M7, and I wanted to talk a little more about the target platform changes coming in M7.<br /><br />When I started work on <span class="blsp-spelling-error" id="SPELLING_ERROR_1">PDE</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_2">UI</span>, this is all I knew about target platforms...<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoFd7sEF3X20us4cktOEAqpsLlY_Z1rtGY8-xiZMSUm0eVzzFHCn9W9TvL2sVpzEHQzgLo3uLhT0iQRBZWWMKK334CrinZ5mh5UtyZEYOzRhIlPN0dXBfudJ2ZoV6RCdi9cJJA/s1600-h/Screenshot-PreferencesOld.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 260px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoFd7sEF3X20us4cktOEAqpsLlY_Z1rtGY8-xiZMSUm0eVzzFHCn9W9TvL2sVpzEHQzgLo3uLhT0iQRBZWWMKK334CrinZ5mh5UtyZEYOzRhIlPN0dXBfudJ2ZoV6RCdi9cJJA/s320/Screenshot-PreferencesOld.png" alt="" id="BLOGGER_PHOTO_ID_5330871709564813170" border="0" /></a><br />Talk about button overload. So many features, none of which I ever had touched as a debug plug-in developer. I didn't like the <span class="blsp-spelling-error" id="SPELLING_ERROR_3">UI</span>, I was confused by the 'model' that backed it, and touching anything on that page seemed to break someone (or everyone).<br /><br />Fortunately, in 3.5 the <a href="http://www.eclipse.org/pde/pde-ui/committers/committers.php"><span class="blsp-spelling-error" id="SPELLING_ERROR_4">PDE</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_5">UI</span> team:</a> Chris A, Darin W, and myself along with <span class="blsp-spelling-error" id="SPELLING_ERROR_6">Ankur</span>, Ben, Simon and other contributors, had the opportunity to make it better.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVEjkXw5-qvHd2hMRnkHaAPatdKo5XffiL0L98XZh_fBIX5C408IAwyjYXU2yfXoTrFmmbZ7xlVVbvGnMHguEkGrzq3sVYcuaW69is2q1yQ-W3ghbSp2SZSXgftUqq2cl4l-Ws/s1600-h/Screenshot-PreferencesNew.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 290px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVEjkXw5-qvHd2hMRnkHaAPatdKo5XffiL0L98XZh_fBIX5C408IAwyjYXU2yfXoTrFmmbZ7xlVVbvGnMHguEkGrzq3sVYcuaW69is2q1yQ-W3ghbSp2SZSXgftUqq2cl4l-Ws/s320/Screenshot-PreferencesNew.png" alt="" id="BLOGGER_PHOTO_ID_5330873424370265298" border="0" /></a>The fundamental change is that the preference page is no longer about crafting a target platform. It's about choosing the target you need. There are many new features available and there is a proper model (provisional <span class="blsp-spelling-error" id="SPELLING_ERROR_7">api</span> as well) so interacting with targets <span class="blsp-spelling-error" id="SPELLING_ERROR_8">programmatically</span> is much easier.<br /><br />This was the first time I have written a significant <span class="blsp-spelling-error" id="SPELLING_ERROR_9">UI</span> component in Eclipse. It has been quite the learning experience and I have even more respect for the platform <span class="blsp-spelling-error" id="SPELLING_ERROR_10">UI</span> folks and those involved with the <a href="http://live.eclipse.org/node/558">p2 <span class="blsp-spelling-error" id="SPELLING_ERROR_11">UI</span></a> (which has developed into an excellent experience in 3.5). I <span class="blsp-spelling-error" id="SPELLING_ERROR_12">received</span> a lot of feedback along the way and have made every effort to develop a <span class="blsp-spelling-error" id="SPELLING_ERROR_13">UI</span> that respects legacy functionality, simplifies the story while supporting power users, and adds useful eye candy without button overload.<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc0oh5QxcXg7JNrQoDQ-SmpKHZ2kiooSJLsyusd4TpVjq6QInCmze-XPB2gXg0XzMopZb-98AJD7euQhyphenhyphenmpGYb504smdwvY9O-_ojrX3vqsN56M9RpbYFLe2LpivitwXuWuJSP/s1600-h/Screenshot-Java+-+org.eclipse.pde.doc.user-ExampleTarget.target+-+Eclipse+SDK+.png"><img style="cursor: pointer; width: 262px; height: 197px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc0oh5QxcXg7JNrQoDQ-SmpKHZ2kiooSJLsyusd4TpVjq6QInCmze-XPB2gXg0XzMopZb-98AJD7euQhyphenhyphenmpGYb504smdwvY9O-_ojrX3vqsN56M9RpbYFLe2LpivitwXuWuJSP/s200/Screenshot-Java+-+org.eclipse.pde.doc.user-ExampleTarget.target+-+Eclipse+SDK+.png" alt="" id="BLOGGER_PHOTO_ID_5330880828096622066" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2Y2PI7dPUEGF8BQAvknQ2evhrVuo7nxYceCKTcj6DIi1i5YIpz9izlL1bkxkAnnMwufpgA3JeWsQ8Roy3NuaSL90qJDRBSYgVKu7n7rF6sut8uT2E_mA3wzclVnu6c3oesM3O/s1600-h/Screenshot-Add+Content+-1.png"><img style="cursor: pointer; width: 180px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2Y2PI7dPUEGF8BQAvknQ2evhrVuo7nxYceCKTcj6DIi1i5YIpz9izlL1bkxkAnnMwufpgA3JeWsQ8Roy3NuaSL90qJDRBSYgVKu7n7rF6sut8uT2E_mA3wzclVnu6c3oesM3O/s200/Screenshot-Add+Content+-1.png" alt="" id="BLOGGER_PHOTO_ID_5330880741789158050" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiLJC5zknkb8N1pGzoAhtYbmjNlrxtBTStUK9vNK_FIWT-oHNAIceYGZlvXubVUb8roqS2dQFUNJYeo6DexqTlqGgu8b6pYLK-4x3t1fYrQpdI6c5pryTf9ilbJmbQkWFL-xrV/s1600-h/Screenshot-Edit+Target+Definition+-1.png"><img style="cursor: pointer; width: 173px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiLJC5zknkb8N1pGzoAhtYbmjNlrxtBTStUK9vNK_FIWT-oHNAIceYGZlvXubVUb8roqS2dQFUNJYeo6DexqTlqGgu8b6pYLK-4x3t1fYrQpdI6c5pryTf9ilbJmbQkWFL-xrV/s200/Screenshot-Edit+Target+Definition+-1.png" alt="" id="BLOGGER_PHOTO_ID_5330880655137886594" border="0" /></a><br /></div><br />In the future expect even more information to come out about how to work with target platforms, talk about some new ideas we are considering, and posts about some cool features you may not notice at first glance (like <a href="http://eclipsesource.com/blogs/2009/04/29/target-platform-provisioning/">p2 provisioned targets</a>). In the meantime, try out M7 and <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=PDE">let us know what you think</a>!Curtishttp://www.blogger.com/profile/07823163562402913233noreply@blogger.com2tag:blogger.com,1999:blog-30049963.post-64694145920002044402009-04-01T21:27:00.010-05:002009-04-01T22:10:10.602-05:00API Tooling From The CommandlineAPI tools has a very nice set of tools for analyzing API, creating .api_description files and scanning for API / internal use to mention but a few tasks. Using these tools currently requires you to make the apitooling-ant jar file available in an Eclipse environment or have them as part of a build process.<br /><br />We though it would be nice to be able to run the tools from the command line as well. With that in mind we have provided a generalized Ant build file that can be used to do just that. The build file in question is available from CVS in the org.eclipse.pde.api.tools project in the scripts folder. Also available in the scripts folder is a properties which is needed to map the task names to the task classes that provide them.<br /><br />The build file is fairly simple and has a plethora of comments to help you out. It performs 3 main tasks:<br />1. it builds the Ant classpath based on an Eclipse install<br />2. it extracts the apitooling-ant.jar from the API tools project jar<br />3. it runs whichever task you specifiy in the 'run' target<br /><br />Here is a sample use of the build file for running the API use scans from the command line:<br /><pre><br /><project name="apiusetask" basedir="." default="run"><br /> <property name="scope" value="/eclipse/eclipse_3.4.2/"><br /> <property name="baseline" value="/eclipse/eclipse.tar.gz"><br /> <property name="xml.report.loc" value="/eclipse/apiuse-commandline/xml"><br /> <property name="html.report.loc" value="/eclipse/apiuse-commandline/html"><br /> <property name="exclude.list.loc" value="/eclipse/exclude.txt"><br /> <property name="eclipse.install.dir" value="/eclipse/eclipse/plugins"><br /> <property name="eclipse.lib.dir" value="/eclipse/lib"><br /> <property name="apiuse.task.props" value="/eclipse/lib/apiuse_tasks.properties"><br /> <br /> <target name="init" depends="extract-apitoolingjar"><br /> <taskdef file="${apiuse.task.props}"><br /> <classpath><br /> <fileset dir="${eclipse.install.dir}"><br /> <include name="*.jar"><br /> </fileset><br /> <fileset dir="${eclipse.lib.dir}"><br /> <include name="*.jar"><br /> </fileset><br /> </classpath><br /> </taskdef><br /> </target><br /> <target name="extract-apitoolingjar"><br /> <unjar overwrite="true" dest="${eclipse.lib.dir}"><br /> <fileset dir="${eclipse.install.dir}"><br /> <include name="org.eclipse.pde.api.tools_*.jar"><br /> </fileset><br /> <patternset><br /> <include name="**/*.jar"><br /> </patternset><br /> </unjar><br /> <move file="${eclipse.lib.dir}/lib/apitooling-ant.jar"<br /> overwrite="true" <br /> todir="${eclipse.lib.dir}"/><br /> <delete dir="${eclipse.lib.dir}/lib/" includeemptydirs="true"><br /> </target><br /> <target name="run" depends="init"><br /> <apiuse<br /> baseline="${baseline}"<br /> scope="${scope}"<br /> report="${xml.report.loc}"<br /> excludelist="${exclude.list.loc}"<br /> considerinternal="true"<br /> considerapi="true"<br /> includenonapiprojects="true"<br /> debug="true"<br /> /><br /> <apiuse_reportconversion<br /> xmlfiles="${xml.report.loc}"<br /> htmlfiles="${html.report.loc}"<br /> debug="true"<br /> /><br /> </target><br /></project><br /></pre><br />To actually run the given build file you must have Ant available on the command line (obviously) and then run the following:<br /><br /><pre><br /> root%>ant -buildfile <build file name><br /></pre>Michael Renniehttp://www.blogger.com/profile/11412892738963099114noreply@blogger.com4tag:blogger.com,1999:blog-30049963.post-3639665569891284052009-03-09T09:48:00.003-05:002009-03-09T09:59:16.770-05:00API Use Scanning Now Has A FaceWith the API use scanning tooling out the door in Ant task form, I thought it was time to put a face on the feature. I know, I know, why would you need UI for the tools when they are already in Ant task form? Because not everyone is 100% Ant-savvy (myself included) and most users like the tactile feedback of clicking a mouse.<br /><br />The UI for the scanning feature is not in the official build yet, but fret not, we have provided it on our <a href="http://www.eclipse.org/pde/pde-api-tools/internal_updates/">update site</a>.<br /><br />To access the UI simply open the search dialog. There are plans in the works to expand the capabilities of the UI to not only scan baselines but to handle API elements in general, for now though you can only scan baselines. Happy scanning.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_DJRXz3dLaww/SbUt0ZBkbiI/AAAAAAAAAD8/ATAcnAV__M0/s1600-h/use_scan_ui.PNG"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 283px; height: 320px;" src="http://1.bp.blogspot.com/_DJRXz3dLaww/SbUt0ZBkbiI/AAAAAAAAAD8/ATAcnAV__M0/s320/use_scan_ui.PNG" border="0" alt="proposed API use scanning UI"id="BLOGGER_PHOTO_ID_5311201713647283746" /></a>Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-30049963.post-71399896363106145662009-02-19T13:45:00.004-06:002009-02-19T15:41:06.916-06:00Eclipse Bespin on SlashdotSo it appears that the <a href="http://borisoneclipse.blogspot.com/2009/02/eclipse-in-cloud.html">Eclipse-based Bespin server</a> created by Boris Bokowski and Simon Kaegi has made it to <a href="http://tech.slashdot.org/article.pl?sid=09/02/19/1440234">Slashdot</a>. The comments there reflect my feelings on the whole 'IDEs in the Cloud' concept. It's definitely<a href="http://arstechnica.com/open-source/news/2009/02/ide-in-the-cloud-mozilla-labs-browser-based-ide-prototype.ars"> new and interesting</a>, but how will it be useful to me?<br /><br />Looking forward to see how this <a href="http://wiki.eclipse.org/E4/Web-based_IDE">develops in e4</a>.Curtishttp://www.blogger.com/profile/07823163562402913233noreply@blogger.com0tag:blogger.com,1999:blog-30049963.post-39975969211335146562009-02-03T14:16:00.003-06:002009-02-03T15:11:17.480-06:00Debugger BreadcrumbIn 3.5M5 Eclipse Platform introduces a <a href="http://download.eclipse.org/eclipse/downloads/drops/S-3.5M5-200902021535/eclipse-news-M5.html#debug-view-breadcrumb">Breadcrum</a><a href="http://download.eclipse.org/eclipse/downloads/drops/S-3.5M5-200902021535/eclipse-news-M5.html#debug-view-breadcrumb">b feature in the Debug view</a>. Since it's a platform feature it is automatically available with JDT, CDT, or any commercial debugger built on the Eclipse framework. To see the breadcrumb, simply resize the Debug view to make it really short (about one line of text), and the view will automatically switch.<br /><br />We hope that this feature will make it easier for users to stay in their regular development perspective for majority of their debugging tasks. For example here's a screen shot of the C/C++ perspective with the Debug view breadcrumb above the editor.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_zT-lAlLsQQ8/SYiuQ9duPgI/AAAAAAAAAAQ/r5BEonUGKGc/s1600-h/Screenshot-CDT_w_Breadcrumb.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 256px;" src="http://4.bp.blogspot.com/_zT-lAlLsQQ8/SYiuQ9duPgI/AAAAAAAAAAQ/r5BEonUGKGc/s320/Screenshot-CDT_w_Breadcrumb.png" alt="" id="BLOGGER_PHOTO_ID_5298676568001756674" border="0" /></a><br />If you'd like to try debugging outside of the Debug perspective, there are two things you need to do:<br /><ol><li>Disable the automatic switching of perspective when debugging happens. Go to <span style="font-weight: bold;">Window->Preferences->Run/Debug->Perspectives</span> and select <span style="font-weight: bold;">Never</span> for both of the options that start with <span style="font-weight: bold;">Open associated perspective...</span></li><li>Enable view management in your development perspective.<span style="font-weight: bold;"><span style="font-weight: bold;"> </span></span>Go to <span style="font-weight: bold;">Window->Preferences->Run/Debug->View Management</span> and select the check-box for your perspective. This will cause Variables, Breakpoints, and other debugger views to automatically appear and disappear when you need them.</li></ol>Keep in mind that this is a brand new feature and really a whole new work-flow. We already have a growing <a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=&bug_file_loc_type=allwordssubstr&bug_id=&bugidtype=include&chfieldfrom=&chfieldto=Now&chfieldvalue=&classification=Eclipse&component=Debug&email1=&email2=&emailtype1=substring&emailtype2=substring&field-1-0-0=classification&field-1-1-0=product&field-1-2-0=component&field-1-3-0=short_desc&field0-0-0=noop&keywords=&keywords_type=allwords&long_desc=&long_desc_type=allwordssubstr&product=Platform&query_format=advanced&remaction=&short_desc=%5Bbreadcrumb%5D&short_desc_type=allwordssubstr&status_whiteboard=&status_whiteboard_type=allwordssubstr&type-1-0-0=anyexact&type-1-1-0=anyexact&type-1-2-0=anyexact&type-1-3-0=allwordssubstr&type0-0-0=noop&value-1-0-0=Eclipse&value-1-1-0=Platform&value-1-2-0=Debug&value-1-3-0=%5Bbreadcrumb%5Dorder=bugs.bug_id">list of issues</a> to fix, but if you find something new or have ideas for improvements, let us know.Pawel Piechhttp://www.blogger.com/profile/16885370055529903756noreply@blogger.com1tag:blogger.com,1999:blog-30049963.post-16256524363909177222008-12-18T11:12:00.002-06:002008-12-18T11:36:57.955-06:00Debug Unit TestsThere was a recent <a href="http://intellectualcramps.blogspot.com/2008/12/unit-tests-for-debug-framework.html">blog post</a> asking whether the debug framework had any unit tests and if so, where we were hiding them. Yes we do have a test suite to help protect against regressions and we hide it in the <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.debug.tests/">org.eclipse.jdt.debug.tests</a> plug-in.<br /><br />The majority of the tests require some implementation of the debug framework to run. We are responsible for the JDT Debugger, which is part of the SDK and implements the majority of the standard debug model. So the tests were designed to use JDT.<br /><br />Until Dave brought the idea up, I had never thought of anyone using unit tests to help implement their own debugger. The current tests certainly are not set up for this style of development. I think it would be really cool to have a generic testing harness that checks the behaviour of the framework. Users could have the test harness run against their implementations of the debug interfaces/extensions. Perhaps <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=259145">Bug 259145</a> could evolve into something like that.Curtishttp://www.blogger.com/profile/07823163562402913233noreply@blogger.com3tag:blogger.com,1999:blog-30049963.post-26488997335330292652008-12-04T15:12:00.011-06:002008-12-04T16:27:30.321-06:00Delivering Feature Patches - Part IIThis post will go over the basics of creating a Feature Patch, the most robust option when wanting to deliver some code changes, as discussed in my <a href="http://eclipse-debug.blogspot.com/2008/12/delivering-feature-patches.html">previous post</a>.<br /><br />First we must grab the bundles we are changing and edit the code. For this example I grabbed the org.eclipse.debug.ui bundle from CVS and applied the latest patch for the new <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252677">Debug Breadcrumbs</a> feature Pawel is working on.<br /><br />You must also set up your <a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.pde.doc.user/guide/tools/preference_pages/target_platform.htm">target platform</a> (Window > Preferences > PDE > Target Platform) to be what your intended client is using. Your target platform will determine what feature version you are going to patch. Therefore, to create a patch against 3.4.1, make sure to set your target platform to a 3.4.1 install. In this example I am using my default target platform (the latest I build).<br /><br />Note that at this point, we could use PDE to launch a runtime workbench and test out the changes immediately.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs3x_pUxX7arjAQeiJKrbnnJuTGZApHmQoNoBPXBT35E9cVNQEZy1McTKX5uPCxjfsjIj3PAocSdU2nM4SWPqNPgs36RaVBi25Qi5fx_bCEep-Dv3QW2X8fZjpEMPx0E33fFSE/s1600-h/patchworkspace.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 226px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs3x_pUxX7arjAQeiJKrbnnJuTGZApHmQoNoBPXBT35E9cVNQEZy1McTKX5uPCxjfsjIj3PAocSdU2nM4SWPqNPgs36RaVBi25Qi5fx_bCEep-Dv3QW2X8fZjpEMPx0E33fFSE/s320/patchworkspace.PNG" alt="" id="BLOGGER_PHOTO_ID_5276051159820528322" border="0" /></a><br />Now to create the feature patch, use File > New > PDE > Feature Patch. This brings up a wizard with multiple dialogs to fill in.<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcaR7PZ6k3HOCc9rMx5cOQYAreZUufysQmziWEFo67Awi9Bpp6Xqw2ZcJzQcDq5Y5sjxWvFZwwxZ5vJ-o9MMuuZH3Ei-qktesepI5bz-40khVeEYTjTEgzV5Alb8dJ9iaybtx4/s1600-h/newfeaturepatch.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 294px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcaR7PZ6k3HOCc9rMx5cOQYAreZUufysQmziWEFo67Awi9Bpp6Xqw2ZcJzQcDq5Y5sjxWvFZwwxZ5vJ-o9MMuuZH3Ei-qktesepI5bz-40khVeEYTjTEgzV5Alb8dJ9iaybtx4/s320/newfeaturepatch.PNG" alt="" id="BLOGGER_PHOTO_ID_5276053920912741346" border="0" /></a><br />You will have to choose a project name which is the name of the project that will be created in your workspace. Then you must choose a patch ID and name, which will be what your user sees when they try and install the patch. Finally, you must choose the feature which you are patching. Hitting the browse button will allow you to select one of the features from your target platform, and the name and version will be filled in for you.<br /><br />Hitting finish will bring up the feaure patch editor where you can edit many more things. For the simple case, we are going to move directly to the Plug-ins tab of the editor. Here, we will specify what new bundles the feature will have. Hit the Add... button and select your workspace bundle. You don't have to specify a version for the bundle because by default we will set the proper versions when we export.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSDzzqmhkjtB8fvixZOyldriesghmBJlEJ4xXWfpPLGeCNDa0LYScTeKDe9D2UOWgXI0DQv1P4fCT4rAYCJrxnygwEoqmFfQZJWvncfJAZ33qpglaLzj_BdQxLwu9F3HBqaDt6/s1600-h/featurepatcheditor.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 212px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSDzzqmhkjtB8fvixZOyldriesghmBJlEJ4xXWfpPLGeCNDa0LYScTeKDe9D2UOWgXI0DQv1P4fCT4rAYCJrxnygwEoqmFfQZJWvncfJAZ33qpglaLzj_BdQxLwu9F3HBqaDt6/s320/featurepatcheditor.PNG" alt="" id="BLOGGER_PHOTO_ID_5276056199272901762" border="0" /></a>The next step is to export the patch. PDE provides a convenient button in the top right section of the editor which will open the export dialog. Choose a directory where you want to export (you can move this folder to a website later to make it available remotely). You can also export to a jar file.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgcRSkO87NEG07kyoZ4XsXV6DHUyXm66cAv089McAyOzB9GgN2wItxJ2WIzhrd5XwVNlfxVAEbVqnqemhtHuoE1S4d4YS80GfUxiqI1lqJHwVL0uTJVrl2SSGxlHuLkBRBNF7O/s1600-h/exportdialog.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 237px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgcRSkO87NEG07kyoZ4XsXV6DHUyXm66cAv089McAyOzB9GgN2wItxJ2WIzhrd5XwVNlfxVAEbVqnqemhtHuoE1S4d4YS80GfUxiqI1lqJHwVL0uTJVrl2SSGxlHuLkBRBNF7O/s320/exportdialog.PNG" alt="" id="BLOGGER_PHOTO_ID_5276058431003674882" border="0" /></a>On this wizard it is also very important to go to the options tab and turn on the "package as individual jar archives" and "generate metadata" options. These options are required for p2 to be able to understand and install the patch.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7caBL1QTf8Cat09Rt5CNk7guRLHhYrd36_4Vnmc0zxN8pB3tKsVwrTbr_4fxWCJ-kOVj0TZE0oVpZHwwn3Dj5lipohq2udbpHt0Ivmzhwuj8GDkhLauargA5kwEvjOX0w5vff/s1600-h/optionstab.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 148px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7caBL1QTf8Cat09Rt5CNk7guRLHhYrd36_4Vnmc0zxN8pB3tKsVwrTbr_4fxWCJ-kOVj0TZE0oVpZHwwn3Dj5lipohq2udbpHt0Ivmzhwuj8GDkhLauargA5kwEvjOX0w5vff/s320/optionstab.PNG" alt="" id="BLOGGER_PHOTO_ID_5276059713470366450" border="0" /></a><br />Hit the finish button, wait for the operation to complete and we're done!<br /><br />To install the patch, we go to Help > Install New Software... Hit the Add Site button and select the directory we exported to (or the remote location, or the jar file). The dialog should now show our patch, check it and hit next to begin the install. You will have to step through a few pages to accept the license agreement.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEqXehUqYhKeMraZDVc7bheT96cEvYTb3RbPOdekAcbiDnDMIeU_5yL6AqQvrwrwGdsNV1mBvaYRKxaL_VEMgnISHKvnnF-HZCtQVAxo4fgTBZxxly57hGvuelknyGLDk_GoBY/s1600-h/installdialog.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 255px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEqXehUqYhKeMraZDVc7bheT96cEvYTb3RbPOdekAcbiDnDMIeU_5yL6AqQvrwrwGdsNV1mBvaYRKxaL_VEMgnISHKvnnF-HZCtQVAxo4fgTBZxxly57hGvuelknyGLDk_GoBY/s320/installdialog.PNG" alt="" id="BLOGGER_PHOTO_ID_5276062411038282770" border="0" /></a><br />After the install completes, we are prompted to restart eclipse (highly recommended). When Eclipse returns, we have a brand new feature to play around with.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBA6qGANsthtimiIXVXtKK2FcZkofGYS4KkJvhqtXZepmIVDMqaRYCVMLEGIgYSphpanpf30ZYg7Xs4Czmqub6z8Qf_0tAYUetso1_snPC300ruM8fT78YYljGy85f1Bo_D5Ly/s1600-h/breadcrumbs.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 184px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBA6qGANsthtimiIXVXtKK2FcZkofGYS4KkJvhqtXZepmIVDMqaRYCVMLEGIgYSphpanpf30ZYg7Xs4Czmqub6z8Qf_0tAYUetso1_snPC300ruM8fT78YYljGy85f1Bo_D5Ly/s320/breadcrumbs.PNG" alt="" id="BLOGGER_PHOTO_ID_5276064842212073794" border="0" /></a><br />So there you go, the basics of creating a feature patch!<br /><br />Optional: Instead of exporting the patch directly, you can also use an update site project with a site.xml to deliver the patch. Simply open an existing site.xml or create a new site project (File > New... > PDE > Update Site Project), hit the add button, select your feature patch project, and build the site. Using a update site project will generate an html page as well as allow the pre-p2 update manager to access the site.Curtishttp://www.blogger.com/profile/07823163562402913233noreply@blogger.com7tag:blogger.com,1999:blog-30049963.post-83937074232418374212008-12-04T10:50:00.005-06:002008-12-04T11:33:41.187-06:00Delivering Feature PatchesOne of the debug committers, Pawel Piech, has been working on creating a <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=252677">debug context breadcrumb</a>. A cool feature that we are all looking forward too. The current patch applies nicely to the debug ui project, but there is a need to try out the feature in your main Eclipse environment. Self-hosting isn't practical for everyone. There are a couple of ways of doing this in 3.5:<br /><br />1) Hack them in :) Export the bundles, put them in your install directory, rename them to have the same name and version as the previously installed bundles and start with -clean. This will trick p2 into loading the new code and treating it the same as the previous bundles. This is not a great choice as you are working behind p2's back so if there are any problems, you are on your own.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwL8M2nMDz4QDjY4fPmkrsHK9HS7kkn6_1yK4CQW8tEr5VZppuDviL9MB445Q9fenzOclBb_py51-dRw3-5OBQsv1DGtmrHjGblfcTNeUvriMs3oK2na4A7SOpHL2-OadDMeHf/s1600-h/hackplugins.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 146px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwL8M2nMDz4QDjY4fPmkrsHK9HS7kkn6_1yK4CQW8tEr5VZppuDviL9MB445Q9fenzOclBb_py51-dRw3-5OBQsv1DGtmrHjGblfcTNeUvriMs3oK2na4A7SOpHL2-OadDMeHf/s320/hackplugins.PNG" alt="" id="BLOGGER_PHOTO_ID_5275988659464141026" border="0" /></a><br />2) Use the new PDE<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=222945"> one step export and install feature</a>. Simply go to File > Export... > PDE > Deployable Plug-ins and Fragments. Then in the wizard, choose the last radio button "Install into running application". This will build your workspace bundles and use p2 to install them into your host application. Assuming all goes well, you'll have your code up and running and you can uninstall the changes using p2's UI (Help > Installation Information).<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYFTuDy5bA91QSHyDs5LjkqATjw3ZrM_j4bf0RWlIgBz2I-iBT1n8yktHRW0CgquP2IM-7VeyK1dKsFAeUHfzyIn4Fw3DFuU9MhMCta2gqBpwB3ryj42EwuflbnGWIoTeHK3lT/s1600-h/exportinstall.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYFTuDy5bA91QSHyDs5LjkqATjw3ZrM_j4bf0RWlIgBz2I-iBT1n8yktHRW0CgquP2IM-7VeyK1dKsFAeUHfzyIn4Fw3DFuU9MhMCta2gqBpwB3ryj42EwuflbnGWIoTeHK3lT/s320/exportinstall.PNG" alt="" id="BLOGGER_PHOTO_ID_5275988809629059970" border="0" /></a><br />3) Create a feature patch. While option 2 is the fastest for developers, feature patches allow you to provide the changes via an update site. Users will be able to install without ever checking out any code from CVS. My next blog post will explain the basics of creating a feature patch.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_UMAxYP68NNFvc0v_mt2hRsYk71POzz1zRwfFh0T7rZkqu1ho12HhDg49Z6lpsOPWc8-8ZmAYdM-5BxQt4lK9y8axGsd6HbXYJycVGSK8lgpXfQJEyAIrvfZNrf7sZL370PXP/s1600-h/newfeaturepatch.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 295px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_UMAxYP68NNFvc0v_mt2hRsYk71POzz1zRwfFh0T7rZkqu1ho12HhDg49Z6lpsOPWc8-8ZmAYdM-5BxQt4lK9y8axGsd6HbXYJycVGSK8lgpXfQJEyAIrvfZNrf7sZL370PXP/s320/newfeaturepatch.PNG" alt="" id="BLOGGER_PHOTO_ID_5275989006579999826" border="0" /></a>Curtishttp://www.blogger.com/profile/07823163562402913233noreply@blogger.com2tag:blogger.com,1999:blog-30049963.post-39693884558271949082008-09-24T11:18:00.002-05:002008-09-24T11:25:17.050-05:00The Debug Team Family GrowsAs of 5:05 this morning, the Debug Team's family grew by one.<br /><br />Congratulations Mike and Jen on your new baby boy!<br /><br />Sean Robert Rennie<br />8.5 pounds, 21 inchesCurtishttp://www.blogger.com/profile/07823163562402913233noreply@blogger.com4tag:blogger.com,1999:blog-30049963.post-18749099239370120992008-07-10T12:21:00.004-05:002008-07-10T14:44:38.619-05:00Remember, hyperlink debugging rocksWhile the feature has been around since 3.3, I still consider hyperlink debugging one of the most awesome features of the JDT debugger.<br /><br />Hyperlink debugging lets you very quickly step into a selected method. Previously, to step into a method you would have to use step over to the line you wanted then step into, or click on the method you wanted and hit step into selection. With hyperlink debugging you simply hit<span style="font-style: italic;"> ctrl</span> (or <span style="font-style: italic;">ctrl-alt</span>, I'll explain in a moment), and click where you want to go.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5jau87b5pfXq0td-PqIcJypRE6S360K2SEloBQ9UJ5SZh4SfIgdjmUMuv25B7b59jjAJwPv-Y-5ul-ao9ueLvkoKh4bH6F07Kzg54e083ebFBZO-_9GbygSHrOmOCh-81YgZm/s1600-h/hyperlinkdebug.PNG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5jau87b5pfXq0td-PqIcJypRE6S360K2SEloBQ9UJ5SZh4SfIgdjmUMuv25B7b59jjAJwPv-Y-5ul-ao9ueLvkoKh4bH6F07Kzg54e083ebFBZO-_9GbygSHrOmOCh-81YgZm/s320/hyperlinkdebug.PNG" alt="" id="BLOGGER_PHOTO_ID_5221473299763000002" border="0" /></a><br /><br />Starting with next week's integration build, the hyperlink debug feature will use<span style="font-style: italic;"> ctrl</span> as it's activator (previous versions used <span style="font-style: italic;">ctrl-alt</span>). This change was made because we were the only hyperlink action to have an activator other than <span style="font-style: italic;">ctrl</span>. If there are multiple hyperlink actions available, a handy popup will let you choose which to use.<br /><br />For those who want to keep the old way of doing things, you can change the setting back to ctrl-alt on the General > Appearence > Editors > Text Editors >Hyperlinking Preference Page. Because I am often debugging a target platform, I often need quick access to both open type and step into selection hyperlinks, so I have switched my preference. If you think that ctrl-alt should be the default, leave a comment here.Curtishttp://www.blogger.com/profile/07823163562402913233noreply@blogger.com1tag:blogger.com,1999:blog-30049963.post-88413011486374509022008-04-16T15:20:00.003-05:002008-04-16T15:25:03.302-05:00Funny Error DialogsI was working today when this gem showed up:<br /><br /><a href="http://bp2.blogger.com/_DJRXz3dLaww/SAZfw6WrK8I/AAAAAAAAACM/H1tTrn4IRw4/s1600-h/update.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_DJRXz3dLaww/SAZfw6WrK8I/AAAAAAAAACM/H1tTrn4IRw4/s320/update.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5189940914493795266" /></a><br /><br />While wondering how much money the person that created this dialog got for using the word 'update' so many times, I clicked 'ok' and got this gem:<br /><br /><a href="http://bp3.blogger.com/_DJRXz3dLaww/SAZgFKWrK9I/AAAAAAAAACU/nDDxBUIiD50/s1600-h/update2.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_DJRXz3dLaww/SAZgFKWrK9I/AAAAAAAAACU/nDDxBUIiD50/s320/update2.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5189941262386146258" /></a><br /><br />Its always funny to see posts about weird / bad dialogs (and messages) so I thought I would share these...Anonymousnoreply@blogger.com2tag:blogger.com,1999:blog-30049963.post-92146563630169250422008-03-17T18:05:00.005-05:002008-03-17T18:41:38.638-05:00Another Succesful TutorialI've only been in Santa Clara for 24 hours or so, but I've already done so much and had a ton of fun.<br /><br />First off, I had some time to bask in the sun. Compare...<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwufPB5lHdbpIkLPTyTqCGmCCd7ab4b093rWYfQnwLNHrA0XZ3U-4aovNOaXEk8LUKyjCVz2hvoEPI-LjCSZ2Pd0P2kMAvT-FXeW_5ham69Cwz6SKfeD-BB5dIG2SayX1ucMiy/s1600-h/Legislature+001.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwufPB5lHdbpIkLPTyTqCGmCCd7ab4b093rWYfQnwLNHrA0XZ3U-4aovNOaXEk8LUKyjCVz2hvoEPI-LjCSZ2Pd0P2kMAvT-FXeW_5ham69Cwz6SKfeD-BB5dIG2SayX1ucMiy/s200/Legislature+001.jpg" alt="" id="BLOGGER_PHOTO_ID_5178852200304615378" border="0" /></a><br /><br /><br /><br /><br /><br /><br /><br /><br />The view from my balcony at home (at least there isn't much snow, unlike Ottawa)<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbT5K5OqmdlutLKu7DjrgxL9AJZXHEPbmqN6vF6T4HS58zZnNIXzy9_q7VCdp5YKmxfjvetk6xQyBoUDIDJ_D8Ag9ot3n06DrxeoAzp3xV8wU3STUuHN2-zv37evYCljwK8sP_/s1600-h/IMG_4539.JPG"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbT5K5OqmdlutLKu7DjrgxL9AJZXHEPbmqN6vF6T4HS58zZnNIXzy9_q7VCdp5YKmxfjvetk6xQyBoUDIDJ_D8Ag9ot3n06DrxeoAzp3xV8wU3STUuHN2-zv37evYCljwK8sP_/s200/IMG_4539.JPG" alt="" id="BLOGGER_PHOTO_ID_5178853325586046946" border="0" /></a><br />The view from my hotel room in Santa Clara (oooh palm trees)<br /><br />Second, I've met a ton of people who I interact with all the time on bug reports, but had never seen in person. Hopefully I left a good impression. Had a lot of fun at the blogger party as well.<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEjgz9VlRHzRbQ8Q4R8cVuPVOpPvoNlC842pJRmkPH_WvoDl6rs126BJMTIkIXimWCI4cd2EbnxVvDUIXBDwalryJwCOCaLP0LoY7VfY6UROqXCurF8cTUbzewxld_-lShSGGr/s1600-h/IMG_4546.JPG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEjgz9VlRHzRbQ8Q4R8cVuPVOpPvoNlC842pJRmkPH_WvoDl6rs126BJMTIkIXimWCI4cd2EbnxVvDUIXBDwalryJwCOCaLP0LoY7VfY6UROqXCurF8cTUbzewxld_-lShSGGr/s320/IMG_4546.JPG" alt="" id="BLOGGER_PHOTO_ID_5178855829551980530" border="0" /></a><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />Finally, I helped present the two <a href="http://www.eclipsecon.org/2008/?page=sub/&id=40">debug </a><a href="http://www.eclipsecon.org/2008/?page=sub/&id=41">tutorials </a>this morning and everything went perfectly. We covered a lot of material, and got some excellent questions. If you are building a debugger using our framework, make sure to let us know about it! We had several people come up and tell us how much they liked our presentation and how great their products are developing because of the debug framework, but it would be great to see them in action.<br /><br />Tomorrow brings many more possibilities, with many <a href="http://www.eclipsecon.org/2008/index.php?page=table/&date=2008-03-18">talks</a>, exciting <a href="http://www.eclipsecon.org/2008/?page=sub/&id=555">BoFs</a>, and some <a href="http://runnerwhocodes.blogspot.com/2008/03/eclipsecon-exercise-day-1ouch-it-was.html">exercise</a>.<br /><br />CurtisCurtishttp://www.blogger.com/profile/07823163562402913233noreply@blogger.com0tag:blogger.com,1999:blog-30049963.post-71687497049487301762008-02-06T13:52:00.000-06:002008-02-06T14:47:39.946-06:00Api Tools is OfficialWith much joy, I am happy to say that the Api Tools incubator project is now part of the SDK proper. We (Darin, Olivier and myself) have been working very hard to get it up and running (and useful).<br /><br />The project has come a long way since my last post....<br /><br />We now have:<br />1. an incremental builder<br />2. problem markers for api usage problems / api breaking changes<br /><br /><a href="http://bp3.blogger.com/_DJRXz3dLaww/R6oR3_ZMccI/AAAAAAAAABM/twqvd1BTFPw/s1600-h/i1.PNG"><img style="display:block; margin:0px 15px 10px; cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_DJRXz3dLaww/R6oR3_ZMccI/AAAAAAAAABM/twqvd1BTFPw/s320/i1.PNG" border="0" alt="Example problem marker"id="BLOGGER_PHOTO_ID_5163959576341279170" /></a><br /><br />3. filters for api problem kinds<br /><br /><a href="http://bp3.blogger.com/_DJRXz3dLaww/R6oSz_ZMcfI/AAAAAAAAABk/nLx8XFVVP_g/s1600-h/i4.PNG"><img style="display:block; margin:0px 15px 10px; cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_DJRXz3dLaww/R6oSz_ZMcfI/AAAAAAAAABk/nLx8XFVVP_g/s320/i4.PNG" border="0" alt="API filters property page for jdt.debug plugin"id="BLOGGER_PHOTO_ID_5163960607133430258" /></a><br /><br />4. quick-fixes for a variety of api problem kinds<br /><br /><a href="http://bp3.blogger.com/_DJRXz3dLaww/R6oSi_ZMceI/AAAAAAAAABc/6r-cJPlDVT0/s1600-h/i3.PNG"><img style="display:block; margin:0px 15px 10px; cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_DJRXz3dLaww/R6oSi_ZMceI/AAAAAAAAABc/6r-cJPlDVT0/s320/i3.PNG" border="0" alt="Quick fix for illegal api uasge problem"id="BLOGGER_PHOTO_ID_5163960315075654114" /></a><br /><br /><a href="http://bp3.blogger.com/_DJRXz3dLaww/R6oUY_ZMcjI/AAAAAAAAACE/A7WVD8-_e40/s1600-h/i8.PNG"><img style="display:block; margin:0 15px 10px;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_DJRXz3dLaww/R6oUY_ZMcjI/AAAAAAAAACE/A7WVD8-_e40/s320/i8.PNG" border="0" alt="Quick fix for since tag problem"id="BLOGGER_PHOTO_ID_5163962342300217906" /></a><br /><br />5. a wizard to set up api tooling on plugin projects<br /><br /><a href="http://bp1.blogger.com/_DJRXz3dLaww/R6oTDfZMcgI/AAAAAAAAABs/UqSZNL14Eqs/s1600-h/i5.PNG"><img style="display:block; margin:0px 15px 10px; cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_DJRXz3dLaww/R6oTDfZMcgI/AAAAAAAAABs/UqSZNL14Eqs/s320/i5.PNG" border="0" alt="API Tooling setup wizard"id="BLOGGER_PHOTO_ID_5163960873421402626" /></a><br /><br />6. preference / property pages to configure options for the tooling<br /><br /><a href="http://bp3.blogger.com/_DJRXz3dLaww/R6oSK_ZMcdI/AAAAAAAAABU/zzXAMBmk4cQ/s1600-h/i2.PNG"><img style="display:block; margin:0px 15px 10px; cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_DJRXz3dLaww/R6oSK_ZMcdI/AAAAAAAAABU/zzXAMBmk4cQ/s320/i2.PNG" border="0" alt="Errors / Warnings preference page for api tooling"id="BLOGGER_PHOTO_ID_5163959902758793682" /></a><br /><br />7. version management<br /><br /><a href="http://bp1.blogger.com/_DJRXz3dLaww/R6oTefZMchI/AAAAAAAAAB0/i1BrRnkuIYI/s1600-h/i6.PNG"><img style="display:block; margin:0px 15px 10px; cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_DJRXz3dLaww/R6oTefZMchI/AAAAAAAAAB0/i1BrRnkuIYI/s320/i6.PNG" border="0" alt="Workbench showing plugin version numbering problem marker"id="BLOGGER_PHOTO_ID_5163961337277870610" /></a><br /><br />8. @since tag management<br /><br /><a href="http://bp0.blogger.com/_DJRXz3dLaww/R6oT3PZMciI/AAAAAAAAAB8/SmAf0AL715M/s1600-h/i7.PNG"><img style="display:block; margin:0px 15px 10px; cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_DJRXz3dLaww/R6oT3PZMciI/AAAAAAAAAB8/SmAf0AL715M/s320/i7.PNG" border="0" alt="Workbench showing since tag problem marker"id="BLOGGER_PHOTO_ID_5163961762479632930" /></a><br /><br />Stay tuned for more updates...Anonymousnoreply@blogger.com1tag:blogger.com,1999:blog-30049963.post-87478976759592308072008-01-21T16:09:00.000-06:002008-01-22T08:49:41.817-06:00Creating help just got a little bit easierAre you looking forward to the 3.4 doc pass? No? Really now, where is your user assistance spirit?<br /><br />In 3.4 PDE is hoping to improve your documenting days, specifically by making it easier to create, edit and review context sensitive help. The first step was to create a fancy new editor...<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyeH-8itJ65xuUgjLAhTbf0nue8ptMaw51VKSroDM4Rrin_ChOk5L-krX4Fq1MsIjQjw12F_gVQHcNVQi2rZPIBaMx5imBlHPY3zE9D0HuzJOABDi-3oVmU-typO0wyyRdr_pD/s1600-h/editor.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyeH-8itJ65xuUgjLAhTbf0nue8ptMaw51VKSroDM4Rrin_ChOk5L-krX4Fq1MsIjQjw12F_gVQHcNVQi2rZPIBaMx5imBlHPY3zE9D0HuzJOABDi-3oVmU-typO0wyyRdr_pD/s320/editor.jpg" alt="" id="BLOGGER_PHOTO_ID_5158057325638540930" border="0" /></a><br />The editor allows you to quickly create and edit new new contexts, topics and commands. But the addition of dragging and dropping, cutting and pasting, opening linked files in various views, and more, is what makes this editor so much better then trudging through the xml. The editor should be the default editor for context help xml starting with today's I build.<br /><br />There's more to come as well. During 3.4 PDE will hopefully be adding more features to help connect the context ids in your code with those in the xml.<br /><br />A big thanks goes out to Chris and the PDE team, who managed to review and commit my 5000+ line patch in record time.Curtishttp://www.blogger.com/profile/07823163562402913233noreply@blogger.com0tag:blogger.com,1999:blog-30049963.post-86869796957845636952007-11-22T09:13:00.001-06:002007-11-22T09:39:29.259-06:00API Tooling is a work in progressLately I have had the chance to work on a new project a little outside the scope of debuggers: API tooling support for the platform. Ultimately the goal of this incubator project is to provide tools for 'working' with APIs. Working in this context is loosely defined as:<br /><br />1. Manging API usage across builds/products<br />2. Creating API profiles to compare against<br />3. Tools to compare APIs<br />4. Tools to manage API breakage detection/repair<br />...<br /><br />Alot more information can be found on the wiki for the project (<a href="http://wiki.eclipse.org/PDE_UI_Incubator_ApiTools">here</a>).<br /><br />One of the features currently available in the project is the ability to manage API profiles. API profiles are considered to be a description of the API of a component (which can be a project, plugin, bundle, etc). These profiles can be used to compare current source to, or another component. <br /><br />The following screenshot is the 'API Profiles' preference page used manage API profiles (hence its name :) )<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_DJRXz3dLaww/R0Wg-sfWyqI/AAAAAAAAAA4/a3cbB5ar2nM/s1600-h/APIPP.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_DJRXz3dLaww/R0Wg-sfWyqI/AAAAAAAAAA4/a3cbB5ar2nM/s320/APIPP.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5135687949040929442" /></a><br /><br />Another feature is the ability to use Javadoc source tags to define API restrictions. The tags are provided as completion proposals for classes, interfaces, methods and fields. For example you could add a @noimplement tag to an API interface that clients are intended to use but not implement. <br /><br />The following screen cap is a shot of a Java editor showing a variety of source tags.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_DJRXz3dLaww/R0Wh5MfWyrI/AAAAAAAAABA/O4TmQzb4_DU/s1600-h/editor.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_DJRXz3dLaww/R0Wh5MfWyrI/AAAAAAAAABA/O4TmQzb4_DU/s320/editor.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5135688954063276722" /></a><br /><br />These are of course previews of current ongoing work, so it could change at any time :)Anonymousnoreply@blogger.com0