Here is the S-PLUS code used to make this graph:
plot(0:5, type = "n") java.set.page.title("initial page") java.set.page.tag("p1") text(2:4, 1:3, paste("press here to go to page", 1:3)) java.identify(2:4 - 1, 1:3 - 0.5, 2:4 + 1, 1:3 + 0.5, labels = paste("press here to go to\npage", 1:3), actions = java.action.page(paste("p", 1:3, sep = ""))) text(5, 4, "press here to go to a URL") java.identify(4, 3.5, 6, 4.5, labels = "go to URL http://www.mathsoft.com/", actions = java.action.link("http://www.mathsoft.com/")) text(2, 4, "press here to bring up a menu") java.identify(1, 3.5, 3, 4.5, labels = "bring up a menu", actions = java.action.menu(title="foo", items=c( java.action.menuitem(java.action.page("p1"), "goto p1"), java.action.menuitem(java.action.page("p2"), "goto p2"), java.action.menuitem(java.action.page("p3"), "goto p3"), java.action.menuitem(java.action.link("http://www.mathsoft.com/"), "go to http://www.mathsoft.com/"), java.action.menuitem(java.action.link("http://www.mathsoft.com/unknownpage"), "go to http://www.mathsoft.com/unknownpage"), java.action.menuitem(java.action.link("http://www.mathsoft.com/", "_blank"), "go to http://www.mathsoft.com/ (new window)"), java.action.menuitem( java.action.menu(c( java.action.menuitem(java.action.page("p1"), "goto p1"), java.action.menuitem(java.action.page("p2"), "goto p2"), java.action.menuitem(java.action.page("p3"), "goto p3") )), "sub menu"), java.action.menuitem("", "empty action"), java.action.menuitem("<foo sd=45/>", "unknown action") ))) title("this is page 1") plot(1:10) java.set.page.title("") java.set.page.tag("p2") title("this is page 2, with an empty tab") java.identify(x1 = 1:10, labels = paste("jump to page 1,\nnot", state.name[1:10]), actions = rep(java.action.page("p1"), 10)) plot(10:1) java.set.page.title("AReallyLongTabName") java.set.page.tag("p3") title("this is page 3") java.identify(y1 = 1:10, labels = paste("jump to page 1,\nnot", state.name[1:10]), actions = rep(java.action.page("p1"), 10))