2004-03-24 keyFinder 2.03 Beta:
fixed alphabetizing/sorting issue in j2sdk1.4
I just downloaded and installed j2sdk1.4.2_03, and noticed that the class list is no longer in case-insensitive alphabetical order — the list is sorted such that any uppercase letter now comes before any lowercase letter. Thus, classes that begin with acronyms (like AWTError) come before class names that don't (like AbstractAction). Needless to say, this messes things up completely. So I tackled that long postponed task of sorting the class list into alphabetical order that would enable it to work with listings other than All Classes.
The ordering produced by javadoc in jdk1.4 is on the bug parade at Sun, so presumably it will be fixed in the documentation at some point (although that would be 1.5). In the meantime, I made a temporary fix to perform an initial case-insensitive sort. I doubt that this will yet work in a listing other than All Classes.
Note that this will cause the initial page loading process to be slow!
2003-08-15 keyFinder 2.02 Beta
keyFinder 2.01 Beta
keyFinder 2.0
<
and >
keys for up and
down).Currently freeware licensed freely for use on your own system, but not for distribution to others.
It works with the Sun JDK 1.3 and 1.4 docs in Windows IE5+ and Netscape 4.7/4.8 and 6.2, and Mozilla 1.1. I haven't tested other JDK versions, earlier browser versions, other browsers such as Opera, or other platforms.
keyFinder enables fast searching of the class list in the lower left frame. It also provides for fast method searching, and hot-keys to jump to Constructors, Inner/Nested Classes, and Methods in the current class page.
After installing the script, you can:
Type a class name or the first few letters and the lower left pane (the class hyperlink listing) will scroll to that item and highlight it. (In general, it will jump to whatever class it has identified as first match or, failing a match, the first one after the string you typed.
There is no text box you just start pressing keys (if you aren't using the form-based approach, which provides a text box to type a name into).
If you type enough that you have reached the class you want, you can hit Enter and the right frame will change to that class page.
If you hit Shift-F, the right page will jump to the fields section, Shift-C will jump to constructors, Shift-M will jump to methods, and Shift-I or Shift-N will jump to inner (nested) classes.
Pressing the asterisk (*) key will switch to find methods mode, where your typing brings you to the methods list and scrolls to a method whose name matches what you typed. Pressing the asterisk again will return to find classes mode. There is no provision for finding overloaded versions of the same method name.
In IE, if you want to copy text from the page, you may need to pause the timer by pressing Shift-P. To resume normal operation, press Shift-P again.
Note that the script works on a timer if you stop typing for
a second it will reset (i.e., after a second it will start a new search rather
than continue the current one). The time delay can be customized by changing
the line that reads var keyTimeout = 1000;
to use a different number (the number is in milliseconds, so 1000 = 1 second).
Also, sometimes you may have to wait a second or two and try again there is additional code on a timer that refreshes the script so that the code works after switching class pages.
If you hit an incorrect character, hitting the Escape key will clear the finding process so you can start again (or you can wait for the automatic clearing based on
You may also need to click on a blank spot within a page to initiate keyfinding, especially if you switched to a different application window and then returned. At one time I had the timer reset focus to the page, but that had annoying side effects.keyTimeout
).
Also note that it currently only works on the All Classes listing.
To download:
keyFinder.zip (Version 2.03 Beta) (contains the JavaScript file, this page, the optional form page, and several examples of how it can be installed into the index page).
The 2.02 beta version is still available: download keyFinder 2.02 beta.
The 2.01 beta version is still available: download keyFinder 2.01 beta.
The 2.0 beta version is also still available: download keyFinder 2.0 beta.
The original version is also still available: download keyFinder 1.01.
To use keyFinder:
Unzip the keyfinder.zip file into the docs\api
directory under your jdk directory. (You need the keyFinder.js
file, and, if you wish to use the form based approach, keyFinderForm.html
as well, in that location. The other html files are a copy of this file
and examples of how to set up the form-based approach.)
Then edit the index.html file in that directory by adding
the following line in the <HEAD>
section, under the </TITLE>
line:
<script src="keyFinder.js"></script>
Make the following edits, depending on whether you want a control frame or not:
For the standard approach, without an extra control frame, change the
first <FRAMESET>
tag to read:
<FRAMESET cols="20%,80%" onLoad="init();">
For the frames approach, you can add a tag to create a new frame anywhere in the frameset structure; I would recommend one of the following three ways (add the bolded code in the context shown):
</HEAD>
<FRAMESET rows="50,*" onLoad="init();">
<FRAME src="keyFinderForm.html" name="keyFinderFrame" scrolling="no">
<FRAMESET cols="20%,80%">
skip to the bottom, then:
</FRAMESET>
</FRAMESET>
<NOFRAMES>
</HEAD>
<FRAMESET rows="*,50" onLoad="init();">
<FRAMESET cols="20%,80%">
skip to the bottom, then:
</FRAMESET>
<FRAME src="keyFinderForm.html" name="keyFinderFrame" scrolling="no">
</FRAMESET>
<NOFRAMES>
</HEAD>
<FRAMESET cols="20%,80%" onLoad="init();">
skip to the bottom, then:
</FRAMESET>
<FRAMESET rows="50,*">
<FRAME src="keyFinderForm.html" name="keyFinderFrame" scrolling="no">
<FRAME src="overview-summary.html" name="classFrame">
</FRAMESET>
</FRAMESET>
<NOFRAMES>
Then you should be able to pull up the API index page and use the script to navigate through the class pages.
Give it a try I'd be interested in any feedback or suggestions you might have.
Queued for development/enhancement: