-Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces
-
-
Search
-
You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API. These items can be searched using part or all of the name, optionally using "camelCase" abbreviations, or multiple search terms separated by whitespace. Some examples:
-The following sections describe the different kinds of pages in this collection.
-
-
Package
-
Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:
-
-
Interfaces
-
Classes
-
Enum Classes
-
Exception Classes
-
Annotation Interfaces
-
-
-
-
Class or Interface
-
Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.
-
-
Class Inheritance Diagram
-
Direct Subclasses
-
All Known Subinterfaces
-
All Known Implementing Classes
-
Class or Interface Declaration
-
Class or Interface Description
-
-
-
-
Nested Class Summary
-
Enum Constant Summary
-
Field Summary
-
Property Summary
-
Constructor Summary
-
Method Summary
-
Required Element Summary
-
Optional Element Summary
-
-
-
-
Enum Constant Details
-
Field Details
-
Property Details
-
Constructor Details
-
Method Details
-
Element Details
-
-
Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.
-
The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
-
-
-
Other Files
-
Packages and modules may contain pages with additional information related to the declarations nearby.
-
-
-
Tree (Class Hierarchy)
-
There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.
-
-
When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
-
When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
-
-
-
-
Serialized Form
-
Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.
-
-
-
All Packages
-
The All Packages page contains an alphabetic index of all packages contained in the documentation.
-
-
-
All Classes and Interfaces
-
The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.
-
-
-
Index
-
The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.
-
-
-
-This help file applies to API documentation generated by the standard doclet.
-
The help page provides an introduction to the scope and syntax of JavaDoc search.
-
You can use the <ctrl> or <cmd> keys in combination with the left and right arrow keys to switch between result tabs in this page.
-
The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format.
-link
-
-
-
-
-
Loading search index...
-
-
-
-
-
-
-
-
-
diff --git a/doc/search.js b/doc/search.js
deleted file mode 100644
index 4ca9557..0000000
--- a/doc/search.js
+++ /dev/null
@@ -1,458 +0,0 @@
-/*
- * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
- * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- *
- */
-"use strict";
-const messages = {
- enterTerm: "Enter a search term",
- noResult: "No results found",
- oneResult: "Found one result",
- manyResults: "Found {0} results",
- loading: "Loading search index...",
- searching: "Searching...",
- redirecting: "Redirecting to first result...",
- linkIcon: "Link icon",
- linkToSection: "Link to this section"
-}
-const categories = {
- modules: "Modules",
- packages: "Packages",
- types: "Classes and Interfaces",
- members: "Members",
- searchTags: "Search Tags"
-};
-const highlight = "$&";
-const NO_MATCH = {};
-const MAX_RESULTS = 300;
-function checkUnnamed(name, separator) {
- return name === "" || !name ? "" : name + separator;
-}
-function escapeHtml(str) {
- return str.replace(//g, ">");
-}
-function getHighlightedText(str, boundaries, from, to) {
- var start = from;
- var text = "";
- for (var i = 0; i < boundaries.length; i += 2) {
- var b0 = boundaries[i];
- var b1 = boundaries[i + 1];
- if (b0 >= to || b1 <= from) {
- continue;
- }
- text += escapeHtml(str.slice(start, Math.max(start, b0)));
- text += "";
- text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1)));
- text += "";
- start = Math.min(to, b1);
- }
- text += escapeHtml(str.slice(start, to));
- return text;
-}
-function getURLPrefix(item, category) {
- var urlPrefix = "";
- var slash = "/";
- if (category === "modules") {
- return item.l + slash;
- } else if (category === "packages" && item.m) {
- return item.m + slash;
- } else if (category === "types" || category === "members") {
- if (item.m) {
- urlPrefix = item.m + slash;
- } else {
- $.each(packageSearchIndex, function(index, it) {
- if (it.m && item.p === it.l) {
- urlPrefix = it.m + slash;
- }
- });
- }
- }
- return urlPrefix;
-}
-function getURL(item, category) {
- if (item.url) {
- return item.url;
- }
- var url = getURLPrefix(item, category);
- if (category === "modules") {
- url += "module-summary.html";
- } else if (category === "packages") {
- if (item.u) {
- url = item.u;
- } else {
- url += item.l.replace(/\./g, '/') + "/package-summary.html";
- }
- } else if (category === "types") {
- if (item.u) {
- url = item.u;
- } else {
- url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html";
- }
- } else if (category === "members") {
- url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#";
- if (item.u) {
- url += item.u;
- } else {
- url += item.l;
- }
- } else if (category === "searchTags") {
- url += item.u;
- }
- item.url = url;
- return url;
-}
-function createMatcher(term, camelCase) {
- if (camelCase && !isUpperCase(term)) {
- return null; // no need for camel-case matcher for lower case query
- }
- var pattern = "";
- var upperCase = [];
- term.trim().split(/\s+/).forEach(function(w, index, array) {
- var tokens = w.split(/(?=[A-Z,.()<>?[\/])/);
- for (var i = 0; i < tokens.length; i++) {
- var s = tokens[i];
- // ',' and '?' are the only delimiters commonly followed by space in java signatures
- pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")";
- upperCase.push(false);
- var isWordToken = /\w$/.test(s);
- if (isWordToken) {
- if (i === tokens.length - 1 && index < array.length - 1) {
- // space in query string matches all delimiters
- pattern += "(.*?)";
- upperCase.push(isUpperCase(s[0]));
- } else {
- if (!camelCase && isUpperCase(s) && s.length === 1) {
- pattern += "()";
- } else {
- pattern += "([a-z0-9$<>?[\\]]*?)";
- }
- upperCase.push(isUpperCase(s[0]));
- }
- } else {
- pattern += "()";
- upperCase.push(false);
- }
- }
- });
- var re = new RegExp(pattern, "gi");
- re.upperCase = upperCase;
- return re;
-}
-function findMatch(matcher, input, startOfName, endOfName) {
- var from = startOfName;
- matcher.lastIndex = from;
- var match = matcher.exec(input);
- // Expand search area until we get a valid result or reach the beginning of the string
- while (!match || match.index + match[0].length < startOfName || endOfName < match.index) {
- if (from === 0) {
- return NO_MATCH;
- }
- from = input.lastIndexOf(".", from - 2) + 1;
- matcher.lastIndex = from;
- match = matcher.exec(input);
- }
- var boundaries = [];
- var matchEnd = match.index + match[0].length;
- var score = 5;
- var start = match.index;
- var prevEnd = -1;
- for (var i = 1; i < match.length; i += 2) {
- var isUpper = isUpperCase(input[start]);
- var isMatcherUpper = matcher.upperCase[i];
- // capturing groups come in pairs, match and non-match
- boundaries.push(start, start + match[i].length);
- // make sure groups are anchored on a left word boundary
- var prevChar = input[start - 1] || "";
- var nextChar = input[start + 1] || "";
- if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) {
- if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) {
- score -= 0.1;
- } else if (isMatcherUpper && start === prevEnd) {
- score -= isUpper ? 0.1 : 1.0;
- } else {
- return NO_MATCH;
- }
- }
- prevEnd = start + match[i].length;
- start += match[i].length + match[i + 1].length;
-
- // lower score for parts of the name that are missing
- if (match[i + 1] && prevEnd < endOfName) {
- score -= rateNoise(match[i + 1]);
- }
- }
- // lower score if a type name contains unmatched camel-case parts
- if (input[matchEnd - 1] !== "." && endOfName > matchEnd)
- score -= rateNoise(input.slice(matchEnd, endOfName));
- score -= rateNoise(input.slice(0, Math.max(startOfName, match.index)));
-
- if (score <= 0) {
- return NO_MATCH;
- }
- return {
- input: input,
- score: score,
- boundaries: boundaries
- };
-}
-function isUpperCase(s) {
- return s !== s.toLowerCase();
-}
-function isLowerCase(s) {
- return s !== s.toUpperCase();
-}
-function rateNoise(str) {
- return (str.match(/([.(])/g) || []).length / 5
- + (str.match(/([A-Z]+)/g) || []).length / 10
- + str.length / 20;
-}
-function doSearch(request, response) {
- var term = request.term.trim();
- var maxResults = request.maxResults || MAX_RESULTS;
- if (term.length === 0) {
- return this.close();
- }
- var matcher = {
- plainMatcher: createMatcher(term, false),
- camelCaseMatcher: createMatcher(term, true)
- }
- var indexLoaded = indexFilesLoaded();
-
- function getPrefix(item, category) {
- switch (category) {
- case "packages":
- return checkUnnamed(item.m, "/");
- case "types":
- return checkUnnamed(item.p, ".");
- case "members":
- return checkUnnamed(item.p, ".") + item.c + ".";
- default:
- return "";
- }
- }
- function useQualifiedName(category) {
- switch (category) {
- case "packages":
- return /[\s/]/.test(term);
- case "types":
- case "members":
- return /[\s.]/.test(term);
- default:
- return false;
- }
- }
- function searchIndex(indexArray, category) {
- var matches = [];
- if (!indexArray) {
- if (!indexLoaded) {
- matches.push({ l: messages.loading, category: category });
- }
- return matches;
- }
- $.each(indexArray, function (i, item) {
- var prefix = getPrefix(item, category);
- var simpleName = item.l;
- var qualifiedName = prefix + simpleName;
- var useQualified = useQualifiedName(category);
- var input = useQualified ? qualifiedName : simpleName;
- var startOfName = useQualified ? prefix.length : 0;
- var endOfName = category === "members" && input.indexOf("(", startOfName) > -1
- ? input.indexOf("(", startOfName) : input.length;
- var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName);
- if (m === NO_MATCH && matcher.camelCaseMatcher) {
- m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName);
- }
- if (m !== NO_MATCH) {
- m.indexItem = item;
- m.prefix = prefix;
- m.category = category;
- if (!useQualified) {
- m.input = qualifiedName;
- m.boundaries = m.boundaries.map(function(b) {
- return b + prefix.length;
- });
- }
- matches.push(m);
- }
- return true;
- });
- return matches.sort(function(e1, e2) {
- return e2.score - e1.score;
- }).slice(0, maxResults);
- }
-
- var result = searchIndex(moduleSearchIndex, "modules")
- .concat(searchIndex(packageSearchIndex, "packages"))
- .concat(searchIndex(typeSearchIndex, "types"))
- .concat(searchIndex(memberSearchIndex, "members"))
- .concat(searchIndex(tagSearchIndex, "searchTags"));
-
- if (!indexLoaded) {
- updateSearchResults = function() {
- doSearch(request, response);
- }
- } else {
- updateSearchResults = function() {};
- }
- response(result);
-}
-// JQuery search menu implementation
-$.widget("custom.catcomplete", $.ui.autocomplete, {
- _create: function() {
- this._super();
- this.widget().menu("option", "items", "> .result-item");
- // workaround for search result scrolling
- this.menu._scrollIntoView = function _scrollIntoView( item ) {
- var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
- if ( this._hasScroll() ) {
- borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
- paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
- offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
- scroll = this.activeMenu.scrollTop();
- elementHeight = this.activeMenu.height() - 26;
- itemHeight = item.outerHeight();
-
- if ( offset < 0 ) {
- this.activeMenu.scrollTop( scroll + offset );
- } else if ( offset + itemHeight > elementHeight ) {
- this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
- }
- }
- };
- },
- _renderMenu: function(ul, items) {
- var currentCategory = "";
- var widget = this;
- widget.menu.bindings = $();
- $.each(items, function(index, item) {
- if (item.category && item.category !== currentCategory) {
- ul.append("