Wiki Map Plugin#

It shows the Wiki structure in a touchgraph, using an applet. It should help finding hot spots in the wiki and showing the development of the wiki. Some screenshots are attached.

Here two screenshots of the WikiMapPlugin in action:



I work at the Heilbronn University's i3G Institute in ChristophSauer's Team, developing plugins.


name default used for
width 300 width of the applet
height 300 height of the applet
startpage the edited site the focussed site
zoom 0 (-100 / 100) the distance to the wikigraph
locality 2 (0 / 7) the depth of the wikigraph

Example codes:

[{org.wikiwizard.jspwiki.wikimap.WikiMap width='300' height='300' 
     startpage='LeftMenu' }]


- There is a bug that "shows" with Firefox 1.5
- a bug when youre fast going "forward" and "backward" with your browser

Future - Upcoming features#

  • improved User Interface
  • a printfunction
  • improved Design and Compostion of the Graph (I am playing width color and size of the nodes, using visitercount of a page, Content etc...)
  • i am going to replace my Servlet, using XMLRPC annotation: to make the installation easier, I currently don't use my servlet; the pages and references are given to the applet from the plugin, so there is no need for applet-servlet communication. I am trying to find a fast solution, thats not communicating with parameters, embedded in html code.


You can download the newest Version of WikiMap here

and the SourceCode here


  • Copy the wikimapplugin.jar in the web-inf/lib/ directory of your wiki.
  • Copy the WikiMap.jar in a directory applets in the root directory of your wiki

(example for the WikiMap.jar)
If your wiki is installed /tomcat/webapps/JSPWiki

  • make directory /tomcat/webapps/JSPWiki/applets
  • copy WikiMap.jar to /tomcat/webapps/JSPWiki/applets

You specify the following should be done for installation:

  • Copy the wikimapplugin.jar in the web-inf/lib/ directory of your wiki.
this one makes sense /../../tomcat/webapps/WEB-INF/lib
  • Copy the WikiMap.jar in a directory applets in the root directory of your wiki
what or where is this one?.. I don't understand do I need to create an $WIKI_ROOT/applets directory? (where $WIKI_ROOT is the jspwiki.fileSystemProvider.pageDir value)

Do I also need to update the jspwiki.plugin.searchPath?

--RobSchramm, 03-Jul-2006

Just switch in the "wiki-root" directory (this is the directory where atom.jsp, Comment.jsp etc. lies). Now create a directory with the name "applets" and put the WikiMap.jar in it. You don't need to change jspwiki.plugin.searchPath.

The instruction step was really not clear. I hope it works now!?

--JoergDoneit, 04-Jul-2006

Thank you very much for the clarification Joerg. That really helped.

The wikimap is now working. I was confusing the "root directory of my wiki" with the "jspwiki.fileSystemProvider.pageDir".

I put an update for the installation instructions.

--RobSchramm, 05-Jul-2006

Very nice plugin! I have problems displaying the applet in IE, but it works fine in Firefox.

Some questions:

  • Can you provide some documentation on your use of colors in the graph?
  • What does the red square mean?
  • Can I use the WikiMap for navigation - is there a way to open the page associated with a node?
I was able to do it once, but by accident, and I was not able to reproduce it.

I have a suggestion: In addition to supporting "hide" and "show" for nodes and edges, you should also support a "show all". Currently it is possible to hide the entire graph, and there is no way to show it back.

I found this NPE trace in the wiki log while playing with it:

