Skip to content
jennybrown8 edited this page Jan 30, 2012 · 53 revisions

About Wicket-Source and SourceOpener

Wicket-source shows wicket component origin locations in source code, in an html attribute, speeding the modification of existing wicket pages.

It lets you Inspect-Element from your web browser, click on a link in a Firebug sidebar, and then Eclipse opens the Java source code to the location of that wicket component. It is meant primarily as a wicket developer tool.

There are three parts.

  1. Wicket Module "wicket-source" - records where in the code each component is constructed. Adds an HTML attribute.
  2. Firebug Extension "WicketSource" - displays html attribute and lets you click to open.
  3. Eclipse plugin "Source Opener" - listens for clicks from Firefox and opens the file to that line.

A Chrome extension is "in the works" but it relies on experimental devtool extension APIs, so it will not be ready until Chrome makes those APIs standard instead of experimental.

Wicket Module wicket-source

Versioning of everything is based off of Wicket version ala wicketstuff's recommendations. So, the following resources are matched to the 1.5.x version of Wicket.

The module wicket-source plugs in to your Wicket application to record the class and line number where each component is created. It produces an html attribute on each dom node, like so: wicketsource="net.ftlines.wicketsource.demo:HomePage.java:59"

Maven dependency:

 <dependency>
      <groupId>net.ftlines.wicket-source</groupId>
      <artifactId>wicket-source</artifactId>
      <version>1.5.0_06</version>
 </dependency>

Usage, inside a debug flag check in your WicketApplication:

 WicketSource.configure(this);

Obviously, whatever debug check you do, ensure that the matching debug flag is set to true in your dev environment or you won't see any useful output. The process used to discover instantiation locations is a bit slow and should not be used in a production environment.

There is also a wicket-source-demo web application available via maven central. It's a wicket quick start app modified to show what wicket-source can do. It's a great way to test out your Firefox plugin and Eclipse drop-in setups.

WicketSource Chrome Extension

A Chrome extension is "in the works" but it relies on experimental devtool extension APIs, so it will not be ready until Chrome makes those APIs standard instead of experimental. Stay tuned.

WicketSource Firebug Extension for Firefox 7

This is a Firebug extension, so yes, you need Firebug as well.

The WicketSource (click to install) firebug extension lets you inspect an element and request that the file be opened in Eclipse.

Inspect an element with Firebug, and then go to the WicketSource sidebar pane to see where in the Java code its Wicket component was created. Click the hyperlink to send a request to Eclipse to open the file (you'll need the Eclipse plug-in below for that to work).

Firefox with WicketSource demo open

SourceOpener Eclipse Plug-in for Eclipse Indigo

The SourceOpener plugin for Eclipse is the final step.

To install, copy the jar from the Downloads area of this github project, into your *\eclipse\dropins* folder and restart Eclipse. Then go to the menu "Window", "Show View", "Other", "Source Opener", "Recent File Locations", and put the resulting tab wherever you like.

The listener starts up by default, so it should be usable immediately. The first open-file click from Firefox will be slow while the Eclipse search engine initializes; the rest should be quite fast.

Eclipse will open directly to the line in the Java file when it receives the click from Firefox. To reopen a line, double-click any item in the "Recent File Locations" tab.

Eclipse Screenshot with WicketSource demo open

WicketSource for Firebug and SourceOpener for Eclipse communicate across a port. You can set a different port through the preferences (make sure they both match!) and optionally require a password as well.

You can also stop and start the listener in Eclipse (red square to stop, green play button to start). It will pick up preference changes automatically, so you may never need to manually stop or start it.

Enjoy!

Clone this wiki locally