< prev index next >
src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocPaths.java
Print this page
*** 24,33 ****
--- 24,35 ----
*/
package jdk.javadoc.internal.doclets.toolkit.util;
import javax.lang.model.element.ModuleElement;
+ import javax.lang.model.element.PackageElement;
+ import javax.lang.model.element.TypeElement;
/**
* Standard DocPath objects.
*
* <p><b>This is NOT part of any supported API.
*** 35,44 ****
--- 37,56 ----
* This code and its internal interfaces are subject to change or
* deletion without notice.</b>
*
*/
public class DocPaths {
+ private final boolean useModuleDirectories;
+ private final String moduleSeparator;
+ private final Utils utils;
+
+ public DocPaths(Utils utils, boolean useModuleDirectories) {
+ this.utils = utils;
+ this.useModuleDirectories = useModuleDirectories;
+ moduleSeparator = useModuleDirectories ? "/module-" : "-";
+ }
+
/** The name of the file for all classes, without using frames, when --no-frames is specified. */
public static final DocPath ALLCLASSES = DocPath.create("allclasses.html");
/** The name of the file for all classes, using frames. */
public static final DocPath ALLCLASSES_FRAME = DocPath.create("allclasses-frame.html");
*** 78,88 ****
public static final DocPath INDEX_ALL = DocPath.create("index-all.html");
/** The name of the directory for the split index files. */
public static final DocPath INDEX_FILES = DocPath.create("index-files");
! /** Generate the name of one of the files in the split index. */
public static DocPath indexN(int n) {
return DocPath.create("index-" + n + ".html");
}
/** The name of the default javascript file. */
--- 90,104 ----
public static final DocPath INDEX_ALL = DocPath.create("index-all.html");
/** The name of the directory for the split index files. */
public static final DocPath INDEX_FILES = DocPath.create("index-files");
! /**
! * Generate the name of one of the files in the split index.
! * @param n the position in the index
! * @return the path
! */
public static DocPath indexN(int n) {
return DocPath.create("index-" + n + ".html");
}
/** The name of the default javascript file. */
*** 171,203 ****
public static final DocPath PACKAGE_TREE = DocPath.create("package-tree.html");
/** The name of the file for the package usage info. */
public static final DocPath PACKAGE_USE = DocPath.create("package-use.html");
! /** The name of the output directory for module documentation files. */
! public static DocPath moduleDocFiles(ModuleElement mdle) {
! return DocPath.create(mdle.getQualifiedName() + "-doc-files");
}
! /** The name of the file for the module frame. */
! public static DocPath moduleFrame(ModuleElement mdle) {
! return DocPath.create(mdle.getQualifiedName() + "-frame.html");
}
! /** The name of the file for the module summary. */
! public static DocPath moduleSummary(ModuleElement mdle) {
! return DocPaths.moduleSummary(mdle.getQualifiedName().toString());
}
! /** The name of the file for the module summary. */
! public static DocPath moduleSummary(String mdleName) {
! return DocPath.create(mdleName + "-summary.html");
}
! /** The name of the file for the module frame. */
! public static DocPath moduleTypeFrame(ModuleElement mdle) {
! return DocPath.create(mdle.getQualifiedName() + "-type-frame.html");
}
/** The name of the file for the module overview frame. */
public static final DocPath MODULE_OVERVIEW_FRAME = DocPath.create("module-overview-frame.html");
--- 187,341 ----
public static final DocPath PACKAGE_TREE = DocPath.create("package-tree.html");
/** The name of the file for the package usage info. */
public static final DocPath PACKAGE_USE = DocPath.create("package-use.html");
! /**
! * Returns the path for a type element.
! * For example, if the type element is {@code java.lang.Object},
! * the path is {@code java/lang/Object.html}.
! *
! * @param typeElement the type element
! * @return the path
! */
! public DocPath forClass(TypeElement typeElement) {
! return (typeElement == null)
! ? DocPath.empty
! : forPackage(utils.containingPackage(typeElement)).resolve(forName(typeElement));
}
! /**
! * Returns the path for the simple name of a type element.
! * For example, if the type element is {@code java.lang.Object},
! * the path is {@code Object.html}.
! *
! * @param typeElement the type element
! * @return the path
! */
! public DocPath forName(TypeElement typeElement) {
! return (typeElement == null)
! ? DocPath.empty
! : new DocPath(utils.getSimpleName(typeElement) + ".html");
! }
!
! public static DocPath forModule(ModuleElement mdle) {
! return mdle == null || mdle.isUnnamed()
! ? DocPath.empty
! : DocPath.create(mdle.getQualifiedName().toString());
}
! /**
! * Returns the path for the package of a type element.
! * For example, if the type element is {@code java.lang.Object},
! * the path is {@code java/lang}.
! *
! * @param typeElement the type element
! * @return the path
! */
! public DocPath forPackage(TypeElement typeElement) {
! return (typeElement == null) ? DocPath.empty : forPackage(utils.containingPackage(typeElement));
! }
!
! /**
! * Returns the path for a package.
! * For example, if the package is {@code java.lang},
! * the path is {@code java/lang}.
! *
! * @param pkgElement the package element
! * @return the path
! */
! public DocPath forPackage(PackageElement pkgElement) {
! if (pkgElement == null || pkgElement.isUnnamed()) {
! return DocPath.empty;
! }
!
! DocPath pkgPath = DocPath.create(pkgElement.getQualifiedName().toString().replace('.', '/'));
! if (useModuleDirectories) {
! ModuleElement mdle = (ModuleElement) pkgElement.getEnclosingElement();
! return forModule(mdle).resolve(pkgPath);
! } else {
! return pkgPath;
! }
! }
!
! /**
! * Returns the inverse path for a package.
! * For example, if the package is {@code java.lang},
! * the inverse path is {@code ../..}.
! *
! * @param pkgElement the package element
! * @return the path
! */
! public static DocPath forRoot(PackageElement pkgElement) {
! String name = (pkgElement == null || pkgElement.isUnnamed())
! ? ""
! : pkgElement.getQualifiedName().toString();
! return new DocPath(name.replace('.', '/').replaceAll("[^/]+", ".."));
! }
!
! /**
! * Returns a relative path from one package to another.
! *
! * @param from the origin of the relative path
! * @param to the destination of the relative path
! * @return the path
! */
! public DocPath relativePath(PackageElement from, PackageElement to) {
! return forRoot(from).resolve(forPackage(to));
! }
!
! /**
! * The path for the output directory for module documentation files.
! * @param mdle the module
! * @return the path
! */
! public DocPath moduleDocFiles(ModuleElement mdle) {
! return createModulePath(mdle, "doc-files");
! }
!
! /**
! * The path for the file for a module's frame page.
! * @param mdle the module
! * @return the path
! */
! public DocPath moduleFrame(ModuleElement mdle) {
! return createModulePath(mdle, "frame.html");
! }
!
! /**
! * The path for the file for a module's summary page.
! * @param mdle the module
! * @return the path
! */
! public DocPath moduleSummary(ModuleElement mdle) {
! return createModulePath(mdle, "summary.html");
! }
!
! /**
! * The path for the file for a module's summary page.
! * @param mdleName the module
! * @return the path
! */
! public DocPath moduleSummary(String mdleName) {
! return createModulePath(mdleName, "summary.html");
! }
!
! /**
! * The path for the file for a module's type frame page.
! * @param mdle the module
! * @return the path
! */
! public DocPath moduleTypeFrame(ModuleElement mdle) {
! return createModulePath(mdle, "type-frame.html");
}
! private DocPath createModulePath(ModuleElement mdle, String path) {
! return DocPath.create(mdle.getQualifiedName() + moduleSeparator + path);
}
! private DocPath createModulePath(String moduleName, String path) {
! return DocPath.create(moduleName + moduleSeparator + path);
}
/** The name of the file for the module overview frame. */
public static final DocPath MODULE_OVERVIEW_FRAME = DocPath.create("module-overview-frame.html");
< prev index next >