2006-07-07 11:45:39,549 [http-8080-Processor22] INFO com.ecyrd.jspwiki.plugin.PluginManager MyWiki: - Plugin failed while executing:
	at org.wikiwizard.jspwiki.wikimap.WikiMap.execute(
	at com.ecyrd.jspwiki.plugin.PluginManager.execute(
	at com.ecyrd.jspwiki.parser.PluginContent.getText(
	at org.jdom.output.XMLOutputter.printTextRange(
	at org.jdom.output.XMLOutputter.printContentRange(

Another error: the Java Console is showing the following exception over and over again:

Exception in thread "AWT-EventQueue-2" setPenT4: invalid pen transformation (singular)
	at Method)
	at Source)
	at sun.java2d.pipe.DuctusRenderer.createShapeRasterizer(Unknown Source)
	at sun.java2d.pipe.DuctusShapeRenderer.renderPath(Unknown Source)
	at sun.java2d.pipe.DuctusShapeRenderer.draw(Unknown Source)
	at sun.java2d.pipe.PixelToShapeConverter.drawLine(Unknown Source)
	at sun.java2d.SunGraphics2D.drawLine(Unknown Source)
	at org.wikiwizard.jspwiki.wikimap.touchgraph.graphlayout.Edge.paintWikiArrow(
	at org.wikiwizard.jspwiki.wikimap.touchgraph.graphlayout.Edge.paint(
	at org.wikiwizard.jspwiki.wikimap.touchgraph.graphlayout.TGPanel$6.forEachEdge(
	at org.wikiwizard.jspwiki.wikimap.touchgraph.graphlayout.graphelements.GraphEltSet.forAllEdges(
	at org.wikiwizard.jspwiki.wikimap.touchgraph.graphlayout.TGPanel.update(
	at org.wikiwizard.jspwiki.wikimap.touchgraph.graphlayout.TGPanel.paint(
	at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
	at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
	at javax.swing.JComponent._paintImmediately(Unknown Source)
	at javax.swing.JComponent.paintImmediately(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at javax.swing.SystemEventQueueUtilities$ Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at Source)

-- NascifAbousalhNeto - 7-Jul-2006

Some suggestions:
  • A plugin parameter that instructs the applet to start with controls enabled;
  • A "search" field - if the map is too convoluted, searching (or filtering) nodes by name would help.
  • Enable the Hyperbolic View feature (already part of Kaon - you can see it in action in their demo).
  • A decoration button in the nodes or an entry in the popup menu with wiki-related actions, like open and edit. In the current implementation double-clicking is not very precise - it doesn't work all the time, probably due to timing issues.

-- NascifAbousalhNeto - 11-Jul-2006

First to the exceptions. That had something to do the newest Java Version, Swing and Threads. It is fixed in the new Version. You can download it here
  • The colors are choosen randomly, so they have yet no meaning :-(
  • The red square shows how much linked pages are on it
  • Navigation (You can open pages with a double-klick on the nodes)

Thank you for your feedback. In this version I focused on bugfixing Browser, Applet and Communication Porblems. Upcoming features for the next version are

  • give colors sense (Blog Entrys --> yellow ......)
  • improve the searchbox with filter-functions and focus
  • improve the navigation (I like NascifAbousalhNeto 's ideas)

-- JoergDoneit - 31-Jul-2006

Where's the source code? I'd like to see how the applet does it's communictions to the wiki

Sry for the late answer; you can download the sourcecode here

-- JoergDoneit - 20-Aug-2006

There is a problem when opening pages from the applet: it converts the page name to all lower case, and that creates a mismatch when the web server is running on a *nix box (where file names are case-sensitive).

For example, I have a page called "TeamMembers"; clicking on it from the applet tries to open the page "teammembers" - and the wiki offers me to create a new one, saying it doesn't exist.

--NascifAbousalhNeto, 20-Nov-2006

I solved the problem of the conversion to lowercase. Page names are converted in lower case into the applet due to layout issues, but when you click on the node the right page is loaded. I added a couple of features that are necessay to my application:

  • back links following: incoming links can be used in the applet, so if you are on a "leaf" page all works fine.
To enagle the function you can set the parameter "allowInverses" to "true"
  • page exlusion: to exclude some pages from the map you can insert in the parameter "exclude" the pattern of the pages to be excluded.

For example, assume your template uses contextual menus in the form _pagename, you can exclude menu pages from the graph with:

{org.wikiwizard.jspwiki.wikimap.WikiMap allowInverses='true' exclude='_.*'}

the modified version is

--MarioArrigoniNeri, 30-Apr-2007

Add new attachment

Only authorized users are allowed to upload new attachments.

List of attachments

Kind Attachment Name Size Version Date Modified Author Change note
AppletSource.rar 112.3 kB 1 28-Apr-2006 16:26 jorg doneit
WikiMap.jar 166.3 kB 1 28-Apr-2006 16:26 jorg doneit
java 5.4 kB 1 28-Apr-2006 16:26 jorg doneit
zip 154.0 kB 1 30-Apr-2008 16:12 case sentive bug fix, inverse links and page filter
wikimap1.JPG 50.2 kB 1 28-Apr-2006 16:26 jorg doneit
wikimap1.png 270.5 kB 1 30-Apr-2006 14:30 j doneit
wikimap2.JPG 16.3 kB 1 28-Apr-2006 16:26 jorg doneit
wikimap2.png 104.7 kB 1 30-Apr-2006 14:30 j doneit
wikimapOverloaded.JPG 99.1 kB 1 28-Apr-2006 16:26 jorg doneit
wikimapplugin.jar 5.4 kB 2 30-Apr-2006 14:23 j doneit
« This page (revision-32) was last changed on 30-Apr-2008 17:23 by MarioArrigoniNeri