From a89b525189fbc0559be9edc0de9f4288ca676139 Mon Sep 17 00:00:00 2001 From: Albert Mingkun Yang Date: Fri, 2 Aug 2024 10:51:25 +0000 Subject: [PATCH 1/6] 8337721: G1: Remove unused G1CollectedHeap::young_collection_verify_type Reviewed-by: tschatzl --- src/hotspot/share/gc/g1/g1CollectedHeap.cpp | 10 ---------- src/hotspot/share/gc/g1/g1CollectedHeap.hpp | 1 - 2 files changed, 11 deletions(-) diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp index 3b8fb145f16..aa99fbecbee 100644 --- a/src/hotspot/share/gc/g1/g1CollectedHeap.cpp +++ b/src/hotspot/share/gc/g1/g1CollectedHeap.cpp @@ -2336,16 +2336,6 @@ void G1CollectedHeap::start_new_collection_set() { _cm->verify_no_collection_set_oops(); } -G1HeapVerifier::G1VerifyType G1CollectedHeap::young_collection_verify_type() const { - if (collector_state()->in_concurrent_start_gc()) { - return G1HeapVerifier::G1VerifyConcurrentStart; - } else if (collector_state()->in_young_only_phase()) { - return G1HeapVerifier::G1VerifyYoungNormal; - } else { - return G1HeapVerifier::G1VerifyMixed; - } -} - void G1CollectedHeap::verify_before_young_collection(G1HeapVerifier::G1VerifyType type) { if (!VerifyBeforeGC) { return; diff --git a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp index 59ade939678..ea087aae662 100644 --- a/src/hotspot/share/gc/g1/g1CollectedHeap.hpp +++ b/src/hotspot/share/gc/g1/g1CollectedHeap.hpp @@ -752,7 +752,6 @@ class G1CollectedHeap : public CollectedHeap { // of the incremental collection pause, executed by the vm thread. void do_collection_pause_at_safepoint_helper(); - G1HeapVerifier::G1VerifyType young_collection_verify_type() const; void verify_before_young_collection(G1HeapVerifier::G1VerifyType type); void verify_after_young_collection(G1HeapVerifier::G1VerifyType type); From 328a0533b2ee6793130dfb68d931e0ebd60c6b5d Mon Sep 17 00:00:00 2001 From: Coleen Phillimore Date: Fri, 2 Aug 2024 11:47:26 +0000 Subject: [PATCH 2/6] 8335059: Consider renaming ClassLoaderData::keep_alive Reviewed-by: dholmes, stefank --- .../gc/shared/barrierSetAssembler_aarch64.cpp | 4 +-- .../ppc/gc/shared/barrierSetAssembler_ppc.cpp | 4 +-- .../gc/shared/barrierSetAssembler_riscv.cpp | 4 +-- .../x86/gc/shared/barrierSetAssembler_x86.cpp | 4 +-- .../share/classfile/classLoaderData.cpp | 26 +++++++++---------- .../share/classfile/classLoaderData.hpp | 25 ++++++++++-------- .../share/classfile/classLoaderDataGraph.cpp | 10 +++---- src/hotspot/share/classfile/javaClasses.cpp | 2 +- src/hotspot/share/classfile/moduleEntry.cpp | 2 +- src/hotspot/share/prims/jvm.cpp | 2 +- 10 files changed, 42 insertions(+), 41 deletions(-) diff --git a/src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp index 073d9922355..0161843036b 100644 --- a/src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/gc/shared/barrierSetAssembler_aarch64.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -375,7 +375,7 @@ void BarrierSetAssembler::c2i_entry_barrier(MacroAssembler* masm) { __ load_method_holder_cld(rscratch1, rmethod); // Is it a strong CLD? - __ ldrw(rscratch2, Address(rscratch1, ClassLoaderData::keep_alive_offset())); + __ ldrw(rscratch2, Address(rscratch1, ClassLoaderData::keep_alive_ref_count_offset())); __ cbnz(rscratch2, method_live); // Is it a weak but alive CLD? diff --git a/src/hotspot/cpu/ppc/gc/shared/barrierSetAssembler_ppc.cpp b/src/hotspot/cpu/ppc/gc/shared/barrierSetAssembler_ppc.cpp index 16de0b6a7dd..956b082d194 100644 --- a/src/hotspot/cpu/ppc/gc/shared/barrierSetAssembler_ppc.cpp +++ b/src/hotspot/cpu/ppc/gc/shared/barrierSetAssembler_ppc.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2018, 2022 SAP SE. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -238,7 +238,7 @@ void BarrierSetAssembler::c2i_entry_barrier(MacroAssembler *masm, Register tmp1, __ ld(tmp1_class_loader_data, in_bytes(InstanceKlass::class_loader_data_offset()), tmp1); // Fast path: If class loader is strong, the holder cannot be unloaded. - __ lwz(tmp2, in_bytes(ClassLoaderData::keep_alive_offset()), tmp1_class_loader_data); + __ lwz(tmp2, in_bytes(ClassLoaderData::keep_alive_ref_count_offset()), tmp1_class_loader_data); __ cmpdi(CCR0, tmp2, 0); __ bne(CCR0, skip_barrier); diff --git a/src/hotspot/cpu/riscv/gc/shared/barrierSetAssembler_riscv.cpp b/src/hotspot/cpu/riscv/gc/shared/barrierSetAssembler_riscv.cpp index 0f385080977..efdf3765965 100644 --- a/src/hotspot/cpu/riscv/gc/shared/barrierSetAssembler_riscv.cpp +++ b/src/hotspot/cpu/riscv/gc/shared/barrierSetAssembler_riscv.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2020, 2023, Huawei Technologies Co., Ltd. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -326,7 +326,7 @@ void BarrierSetAssembler::c2i_entry_barrier(MacroAssembler* masm) { __ load_method_holder_cld(t0, xmethod); // Is it a strong CLD? - __ lwu(t1, Address(t0, ClassLoaderData::keep_alive_offset())); + __ lwu(t1, Address(t0, ClassLoaderData::keep_alive_ref_count_offset())); __ bnez(t1, method_live); // Is it a weak but alive CLD? diff --git a/src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.cpp b/src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.cpp index 64ad7430674..cd0e43b68bf 100644 --- a/src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.cpp +++ b/src/hotspot/cpu/x86/gc/shared/barrierSetAssembler_x86.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -423,7 +423,7 @@ void BarrierSetAssembler::c2i_entry_barrier(MacroAssembler* masm) { __ load_method_holder_cld(tmp1, rbx); // Is it a strong CLD? - __ cmpl(Address(tmp1, ClassLoaderData::keep_alive_offset()), 0); + __ cmpl(Address(tmp1, ClassLoaderData::keep_alive_ref_count_offset()), 0); __ jcc(Assembler::greater, method_live); // Is it a weak but alive CLD? diff --git a/src/hotspot/share/classfile/classLoaderData.cpp b/src/hotspot/share/classfile/classLoaderData.cpp index de4490e73f3..fab012456d9 100644 --- a/src/hotspot/share/classfile/classLoaderData.cpp +++ b/src/hotspot/share/classfile/classLoaderData.cpp @@ -141,7 +141,7 @@ ClassLoaderData::ClassLoaderData(Handle h_class_loader, bool has_class_mirror_ho // A non-strong hidden class loader data doesn't have anything to keep // it from being unloaded during parsing of the non-strong hidden class. // The null-class-loader should always be kept alive. - _keep_alive((has_class_mirror_holder || h_class_loader.is_null()) ? 1 : 0), + _keep_alive_ref_count((has_class_mirror_holder || h_class_loader.is_null()) ? 1 : 0), _claim(0), _handles(), _klasses(nullptr), _packages(nullptr), _modules(nullptr), _unnamed_module(nullptr), _dictionary(nullptr), @@ -345,26 +345,26 @@ void ClassLoaderData::demote_strong_roots() { // while the class is being parsed, and if the class appears on the module fixup list. // Due to the uniqueness that no other class shares the hidden class' name or // ClassLoaderData, no other non-GC thread has knowledge of the hidden class while -// it is being defined, therefore _keep_alive is not volatile or atomic. -void ClassLoaderData::inc_keep_alive() { +// it is being defined, therefore _keep_alive_ref_count is not volatile or atomic. +void ClassLoaderData::inc_keep_alive_ref_count() { if (has_class_mirror_holder()) { - assert(_keep_alive > 0, "Invalid keep alive increment count"); - _keep_alive++; + assert(_keep_alive_ref_count > 0, "Invalid keep alive increment count"); + _keep_alive_ref_count++; } } -void ClassLoaderData::dec_keep_alive() { +void ClassLoaderData::dec_keep_alive_ref_count() { if (has_class_mirror_holder()) { - assert(_keep_alive > 0, "Invalid keep alive decrement count"); - if (_keep_alive == 1) { - // When the keep_alive counter is 1, the oop handle area is a strong root, + assert(_keep_alive_ref_count > 0, "Invalid keep alive decrement count"); + if (_keep_alive_ref_count == 1) { + // When the keep_alive_ref_count counter is 1, the oop handle area is a strong root, // acting as input to the GC tracing. Such strong roots are part of the // snapshot-at-the-beginning, and can not just be pulled out from the // system when concurrent GCs are running at the same time, without // invoking the right barriers. demote_strong_roots(); } - _keep_alive--; + _keep_alive_ref_count--; } } @@ -680,8 +680,8 @@ oop ClassLoaderData::holder_no_keepalive() const { // Unloading support bool ClassLoaderData::is_alive() const { - bool alive = keep_alive() // null class loader and incomplete non-strong hidden class. - || (_holder.peek() != nullptr); // and not cleaned by the GC weak handle processing. + bool alive = (_keep_alive_ref_count > 0) // null class loader and incomplete non-strong hidden class. + || (_holder.peek() != nullptr); // and not cleaned by the GC weak handle processing. return alive; } @@ -1009,7 +1009,7 @@ void ClassLoaderData::print_on(outputStream* out) const { out->print_cr(" - unloading %s", _unloading ? "true" : "false"); out->print_cr(" - class mirror holder %s", _has_class_mirror_holder ? "true" : "false"); out->print_cr(" - modified oops %s", _modified_oops ? "true" : "false"); - out->print_cr(" - keep alive %d", _keep_alive); + out->print_cr(" - _keep_alive_ref_count %d", _keep_alive_ref_count); out->print (" - claim "); switch(_claim) { case _claim_none: out->print_cr("none"); break; diff --git a/src/hotspot/share/classfile/classLoaderData.hpp b/src/hotspot/share/classfile/classLoaderData.hpp index c9d025aded1..19dbb0b1b36 100644 --- a/src/hotspot/share/classfile/classLoaderData.hpp +++ b/src/hotspot/share/classfile/classLoaderData.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -125,10 +125,10 @@ class ClassLoaderData : public CHeapObj { // Remembered sets support for the oops in the class loader data. bool _modified_oops; // Card Table Equivalent - int _keep_alive; // if this CLD is kept alive. - // Used for non-strong hidden classes and the - // boot class loader. _keep_alive does not need to be volatile or - // atomic since there is one unique CLD per non-strong hidden class. + int _keep_alive_ref_count; // if this CLD should not be considered eligible for unloading. + // Used for non-strong hidden classes and the + // boot class loader. _keep_alive_ref_count does not need to be volatile or + // atomic since there is one unique CLD per non-strong hidden class. volatile int _claim; // non-zero if claimed, for example during GC traces. // To avoid applying oop closure more than once. @@ -205,12 +205,14 @@ class ClassLoaderData : public CHeapObj { bool has_modified_oops() { return _modified_oops; } oop holder_no_keepalive() const; + // Resolving the holder keeps this CLD alive for the current GC cycle. oop holder() const; + void keep_alive() const { (void)holder(); } void classes_do(void f(Klass* const)); private: - bool keep_alive() const { return _keep_alive > 0; } + int keep_alive_ref_count() const { return _keep_alive_ref_count; } void loaded_classes_do(KlassClosure* klass_closure); void classes_do(void f(InstanceKlass*)); @@ -302,9 +304,10 @@ class ClassLoaderData : public CHeapObj { return _unloading; } - // Used to refcount a non-strong hidden class's s CLD in order to indicate their aliveness. - void inc_keep_alive(); - void dec_keep_alive(); + // Used to refcount a non-strong hidden class's CLD in order to force its aliveness during + // loading, when gc tracing may not find this CLD alive through the holder. + void inc_keep_alive_ref_count(); + void dec_keep_alive_ref_count(); void initialize_holder(Handle holder); @@ -335,8 +338,8 @@ class ClassLoaderData : public CHeapObj { bool modules_defined() { return (_modules != nullptr); } // Offsets - static ByteSize holder_offset() { return byte_offset_of(ClassLoaderData, _holder); } - static ByteSize keep_alive_offset() { return byte_offset_of(ClassLoaderData, _keep_alive); } + static ByteSize holder_offset() { return byte_offset_of(ClassLoaderData, _holder); } + static ByteSize keep_alive_ref_count_offset() { return byte_offset_of(ClassLoaderData, _keep_alive_ref_count); } // Loaded class dictionary Dictionary* dictionary() const { return _dictionary; } diff --git a/src/hotspot/share/classfile/classLoaderDataGraph.cpp b/src/hotspot/share/classfile/classLoaderDataGraph.cpp index adec6dbdeee..c7051cd58e7 100644 --- a/src/hotspot/share/classfile/classLoaderDataGraph.cpp +++ b/src/hotspot/share/classfile/classLoaderDataGraph.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -201,7 +201,7 @@ void ClassLoaderDataGraph::cld_do(CLDClosure* cl) { void ClassLoaderDataGraph::roots_cld_do(CLDClosure* strong, CLDClosure* weak) { assert_is_safepoint_or_gc(); for (ClassLoaderData* cld = Atomic::load_acquire(&_head); cld != nullptr; cld = cld->next()) { - CLDClosure* closure = cld->keep_alive() ? strong : weak; + CLDClosure* closure = (cld->keep_alive_ref_count() > 0) ? strong : weak; if (closure != nullptr) { closure->do_cld(cld); } @@ -309,8 +309,7 @@ void ClassLoaderDataGraph::modules_do_keepalive(void f(ModuleEntry*)) { assert_locked_or_safepoint(Module_lock); ClassLoaderDataGraphIterator iter; while (ClassLoaderData* cld = iter.get_next()) { - // Keep the holder alive. - (void)cld->holder(); + cld->keep_alive(); cld->modules_do(f); } } @@ -334,8 +333,7 @@ void ClassLoaderDataGraph::packages_do(void f(PackageEntry*)) { void ClassLoaderDataGraph::loaded_classes_do_keepalive(KlassClosure* klass_closure) { ClassLoaderDataGraphIterator iter; while (ClassLoaderData* cld = iter.get_next()) { - // Keep the holder alive. - (void)cld->holder(); + cld->keep_alive(); cld->loaded_classes_do(klass_closure); } } diff --git a/src/hotspot/share/classfile/javaClasses.cpp b/src/hotspot/share/classfile/javaClasses.cpp index a0b5b73c6d4..b1b74bbba05 100644 --- a/src/hotspot/share/classfile/javaClasses.cpp +++ b/src/hotspot/share/classfile/javaClasses.cpp @@ -963,7 +963,7 @@ void java_lang_Class::set_mirror_module_field(JavaThread* current, Klass* k, Han // Keep list of classes needing java.base module fixup if (!ModuleEntryTable::javabase_defined()) { assert(k->java_mirror() != nullptr, "Class's mirror is null"); - k->class_loader_data()->inc_keep_alive(); + k->class_loader_data()->inc_keep_alive_ref_count(); assert(fixup_module_field_list() != nullptr, "fixup_module_field_list not initialized"); fixup_module_field_list()->push(k); } else { diff --git a/src/hotspot/share/classfile/moduleEntry.cpp b/src/hotspot/share/classfile/moduleEntry.cpp index 6c60d60d211..af4332ca691 100644 --- a/src/hotspot/share/classfile/moduleEntry.cpp +++ b/src/hotspot/share/classfile/moduleEntry.cpp @@ -705,7 +705,7 @@ void ModuleEntryTable::patch_javabase_entries(JavaThread* current, Handle module { java_lang_Class::fixup_module_field(k, module_handle); } - k->class_loader_data()->dec_keep_alive(); + k->class_loader_data()->dec_keep_alive_ref_count(); } delete java_lang_Class::fixup_module_field_list(); diff --git a/src/hotspot/share/prims/jvm.cpp b/src/hotspot/share/prims/jvm.cpp index 4f63ebdf9d5..1e3806474b5 100644 --- a/src/hotspot/share/prims/jvm.cpp +++ b/src/hotspot/share/prims/jvm.cpp @@ -1032,7 +1032,7 @@ static jclass jvm_lookup_define_class(jclass lookup, const char *name, // The hidden class loader data has been artificially been kept alive to // this point. The mirror and any instances of this class have to keep // it alive afterwards. - ik->class_loader_data()->dec_keep_alive(); + ik->class_loader_data()->dec_keep_alive_ref_count(); if (is_nestmate && log_is_enabled(Debug, class, nestmates)) { ModuleEntry* module = ik->module(); From 066db6eb21e9c9202857f9f6adfcd537a0b82160 Mon Sep 17 00:00:00 2001 From: Alexey Ivanov Date: Fri, 2 Aug 2024 13:06:22 +0000 Subject: [PATCH 3/6] 8337274: Remove repeated 'the' in StyleSheet.create{Small,Large}AttributeSet Reviewed-by: achung, honkar, prr --- .../share/classes/javax/swing/text/html/StyleSheet.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/java.desktop/share/classes/javax/swing/text/html/StyleSheet.java b/src/java.desktop/share/classes/javax/swing/text/html/StyleSheet.java index 9b8e33b4c6b..64d2e0e3bbf 100644 --- a/src/java.desktop/share/classes/javax/swing/text/html/StyleSheet.java +++ b/src/java.desktop/share/classes/javax/swing/text/html/StyleSheet.java @@ -724,7 +724,7 @@ public AttributeSet removeAttributes(AttributeSet old, AttributeSet attrs) { * to return an AttributeSet that provides some sort of * attribute conversion. * - * @param a The set of attributes to be represented in the + * @param a The set of attributes to be represented in * the compact form. */ protected SmallAttributeSet createSmallAttributeSet(AttributeSet a) { @@ -740,7 +740,7 @@ protected SmallAttributeSet createSmallAttributeSet(AttributeSet a) { * to return a MutableAttributeSet that provides some sort of * attribute conversion. * - * @param a The set of attributes to be represented in the + * @param a The set of attributes to be represented in * the larger form. */ protected MutableAttributeSet createLargeAttributeSet(AttributeSet a) { @@ -2173,7 +2173,7 @@ public static final class ListPainter implements Serializable { /** * Returns a string that represents the value * of the HTML.Attribute.TYPE attribute. - * If this attributes is not defined, then + * If this attributes is not defined, * then the type defaults to "disc" unless * the tag is on Ordered list. In the case * of the latter, the default type is "decimal". From f2e1205abf915c7f036c58292c6f4d8602cb0e64 Mon Sep 17 00:00:00 2001 From: Erik Gahlin Date: Fri, 2 Aug 2024 15:51:26 +0000 Subject: [PATCH 4/6] 8337676: JFR: Change the label of the throttle setting Reviewed-by: mgronlun --- .../classes/jdk/jfr/internal/settings/ThrottleSetting.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/settings/ThrottleSetting.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/settings/ThrottleSetting.java index 55757050b80..c18031d514f 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/settings/ThrottleSetting.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/settings/ThrottleSetting.java @@ -44,7 +44,7 @@ import jdk.jfr.internal.util.Utils; @MetadataDefinition -@Label("Event Emission Throttle") +@Label("Throttle") @Description("Throttles the emission rate for an event") @Name(Type.SETTINGS_PREFIX + "Throttle") public final class ThrottleSetting extends JDKSettingControl { From 7deee745254e5f32b75a09d84ac5078a122c8b8d Mon Sep 17 00:00:00 2001 From: Jonathan Gibbons Date: Fri, 2 Aug 2024 17:53:23 +0000 Subject: [PATCH 5/6] 8335122: Reorganize internal low-level support for HTML in jdk.javadoc Reviewed-by: hannesw --- .../html/AbstractExecutableMemberWriter.java | 21 +- .../formats/html/AbstractMemberWriter.java | 23 +- .../html/AbstractOverviewIndexWriter.java | 15 +- .../formats/html/AbstractTreeWriter.java | 26 +- .../formats/html/AllClassesIndexWriter.java | 18 +- .../formats/html/AllPackagesIndexWriter.java | 17 +- .../html/AnnotationTypeMemberWriter.java | 27 +- .../doclets/formats/html/ClassUseWriter.java | 29 +- .../doclets/formats/html/ClassWriter.java | 49 +-- .../formats/html/ConstantsSummaryWriter.java | 33 ++- .../formats/html/ConstructorWriter.java | 33 ++- .../doclets/formats/html/Contents.java | 7 +- .../formats/html/DeprecatedListWriter.java | 14 +- .../doclets/formats/html/DocFilesHandler.java | 33 ++- .../formats/html/EnumConstantWriter.java | 23 +- .../formats/html/ExternalSpecsWriter.java | 17 +- .../doclets/formats/html/FieldWriter.java | 28 +- .../doclets/formats/html/Headings.java | 30 +- .../doclets/formats/html/HelpWriter.java | 41 +-- .../formats/html/HtmlDocletWriter.java | 86 +++--- .../doclets/formats/html/HtmlIds.java | 3 +- .../formats/html/HtmlIndexBuilder.java | 3 +- .../doclets/formats/html/HtmlLinkFactory.java | 15 +- .../doclets/formats/html/HtmlLinkInfo.java | 8 +- .../formats/html/IndexRedirectWriter.java | 18 +- .../doclets/formats/html/IndexWriter.java | 41 ++- .../doclets/formats/html/MarkerComments.java | 2 +- .../doclets/formats/html/MethodWriter.java | 28 +- .../formats/html/ModuleIndexWriter.java | 11 +- .../doclets/formats/html/ModuleWriter.java | 71 ++--- .../doclets/formats/html/Navigation.java | 48 +-- .../formats/html/NestedClassWriter.java | 22 +- .../formats/html/NewAPIListWriter.java | 16 +- .../formats/html/PackageIndexWriter.java | 11 +- .../formats/html/PackageTreeWriter.java | 20 +- .../formats/html/PackageUseWriter.java | 36 ++- .../doclets/formats/html/PackageWriter.java | 43 +-- .../formats/html/PreviewListWriter.java | 16 +- .../doclets/formats/html/PropertyWriter.java | 29 +- .../formats/html/RestrictedListWriter.java | 1 + .../doclets/formats/html/SearchWriter.java | 31 +- .../formats/html/SerialFieldWriter.java | 21 +- .../formats/html/SerialMethodWriter.java | 17 +- .../formats/html/SerializedFormWriter.java | 29 +- .../doclets/formats/html/Signatures.java | 78 ++--- .../formats/html/SourceToHTMLConverter.java | 22 +- .../formats/html/SubWriterHolderWriter.java | 31 +- .../formats/html/SummaryListWriter.java | 28 +- .../formats/html/SystemPropertiesWriter.java | 17 +- .../internal/doclets/formats/html/Table.java | 38 +-- .../doclets/formats/html/TableHeader.java | 18 +- .../doclets/formats/html/TableOfContents.java | 33 ++- .../doclets/formats/html/TreeWriter.java | 17 +- .../formats/html/markup/BodyContents.java | 9 +- .../doclets/formats/html/markup/Head.java | 11 +- .../doclets/formats/html/markup/HtmlAttr.java | 123 -------- .../formats/html/markup/HtmlDocument.java | 6 +- .../{HtmlStyle.java => HtmlStyles.java} | 8 +- .../doclets/formats/html/markup/Links.java | 11 +- .../doclets/formats/html/markup/TagName.java | 118 -------- .../formats/html/markup/package-info.java | 2 +- .../formats/html/taglets/BaseTaglet.java | 2 +- .../html/taglets/DeprecatedTaglet.java | 16 +- .../formats/html/taglets/DocRootTaglet.java | 4 +- .../formats/html/taglets/IndexTaglet.java | 2 +- .../html/taglets/InheritDocTaglet.java | 2 +- .../formats/html/taglets/LinkTaglet.java | 6 +- .../formats/html/taglets/LiteralTaglet.java | 6 +- .../formats/html/taglets/ParamTaglet.java | 8 +- .../formats/html/taglets/ReturnTaglet.java | 6 +- .../formats/html/taglets/SeeTaglet.java | 8 +- .../formats/html/taglets/SimpleTaglet.java | 8 +- .../formats/html/taglets/SnippetTaglet.java | 26 +- .../formats/html/taglets/SpecTaglet.java | 15 +- .../formats/html/taglets/SummaryTaglet.java | 2 +- .../html/taglets/SystemPropertyTaglet.java | 4 +- .../doclets/formats/html/taglets/Taglet.java | 6 +- .../formats/html/taglets/TagletWriter.java | 20 +- .../formats/html/taglets/ThrowsTaglet.java | 6 +- .../formats/html/taglets/UserTaglet.java | 4 +- .../formats/html/taglets/ValueTaglet.java | 4 +- .../jdk/javadoc/internal/doclint/Checker.java | 37 ++- .../formats/html/markup => html}/Comment.java | 4 +- .../{doclets/formats => }/html/Content.java | 2 +- .../html/markup => html}/ContentBuilder.java | 4 +- .../formats/html/markup => html}/DocType.java | 2 +- .../formats/html/markup => html}/Entity.java | 4 +- .../jdk/javadoc/internal/html/HtmlAttr.java | 275 +++++++++++++++++ .../formats/html/markup => html}/HtmlId.java | 2 +- .../jdk/javadoc/internal/html/HtmlStyle.java | 42 +++ .../internal/{doclint => html}/HtmlTag.java | 279 +++++------------- .../html/markup => html}/HtmlTree.java | 149 +++++----- .../html/markup => html}/ListBuilder.java | 4 +- .../formats/html/markup => html}/RawHtml.java | 8 +- .../formats/html/markup => html}/Script.java | 6 +- .../formats/html/markup => html}/Text.java | 4 +- .../html/markup => html}/TextBuilder.java | 4 +- .../jdk/javadoc/internal/package-info.java | 4 +- .../CheckStylesheetClasses.java | 12 +- .../testHtmlDocument/TestHtmlDocument.java | 36 +-- .../TestHtmlTableStyles.java | 2 +- .../TestVoidHtmlElements.java | 14 +- .../tools/doclint/CoverageExtras.java | 8 +- .../html/HtmlVersionTagsAttrsTest.java | 8 +- .../doclint/html/HtmlVersionTagsAttrsTest.out | 20 +- .../tools/doclint/html/OtherTagsTest.java | 2 +- .../tools/doclint/html/OtherTagsTest.out | 5 +- 107 files changed, 1377 insertions(+), 1395 deletions(-) delete mode 100644 src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlAttr.java rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/{HtmlStyle.java => HtmlStyles.java} (99%) delete mode 100644 src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/TagName.java rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/{doclets/formats/html/markup => html}/Comment.java (94%) rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/{doclets/formats => }/html/Content.java (99%) rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/{doclets/formats/html/markup => html}/ContentBuilder.java (96%) rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/{doclets/formats/html/markup => html}/DocType.java (96%) rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/{doclets/formats/html/markup => html}/Entity.java (97%) create mode 100644 src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlAttr.java rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/{doclets/formats/html/markup => html}/HtmlId.java (96%) create mode 100644 src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlStyle.java rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/{doclint => html}/HtmlTag.java (72%) rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/{doclets/formats/html/markup => html}/HtmlTree.java (90%) rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/{doclets/formats/html/markup => html}/ListBuilder.java (97%) rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/{doclets/formats/html/markup => html}/RawHtml.java (96%) rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/{doclets/formats/html/markup => html}/Script.java (97%) rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/{doclets/formats/html/markup => html}/Text.java (97%) rename src/jdk.javadoc/share/classes/jdk/javadoc/internal/{doclets/formats/html/markup => html}/TextBuilder.java (96%) diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractExecutableMemberWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractExecutableMemberWriter.java index f6ad4cf05df..84672926cf8 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractExecutableMemberWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractExecutableMemberWriter.java @@ -38,13 +38,14 @@ import javax.lang.model.type.TypeMirror; import javax.lang.model.util.SimpleTypeVisitor14; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; import static jdk.javadoc.internal.doclets.formats.html.HtmlLinkInfo.Kind.LINK_TYPE_PARAMS; import static jdk.javadoc.internal.doclets.formats.html.HtmlLinkInfo.Kind.LINK_TYPE_PARAMS_AND_BOUNDS; @@ -108,7 +109,7 @@ protected Content getSummaryLink(Element member) { } String signature = utils.flatSignature((ExecutableElement) member, typeElement); if (signature.length() > 2) { - content.add(new HtmlTree(TagName.WBR)); + content.add(new HtmlTree(HtmlTag.WBR)); } content.add(signature); @@ -120,7 +121,7 @@ protected Content getSummaryLink(Element member) { protected void addSummaryLink(HtmlLinkInfo.Kind context, TypeElement te, Element member, Content target) { ExecutableElement ee = (ExecutableElement)member; - Content memberLink = writer.getDocLink(context, te, ee, name(ee), HtmlStyle.memberNameLink); + Content memberLink = writer.getDocLink(context, te, ee, name(ee), HtmlStyles.memberNameLink); var code = HtmlTree.CODE(memberLink); addParameters(ee, code); target.add(code); @@ -143,7 +144,7 @@ protected void addTypeParameters(ExecutableElement member, Content target) { // Add explicit line break between method type parameters and // return type in member summary table to avoid random wrapping. if (typeParameters.charCount() > 10) { - target.add(new HtmlTree(TagName.BR)); + target.add(new HtmlTree(HtmlTag.BR)); } else { target.add(Entity.NO_BREAK_SPACE); } @@ -232,7 +233,7 @@ protected void addParameters(ExecutableElement member, Content target) { Content params = getParameters(member, false); if (params.charCount() > 2) { // only add for non-empty parameters - target.add(new HtmlTree(TagName.WBR)); + target.add(new HtmlTree(HtmlTag.WBR)); } target.add(params); } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java index af1f7ef1fe6..e2b81bb3982 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java @@ -44,15 +44,16 @@ import com.sun.source.doctree.DocTree; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.Resources; import jdk.javadoc.internal.doclets.toolkit.util.DocFinder; import jdk.javadoc.internal.doclets.toolkit.util.Utils; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; import static jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable.Kind.ANNOTATION_TYPE_MEMBER; import static jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable.Kind.ANNOTATION_TYPE_MEMBER_OPTIONAL; @@ -450,7 +451,7 @@ protected abstract void addInheritedSummaryLink(TypeElement typeElement, */ protected void addModifiersAndType(Element member, TypeMirror type, Content target) { - var code = new HtmlTree(TagName.CODE); + var code = new HtmlTree(HtmlTag.CODE); addModifiers(member, code); if (type == null) { code.add(switch (member.getKind()) { @@ -518,7 +519,7 @@ protected void addDeprecatedInfo(Element member, Content target) { var t = configuration.tagletManager.getTaglet(DocTree.Kind.DEPRECATED); Content output = t.getAllBlockTagOutput(member, writer.getTagletWriterInstance(false)); if (!output.isEmpty()) { - target.add(HtmlTree.DIV(HtmlStyle.deprecationBlock, output)); + target.add(HtmlTree.DIV(HtmlStyles.deprecationBlock, output)); } } @@ -570,9 +571,9 @@ protected void addUseInfo(List members, Content heading, Cont return; } boolean printedUseTableHeader = false; - var useTable = new Table(HtmlStyle.summaryTable) + var useTable = new Table(HtmlStyles.summaryTable) .setCaption(heading) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast); + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colSecond, HtmlStyles.colLast); for (Element element : members) { TypeElement te = (typeElement == null) ? utils.getEnclosingTypeElement(element) @@ -588,7 +589,7 @@ protected void addUseInfo(List members, Content heading, Cont && !utils.isConstructor(element) && !utils.isTypeElement(element)) { - var name = HtmlTree.SPAN(HtmlStyle.typeNameLabel); + var name = HtmlTree.SPAN(HtmlStyles.typeNameLabel); name.add(name(te) + "."); typeContent.add(name); } @@ -669,7 +670,7 @@ public Content getInheritedSummaryHeader(TypeElement tElement) { * @return the inherited summary links */ public Content getInheritedSummaryLinks() { - return new HtmlTree(TagName.CODE); + return new HtmlTree(HtmlTag.CODE); } /** diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractOverviewIndexWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractOverviewIndexWriter.java index 2d7fb6e9b11..c466a2fcb5a 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractOverviewIndexWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractOverviewIndexWriter.java @@ -25,14 +25,15 @@ package jdk.javadoc.internal.doclets.formats.html; -import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; -import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.RawHtml; /** * Abstract class to generate the top-level "overview" files. @@ -135,8 +136,8 @@ protected void addConfigurationTitle(Content target) { if (!doctitle.isEmpty()) { var title = RawHtml.of(doctitle); var heading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, - HtmlStyle.title, title); - var div = HtmlTree.DIV(HtmlStyle.header, heading); + HtmlStyles.title, title); + var div = HtmlTree.DIV(HtmlStyles.header, heading); target.add(div); } } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractTreeWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractTreeWriter.java index d0483d5d33c..594132743eb 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractTreeWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractTreeWriter.java @@ -25,18 +25,20 @@ package jdk.javadoc.internal.doclets.formats.html; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.toolkit.util.ClassTree; -import jdk.javadoc.internal.doclets.toolkit.util.ClassTree.Hierarchy; -import jdk.javadoc.internal.doclets.toolkit.util.DocPath; - -import javax.lang.model.element.TypeElement; import java.util.Collection; import java.util.SortedSet; import java.util.TreeSet; +import javax.lang.model.element.TypeElement; + +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; +import jdk.javadoc.internal.doclets.toolkit.util.ClassTree; +import jdk.javadoc.internal.doclets.toolkit.util.ClassTree.Hierarchy; +import jdk.javadoc.internal.doclets.toolkit.util.DocPath; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; + /** * Abstract class to print the class hierarchy page for all the Classes. This @@ -77,10 +79,10 @@ protected AbstractTreeWriter(HtmlConfiguration configuration, protected void addLevelInfo(TypeElement parent, Collection collection, Hierarchy hierarchy, Content content) { if (!collection.isEmpty()) { - var ul = new HtmlTree(TagName.UL); + var ul = new HtmlTree(HtmlTag.UL); for (TypeElement local : collection) { - var li = new HtmlTree(TagName.LI); - li.setStyle(HtmlStyle.circle); + var li = new HtmlTree(HtmlTag.LI); + li.setStyle(HtmlStyles.circle); addPartialInfo(local, li); addExtendsImplements(parent, local, li); addLevelInfo(local, hierarchy.subtypes(local), hierarchy, li); // Recurse @@ -104,7 +106,7 @@ protected void addTree(Hierarchy hierarchy, String heading, Content content) { Content headingContent = contents.getContent(heading); var sectionHeading = HtmlTree.HEADING_TITLE(Headings.CONTENT_HEADING, headingContent); - var section = HtmlTree.SECTION(HtmlStyle.hierarchy, sectionHeading); + var section = HtmlTree.SECTION(HtmlStyles.hierarchy, sectionHeading); addLevelInfo(!utils.isPlainInterface(firstTypeElement) ? firstTypeElement : null, roots, hierarchy, section); content.add(section); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesIndexWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesIndexWriter.java index 5aa9f349a51..68ee6d98857 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesIndexWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllClassesIndexWriter.java @@ -33,14 +33,16 @@ import javax.lang.model.element.TypeElement; import com.sun.source.doctree.DeprecatedTree; -import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; + import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.Utils.ElementFlag; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; /** * Generate the file with list of all the classes in this run. @@ -79,9 +81,9 @@ public void buildPage() throws DocFileIOException { * @param target the content to which the links will be added */ protected void addContents(Content target) { - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setHeader(new TableHeader(contents.classLabel, contents.descriptionLabel)) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast) + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast) .setId(HtmlIds.ALL_CLASSES_TABLE) .setDefaultTab(contents.allClassesAndInterfacesLabel) .addTab(contents.interfaces, utils::isPlainInterface) @@ -96,8 +98,8 @@ protected void addContents(Content target) { } Content titleContent = contents.allClassesAndInterfacesLabel; var pHeading = HtmlTree.HEADING_TITLE(Headings.PAGE_TITLE_HEADING, - HtmlStyle.title, titleContent); - var headerDiv = HtmlTree.DIV(HtmlStyle.header, pHeading); + HtmlStyles.title, titleContent); + var headerDiv = HtmlTree.DIV(HtmlStyles.header, pHeading); target.add(headerDiv); if (!table.isEmpty()) { target.add(table); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllPackagesIndexWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllPackagesIndexWriter.java index 5581ec03e2a..2c9539d3c30 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllPackagesIndexWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AllPackagesIndexWriter.java @@ -29,12 +29,13 @@ import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Generate the file with list of all the packages in this run. @@ -60,8 +61,8 @@ public void buildPage() throws DocFileIOException { addPackages(mainContent); Content titleContent = contents.allPackagesLabel; var pHeading = HtmlTree.HEADING_TITLE(Headings.PAGE_TITLE_HEADING, - HtmlStyle.title, titleContent); - var headerDiv = HtmlTree.DIV(HtmlStyle.header, pHeading); + HtmlStyles.title, titleContent); + var headerDiv = HtmlTree.DIV(HtmlStyles.header, pHeading); HtmlTree body = getBody(getWindowTitle(label)); body.add(new BodyContents() .setHeader(getHeader(PageMode.ALL_PACKAGES)) @@ -77,10 +78,10 @@ public void buildPage() throws DocFileIOException { * @param target the content to which the links will be added */ protected void addPackages(Content target) { - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setCaption(Text.of(contents.packageSummaryLabel.toString())) .setHeader(new TableHeader(contents.packageLabel, contents.descriptionLabel)) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast); + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast); for (PackageElement pkg : configuration.packages) { if (!(options.noDeprecated() && utils.isDeprecated(pkg))) { Content packageLinkContent = getPackageLink(pkg, getLocalizedPackageName(pkg)); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeMemberWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeMemberWriter.java index 8f8585ecc62..f1f63110231 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeMemberWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeMemberWriter.java @@ -32,13 +32,14 @@ import javax.lang.model.element.TypeElement; import javax.lang.model.type.TypeMirror; -import jdk.javadoc.internal.doclets.formats.html.markup.Comment; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.BaseOptions; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Comment; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** @@ -96,7 +97,7 @@ protected void buildAnnotationTypeMember(Content target) { for (Element member : members) { currentMember = member; Content annotationContent = getAnnotationHeaderContent(currentMember); - Content div = HtmlTree.DIV(HtmlStyle.horizontalScroll); + Content div = HtmlTree.DIV(HtmlStyles.horizontalScroll); buildAnnotationTypeMemberChildren(div); annotationContent.add(div); memberList.add(writer.getMemberListItem(annotationContent)); @@ -181,7 +182,7 @@ public Content getMemberSummaryHeader(Content content) { @Override public void buildSummary(Content summariesList, Content content) { - writer.addSummary(HtmlStyle.memberSummary, + writer.addSummary(HtmlStyles.memberSummary, switch (kind) { case ANNOTATION_TYPE_MEMBER_REQUIRED -> HtmlIds.ANNOTATION_TYPE_REQUIRED_ELEMENT_SUMMARY; case ANNOTATION_TYPE_MEMBER_OPTIONAL -> HtmlIds.ANNOTATION_TYPE_OPTIONAL_ELEMENT_SUMMARY; @@ -209,7 +210,7 @@ protected Content getAnnotationHeaderContent(Element member) { var heading = HtmlTree.HEADING(Headings.TypeDeclaration.MEMBER_HEADING, Text.of(name(member))); content.add(heading); - return HtmlTree.SECTION(HtmlStyle.detail, content) + return HtmlTree.SECTION(HtmlStyles.detail, content) .setId(htmlIds.forMember((ExecutableElement) member).getFirst()); } @@ -238,7 +239,7 @@ protected void addTags(Element member, Content annotationContent) { protected Content getAnnotationDetails(Content annotationDetailsHeader, Content annotationDetails) { Content c = new ContentBuilder(annotationDetailsHeader, annotationDetails); - return getMember(HtmlTree.SECTION(HtmlStyle.memberDetails, c)); + return getMember(HtmlTree.SECTION(HtmlStyles.memberDetails, c)); } @Override @@ -278,10 +279,10 @@ public TableHeader getSummaryTableHeader(Element member) { @Override protected Table createSummaryTable() { - return new Table(HtmlStyle.summaryTable) + return new Table(HtmlStyles.summaryTable) .setCaption(getCaption()) .setHeader(getSummaryTableHeader(typeElement)) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast); + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colSecond, HtmlStyles.colLast); } @Override @@ -292,7 +293,7 @@ public void addInheritedSummaryLabel(TypeElement typeElement, Content content) { protected void addSummaryLink(HtmlLinkInfo.Kind context, TypeElement typeElement, Element member, Content content) { Content memberLink = writer.getDocLink(context, utils.getEnclosingTypeElement(member), member, - name(member), HtmlStyle.memberNameLink); + name(member), HtmlStyles.memberNameLink); var code = HtmlTree.CODE(memberLink); content.add(code); } @@ -331,7 +332,7 @@ protected void addDefaultValueInfo(Element member, Content annotationContent) { ExecutableElement ee = (ExecutableElement) member; AnnotationValue value = ee.getDefaultValue(); if (value != null) { - var dl = HtmlTree.DL(HtmlStyle.notes); + var dl = HtmlTree.DL(HtmlStyles.notes); dl.add(HtmlTree.DT(contents.default_)); dl.add(HtmlTree.DD(HtmlTree.CODE(Text.of(value.toString())))); annotationContent.add(dl); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java index 94e66f1eed6..ac953dccb55 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java @@ -38,11 +38,8 @@ import javax.lang.model.element.TypeElement; import javax.tools.Diagnostic; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.DocletException; import jdk.javadoc.internal.doclets.toolkit.util.ClassTree; import jdk.javadoc.internal.doclets.toolkit.util.ClassUseMapper; @@ -50,6 +47,10 @@ import jdk.javadoc.internal.doclets.toolkit.util.DocPath; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.Utils; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; /** @@ -244,10 +245,10 @@ protected void addPackageList(Content content) { "doclet.ClassUse_Packages.that.use.0", getLink(new HtmlLinkInfo(configuration, HtmlLinkInfo.Kind.PLAIN, typeElement))); - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setCaption(caption) .setHeader(getPackageTableHeader()) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast); + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast); for (PackageElement pkg : pkgSet) { addPackageUse(pkg, table); } @@ -270,10 +271,10 @@ protected void addPackageAnnotationList(Content content) { getLink(new HtmlLinkInfo(configuration, HtmlLinkInfo.Kind.PLAIN, typeElement))); - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setCaption(caption) .setHeader(getPackageTableHeader()) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast); + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast); for (PackageElement pkg : pkgToPackageAnnotations) { Content summary = new ContentBuilder(); addSummaryComment(pkg, summary); @@ -288,9 +289,9 @@ protected void addPackageAnnotationList(Content content) { * @param content the content to which the class elements will be added */ protected void addClassList(Content content) { - var ul = HtmlTree.UL(HtmlStyle.blockList); + var ul = HtmlTree.UL(HtmlStyles.blockList); for (PackageElement pkg : pkgSet) { - var section = HtmlTree.SECTION(HtmlStyle.detail) + var section = HtmlTree.SECTION(HtmlStyles.detail) .setId(htmlIds.forPackage(pkg)); Content link = contents.getContent("doclet.ClassUse_Uses.of.0.in.1", getLink(new HtmlLinkInfo(configuration, HtmlLinkInfo.Kind.PLAIN, @@ -301,7 +302,7 @@ protected void addClassList(Content content) { addClassUse(pkg, section); ul.add(HtmlTree.LI(section)); } - var li = HtmlTree.SECTION(HtmlStyle.classUses, ul); + var li = HtmlTree.SECTION(HtmlStyles.classUses, ul); content.add(li); } @@ -422,11 +423,11 @@ protected HtmlTree getClassUseHeader() { HtmlTree body = getBody(getWindowTitle(title)); ContentBuilder headingContent = new ContentBuilder(); headingContent.add(contents.getContent("doclet.ClassUse_Title", cltype)); - headingContent.add(new HtmlTree(TagName.BR)); + headingContent.add(new HtmlTree(HtmlTag.BR)); headingContent.add(clname); var heading = HtmlTree.HEADING_TITLE(Headings.PAGE_TITLE_HEADING, - HtmlStyle.title, headingContent); - var div = HtmlTree.DIV(HtmlStyle.header, heading); + HtmlStyles.title, headingContent); + var div = HtmlTree.DIV(HtmlStyles.header, heading); bodyContents.setHeader(getHeader(PageMode.USE, typeElement)).addMainContent(div); return body; } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriter.java index 7e0cf74c4f3..a1fd27fefdd 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriter.java @@ -45,12 +45,7 @@ import com.sun.source.doctree.DocTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.CommentUtils; import jdk.javadoc.internal.doclets.toolkit.DocletException; import jdk.javadoc.internal.doclets.toolkit.PropertyUtils; @@ -58,6 +53,12 @@ import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlAttr; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Generate the Class Information Page. @@ -154,7 +155,7 @@ protected void buildClassTree(Content classContent) { * @param target the content to which the documentation will be added */ protected void buildClassInfo(Content target) { - Content c = HtmlTree.DIV(HtmlStyle.horizontalScroll); + Content c = HtmlTree.DIV(HtmlStyles.horizontalScroll); buildParamInfo(c); buildSuperInterfacesInfo(c); buildImplementedInterfacesInfo(c); @@ -430,12 +431,12 @@ private void setRecordDocumentation(TypeElement elem) { protected Content getHeader(String header) { HtmlTree body = getBody(getWindowTitle(utils.getSimpleName(typeElement))); - var div = HtmlTree.DIV(HtmlStyle.header); + var div = HtmlTree.DIV(HtmlStyles.header); HtmlLinkInfo linkInfo = new HtmlLinkInfo(configuration, HtmlLinkInfo.Kind.SHOW_TYPE_PARAMS_AND_BOUNDS, typeElement) .linkToSelf(false); // Let's not link to ourselves in the header var heading = HtmlTree.HEADING_TITLE(Headings.PAGE_TITLE_HEADING, - HtmlStyle.title, Text.of(header)); + HtmlStyles.title, Text.of(header)); heading.add(getTypeParameterLinks(linkInfo)); div.add(heading); bodyContents.setHeader(getHeader(PageMode.CLASS, typeElement)) @@ -463,7 +464,7 @@ protected void printDocument(Content content) throws DocFileIOException { } protected Content getClassInfo(Content classInfo) { - return getMember(HtmlIds.CLASS_DESCRIPTION, HtmlStyle.classDescription, classInfo); + return getMember(HtmlIds.CLASS_DESCRIPTION, HtmlStyles.classDescription, classInfo); } @Override @@ -472,7 +473,7 @@ public TypeElement getCurrentPageElement() { } protected void addClassSignature(Content classInfo) { - classInfo.add(new HtmlTree(TagName.HR)); + classInfo.add(new HtmlTree(HtmlTag.HR)); classInfo.add(new Signatures.TypeSignature(typeElement, this) .toContent()); } @@ -514,7 +515,7 @@ private Content getClassInheritanceTreeContent(TypeMirror type) { HtmlTree classTree = null; do { sup = utils.getFirstVisibleSuperClass(type); - var entry = HtmlTree.DIV(HtmlStyle.inheritance, getClassHelperContent(type)); + var entry = HtmlTree.DIV(HtmlStyles.inheritance, getClassHelperContent(type)); if (classTree != null) entry.add(classTree); classTree = entry; @@ -564,7 +565,7 @@ protected void addParamInfo(Content target) { var t = configuration.tagletManager.getTaglet(DocTree.Kind.PARAM); Content paramInfo = t.getAllBlockTagOutput(typeElement, getTagletWriterInstance(false)); if (!paramInfo.isEmpty()) { - target.add(HtmlTree.DL(HtmlStyle.notes, paramInfo)); + target.add(HtmlTree.DL(HtmlStyles.notes, paramInfo)); } } } @@ -578,7 +579,7 @@ protected void addSubClassInfo(Content target) { } Set subclasses = classTree.hierarchy(typeElement).subtypes(typeElement); if (!subclasses.isEmpty()) { - var dl = HtmlTree.DL(HtmlStyle.notes); + var dl = HtmlTree.DL(HtmlStyles.notes); dl.add(HtmlTree.DT(contents.subclassesLabel)); dl.add(HtmlTree.DD(getClassLinks(HtmlLinkInfo.Kind.PLAIN, subclasses))); target.add(dl); @@ -590,7 +591,7 @@ protected void addSubInterfacesInfo(Content target) { if (utils.isPlainInterface(typeElement)) { Set subInterfaces = classTree.hierarchy(typeElement).allSubtypes(typeElement); if (!subInterfaces.isEmpty()) { - var dl = HtmlTree.DL(HtmlStyle.notes); + var dl = HtmlTree.DL(HtmlStyles.notes); dl.add(HtmlTree.DT(contents.subinterfacesLabel)); dl.add(HtmlTree.DD(getClassLinks(HtmlLinkInfo.Kind.SHOW_TYPE_PARAMS, subInterfaces))); target.add(dl); @@ -609,7 +610,7 @@ protected void addInterfaceUsageInfo(Content target) { } Set implcl = classTree.implementingClasses(typeElement); if (!implcl.isEmpty()) { - var dl = HtmlTree.DL(HtmlStyle.notes); + var dl = HtmlTree.DL(HtmlStyles.notes); dl.add(HtmlTree.DT(contents.implementingClassesLabel)); dl.add(HtmlTree.DD(getClassLinks(HtmlLinkInfo.Kind.PLAIN, implcl))); target.add(dl); @@ -620,7 +621,7 @@ protected void addImplementedInterfacesInfo(Content target) { SortedSet interfaces = new TreeSet<>(comparators.typeMirrorClassUseComparator()); interfaces.addAll(utils.getAllInterfaces(typeElement)); if (utils.isClass(typeElement) && !interfaces.isEmpty()) { - var dl = HtmlTree.DL(HtmlStyle.notes); + var dl = HtmlTree.DL(HtmlStyles.notes); dl.add(HtmlTree.DT(contents.allImplementedInterfacesLabel)); dl.add(HtmlTree.DD(getClassLinks(HtmlLinkInfo.Kind.SHOW_TYPE_PARAMS, interfaces))); target.add(dl); @@ -633,7 +634,7 @@ protected void addSuperInterfacesInfo(Content target) { interfaces.addAll(utils.getAllInterfaces(typeElement)); if (utils.isPlainInterface(typeElement) && !interfaces.isEmpty()) { - var dl = HtmlTree.DL(HtmlStyle.notes); + var dl = HtmlTree.DL(HtmlStyles.notes); dl.add(HtmlTree.DT(contents.allSuperinterfacesLabel)); dl.add(HtmlTree.DD(getClassLinks(HtmlLinkInfo.Kind.SHOW_TYPE_PARAMS, interfaces))); target.add(dl); @@ -647,7 +648,7 @@ protected void addNestedClassInfo(final Content target) { new SimpleElementVisitor8() { @Override public Void visitType(TypeElement e, Void p) { - var dl = HtmlTree.DL(HtmlStyle.notes); + var dl = HtmlTree.DL(HtmlStyles.notes); dl.add(HtmlTree.DT(utils.isPlainInterface(e) ? contents.enclosingInterfaceLabel : contents.enclosingClassLabel)); @@ -660,9 +661,9 @@ public Void visitType(TypeElement e, Void p) { protected void addFunctionalInterfaceInfo (Content target) { if (utils.isFunctionalInterface(typeElement)) { - var dl = HtmlTree.DL(HtmlStyle.notes); + var dl = HtmlTree.DL(HtmlStyles.notes); dl.add(HtmlTree.DT(contents.functionalInterface)); - var dd = new HtmlTree(TagName.DD); + var dd = new HtmlTree(HtmlTag.DD); dd.add(contents.functionalInterfaceMessage); dl.add(dd); target.add(dl); @@ -672,8 +673,8 @@ protected void addFunctionalInterfaceInfo (Content target) { protected void addClassDeprecationInfo(Content classInfo) { List deprs = utils.getDeprecatedTrees(typeElement); if (utils.isDeprecated(typeElement)) { - var deprLabel = HtmlTree.SPAN(HtmlStyle.deprecatedLabel, getDeprecatedPhrase(typeElement)); - var div = HtmlTree.DIV(HtmlStyle.deprecationBlock, deprLabel); + var deprLabel = HtmlTree.SPAN(HtmlStyles.deprecatedLabel, getDeprecatedPhrase(typeElement)); + var div = HtmlTree.DIV(HtmlStyles.deprecationBlock, deprLabel); if (!deprs.isEmpty()) { CommentHelper ch = utils.getCommentHelper(typeElement); DocTree dt = deprs.get(0); @@ -726,7 +727,7 @@ public TypeElement getTypeElement() { } protected Content getMemberDetails(Content content) { - var section = HtmlTree.SECTION(HtmlStyle.details, content); + var section = HtmlTree.SECTION(HtmlStyles.details, content); // The following id is required by the Navigation bar if (utils.isAnnotationInterface(typeElement)) { section.setId(HtmlIds.ANNOTATION_TYPE_ELEMENT_DETAIL); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriter.java index 5bddac0622c..cdae0e8d911 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriter.java @@ -39,20 +39,21 @@ import javax.lang.model.element.TypeElement; import javax.lang.model.element.VariableElement; -import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.DocletException; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.IndexItem; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlId; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** @@ -328,14 +329,14 @@ Content getHeader() { bodyContents.setHeader(getHeader(PageMode.CONSTANT_VALUES)); Content titleContent = contents.constantsSummaryTitle; var pHeading = HtmlTree.HEADING_TITLE(Headings.PAGE_TITLE_HEADING, - HtmlStyle.title, titleContent); - var div = HtmlTree.DIV(HtmlStyle.header, pHeading); + HtmlStyles.title, titleContent); + var div = HtmlTree.DIV(HtmlStyles.header, pHeading); bodyContents.addMainContent(div); return body; } Content getContentsHeader() { - return HtmlTree.UL(HtmlStyle.contentsList); + return HtmlTree.UL(HtmlStyles.contentsList); } void addLinkToTableOfContents(String abbrevPackageName) { @@ -361,14 +362,14 @@ void addPackageGroup(String abbrevPackageName, Content toContent) { var heading = HtmlTree.HEADING_TITLE( Headings.ConstantsSummary.PACKAGE_HEADING, headingContent); - summarySection = HtmlTree.SECTION(HtmlStyle.constantsSummary, heading) + summarySection = HtmlTree.SECTION(HtmlStyles.constantsSummary, heading) .setId(anchorName); toContent.add(summarySection); } Content getClassConstantHeader() { - return HtmlTree.UL(HtmlStyle.blockList); + return HtmlTree.UL(HtmlStyles.blockList); } void addClassConstant(Content fromClassConstant) { @@ -394,10 +395,10 @@ void addConstantMembers(TypeElement typeElement, Collection fie } caption.add(classLink); - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setCaption(caption) .setHeader(constantsTableHeader) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast); + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colSecond, HtmlStyles.colLast); for (VariableElement field : fields) { table.addRow(getTypeColumn(field), getNameColumn(field), getValue(field)); @@ -413,7 +414,7 @@ void addConstantMembers(TypeElement typeElement, Collection fie */ private Content getTypeColumn(VariableElement member) { Content typeContent = new ContentBuilder(); - var code = new HtmlTree(TagName.CODE) + var code = new HtmlTree(HtmlTag.CODE) .setId(htmlIds.forMember(currentTypeElement, member)); for (Modifier mod : member.getModifiers()) { code.add(Text.of(mod.toString())) diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriter.java index c5fb332a008..11975404a55 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriter.java @@ -33,15 +33,16 @@ import javax.lang.model.element.TypeElement; import javax.lang.model.element.TypeParameterElement; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.BaseOptions; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** @@ -111,7 +112,7 @@ protected void buildConstructorDoc(Content target) { for (Element constructor : constructors) { currentConstructor = (ExecutableElement)constructor; Content constructorContent = getConstructorHeaderContent(currentConstructor); - Content div = HtmlTree.DIV(HtmlStyle.horizontalScroll); + Content div = HtmlTree.DIV(HtmlStyles.horizontalScroll); buildSignature(div); buildDeprecationInfo(div); buildPreviewInfo(div); @@ -193,7 +194,7 @@ public Content getMemberSummaryHeader(Content content) { @Override public void buildSummary(Content summariesList, Content content) { - writer.addSummary(HtmlStyle.constructorSummary, + writer.addSummary(HtmlStyles.constructorSummary, HtmlIds.CONSTRUCTOR_SUMMARY, summariesList, content); } @@ -216,7 +217,7 @@ protected Content getConstructorHeaderContent(ExecutableElement constructor) { heading.setId(anchors.getLast()); } content.add(heading); - return HtmlTree.SECTION(HtmlStyle.detail, content) + return HtmlTree.SECTION(HtmlStyles.detail, content) .setId(anchors.getFirst()); } @@ -247,7 +248,7 @@ protected void addTags(ExecutableElement constructor, Content constructorContent protected Content getConstructorDetails(Content memberDetailsHeader, Content memberDetails) { return writer.getDetailsListItem( - HtmlTree.SECTION(HtmlStyle.constructorDetails) + HtmlTree.SECTION(HtmlStyles.constructorDetails) .setId(HtmlIds.CONSTRUCTOR_DETAIL) .add(memberDetailsHeader) .add(memberDetails)); @@ -279,14 +280,14 @@ protected Table createSummaryTable() { List bodyRowStyles; if (threeColumnSummary()) { - bodyRowStyles = Arrays.asList(HtmlStyle.colFirst, HtmlStyle.colConstructorName, - HtmlStyle.colLast); + bodyRowStyles = Arrays.asList(HtmlStyles.colFirst, HtmlStyles.colConstructorName, + HtmlStyles.colLast); } else { - bodyRowStyles = Arrays.asList(HtmlStyle.colConstructorName, HtmlStyle.colLast); + bodyRowStyles = Arrays.asList(HtmlStyles.colConstructorName, HtmlStyles.colLast); } return new Table( - HtmlStyle.summaryTable) + HtmlStyles.summaryTable) .setCaption(contents.constructors) .setHeader(getSummaryTableHeader(typeElement)) .setColumnStyles(bodyRowStyles); @@ -299,7 +300,7 @@ public void addInheritedSummaryLabel(TypeElement typeElement, Content content) { @Override protected void addSummaryType(Element member, Content content) { if (threeColumnSummary()) { - var code = new HtmlTree(TagName.CODE); + var code = new HtmlTree(HtmlTag.CODE); if (utils.isProtected(member)) { code.add("protected "); } else if (utils.isPrivate(member)) { diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.java index 3afccd55ba1..f098a8dc8f3 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.java @@ -31,11 +31,12 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; import jdk.javadoc.internal.doclets.toolkit.Resources; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.Text; /** diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java index 684e198ef1b..3f58ef90ad5 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java @@ -32,11 +32,13 @@ import com.sun.source.doctree.DeprecatedTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.DeprecatedAPIListBuilder; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Generate File to list all the deprecated classes and class members with the @@ -79,7 +81,7 @@ protected String getTitleKey() { protected void addContentSelectors(Content target) { List releases = builder.releases; if (releases.size() > 1) { - Content tabs = HtmlTree.DIV(HtmlStyle.checkboxes, contents.getContent( + Content tabs = HtmlTree.DIV(HtmlStyles.checkboxes, contents.getContent( "doclet.Deprecated_API_Checkbox_Label")); // Table column ids are 1-based int index = 1; @@ -125,7 +127,7 @@ protected void addComments(Element e, Content desc) { protected void addTableTabs(Table table, String headingKey) { List releases = builder.releases; if (!releases.isEmpty()) { - table.setGridStyle(HtmlStyle.threeColumnReleaseSummary); + table.setGridStyle(HtmlStyles.threeColumnReleaseSummary); } if (releases.size() > 1) { table.setDefaultTab(getTableCaption(headingKey)) @@ -170,7 +172,7 @@ protected HtmlStyle[] getColumnStyles() { if (releases.isEmpty()) { return super.getColumnStyles(); } - return new HtmlStyle[]{ HtmlStyle.colSummaryItemName, HtmlStyle.colSecond, HtmlStyle.colLast }; + return new HtmlStyle[]{ HtmlStyles.colSummaryItemName, HtmlStyles.colSecond, HtmlStyles.colLast }; } @Override diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DocFilesHandler.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DocFilesHandler.java index cd2633d004d..5b39b08c22b 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DocFilesHandler.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DocFilesHandler.java @@ -25,12 +25,23 @@ package jdk.javadoc.internal.doclets.formats.html; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.List; + +import javax.lang.model.element.Element; +import javax.lang.model.element.ModuleElement; +import javax.lang.model.element.PackageElement; +import javax.tools.JavaFileManager.Location; + import com.sun.source.doctree.DocTree; import com.sun.source.doctree.EndElementTree; import com.sun.source.doctree.StartElementTree; import com.sun.source.util.DocTreeFactory; + +import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; import jdk.javadoc.internal.doclets.toolkit.DocFileElement; import jdk.javadoc.internal.doclets.toolkit.DocletException; import jdk.javadoc.internal.doclets.toolkit.util.DocFile; @@ -38,19 +49,9 @@ import jdk.javadoc.internal.doclets.toolkit.util.DocPath; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.Utils; -import jdk.javadoc.internal.doclint.HtmlTag; - -import javax.lang.model.element.Element; -import javax.lang.model.element.ModuleElement; -import javax.lang.model.element.PackageElement; -import javax.tools.JavaFileManager.Location; - -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.List; - -import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; /** * A class to handle any files, including HTML files, found in the {@code doc-files} @@ -249,7 +250,7 @@ private List getLocalHeaderTags(List dtree switch (dt.getKind()) { case START_ELEMENT: StartElementTree startElem = (StartElementTree)dt; - switch (HtmlTag.get(startElem.getName())) { + switch (HtmlTag.of(startElem.getName())) { case HEAD: inHead = true; break; @@ -267,7 +268,7 @@ private List getLocalHeaderTags(List dtree break; case END_ELEMENT: EndElementTree endElem = (EndElementTree)dt; - switch (HtmlTag.get(endElem.getName())) { + switch (HtmlTag.of(endElem.getName())) { case HEAD: inHead = false; break loop; diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/EnumConstantWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/EnumConstantWriter.java index d60fd355027..ff82b95fe4d 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/EnumConstantWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/EnumConstantWriter.java @@ -29,12 +29,13 @@ import javax.lang.model.element.TypeElement; import javax.lang.model.element.VariableElement; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.BaseOptions; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Writes enum constant documentation in HTML format. @@ -75,7 +76,7 @@ protected void buildEnumConstant(Content target) { for (Element enumConstant : enumConstants) { currentElement = (VariableElement)enumConstant; Content enumConstantContent = getEnumConstantsHeader(currentElement); - Content div = HtmlTree.DIV(HtmlStyle.horizontalScroll); + Content div = HtmlTree.DIV(HtmlStyles.horizontalScroll); buildSignature(div); buildDeprecationInfo(div); buildPreviewInfo(div); @@ -138,7 +139,7 @@ public Content getMemberSummaryHeader(Content content) { @Override public void buildSummary(Content summariesList, Content content) { - writer.addSummary(HtmlStyle.constantsSummary, + writer.addSummary(HtmlStyles.constantsSummary, HtmlIds.ENUM_CONSTANT_SUMMARY, summariesList, content); } @@ -156,7 +157,7 @@ protected Content getEnumConstantsHeader(VariableElement enumConstant) { var heading = HtmlTree.HEADING(Headings.TypeDeclaration.MEMBER_HEADING, Text.of(name(enumConstant))); enumConstantsContent.add(heading); - return HtmlTree.SECTION(HtmlStyle.detail, enumConstantsContent) + return HtmlTree.SECTION(HtmlStyles.detail, enumConstantsContent) .setId(htmlIds.forMember(enumConstant)); } @@ -186,7 +187,7 @@ protected void addTags(VariableElement enumConstant, Content content) { protected Content getEnumConstantsDetails(Content memberDetailsHeader, Content content) { return writer.getDetailsListItem( - HtmlTree.SECTION(HtmlStyle.constantDetails) + HtmlTree.SECTION(HtmlStyles.constantDetails) .setId(HtmlIds.ENUM_CONSTANT_DETAIL) .add(memberDetailsHeader) .add(content)); @@ -206,10 +207,10 @@ public TableHeader getSummaryTableHeader(Element member) { @Override protected Table createSummaryTable() { - return new Table(HtmlStyle.summaryTable) + return new Table(HtmlStyles.summaryTable) .setCaption(contents.getContent("doclet.Enum_Constants")) .setHeader(getSummaryTableHeader(typeElement)) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast); + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast); } @Override @@ -220,7 +221,7 @@ public void addInheritedSummaryLabel(TypeElement typeElement, Content content) { protected void addSummaryLink(HtmlLinkInfo.Kind context, TypeElement typeElement, Element member, Content content) { Content memberLink = writer.getDocLink(context, utils.getEnclosingTypeElement(member), member, - name(member), HtmlStyle.memberNameLink); + name(member), HtmlStyles.memberNameLink); var code = HtmlTree.CODE(memberLink); content.add(code); } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ExternalSpecsWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ExternalSpecsWriter.java index cd66876997c..0115de5558f 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ExternalSpecsWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ExternalSpecsWriter.java @@ -49,15 +49,16 @@ import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.DocFileElement; import jdk.javadoc.internal.doclets.toolkit.OverviewElement; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.IndexItem; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.toList; @@ -103,7 +104,7 @@ public void buildPage() throws DocFileIOException { addExternalSpecs(mainContent); body.add(new BodyContents() .setHeader(getHeader(PageMode.EXTERNAL_SPECS)) - .addMainContent(HtmlTree.DIV(HtmlStyle.header, + .addMainContent(HtmlTree.DIV(HtmlStyles.header, HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, contents.getContent("doclet.External_Specifications")))) .addMainContent(mainContent) @@ -192,10 +193,10 @@ protected void addExternalSpecs(Content content) { } var hostNamesList = new ArrayList<>(hostNamesSet); - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setCaption(contents.externalSpecifications) .setHeader(new TableHeader(contents.specificationLabel, contents.referencedIn)) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast) + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast) .setId(HtmlIds.EXTERNAL_SPECS); if ((hostNamesList.size() + (noHost ? 1 : 0)) > 1) { for (var host : hostNamesList) { @@ -211,7 +212,7 @@ protected void addExternalSpecs(Content content) { for (List searchIndexItems : searchIndexMap.values()) { IndexItem ii = searchIndexItems.get(0); Content specName = createSpecLink(ii); - Content referencesList = HtmlTree.UL(HtmlStyle.refList, searchIndexItems, + Content referencesList = HtmlTree.UL(HtmlStyles.refList, searchIndexItems, item -> HtmlTree.LI(createLink(item))); Content references = searchIndexItems.size() < USE_DETAILS_THRESHHOLD ? referencesList diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriter.java index c72521b73b2..213078712eb 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriter.java @@ -32,13 +32,15 @@ import javax.lang.model.element.TypeElement; import javax.lang.model.element.VariableElement; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.BaseOptions; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Writes field documentation in HTML format. @@ -85,7 +87,7 @@ protected void buildFieldDoc(Content target) { for (Element element : fields) { currentElement = (VariableElement)element; Content fieldContent = getFieldHeaderContent(currentElement); - Content div = HtmlTree.DIV(HtmlStyle.horizontalScroll); + Content div = HtmlTree.DIV(HtmlStyles.horizontalScroll); buildSignature(div); buildDeprecationInfo(div); buildPreviewInfo(div); @@ -147,7 +149,7 @@ public Content getMemberSummaryHeader(Content content) { @Override public void buildSummary(Content summariesList, Content content) { - writer.addSummary(HtmlStyle.fieldSummary, + writer.addSummary(HtmlStyles.fieldSummary, HtmlIds.FIELD_SUMMARY, summariesList, content); } @@ -165,7 +167,7 @@ protected Content getFieldHeaderContent(VariableElement field) { var heading = HtmlTree.HEADING(Headings.TypeDeclaration.MEMBER_HEADING, Text.of(name(field))); content.add(heading); - return HtmlTree.SECTION(HtmlStyle.detail, content) + return HtmlTree.SECTION(HtmlStyles.detail, content) .setId(htmlIds.forMember(field)); } @@ -196,7 +198,7 @@ protected void addTags(VariableElement field, Content fieldContent) { protected Content getFieldDetails(Content memberDetailsHeaderContent, Content memberContent) { return writer.getDetailsListItem( - HtmlTree.SECTION(HtmlStyle.fieldDetails) + HtmlTree.SECTION(HtmlStyles.fieldDetails) .setId(HtmlIds.FIELD_DETAIL) .add(memberDetailsHeaderContent) .add(memberContent)); @@ -217,10 +219,10 @@ public TableHeader getSummaryTableHeader(Element member) { @Override protected Table createSummaryTable() { - List bodyRowStyles = Arrays.asList(HtmlStyle.colFirst, HtmlStyle.colSecond, - HtmlStyle.colLast); + List bodyRowStyles = Arrays.asList(HtmlStyles.colFirst, HtmlStyles.colSecond, + HtmlStyles.colLast); - return new Table(HtmlStyle.summaryTable) + return new Table(HtmlStyles.summaryTable) .setCaption(contents.fields) .setHeader(getSummaryTableHeader(typeElement)) .setColumnStyles(bodyRowStyles); @@ -252,7 +254,7 @@ public void addInheritedSummaryLabel(TypeElement typeElement, Content content) { protected void addSummaryLink(HtmlLinkInfo.Kind context, TypeElement typeElement, Element member, Content content) { Content memberLink = writer.getDocLink(context, typeElement , member, name(member), - HtmlStyle.memberNameLink); + HtmlStyles.memberNameLink); var code = HtmlTree.CODE(memberLink); content.add(code); } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Headings.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Headings.java index 84b2fda4da4..2dadfe3cfa6 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Headings.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Headings.java @@ -25,7 +25,7 @@ package jdk.javadoc.internal.doclets.formats.html; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; +import jdk.javadoc.internal.html.HtmlTag; /** * Aliases for HTML heading tags (H1..H6) for different kinds of pages. @@ -34,25 +34,25 @@ class Headings { /** * Standard top-level heading for the page title for all pages. */ - static final TagName PAGE_TITLE_HEADING = TagName.H1; + static final HtmlTag PAGE_TITLE_HEADING = HtmlTag.H1; /** * Standard second-level heading for sundry pages that do * not have their own page group. */ - static final TagName CONTENT_HEADING = TagName.H2; + static final HtmlTag CONTENT_HEADING = HtmlTag.H2; /** * Standard third-level heading for sundry pages that do * not have their own page group. */ - static final TagName SUB_HEADING = TagName.H3; + static final HtmlTag SUB_HEADING = HtmlTag.H3; /** * Headings for the page for a module declaration. */ static class ModuleDeclaration { - static final TagName SUMMARY_HEADING = TagName.H2; + static final HtmlTag SUMMARY_HEADING = HtmlTag.H2; } /** @@ -64,31 +64,31 @@ static class TypeDeclaration { * Heading for the different summary lists: * Field Summary, Constructor Summary, Method Summary, etc. */ - static final TagName SUMMARY_HEADING = TagName.H2; + static final HtmlTag SUMMARY_HEADING = HtmlTag.H2; /** * Subheading within a summary for the inherited elements: * inherited methods, etc */ - static final TagName INHERITED_SUMMARY_HEADING = TagName.H3; + static final HtmlTag INHERITED_SUMMARY_HEADING = HtmlTag.H3; /** * Heading for the different detail lists: * Field Details, Constructor Details, Method Details, etc. */ - static final TagName DETAILS_HEADING = TagName.H2; + static final HtmlTag DETAILS_HEADING = HtmlTag.H2; /** * Subheading with a Details list for an individual element. */ - static final TagName MEMBER_HEADING = TagName.H3; + static final HtmlTag MEMBER_HEADING = HtmlTag.H3; } /** * Headings for the Constants Summary page. */ static class ConstantsSummary { - static final TagName PACKAGE_HEADING = TagName.H2; + static final HtmlTag PACKAGE_HEADING = HtmlTag.H2; } /** @@ -98,28 +98,28 @@ static class SerializedForm { /** * Heading for the package name, preceding a list of types. */ - static final TagName PACKAGE_HEADING = TagName.H2; + static final HtmlTag PACKAGE_HEADING = HtmlTag.H2; /** * Heading for a type name within a package. */ - static final TagName CLASS_HEADING = TagName.H3; + static final HtmlTag CLASS_HEADING = HtmlTag.H3; /** * Subheading for info within a type. */ - static final TagName CLASS_SUBHEADING = TagName.H4; + static final HtmlTag CLASS_SUBHEADING = HtmlTag.H4; /** * Heading for an individual member element within a type. */ - static final TagName MEMBER_HEADING = TagName.H5; + static final HtmlTag MEMBER_HEADING = HtmlTag.H5; } /** * Headings for a type Use page. */ static class TypeUse { - static final TagName SUMMARY_HEADING = TagName.H2; + static final HtmlTag SUMMARY_HEADING = HtmlTag.H2; } } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HelpWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HelpWriter.java index 1f396d49eed..22e778d3986 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HelpWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HelpWriter.java @@ -27,17 +27,18 @@ import java.util.List; -import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlId; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** @@ -103,13 +104,13 @@ protected void addHelpFileContents(Content content) { var mainHeading = getContent("doclet.help.main_heading"); tableOfContents.addLink(HtmlIds.TOP_OF_PAGE, mainHeading); tableOfContents.pushNestedList(); - content.add(HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, HtmlStyle.title, mainHeading)) - .add(new HtmlTree(TagName.HR)) + content.add(HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, HtmlStyles.title, mainHeading)) + .add(new HtmlTree(HtmlTag.HR)) .add(getNavigationSection()) - .add(new HtmlTree(TagName.HR)) + .add(new HtmlTree(HtmlTag.HR)) .add(getPageKindSection()) - .add(new HtmlTree(TagName.HR)) - .add(HtmlTree.SPAN(HtmlStyle.helpFootnote, + .add(new HtmlTree(HtmlTag.HR)) + .add(HtmlTree.SPAN(HtmlStyles.helpFootnote, getContent("doclet.help.footnote"))); tableOfContents.popNestedList(); } @@ -129,7 +130,7 @@ private Content getNavigationSection() { Content content = new ContentBuilder(); Content navHeading = contents.getContent("doclet.help.navigation.head"); - var navSection = HtmlTree.DIV(HtmlStyle.subTitle) + var navSection = HtmlTree.DIV(HtmlStyles.subTitle) .add(HtmlTree.HEADING(Headings.CONTENT_HEADING, navHeading).setId(HtmlIds.HELP_NAVIGATION)) .add(contents.getContent("doclet.help.navigation.intro", overviewLink)); if (options.createIndex()) { @@ -153,7 +154,7 @@ private Content getNavigationSection() { if (options.createIndex()) { section = newHelpSection(getContent("doclet.help.search.head"), PageMode.SEARCH); var searchIntro = HtmlTree.P(getContent("doclet.help.search.intro")); - var searchExamples = HtmlTree.OL(HtmlStyle.tocList); + var searchExamples = HtmlTree.OL(HtmlStyles.tocList); for (String[] example : SEARCH_EXAMPLES) { searchExamples.add(HtmlTree.LI( getContent("doclet.help.search.example", @@ -190,7 +191,7 @@ private Content getNavigationSection() { */ private Content getPageKindSection() { Content pageKindsHeading = contents.getContent("doclet.help.page_kinds.head"); - var pageKindsSection = HtmlTree.DIV(HtmlStyle.subTitle) + var pageKindsSection = HtmlTree.DIV(HtmlStyles.subTitle) .add(HtmlTree.HEADING(Headings.CONTENT_HEADING, pageKindsHeading).setId(HtmlIds.HELP_PAGES)) .add(contents.getContent("doclet.help.page_kinds.intro")); @@ -235,7 +236,7 @@ private Content getPageKindSection() { // Class/interface Content notes = new ContentBuilder( - HtmlTree.SPAN(HtmlStyle.helpNote, getContent("doclet.help.class_interface.note")), + HtmlTree.SPAN(HtmlStyles.helpNote, getContent("doclet.help.class_interface.note")), Text.of(" "), getContent("doclet.help.class_interface.anno"), Text.of(" "), @@ -254,7 +255,7 @@ private Content getPageKindSection() { getContent("doclet.help.class_interface.implementations"), getContent("doclet.help.class_interface.declaration"), getContent("doclet.help.class_interface.description"))) - .add(new HtmlTree(TagName.BR)) + .add(new HtmlTree(HtmlTag.BR)) .add(newHelpSectionList( contents.nestedClassSummary, contents.enumConstantSummary, @@ -264,7 +265,7 @@ private Content getPageKindSection() { contents.methodSummary, contents.annotateTypeRequiredMemberSummaryLabel, contents.annotateTypeOptionalMemberSummaryLabel)) - .add(new HtmlTree(TagName.BR)) + .add(new HtmlTree(HtmlTag.BR)) .add(newHelpSectionList( contents.enumConstantDetailLabel, contents.fieldDetailsLabel, @@ -412,7 +413,7 @@ private Content getContent(String key, Object arg1, Object arg2) { private HtmlTree newHelpSection(Content headingContent, HtmlId id) { tableOfContents.addLink(id, headingContent); - return HtmlTree.SECTION(HtmlStyle.helpSection, + return HtmlTree.SECTION(HtmlStyles.helpSection, HtmlTree.HEADING(Headings.SUB_HEADING, headingContent)) .setId(id); } @@ -422,7 +423,7 @@ private HtmlTree newHelpSection(Content headingContent, Navigation.PageMode pm) } private HtmlTree newHelpSectionList(Content first, Content... rest) { - var list = HtmlTree.UL(HtmlStyle.helpSectionList, HtmlTree.LI(first)); + var list = HtmlTree.UL(HtmlStyles.helpSectionList, HtmlTree.LI(first)); List.of(rest).forEach(i -> list.add(HtmlTree.LI(i))); return list; } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java index 2b8b6cfe058..235a0361b92 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java @@ -94,20 +94,10 @@ import jdk.internal.org.commonmark.renderer.html.HtmlNodeRendererFactory; import jdk.internal.org.commonmark.renderer.html.HtmlRenderer; import jdk.internal.org.commonmark.renderer.html.HtmlWriter; - -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; import jdk.javadoc.internal.doclets.formats.html.markup.Head; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlDocument; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.formats.html.markup.Links; -import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml; -import jdk.javadoc.internal.doclets.formats.html.markup.Script; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; -import jdk.javadoc.internal.doclets.formats.html.markup.TextBuilder; import jdk.javadoc.internal.doclets.formats.html.taglets.Taglet; import jdk.javadoc.internal.doclets.formats.html.taglets.TagletWriter; import jdk.javadoc.internal.doclets.toolkit.DocFileElement; @@ -126,7 +116,17 @@ import jdk.javadoc.internal.doclets.toolkit.util.Utils.DeclarationPreviewLanguageFeatures; import jdk.javadoc.internal.doclets.toolkit.util.Utils.ElementFlag; import jdk.javadoc.internal.doclets.toolkit.util.Utils.PreviewSummary; -import jdk.javadoc.internal.doclint.HtmlTag; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlId; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.RawHtml; +import jdk.javadoc.internal.html.Script; +import jdk.javadoc.internal.html.Text; +import jdk.javadoc.internal.html.TextBuilder; import static com.sun.source.doctree.DocTree.Kind.COMMENT; import static com.sun.source.doctree.DocTree.Kind.START_ELEMENT; @@ -361,7 +361,7 @@ protected void addTagsInfo(Element e, Content content) { if (options.noComment()) { return; } - var dl = HtmlTree.DL(HtmlStyle.notes); + var dl = HtmlTree.DL(HtmlStyles.notes); if (utils.isMethod(e)) { addMethodInfo((ExecutableElement)e, dl); } @@ -610,7 +610,7 @@ private String getHeadingText(Content c) { var contents = cb.getContents(); if (!contents.isEmpty()) { var first = contents.get(0); - if (first instanceof HtmlTree htmlTree && htmlTree.tagName.equals(TagName.H1)) { + if (first instanceof HtmlTree htmlTree && htmlTree.tag.equals(HtmlTag.H1)) { for (var c2 : htmlTree.getContents()) { if (c2 instanceof Text t) { sb.append(t.toString()); @@ -685,8 +685,8 @@ public HtmlTree getFooter() { return (bottom == null || bottom.isEmpty()) ? null : HtmlTree.FOOTER() - .add(new HtmlTree(TagName.HR)) - .add(HtmlTree.P(HtmlStyle.legalCopy, + .add(new HtmlTree(HtmlTag.HR)) + .add(HtmlTree.P(HtmlStyles.legalCopy, HtmlTree.SMALL( RawHtml.of(replaceDocRootDir(bottom))))); } @@ -917,7 +917,7 @@ public Content getTypeParameterLinks(HtmlLinkInfo linkInfo) { * @return the link */ public Content getCrossClassLink(TypeElement classElement, String refMemName, - Content label, HtmlStyle style, boolean code) { + Content label, HtmlStyle style, boolean code) { if (classElement != null) { String className = utils.getSimpleName(classElement); PackageElement packageElement = utils.containingPackage(classElement); @@ -1047,7 +1047,7 @@ public TypeElement getCurrentPageElement() { * @param content the content to which the link with be added */ public void addPreQualifiedStrongClassLink(HtmlLinkInfo.Kind context, TypeElement typeElement, Content content) { - addPreQualifiedClassLink(context, typeElement, HtmlStyle.typeNameLink, content); + addPreQualifiedClassLink(context, typeElement, HtmlStyles.typeNameLink, content); } /** @@ -1255,10 +1255,10 @@ private void addCommentTags(Element element, List tags, boole Content result = commentTagsToContent(element, tags, first, inSummary); if (!result.isEmpty()) { if (depr) { - div = HtmlTree.DIV(HtmlStyle.deprecationComment, result); + div = HtmlTree.DIV(HtmlStyles.deprecationComment, result); target.add(div); } else { - div = HtmlTree.DIV(HtmlStyle.block, result); + div = HtmlTree.DIV(HtmlStyles.block, result); target.add(div); } } @@ -1277,7 +1277,7 @@ boolean ignoreNonInlineTag(DocTree dtree, List openTags) { } if (name != null) { - HtmlTag htmlTag = HtmlTag.get(name); + HtmlTag htmlTag = HtmlTag.of(name); if (htmlTag != null) { if (htmlTag.blockType != HtmlTag.BlockType.INLINE) { return true; @@ -1944,9 +1944,9 @@ private boolean shouldRedirectRelativeLinks(Element element) { public Content invalidTagOutput(String summary, Optional detail) { messages.setContainsDiagnosticMarkers(); if (detail.isEmpty() || detail.get().isEmpty()) { - return HtmlTree.SPAN(HtmlStyle.invalidTag, Text.of(summary)); + return HtmlTree.SPAN(HtmlStyles.invalidTag, Text.of(summary)); } - return HtmlTree.DETAILS(HtmlStyle.invalidTag) + return HtmlTree.DETAILS(HtmlStyles.invalidTag) .add(HtmlTree.SUMMARY(Text.of(summary))) .add(HtmlTree.PRE(detail.get())); } @@ -2405,7 +2405,7 @@ static String getGenerator(Class clazz) { * @return an HtmlTree for the BODY tag */ public HtmlTree getBody(String title) { - var body = new HtmlTree(TagName.BODY).setStyle(getBodyStyle()); + var body = new HtmlTree(HtmlTag.BODY).setStyle(getBodyStyle()); this.winTitle = title; // Don't print windowtitle script for overview-frame, allclasses-frame @@ -2423,7 +2423,7 @@ public HtmlStyle getBodyStyle() { .replaceAll("^(Module|Package|Class)$", "$1Declaration") .replace("API", "Api"); String page = kind.substring(0, 1).toLowerCase(Locale.US) + kind.substring(1) + "Page"; - return HtmlStyle.valueOf(page); + return HtmlStyles.valueOf(page); } /** @@ -2473,16 +2473,16 @@ private List getStylesheets(Element element) throws DocFileIOException public void addPreviewSummary(Element forWhat, Content target) { if (utils.isPreviewAPI(forWhat)) { - var div = HtmlTree.DIV(HtmlStyle.block); - div.add(HtmlTree.SPAN(HtmlStyle.previewLabel, contents.previewPhrase)); + var div = HtmlTree.DIV(HtmlStyles.block); + div.add(HtmlTree.SPAN(HtmlStyles.previewLabel, contents.previewPhrase)); target.add(div); } } public void addRestrictedSummary(Element forWhat, Content target) { if (utils.isRestrictedAPI(forWhat)) { - var div = HtmlTree.DIV(HtmlStyle.block); - div.add(HtmlTree.SPAN(HtmlStyle.restrictedLabel, contents.restrictedPhrase)); + var div = HtmlTree.DIV(HtmlStyles.block); + div.add(HtmlTree.SPAN(HtmlStyles.restrictedLabel, contents.restrictedPhrase)); target.add(div); } } @@ -2490,7 +2490,7 @@ public void addRestrictedSummary(Element forWhat, Content target) { public void addPreviewInfo(Element forWhat, Content target) { if (utils.isPreviewAPI(forWhat)) { //in Java platform: - var previewDiv = HtmlTree.DIV(HtmlStyle.previewBlock); + var previewDiv = HtmlTree.DIV(HtmlStyles.previewBlock); previewDiv.setId(htmlIds.forPreviewSection(forWhat)); String name = (switch (forWhat.getKind()) { case PACKAGE, MODULE -> @@ -2506,14 +2506,14 @@ public void addPreviewInfo(Element forWhat, Content target) { : "doclet.ReflectivePreviewPlatformLeadingNote"; Content leadingNote = contents.getContent(leadingNoteKey, nameCode); - previewDiv.add(HtmlTree.SPAN(HtmlStyle.previewLabel, + previewDiv.add(HtmlTree.SPAN(HtmlStyles.previewLabel, leadingNote)); if (!isReflectivePreview) { Content note1 = contents.getContent("doclet.PreviewTrailingNote1", nameCode); - previewDiv.add(HtmlTree.DIV(HtmlStyle.previewComment, note1)); + previewDiv.add(HtmlTree.DIV(HtmlStyles.previewComment, note1)); } Content note2 = contents.getContent("doclet.PreviewTrailingNote2", nameCode); - previewDiv.add(HtmlTree.DIV(HtmlStyle.previewComment, note2)); + previewDiv.add(HtmlTree.DIV(HtmlStyles.previewComment, note2)); target.add(previewDiv); } else if (forWhat.getKind().isClass() || forWhat.getKind().isInterface()) { //in custom code: @@ -2521,12 +2521,12 @@ public void addPreviewInfo(Element forWhat, Content target) { if (!previewNotes.isEmpty()) { Name name = forWhat.getSimpleName(); var nameCode = HtmlTree.CODE(Text.of(name)); - var previewDiv = HtmlTree.DIV(HtmlStyle.previewBlock); + var previewDiv = HtmlTree.DIV(HtmlStyles.previewBlock); previewDiv.setId(htmlIds.forPreviewSection(forWhat)); Content leadingNote = contents.getContent("doclet.PreviewLeadingNote", nameCode); - previewDiv.add(HtmlTree.SPAN(HtmlStyle.previewLabel, + previewDiv.add(HtmlTree.SPAN(HtmlStyles.previewLabel, leadingNote)); - var ul = HtmlTree.UL(HtmlStyle.previewComment); + var ul = HtmlTree.UL(HtmlStyles.previewComment); for (Content note : previewNotes) { ul.add(HtmlTree.LI(note)); } @@ -2534,11 +2534,11 @@ public void addPreviewInfo(Element forWhat, Content target) { Content note1 = contents.getContent("doclet.PreviewTrailingNote1", nameCode); - previewDiv.add(HtmlTree.DIV(HtmlStyle.previewComment, note1)); + previewDiv.add(HtmlTree.DIV(HtmlStyles.previewComment, note1)); Content note2 = contents.getContent("doclet.PreviewTrailingNote2", name); - previewDiv.add(HtmlTree.DIV(HtmlStyle.previewComment, note2)); + previewDiv.add(HtmlTree.DIV(HtmlStyles.previewComment, note2)); target.add(previewDiv); } } @@ -2601,7 +2601,7 @@ private Content withPreviewFeatures(String key, String className, String feature }); return contents.getContent(key, HtmlTree.CODE(Text.of(className)), - new HtmlTree(TagName.EM).add(featureName), + new HtmlTree(HtmlTag.EM).add(featureName), featureCodes); } @@ -2640,19 +2640,19 @@ public URI resolveExternalSpecURI(URI specURI) { public void addRestrictedInfo(ExecutableElement forWhat, Content target) { if (utils.isRestrictedAPI(forWhat)) { //in Java platform: - var restrictedDiv = HtmlTree.DIV(HtmlStyle.restrictedBlock); + var restrictedDiv = HtmlTree.DIV(HtmlStyles.restrictedBlock); restrictedDiv.setId(htmlIds.forRestrictedSection(forWhat)); String name = forWhat.getSimpleName().toString(); var nameCode = HtmlTree.CODE(Text.of(name)); String leadingNoteKey = "doclet.RestrictedLeadingNote"; Content leadingNote = contents.getContent(leadingNoteKey, nameCode); - restrictedDiv.add(HtmlTree.SPAN(HtmlStyle.restrictedLabel, + restrictedDiv.add(HtmlTree.SPAN(HtmlStyles.restrictedLabel, leadingNote)); Content note1 = contents.getContent("doclet.RestrictedTrailingNote1", nameCode); - restrictedDiv.add(HtmlTree.DIV(HtmlStyle.restrictedComment, note1)); + restrictedDiv.add(HtmlTree.DIV(HtmlStyles.restrictedComment, note1)); Content note2 = contents.getContent("doclet.RestrictedTrailingNote2", nameCode); - restrictedDiv.add(HtmlTree.DIV(HtmlStyle.restrictedComment, note2)); + restrictedDiv.add(HtmlTree.DIV(HtmlStyles.restrictedComment, note2)); target.add(restrictedDiv); } } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlIds.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlIds.java index 48edce573d3..1b9896fafa0 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlIds.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlIds.java @@ -33,6 +33,7 @@ import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; + import javax.lang.model.element.Element; import javax.lang.model.element.ElementKind; import javax.lang.model.element.ExecutableElement; @@ -46,10 +47,10 @@ import javax.lang.model.type.TypeVariable; import javax.lang.model.util.SimpleTypeVisitor9; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; import jdk.javadoc.internal.doclets.toolkit.util.SummaryAPIListBuilder; import jdk.javadoc.internal.doclets.toolkit.util.Utils; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.HtmlId; /** * Centralized constants and factory methods for HTML ids. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlIndexBuilder.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlIndexBuilder.java index 51831b23336..fcc9640126a 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlIndexBuilder.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlIndexBuilder.java @@ -30,11 +30,11 @@ import java.util.HashMap; import java.util.Map; import java.util.SortedSet; + import javax.lang.model.element.Element; import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.TypeElement; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; import jdk.javadoc.internal.doclets.toolkit.Resources; import jdk.javadoc.internal.doclets.toolkit.util.DocFile; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; @@ -42,6 +42,7 @@ import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.IndexBuilder; import jdk.javadoc.internal.doclets.toolkit.util.IndexItem; +import jdk.javadoc.internal.html.HtmlTree; /** * Extensions to {@code IndexBuilder} to fill in remaining fields diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkFactory.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkFactory.java index 87a842890a4..22af1e4a024 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkFactory.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkFactory.java @@ -43,17 +43,18 @@ import javax.lang.model.type.WildcardType; import javax.lang.model.util.SimpleTypeVisitor14; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; import jdk.javadoc.internal.doclets.toolkit.BaseConfiguration; import jdk.javadoc.internal.doclets.toolkit.Resources; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.Utils; import jdk.javadoc.internal.doclets.toolkit.util.Utils.ElementFlag; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * A factory that returns a link given the information about it. @@ -377,14 +378,14 @@ protected Content getTypeParameterLinks(HtmlLinkInfo linkInfo) { } if (!vars.isEmpty()) { if (linkInfo.addLineBreakOpportunitiesInTypeParameters()) { - links.add(new HtmlTree(TagName.WBR)); + links.add(new HtmlTree(HtmlTag.WBR)); } links.add("<"); boolean many = false; for (TypeMirror t : vars) { if (many) { links.add(","); - links.add(new HtmlTree(TagName.WBR)); + links.add(new HtmlTree(HtmlTag.WBR)); if (linkInfo.addLineBreaksInTypeParameters()) { links.add(Text.NL); } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkInfo.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkInfo.java index c2c79e850b8..0b7be8fe656 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkInfo.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlLinkInfo.java @@ -31,11 +31,13 @@ import javax.lang.model.type.DeclaredType; import javax.lang.model.type.TypeMirror; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.BaseConfiguration; import jdk.javadoc.internal.doclets.toolkit.util.Utils; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.Text; /** diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/IndexRedirectWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/IndexRedirectWriter.java index e4543471a69..e449ecebf40 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/IndexRedirectWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/IndexRedirectWriter.java @@ -29,18 +29,18 @@ import java.util.Objects; import jdk.javadoc.internal.doclets.formats.html.markup.Head; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlDocument; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Script; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.DocFile; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlAttr; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Script; +import jdk.javadoc.internal.html.Text; /** * Writes a file that tries to redirect to an alternate page. @@ -92,7 +92,7 @@ public void buildPage() throws DocFileIOException { Script script = new Script("window.location.replace(") .appendStringLiteral(targetPath, '\'') .append(")"); - var metaRefresh = new HtmlTree(TagName.META) + var metaRefresh = new HtmlTree(HtmlTag.META) .put(HtmlAttr.HTTP_EQUIV, "Refresh") .put(HtmlAttr.CONTENT, "0;" + targetPath); head.addContent(script.asContent(), HtmlTree.NOSCRIPT(metaRefresh)); @@ -103,7 +103,7 @@ public void buildPage() throws DocFileIOException { bodyContent.add(HtmlTree.P(HtmlTree.A(targetPath, Text.of(targetPath)))); - var body = new HtmlTree(TagName.BODY).setStyle(HtmlStyle.indexRedirectPage); + var body = new HtmlTree(HtmlTag.BODY).setStyle(HtmlStyles.indexRedirectPage); var main = HtmlTree.MAIN(bodyContent); body.add(main); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/IndexWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/IndexWriter.java index ff2761b8ecb..ecf11143642 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/IndexWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/IndexWriter.java @@ -36,22 +36,21 @@ import javax.lang.model.element.PackageElement; import javax.lang.model.element.TypeElement; -import com.sun.source.doctree.DeprecatedTree; - -import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.DocletException; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.IndexBuilder; import jdk.javadoc.internal.doclets.toolkit.util.IndexItem; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Generator for either a single index or split index for all @@ -129,7 +128,7 @@ public void buildPage() throws DocFileIOException { addLinksForIndexes(allFirstCharacters, mainContent); body.add(new BodyContents() .setHeader(getHeader(PageMode.INDEX)) - .addMainContent(HtmlTree.DIV(HtmlStyle.header, + .addMainContent(HtmlTree.DIV(HtmlStyles.header, HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, contents.getContent("doclet.Index")))) .addMainContent(mainContent) @@ -149,7 +148,7 @@ public void buildPage() throws DocFileIOException { protected void addContents(char ch, SortedSet items, Content content) { addHeading(ch, content); - var dl = HtmlTree.DL(HtmlStyle.index); + var dl = HtmlTree.DL(HtmlStyles.index); for (IndexItem item : items) { addDescription(item, dl); } @@ -164,7 +163,7 @@ protected void addContents(char ch, SortedSet items, Content content) */ protected void addHeading(char ch, Content content) { Content headContent = Text.of(String.valueOf(ch)); - var heading = HtmlTree.HEADING(Headings.CONTENT_HEADING, HtmlStyle.title, headContent) + var heading = HtmlTree.HEADING(Headings.CONTENT_HEADING, HtmlStyles.title, headContent) .setId(HtmlIds.forIndexChar(ch)); content.add(heading); } @@ -209,7 +208,7 @@ protected void addElementDescription(IndexItem item, Content target) { case CLASS, ENUM, RECORD, ANNOTATION_TYPE, INTERFACE -> { dt = HtmlTree.DT(getLink(new HtmlLinkInfo(configuration, - HtmlLinkInfo.Kind.SHOW_TYPE_PARAMS_IN_LABEL, (TypeElement) element).style(HtmlStyle.typeNameLink))); + HtmlLinkInfo.Kind.SHOW_TYPE_PARAMS_IN_LABEL, (TypeElement) element).style(HtmlStyles.typeNameLink))); dt.add(" - "); addClassInfo((TypeElement) element, dt); } @@ -217,7 +216,7 @@ protected void addElementDescription(IndexItem item, Content target) { case CONSTRUCTOR, METHOD, FIELD, ENUM_CONSTANT -> { TypeElement containingType = item.getContainingTypeElement(); dt = HtmlTree.DT(getDocLink(HtmlLinkInfo.Kind.PLAIN, containingType, element, - label, HtmlStyle.memberNameLink)); + label, HtmlStyles.memberNameLink)); dt.add(" - "); addMemberDesc(element, containingType, dt); } @@ -225,7 +224,7 @@ protected void addElementDescription(IndexItem item, Content target) { default -> throw new Error(); } target.add(dt); - var dd = new HtmlTree(TagName.DD); + var dd = new HtmlTree(HtmlTag.DD); if (element.getKind() == ElementKind.MODULE || element.getKind() == ElementKind.PACKAGE) { addSummaryComment(element, dd); } else { @@ -258,11 +257,11 @@ protected void addTagDescription(IndexItem item, Content target) { String itemPath = pathToRoot.isEmpty() ? "" : pathToRoot.getPath() + "/"; itemPath += item.getUrl(); var labelLink = HtmlTree.A(itemPath, Text.of(item.getLabel())); - var dt = HtmlTree.DT(labelLink.setStyle(HtmlStyle.searchTagLink)); + var dt = HtmlTree.DT(labelLink.setStyle(HtmlStyles.searchTagLink)); dt.add(" - "); dt.add(contents.getContent("doclet.Search_tag_in", item.getHolder())); target.add(dt); - var dd = new HtmlTree(TagName.DD); + var dd = new HtmlTree(HtmlTag.DD); if (item.getDescription().isEmpty()) { dd.add(Entity.NO_BREAK_SPACE); } else { @@ -281,8 +280,8 @@ protected void addTagDescription(IndexItem item, Content target) { * @param content the content to which the comment will be added */ protected void addComment(Element element, Content content) { - var span = HtmlTree.SPAN(HtmlStyle.deprecatedLabel, getDeprecatedPhrase(element)); - var div = HtmlTree.DIV(HtmlStyle.deprecationBlock); + var span = HtmlTree.SPAN(HtmlStyles.deprecatedLabel, getDeprecatedPhrase(element)); + var div = HtmlTree.DIV(HtmlStyles.deprecationBlock); if (utils.isDeprecated(element)) { div.add(span); var tags = utils.getDeprecatedTrees(element); @@ -349,7 +348,7 @@ protected void addLinksForIndexes(List allFirstCharacters, Content co content.add(Entity.NO_BREAK_SPACE); } - content.add(new HtmlTree(TagName.BR)); + content.add(new HtmlTree(HtmlTag.BR)); var pageLinks = Stream.of(IndexItem.Category.values()) .flatMap(c -> mainIndex.getItems(c).stream()) .filter(i -> !(i.isElementItem() || i.isTagItem())) @@ -361,6 +360,6 @@ protected void addLinksForIndexes(List allFirstCharacters, Content co } private Content getVerticalSeparator() { - return HtmlTree.SPAN(HtmlStyle.verticalSeparator, Text.of("|")); + return HtmlTree.SPAN(HtmlStyles.verticalSeparator, Text.of("|")); } } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MarkerComments.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MarkerComments.java index 04888d7cc2f..78696cc320e 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MarkerComments.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MarkerComments.java @@ -25,7 +25,7 @@ package jdk.javadoc.internal.doclets.formats.html; -import jdk.javadoc.internal.doclets.formats.html.markup.Comment; +import jdk.javadoc.internal.html.Comment; /** * Marker comments to identify regions in the generated files. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriter.java index 521616f982b..9325bc07a6d 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriter.java @@ -35,16 +35,16 @@ import javax.lang.model.element.TypeElement; import javax.lang.model.type.TypeMirror; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.BaseOptions; import jdk.javadoc.internal.doclets.toolkit.util.DocFinder; import jdk.javadoc.internal.doclets.toolkit.util.Utils; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Writes method documentation in HTML format. @@ -107,7 +107,7 @@ protected void buildMethodDoc(Content detailsList) { for (Element method : methods) { currentMethod = (ExecutableElement)method; Content methodContent = getMethodHeader(currentMethod); - Content div = HtmlTree.DIV(HtmlStyle.horizontalScroll); + Content div = HtmlTree.DIV(HtmlStyles.horizontalScroll); buildSignature(div); buildDeprecationInfo(div); buildPreviewInfo(div); @@ -187,7 +187,7 @@ public Content getMemberSummaryHeader(Content target) { @Override public void buildSummary(Content summariesList, Content content) { - writer.addSummary(HtmlStyle.methodSummary, + writer.addSummary(HtmlStyles.methodSummary, HtmlIds.METHOD_SUMMARY, summariesList, content); } @@ -209,7 +209,7 @@ protected Content getMethodHeader(ExecutableElement method) { heading.setId(anchors.getLast()); } content.add(heading); - return HtmlTree.SECTION(HtmlStyle.detail, content) + return HtmlTree.SECTION(HtmlStyles.detail, content) .setId(anchors.getFirst()); } @@ -251,13 +251,13 @@ protected void addComments(TypeMirror holderType, ExecutableElement method, Cont ? utils.getSimpleName(holder) : utils.getFullyQualifiedName(holder)); var codeLink = HtmlTree.CODE(link); - var descriptionFromTypeLabel = HtmlTree.SPAN(HtmlStyle.descriptionFromTypeLabel, + var descriptionFromTypeLabel = HtmlTree.SPAN(HtmlStyles.descriptionFromTypeLabel, utils.isClass(holder) ? contents.descriptionFromClassLabel : contents.descriptionFromInterfaceLabel); descriptionFromTypeLabel.add(Entity.NO_BREAK_SPACE); descriptionFromTypeLabel.add(codeLink); - methodContent.add(HtmlTree.DIV(HtmlStyle.block, descriptionFromTypeLabel)); + methodContent.add(HtmlTree.DIV(HtmlStyles.block, descriptionFromTypeLabel)); } writer.addInlineComment(method, methodContent); } @@ -270,7 +270,7 @@ protected void addTags(ExecutableElement method, Content methodContent) { protected Content getMethodDetails(Content methodDetailsHeader, Content methodDetails) { Content c = new ContentBuilder(methodDetailsHeader, methodDetails); - return getMember(HtmlTree.SECTION(HtmlStyle.methodDetails, c) + return getMember(HtmlTree.SECTION(HtmlStyles.methodDetails, c) .setId(HtmlIds.METHOD_DETAIL)); } @@ -289,9 +289,9 @@ public TableHeader getSummaryTableHeader(Element member) { @Override protected Table createSummaryTable() { - return new Table(HtmlStyle.summaryTable) + return new Table(HtmlStyles.summaryTable) .setHeader(getSummaryTableHeader(typeElement)) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast) + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colSecond, HtmlStyles.colLast) .setId(HtmlIds.METHOD_SUMMARY_TABLE) .setDefaultTab(contents.getContent("doclet.All_Methods")) .addTab(contents.getContent("doclet.Static_Methods"), utils::isStatic) diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleIndexWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleIndexWriter.java index abe6159d1af..86e81b77ddd 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleIndexWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleIndexWriter.java @@ -31,10 +31,11 @@ import javax.lang.model.element.ModuleElement; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Text; /** * Generate the module index page "index.html". @@ -78,9 +79,9 @@ protected void addIndex(Content target) { if (!groupModuleMap.keySet().isEmpty()) { TableHeader tableHeader = new TableHeader(contents.moduleLabel, contents.descriptionLabel); - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setHeader(tableHeader) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast) + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast) .setId(HtmlIds.ALL_MODULES_TABLE) .setDefaultTab(contents.getContent("doclet.All_Modules")); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriter.java index d2f2206d27f..bd0ab2958d4 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriter.java @@ -41,18 +41,21 @@ import com.sun.source.doctree.DeprecatedTree; import com.sun.source.doctree.DocTree; + import jdk.javadoc.doclet.DocletEnvironment.ModuleMode; -import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.DocletException; import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Class to generate file for each module contents in the right-hand frame. This will list all the @@ -191,8 +194,8 @@ protected void buildModuleDoc() throws DocletException { */ protected void buildContent() { Content moduleContent = getContentHeader(); - moduleContent.add(new HtmlTree(TagName.HR)); - Content div = HtmlTree.DIV(HtmlStyle.horizontalScroll); + moduleContent.add(new HtmlTree(HtmlTag.HR)); + Content div = HtmlTree.DIV(HtmlStyles.horizontalScroll); addModuleSignature(div); buildModuleDescription(div); moduleContent.add(div); @@ -261,13 +264,13 @@ protected void buildModuleDescription(Content moduleContent) { protected Content getModuleHeader(String heading) { HtmlTree body = getBody(getWindowTitle(mdle.getQualifiedName().toString())); - var div = HtmlTree.DIV(HtmlStyle.header); + var div = HtmlTree.DIV(HtmlStyles.header); Content moduleHead = new ContentBuilder(); moduleHead.add(mdle.isOpen() && (configuration.docEnv.getModuleMode() == ModuleMode.ALL) ? contents.openModuleLabel : contents.moduleLabel); moduleHead.add(" ").add(heading); var tHeading = HtmlTree.HEADING_TITLE(Headings.PAGE_TITLE_HEADING, - HtmlStyle.title, moduleHead); + HtmlStyles.title, moduleHead); div.add(tHeading); bodyContents.setHeader(getHeader(PageMode.MODULE, mdle)) .addMainContent(div); @@ -279,11 +282,11 @@ protected Content getContentHeader() { } protected Content getSummariesList() { - return HtmlTree.UL(HtmlStyle.summaryList); + return HtmlTree.UL(HtmlStyles.summaryList); } protected Content getSummary(Content source) { - return HtmlTree.SECTION(HtmlStyle.summary, source); + return HtmlTree.SECTION(HtmlStyles.summary, source); } /** @@ -502,10 +505,10 @@ public void addSummaryHeader(Content startMarker, Content heading, * @return a content object */ private Table getTable2(Content caption, TableHeader tableHeader) { - return new Table(HtmlStyle.detailsTable) + return new Table(HtmlStyles.detailsTable) .setCaption(caption) .setHeader(tableHeader) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast); + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast); } /** @@ -516,10 +519,10 @@ private Table getTable2(Content caption, TableHeader tableHeader) { * @return a content object */ private Table getTable3(Content caption, TableHeader tableHeader) { - return new Table(HtmlStyle.detailsTable) + return new Table(HtmlStyles.detailsTable) .setCaption(caption) .setHeader(tableHeader) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast); + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colSecond, HtmlStyles.colLast); } protected void addModulesSummary(Content summariesList) { @@ -528,7 +531,7 @@ protected void addModulesSummary(Content summariesList) { TableHeader requiresTableHeader = new TableHeader(contents.modifierLabel, contents.moduleLabel, contents.descriptionLabel); - var section = HtmlTree.SECTION(HtmlStyle.modulesSummary) + var section = HtmlTree.SECTION(HtmlStyles.modulesSummary) .setId(HtmlIds.MODULES); addSummaryHeader(MarkerComments.START_OF_MODULES_SUMMARY, contents.navModules, section); if (display(requires)) { @@ -570,7 +573,7 @@ protected void addPackagesSummary(Content summariesList) { if (display(packages) || display(indirectPackages) || display(indirectOpenPackages)) { tableOfContents.addLink(HtmlIds.PACKAGES, contents.navPackages); - var section = HtmlTree.SECTION(HtmlStyle.packagesSummary) + var section = HtmlTree.SECTION(HtmlStyles.packagesSummary) .setId(HtmlIds.PACKAGES); addSummaryHeader(MarkerComments.START_OF_PACKAGES_SUMMARY, contents.navPackages, section); if (display(packages)) { @@ -600,7 +603,7 @@ protected void addPackagesSummary(Content summariesList) { * @param li the tree to which the summary will be added */ public void addPackageSummary(HtmlTree li) { - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setId(HtmlIds.PACKAGE_SUMMARY_TABLE) .setDefaultTab(contents.getContent("doclet.All_Packages")) .addTab(contents.getContent("doclet.Exported_Packages_Summary"), this::isExported) @@ -636,20 +639,20 @@ public void addPackageSummary(HtmlTree li) { List colHeaders = new ArrayList<>(); List colStyles = new ArrayList<>(); colHeaders.add(contents.packageLabel); - colStyles.add(HtmlStyle.colFirst); + colStyles.add(HtmlStyles.colFirst); if (showExportedTo) { colHeaders.add(contents.exportedTo); - colStyles.add(HtmlStyle.colSecond); + colStyles.add(HtmlStyles.colSecond); } if (showOpenedTo) { colHeaders.add(contents.openedTo); - colStyles.add(HtmlStyle.colSecond); + colStyles.add(HtmlStyles.colSecond); } colHeaders.add(contents.descriptionLabel); - colStyles.add(HtmlStyle.colLast); + colStyles.add(HtmlStyles.colLast); table.setHeader(new TableHeader(colHeaders).styles(colStyles)) .setColumnStyles(colStyles); @@ -741,7 +744,7 @@ protected void addServicesSummary(Content summariesList) { if (haveProvides || haveUses) { tableOfContents.addLink(HtmlIds.SERVICES, contents.navServices); - var section = HtmlTree.SECTION(HtmlStyle.servicesSummary) + var section = HtmlTree.SECTION(HtmlStyles.servicesSummary) .setId(HtmlIds.SERVICES); addSummaryHeader(MarkerComments.START_OF_SERVICES_SUMMARY, contents.navServices, section); TableHeader usesProvidesTableHeader = @@ -783,7 +786,7 @@ public void addUsesList(Table table) { if (display(usesTrees)) { description = usesTrees.get(t); if (description != null && !description.isEmpty()) { - summary.add(HtmlTree.DIV(HtmlStyle.block, description)); + summary.add(HtmlTree.DIV(HtmlStyles.block, description)); } else { addSummaryComment(t, summary); } @@ -813,7 +816,7 @@ public void addProvidesList(Table table) { if (display(providesTrees)) { description = providesTrees.get(srv); if (description != null && !description.isEmpty()) { - desc.add(HtmlTree.DIV(HtmlStyle.block, description)); + desc.add(HtmlTree.DIV(HtmlStyles.block, description)); } else { addSummaryComment(srv, desc); } @@ -822,9 +825,9 @@ public void addProvidesList(Table table) { } // Only display the implementation details in the "all" mode. if (moduleMode == ModuleMode.ALL && !implSet.isEmpty()) { - desc.add(new HtmlTree(TagName.BR)); + desc.add(new HtmlTree(HtmlTag.BR)); desc.add("("); - var implSpan = HtmlTree.SPAN(HtmlStyle.implementationLabel, contents.implementation); + var implSpan = HtmlTree.SPAN(HtmlStyles.implementationLabel, contents.implementation); desc.add(implSpan); desc.add(Entity.NO_BREAK_SPACE); String sep = ""; @@ -848,8 +851,8 @@ public void addDeprecationInfo(Content div) { List deprs = utils.getDeprecatedTrees(mdle); if (utils.isDeprecated(mdle)) { CommentHelper ch = utils.getCommentHelper(mdle); - var deprDiv = HtmlTree.DIV(HtmlStyle.deprecationBlock); - var deprPhrase = HtmlTree.SPAN(HtmlStyle.deprecatedLabel, getDeprecatedPhrase(mdle)); + var deprDiv = HtmlTree.DIV(HtmlStyles.deprecationBlock); + var deprPhrase = HtmlTree.SPAN(HtmlStyles.deprecatedLabel, getDeprecatedPhrase(mdle)); deprDiv.add(deprPhrase); if (!deprs.isEmpty()) { List commentTags = ch.getDescription(deprs.get(0)); @@ -864,7 +867,7 @@ public void addDeprecationInfo(Content div) { protected void addModuleDescription(Content moduleContent) { addPreviewInfo(mdle, moduleContent); if (!utils.getFullBody(mdle).isEmpty()) { - var tree = HtmlTree.SECTION(HtmlStyle.moduleDescription) + var tree = HtmlTree.SECTION(HtmlStyles.moduleDescription) .setId(HtmlIds.MODULE_DESCRIPTION); addDeprecationInfo(tree); tree.add(MarkerComments.START_OF_MODULE_DESCRIPTION); @@ -902,8 +905,8 @@ protected void printDocument(Content content) throws DocFileIOException { public void addPackageDeprecationInfo(Content li, PackageElement pkg) { if (utils.isDeprecated(pkg)) { List deprs = utils.getDeprecatedTrees(pkg); - var deprDiv = HtmlTree.DIV(HtmlStyle.deprecationBlock); - var deprPhrase = HtmlTree.SPAN(HtmlStyle.deprecatedLabel, getDeprecatedPhrase(pkg)); + var deprDiv = HtmlTree.DIV(HtmlStyles.deprecationBlock); + var deprPhrase = HtmlTree.SPAN(HtmlStyles.deprecatedLabel, getDeprecatedPhrase(pkg)); deprDiv.add(deprPhrase); if (!deprs.isEmpty()) { CommentHelper ch = utils.getCommentHelper(pkg); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Navigation.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Navigation.java index 63c18084c10..293a6453925 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Navigation.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Navigation.java @@ -35,19 +35,19 @@ import javax.lang.model.element.PackageElement; import javax.lang.model.element.TypeElement; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.formats.html.markup.Links; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; import jdk.javadoc.internal.doclets.toolkit.util.DocFile; import jdk.javadoc.internal.doclets.toolkit.util.DocLink; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; -import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlAttr; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Factory for navigation bar. @@ -326,7 +326,7 @@ private void addItemToList(Content list, Content item) { private void addActivePageLink(Content target, Content label, boolean display) { if (display) { - target.add(HtmlTree.LI(HtmlStyle.navBarCell1Rev, label)); + target.add(HtmlTree.LI(HtmlStyles.navBarCell1Rev, label)); } } @@ -409,7 +409,7 @@ protected void addBreadcrumbLinks(Element elem, List contents, boolean default -> throw new IllegalArgumentException(Objects.toString(elem)); }; if (selected) { - link.setStyle(HtmlStyle.currentSelection); + link.setStyle(HtmlStyles.currentSelection); } contents.add(link); } @@ -499,7 +499,7 @@ private void addSearch(Content target) { .put(HtmlAttr.AUTOCOMPLETE, "off"); var inputReset = HtmlTree.INPUT(HtmlAttr.InputType.RESET, HtmlIds.RESET_SEARCH) .put(HtmlAttr.VALUE, resources.getText("doclet.search_reset")); - var searchDiv = HtmlTree.DIV(HtmlStyle.navListSearch) + var searchDiv = HtmlTree.DIV(HtmlStyles.navListSearch) .add(inputText) .add(inputReset); target.add(searchDiv); @@ -516,36 +516,36 @@ public Content getContent() { } var navigationBar = HtmlTree.NAV(); - var navContent = new HtmlTree(TagName.DIV); + var navContent = new HtmlTree(HtmlTag.DIV); Content skipNavLinks = contents.getContent("doclet.Skip_navigation_links"); String toggleNavLinks = configuration.getDocResources().getText("doclet.Toggle_navigation_links"); navigationBar.add(MarkerComments.START_OF_TOP_NAVBAR); // The mobile menu button uses three empty spans to produce its animated icon - HtmlTree iconSpan = HtmlTree.SPAN(HtmlStyle.navBarToggleIcon).add(Entity.NO_BREAK_SPACE); - navContent.setStyle(HtmlStyle.navContent).add(HtmlTree.DIV(HtmlStyle.navMenuButton, - new HtmlTree(TagName.BUTTON).setId(HtmlIds.NAVBAR_TOGGLE_BUTTON) + HtmlTree iconSpan = HtmlTree.SPAN(HtmlStyles.navBarToggleIcon).add(Entity.NO_BREAK_SPACE); + navContent.setStyle(HtmlStyles.navContent).add(HtmlTree.DIV(HtmlStyles.navMenuButton, + new HtmlTree(HtmlTag.BUTTON).setId(HtmlIds.NAVBAR_TOGGLE_BUTTON) .put(HtmlAttr.ARIA_CONTROLS, HtmlIds.NAVBAR_TOP.name()) .put(HtmlAttr.ARIA_EXPANDED, String.valueOf(false)) .put(HtmlAttr.ARIA_LABEL, toggleNavLinks) .add(iconSpan) .add(iconSpan) .add(iconSpan))) - .add(HtmlTree.DIV(HtmlStyle.skipNav, + .add(HtmlTree.DIV(HtmlStyles.skipNav, links.createLink(HtmlIds.SKIP_NAVBAR_TOP, skipNavLinks, skipNavLinks.toString()))); Content aboutContent = userHeader; - var navList = new HtmlTree(TagName.UL) + var navList = new HtmlTree(HtmlTag.UL) .setId(HtmlIds.NAVBAR_TOP_FIRSTROW) - .setStyle(HtmlStyle.navList) + .setStyle(HtmlStyles.navList) .put(HtmlAttr.TITLE, rowListTitle); addMainNavLinks(navList); navContent.add(navList); - var aboutDiv = HtmlTree.DIV(HtmlStyle.aboutLanguage, aboutContent); + var aboutDiv = HtmlTree.DIV(HtmlStyles.aboutLanguage, aboutContent); navContent.add(aboutDiv); - navigationBar.add(HtmlTree.DIV(HtmlStyle.topNav, navContent).setId(HtmlIds.NAVBAR_TOP)); + navigationBar.add(HtmlTree.DIV(HtmlStyles.topNav, navContent).setId(HtmlIds.NAVBAR_TOP)); - var subNavContent = HtmlTree.DIV(HtmlStyle.navContent); + var subNavContent = HtmlTree.DIV(HtmlStyles.navContent); List subNavLinks = new ArrayList<>(); switch (documentedPage) { case MODULE, PACKAGE, CLASS, USE, DOC_FILE, TREE -> { @@ -553,17 +553,17 @@ public Content getContent() { } } // Add the breadcrumb navigation links if present. - var breadcrumbNav = HtmlTree.OL(HtmlStyle.subNavList); + var breadcrumbNav = HtmlTree.OL(HtmlStyles.subNavList); breadcrumbNav.addAll(subNavLinks, HtmlTree::LI); subNavContent.addUnchecked(breadcrumbNav); if (options.createIndex() && documentedPage != PageMode.SEARCH) { addSearch(subNavContent); } - navigationBar.add(HtmlTree.DIV(HtmlStyle.subNav, subNavContent)); + navigationBar.add(HtmlTree.DIV(HtmlStyles.subNav, subNavContent)); navigationBar.add(MarkerComments.END_OF_TOP_NAVBAR); - navigationBar.add(HtmlTree.SPAN(HtmlStyle.skipNav) + navigationBar.add(HtmlTree.SPAN(HtmlStyles.skipNav) .addUnchecked(Text.EMPTY) .setId(HtmlIds.SKIP_NAVBAR_TOP)); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NestedClassWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NestedClassWriter.java index 4534f707c38..12d4dcbd663 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NestedClassWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NestedClassWriter.java @@ -31,12 +31,14 @@ import javax.lang.model.element.Element; import javax.lang.model.element.TypeElement; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Writes nested class documentation in HTML format. @@ -71,7 +73,7 @@ public Content getMemberSummaryHeader(Content content) { @Override public void buildSummary(Content summariesList, Content content) { - writer.addSummary(HtmlStyle.nestedClassSummary, + writer.addSummary(HtmlStyles.nestedClassSummary, HtmlIds.NESTED_CLASS_SUMMARY, summariesList, content); } @@ -92,10 +94,10 @@ public TableHeader getSummaryTableHeader(Element member) { @Override protected Table createSummaryTable() { - List bodyRowStyles = Arrays.asList(HtmlStyle.colFirst, HtmlStyle.colSecond, - HtmlStyle.colLast); + List bodyRowStyles = Arrays.asList(HtmlStyles.colFirst, HtmlStyles.colSecond, + HtmlStyles.colLast); - return new Table(HtmlStyle.summaryTable) + return new Table(HtmlStyles.summaryTable) .setCaption(contents.getContent("doclet.Nested_Classes")) .setHeader(getSummaryTableHeader(typeElement)) .setColumnStyles(bodyRowStyles); @@ -125,7 +127,7 @@ public void addInheritedSummaryLabel(TypeElement typeElement, Content content) { protected void addSummaryLink(HtmlLinkInfo.Kind context, TypeElement typeElement, Element member, Content content) { Content memberLink = writer.getLink(new HtmlLinkInfo(configuration, context, (TypeElement)member) - .style(HtmlStyle.typeNameLink)); + .style(HtmlStyles.typeNameLink)); var code = HtmlTree.CODE(memberLink); content.add(code); } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NewAPIListWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NewAPIListWriter.java index f46765933cf..68066b0c92b 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NewAPIListWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NewAPIListWriter.java @@ -32,14 +32,14 @@ import com.sun.source.doctree.SinceTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.NewAPIBuilder; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; import static com.sun.source.doctree.DocTree.Kind.SINCE; @@ -81,7 +81,7 @@ protected String getTitleKey() { protected void addContentSelectors(Content content) { List releases = builder.releases; if (releases.size() > 1) { - Content tabs = HtmlTree.DIV(HtmlStyle.checkboxes, + Content tabs = HtmlTree.DIV(HtmlStyles.checkboxes, contents.getContent("doclet.New_API_Checkbox_Label")); // Table column ids are 1-based int index = 1; @@ -96,7 +96,7 @@ protected void addContentSelectors(Content content) { @Override protected void addTableTabs(Table table, String headingKey) { - table.setGridStyle(HtmlStyle.threeColumnReleaseSummary); + table.setGridStyle(HtmlStyles.threeColumnReleaseSummary); List releases = builder.releases; if (releases.size() > 1) { table.setDefaultTab(getTableCaption(headingKey)) @@ -149,7 +149,7 @@ protected TableHeader getTableHeader(String headerKey) { @Override protected HtmlStyle[] getColumnStyles() { - return new HtmlStyle[]{ HtmlStyle.colSummaryItemName, HtmlStyle.colSecond, HtmlStyle.colLast }; + return new HtmlStyle[]{ HtmlStyles.colSummaryItemName, HtmlStyles.colSecond, HtmlStyles.colLast }; } private static String getHeading(HtmlConfiguration configuration) { diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexWriter.java index ef7f25e7388..fd257fc06f4 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexWriter.java @@ -31,11 +31,12 @@ import javax.lang.model.element.PackageElement; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.Group; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Text; /** * Generate the package index page "index.html". @@ -81,9 +82,9 @@ protected void addIndex(Content target) { = configuration.group.groupPackages(packages); if (!groupPackageMap.keySet().isEmpty()) { - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setHeader(getPackageTableHeader()) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast) + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast) .setId(HtmlIds.ALL_PACKAGES_TABLE) .setDefaultTab(contents.getContent("doclet.All_Packages")); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageTreeWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageTreeWriter.java index cba27fd64fa..8ff3cf97797 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageTreeWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageTreeWriter.java @@ -25,21 +25,17 @@ package jdk.javadoc.internal.doclets.formats.html; -import javax.lang.model.element.Element; import javax.lang.model.element.PackageElement; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.ClassTree; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; - -import java.util.ArrayList; -import java.util.List; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; /** @@ -100,8 +96,8 @@ public void buildPage() throws DocFileIOException { : contents.getContent("doclet.Hierarchy_For_Package", getLocalizedPackageName(packageElement)); var heading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, - HtmlStyle.title, headContent); - var div = HtmlTree.DIV(HtmlStyle.header, heading); + HtmlStyles.title, headContent); + var div = HtmlTree.DIV(HtmlStyles.header, heading); mainContent.add(div); if (configuration.packages.size() > 1) { addLinkToAllPackages(mainContent); @@ -136,10 +132,10 @@ protected HtmlTree getPackageTreeHeader() { * @param target the content to which the link will be added */ protected void addLinkToAllPackages(Content target) { - var span = HtmlTree.SPAN(HtmlStyle.packageHierarchyLabel, + var span = HtmlTree.SPAN(HtmlStyles.packageHierarchyLabel, contents.packageHierarchies); target.add(span); - var ul = HtmlTree.UL(HtmlStyle.horizontal).addStyle(HtmlStyle.contentsList); + var ul = HtmlTree.UL(HtmlStyles.horizontal).addStyle(HtmlStyles.contentsList); // TODO the link should be more specific: // it should point to the "all packages" section of the overview tree ul.add(getNavLinkToOverviewTree(resources.getText("doclet.All_Packages"))); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java index 848e7069d66..b28b44d4cd3 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java @@ -25,28 +25,26 @@ package jdk.javadoc.internal.doclets.formats.html; -import java.util.ArrayList; -import java.util.List; import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; import java.util.TreeSet; -import javax.lang.model.element.Element; import javax.lang.model.element.PackageElement; import javax.lang.model.element.TypeElement; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.ClassUseMapper; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Generate package usage information. @@ -138,10 +136,10 @@ protected void addPackageList(Content content) { Content caption = contents.getContent( "doclet.ClassUse_Packages.that.use.0", getPackageLink(packageElement, getLocalizedPackageName(packageElement))); - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setCaption(caption) .setHeader(getPackageTableHeader()) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast); + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast); for (String pkgname: usingPackageToUsedClasses.keySet()) { PackageElement pkg = utils.elementUtils.getPackageElement(pkgname); Content packageLink = links.createLink(htmlIds.forPackage(pkg), @@ -165,19 +163,19 @@ protected void addPackageList(Content content) { protected void addClassList(Content content) { TableHeader classTableHeader = new TableHeader( contents.classLabel, contents.descriptionLabel); - var ul = HtmlTree.UL(HtmlStyle.blockList); + var ul = HtmlTree.UL(HtmlStyles.blockList); for (String packageName : usingPackageToUsedClasses.keySet()) { PackageElement usingPackage = utils.elementUtils.getPackageElement(packageName); - var section = HtmlTree.SECTION(HtmlStyle.detail) + var section = HtmlTree.SECTION(HtmlStyles.detail) .setId(htmlIds.forPackage(usingPackage)); Content caption = contents.getContent( "doclet.ClassUse_Classes.in.0.used.by.1", getPackageLink(packageElement, getLocalizedPackageName(packageElement)), getPackageLink(usingPackage, getLocalizedPackageName(usingPackage))); - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setCaption(caption) .setHeader(classTableHeader) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast); + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast); for (TypeElement te : usingPackageToUsedClasses.get(packageName)) { DocPath dp = pathString(te, DocPaths.CLASS_USE.resolve(docPaths.forName(te))); @@ -192,7 +190,7 @@ protected void addClassList(Content content) { section.add(table); ul.add(HtmlTree.LI(section)); } - var li = HtmlTree.SECTION(HtmlStyle.packageUses, ul); + var li = HtmlTree.SECTION(HtmlStyles.packageUses, ul); content.add(li); } @@ -206,11 +204,11 @@ private HtmlTree getBody() { HtmlTree body = getBody(getWindowTitle(title)); ContentBuilder headingContent = new ContentBuilder(); headingContent.add(contents.getContent("doclet.ClassUse_Title", packageText)); - headingContent.add(new HtmlTree(TagName.BR)); + headingContent.add(new HtmlTree(HtmlTag.BR)); headingContent.add(name); var heading = HtmlTree.HEADING_TITLE(Headings.PAGE_TITLE_HEADING, - HtmlStyle.title, headingContent); - var div = HtmlTree.DIV(HtmlStyle.header, heading); + HtmlStyles.title, headingContent); + var div = HtmlTree.DIV(HtmlStyles.header, heading); bodyContents.setHeader(getHeader(PageMode.USE, packageElement)) .addMainContent(div); return body; diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriter.java index c70386c6b36..ee022144fea 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriter.java @@ -33,25 +33,26 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -import javax.lang.model.element.Element; import javax.lang.model.element.ModuleElement; import javax.lang.model.element.PackageElement; import javax.lang.model.element.TypeElement; import com.sun.source.doctree.DeprecatedTree; import com.sun.source.doctree.DocTree; -import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; + import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.DocletException; import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Class to generate file for each package contents in the right-hand @@ -71,7 +72,7 @@ public class PackageWriter extends HtmlDocletWriter { /** * The HTML element for the section tag being written. */ - private final HtmlTree section = HtmlTree.SECTION(HtmlStyle.packageDescription, new ContentBuilder()); + private final HtmlTree section = HtmlTree.SECTION(HtmlStyles.packageDescription, new ContentBuilder()); private final BodyContents bodyContents = new BodyContents(); @@ -127,8 +128,8 @@ protected void buildPackageDoc() throws DocletException { */ protected void buildContent() { Content packageContent = getContentHeader(); - packageContent.add(new HtmlTree(TagName.HR)); - Content div = HtmlTree.DIV(HtmlStyle.horizontalScroll); + packageContent.add(new HtmlTree(HtmlTag.HR)); + Content div = HtmlTree.DIV(HtmlStyles.horizontalScroll); addPackageSignature(div); buildPackageDescription(div); buildPackageTags(div); @@ -202,14 +203,14 @@ protected void buildPackageTags(Content packageContent) { protected Content getPackageHeader() { String packageName = getLocalizedPackageName(packageElement).toString(); HtmlTree body = getBody(getWindowTitle(packageName)); - var div = HtmlTree.DIV(HtmlStyle.header); + var div = HtmlTree.DIV(HtmlStyles.header); Content packageHead = new ContentBuilder(); if (!packageElement.isUnnamed()) { packageHead.add(contents.packageLabel).add(" "); } packageHead.add(packageName); var tHeading = HtmlTree.HEADING_TITLE(Headings.PAGE_TITLE_HEADING, - HtmlStyle.title, packageHead); + HtmlStyles.title, packageHead); div.add(tHeading); bodyContents.setHeader(getHeader(PageMode.PACKAGE, packageElement)) .addMainContent(div); @@ -277,8 +278,8 @@ public void addDeprecationInfo(Content div) { List deprs = utils.getDeprecatedTrees(packageElement); if (utils.isDeprecated(packageElement)) { CommentHelper ch = utils.getCommentHelper(packageElement); - var deprDiv = HtmlTree.DIV(HtmlStyle.deprecationBlock); - var deprPhrase = HtmlTree.SPAN(HtmlStyle.deprecatedLabel, getDeprecatedPhrase(packageElement)); + var deprDiv = HtmlTree.DIV(HtmlStyles.deprecationBlock); + var deprPhrase = HtmlTree.SPAN(HtmlStyles.deprecatedLabel, getDeprecatedPhrase(packageElement)); deprDiv.add(deprPhrase); if (!deprs.isEmpty()) { List commentTags = ch.getDescription(deprs.get(0)); @@ -291,7 +292,7 @@ public void addDeprecationInfo(Content div) { } protected Content getSummariesList() { - return HtmlTree.UL(HtmlStyle.summaryList); + return HtmlTree.UL(HtmlStyles.summaryList); } protected void addRelatedPackagesSummary(Content summaryContent) { @@ -308,9 +309,9 @@ protected void addRelatedPackagesSummary(Content summaryContent) { * @param target the content to which the links will be added */ public void addAllClassesAndInterfacesSummary(Content target) { - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setHeader(new TableHeader(contents.classLabel, contents.descriptionLabel)) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast) + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast) .setId(HtmlIds.CLASS_SUMMARY) .setDefaultTab(contents.allClassesAndInterfacesLabel) .addTab(contents.interfaces, utils::isPlainInterface) @@ -347,14 +348,14 @@ protected void addRelatedPackageSummary(TableHeader tableHeader, Content summary boolean showModules) { if (!relatedPackages.isEmpty()) { tableOfContents.addLink(HtmlIds.RELATED_PACKAGE_SUMMARY, contents.relatedPackages); - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setId(HtmlIds.RELATED_PACKAGE_SUMMARY) .setCaption(contents.relatedPackages) .setHeader(tableHeader); if (showModules) { - table.setColumnStyles(HtmlStyle.colPlain, HtmlStyle.colFirst, HtmlStyle.colLast); + table.setColumnStyles(HtmlStyles.colPlain, HtmlStyles.colFirst, HtmlStyles.colLast); } else { - table.setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast); + table.setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast); } for (PackageElement pkg : relatedPackages) { @@ -423,7 +424,7 @@ protected void printDocument(Content content) throws DocFileIOException { } protected Content getPackageSummary(Content summaryContent) { - return HtmlTree.SECTION(HtmlStyle.summary, summaryContent); + return HtmlTree.SECTION(HtmlStyles.summary, summaryContent); } private boolean hasRelatedPackagesInOtherModules(List relatedPackages) { diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PreviewListWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PreviewListWriter.java index 2141f1e7be7..4fb0d427ff9 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PreviewListWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PreviewListWriter.java @@ -33,12 +33,14 @@ import com.sun.source.doctree.DocTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.PreviewAPIListBuilder; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Generate File to list all the preview elements with the @@ -81,7 +83,7 @@ protected void addContentSelectors(Content target) { if (!jeps.isEmpty()) { int index = 1; target.add(HtmlTree.P(contents.getContent("doclet.Preview_API_Checkbox_Label"))); - Content list = HtmlTree.UL(HtmlStyle.previewFeatureList).addStyle(HtmlStyle.checkboxes); + Content list = HtmlTree.UL(HtmlStyles.previewFeatureList).addStyle(HtmlStyles.checkboxes); for (var jep : jeps) { String jepUrl = resources.getText("doclet.Preview_JEP_URL", String.valueOf(jep.number())); Content label = new ContentBuilder(Text.of(jep.number() + ": ")) @@ -106,7 +108,7 @@ protected void addComments(Element e, Content desc) { @Override protected void addTableTabs(Table table, String headingKey) { - table.setGridStyle(HtmlStyle.threeColumnSummary) + table.setGridStyle(HtmlStyles.threeColumnSummary) .setDefaultTab(getTableCaption(headingKey)) .setRenderTabs(false); for (PreviewAPIListBuilder.JEP jep : builder.getJEPs()) { @@ -131,6 +133,6 @@ protected TableHeader getTableHeader(String headerKey) { @Override protected HtmlStyle[] getColumnStyles() { - return new HtmlStyle[]{ HtmlStyle.colSummaryItemName, HtmlStyle.colSecond, HtmlStyle.colLast }; + return new HtmlStyle[]{ HtmlStyles.colSummaryItemName, HtmlStyles.colSecond, HtmlStyles.colLast }; } } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriter.java index 41a59c8a30c..7365b9b3b8f 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriter.java @@ -35,14 +35,15 @@ import com.sun.source.doctree.DocCommentTree; import com.sun.source.doctree.DocTree; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.BaseOptions; import jdk.javadoc.internal.doclets.toolkit.CommentUtils; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Writes property documentation in HTML format. @@ -80,7 +81,7 @@ protected void buildPropertyDoc(Content detailsList) { for (Element property : properties) { currentProperty = (ExecutableElement)property; Content propertyContent = getPropertyHeaderContent(currentProperty); - Content div = HtmlTree.DIV(HtmlStyle.horizontalScroll); + Content div = HtmlTree.DIV(HtmlStyles.horizontalScroll); buildSignature(div); buildDeprecationInfo(div); buildPreviewInfo(div); @@ -161,7 +162,7 @@ public Content getMemberSummaryHeader(Content content) { @Override public void buildSummary(Content summariesList, Content content) { - writer.addSummary(HtmlStyle.propertySummary, + writer.addSummary(HtmlStyles.propertySummary, HtmlIds.PROPERTY_SUMMARY, summariesList, content); } @@ -179,7 +180,7 @@ protected Content getPropertyHeaderContent(ExecutableElement property) { var heading = HtmlTree.HEADING(Headings.TypeDeclaration.MEMBER_HEADING, Text.of(utils.getPropertyLabel(name(property)))); content.add(heading); - return HtmlTree.SECTION(HtmlStyle.detail, content) + return HtmlTree.SECTION(HtmlStyles.detail, content) .setId(htmlIds.forProperty(property)); } @@ -210,13 +211,13 @@ protected void addComments(ExecutableElement property, Content propertyContent) utils.isIncluded(holder) ? holder.getSimpleName() : holder.getQualifiedName()); var codeLink = HtmlTree.CODE(link); - var descriptionFromLabel = HtmlTree.SPAN(HtmlStyle.descriptionFromTypeLabel, + var descriptionFromLabel = HtmlTree.SPAN(HtmlStyles.descriptionFromTypeLabel, utils.isClass(holder) ? contents.descriptionFromClassLabel : contents.descriptionFromInterfaceLabel); descriptionFromLabel.add(Entity.NO_BREAK_SPACE); descriptionFromLabel.add(codeLink); - propertyContent.add(HtmlTree.DIV(HtmlStyle.block, descriptionFromLabel)); + propertyContent.add(HtmlTree.DIV(HtmlStyles.block, descriptionFromLabel)); } writer.addInlineComment(property, propertyContent); } @@ -229,7 +230,7 @@ protected void addTags(ExecutableElement property, Content propertyContent) { protected Content getPropertyDetails(Content memberDetailsHeader, Content memberDetails) { return writer.getDetailsListItem( - HtmlTree.SECTION(HtmlStyle.propertyDetails) + HtmlTree.SECTION(HtmlStyles.propertyDetails) .setId(HtmlIds.PROPERTY_DETAIL) .add(memberDetailsHeader) .add(memberDetails)); @@ -250,10 +251,10 @@ public TableHeader getSummaryTableHeader(Element member) { @Override protected Table createSummaryTable() { - return new Table(HtmlStyle.summaryTable) + return new Table(HtmlStyles.summaryTable) .setCaption(contents.properties) .setHeader(getSummaryTableHeader(typeElement)) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast); + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colSecond, HtmlStyles.colLast); } @Override @@ -284,7 +285,7 @@ protected void addSummaryLink(HtmlLinkInfo.Kind context, TypeElement typeElement Content memberLink = writer.getDocLink(context, typeElement, member, Text.of(utils.getPropertyLabel(name(member))), - HtmlStyle.memberNameLink, + HtmlStyles.memberNameLink, true); var code = HtmlTree.CODE(memberLink); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/RestrictedListWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/RestrictedListWriter.java index bfd062706a9..ec629a227a3 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/RestrictedListWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/RestrictedListWriter.java @@ -31,6 +31,7 @@ import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.IndexItem; import jdk.javadoc.internal.doclets.toolkit.util.RestrictedAPIListBuilder; +import jdk.javadoc.internal.html.Content; /** * Generate File to list all the restricted methods with the diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SearchWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SearchWriter.java index 8a2f0e29109..0bd173df3d5 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SearchWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SearchWriter.java @@ -27,15 +27,16 @@ import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlAttr; +import jdk.javadoc.internal.html.HtmlId; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Generates the search landing page for the generated API documentation. @@ -79,7 +80,7 @@ protected void addSearchFileContents(Content contentTree) { helpSection = HtmlTree.P(contents.getContent("doclet.search.help_page_info", helpLink)); } - contentTree.add(HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, HtmlStyle.title, + contentTree.add(HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, HtmlStyles.title, contents.getContent("doclet.search.main_heading"))) .add(HtmlTree.DIV(HtmlTree.INPUT(HtmlAttr.InputType.TEXT, HtmlId.of("page-search-input")) .put(HtmlAttr.PLACEHOLDER, resources.getText("doclet.search_placeholder")) @@ -88,31 +89,31 @@ protected void addSearchFileContents(Content contentTree) { .add(HtmlTree.INPUT(HtmlAttr.InputType.RESET, HtmlId.of("page-search-reset")) .put(HtmlAttr.VALUE, resources.getText("doclet.search_reset")) .put(HtmlAttr.STYLE, "margin: 6px;")) - .add(HtmlTree.DETAILS(HtmlStyle.pageSearchDetails) + .add(HtmlTree.DETAILS(HtmlStyles.pageSearchDetails) .add(HtmlTree.SUMMARY(contents.getContent("doclet.search.show_more")) .setId(HtmlId.of("page-search-expand"))))) - .add(HtmlTree.DIV(HtmlStyle.pageSearchInfo, helpSection) + .add(HtmlTree.DIV(HtmlStyles.pageSearchInfo, helpSection) .add(HtmlTree.P(contents.getContent("doclet.search.keyboard_info"))) .add(HtmlTree.P(contents.getContent("doclet.search.browser_info"))) .add(HtmlTree.SPAN(Text.of("link")) .setId(HtmlId.of("page-search-link"))) - .add(new HtmlTree(TagName.BUTTON) - .add(new HtmlTree(TagName.IMG) + .add(new HtmlTree(HtmlTag.BUTTON) + .add(new HtmlTree(HtmlTag.IMG) .put(HtmlAttr.SRC, pathToRoot.resolve(DocPaths.RESOURCE_FILES) .resolve(DocPaths.CLIPBOARD_SVG).getPath()) .put(HtmlAttr.ALT, copyUrlText)) .add(HtmlTree.SPAN(Text.of(copyText)) .put(HtmlAttr.DATA_COPIED, copiedText)) - .addStyle(HtmlStyle.copy) + .addStyle(HtmlStyles.copy) .put(HtmlAttr.ARIA_LABEL, copyUrlText) .setId(HtmlId.of("page-search-copy"))) .add(HtmlTree.P(HtmlTree.INPUT(HtmlAttr.InputType.CHECKBOX, HtmlId.of("search-redirect"))) .add(HtmlTree.LABEL("search-redirect", contents.getContent("doclet.search.redirect"))))) - .add(new HtmlTree(TagName.P) + .add(new HtmlTree(HtmlTag.P) .setId(HtmlId.of("page-search-notify")) .add(contents.getContent("doclet.search.loading"))) - .add(HtmlTree.DIV(new HtmlTree(TagName.DIV) + .add(HtmlTree.DIV(new HtmlTree(HtmlTag.DIV) .setId(HtmlId.of("result-container")) .addUnchecked(Text.EMPTY)) .setId(HtmlId.of("result-section")) diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerialFieldWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerialFieldWriter.java index 758e0ee5214..c3d1cc582f3 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerialFieldWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerialFieldWriter.java @@ -35,11 +35,12 @@ import com.sun.source.doctree.SerialFieldTree; import com.sun.source.doctree.SerialTree; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.formats.html.taglets.TagletWriter; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Generate serialized form for serializable fields. @@ -53,15 +54,15 @@ public SerialFieldWriter(SubWriterHolderWriter writer, TypeElement typeElement) } protected Content getSerializableFieldsHeader() { - return HtmlTree.UL(HtmlStyle.blockList); + return HtmlTree.UL(HtmlStyles.blockList); } protected Content getFieldsContentHeader() { - return new HtmlTree(TagName.LI).setStyle(HtmlStyle.blockList); + return new HtmlTree(HtmlTag.LI).setStyle(HtmlStyles.blockList); } protected Content getSerializableFields(String heading, Content source) { - var section = HtmlTree.SECTION(HtmlStyle.detail); + var section = HtmlTree.SECTION(HtmlStyles.detail); if (!source.isEmpty()) { Content headingContent = Text.of(heading); var serialHeading = HtmlTree.HEADING(Headings.SerializedForm.CLASS_SUBHEADING, headingContent); @@ -75,7 +76,7 @@ protected void addMemberHeader(TypeMirror fieldType, String fieldName, Content c Content nameContent = Text.of(fieldName); var heading = HtmlTree.HEADING(Headings.SerializedForm.MEMBER_HEADING, nameContent); content.add(heading); - var pre = new HtmlTree(TagName.PRE); + var pre = new HtmlTree(HtmlTag.PRE); Content fieldContent = writer.getLink(new HtmlLinkInfo( configuration, HtmlLinkInfo.Kind.LINK_TYPE_PARAMS_AND_BOUNDS, fieldType)); pre.add(fieldContent); @@ -122,7 +123,7 @@ protected void addMemberDescription(VariableElement field, SerialFieldTree seria Content serialFieldContent = writer.commentTagsToContent(field, description, new TagletWriter.Context(false, false)); - var div = HtmlTree.DIV(HtmlStyle.block, serialFieldContent); + var div = HtmlTree.DIV(HtmlStyles.block, serialFieldContent); content.add(div); } } @@ -136,7 +137,7 @@ protected void addMemberDescription(VariableElement field, SerialFieldTree seria protected void addMemberTags(VariableElement field, Content content) { Content tagContent = writer.getBlockTagOutput(field); if (!tagContent.isEmpty()) { - var dl = HtmlTree.DL(HtmlStyle.notes); + var dl = HtmlTree.DL(HtmlStyles.notes); dl.add(tagContent); content.add(dl); } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerialMethodWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerialMethodWriter.java index 4af46f3ea01..d9b888f2ee1 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerialMethodWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerialMethodWriter.java @@ -28,11 +28,12 @@ import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.TypeElement; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.formats.html.taglets.TagletManager; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** @@ -46,11 +47,11 @@ public SerialMethodWriter(SubWriterHolderWriter writer, TypeElement typeElement) } protected Content getSerializableMethodsHeader() { - return HtmlTree.UL(HtmlStyle.blockList); + return HtmlTree.UL(HtmlStyles.blockList); } protected Content getMethodsContentHeader() { - return new HtmlTree(TagName.LI); + return new HtmlTree(HtmlTag.LI); } /** @@ -64,7 +65,7 @@ protected Content getMethodsContentHeader() { protected Content getSerializableMethods(String heading, Content source) { Content headingContent = Text.of(heading); var serialHeading = HtmlTree.HEADING(Headings.SerializedForm.CLASS_SUBHEADING, headingContent); - var section = HtmlTree.SECTION(HtmlStyle.detail, serialHeading); + var section = HtmlTree.SECTION(HtmlStyles.detail, serialHeading); section.add(source); return HtmlTree.LI(section); } @@ -121,7 +122,7 @@ protected void addMemberDescription(ExecutableElement member, Content methodsCon protected void addMemberTags(ExecutableElement member, Content methodsContent) { TagletManager tagletManager = configuration.tagletManager; Content tagContent = writer.getBlockTagOutput(member, tagletManager.getSerializedFormTaglets()); - var dl = HtmlTree.DL(HtmlStyle.notes); + var dl = HtmlTree.DL(HtmlStyles.notes); dl.add(tagContent); methodsContent.add(dl); if (name(member).equals("writeExternal") diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerializedFormWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerializedFormWriter.java index ffd654023d1..09fa5ed347c 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerializedFormWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerializedFormWriter.java @@ -41,18 +41,19 @@ import com.sun.source.doctree.SerialFieldTree; import com.sun.source.doctree.SerialTree; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.DocletException; import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.IndexItem; import jdk.javadoc.internal.doclets.toolkit.util.Utils; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Generates the Serialized Form Information Page, serialized-form.html. @@ -562,8 +563,8 @@ Content getHeader(String header) { HtmlTree body = getBody(getWindowTitle(header)); Content h1Content = Text.of(header); var heading = HtmlTree.HEADING_TITLE(Headings.PAGE_TITLE_HEADING, - HtmlStyle.title, h1Content); - var div = HtmlTree.DIV(HtmlStyle.header, heading); + HtmlStyles.title, h1Content); + var div = HtmlTree.DIV(HtmlStyles.header, heading); bodyContents.setHeader(getHeader(PageMode.SERIALIZED_FORM)) .addMainContent(div); return body; @@ -575,7 +576,7 @@ Content getHeader(String header) { * @return the serialized form summaries header */ Content getSerializedSummariesHeader() { - return HtmlTree.UL(HtmlStyle.blockList); + return HtmlTree.UL(HtmlStyles.blockList); } /** @@ -584,7 +585,7 @@ Content getSerializedSummariesHeader() { * @return the package serialized form header tree */ Content getPackageSerializedHeader() { - return HtmlTree.SECTION(HtmlStyle.serializedPackageContainer); + return HtmlTree.SECTION(HtmlStyles.serializedPackageContainer); } Content getPackageHeader(PackageElement packageElement) { @@ -596,7 +597,7 @@ Content getPackageHeader(PackageElement packageElement) { } Content getClassSerializedHeader() { - return HtmlTree.UL(HtmlStyle.blockList); + return HtmlTree.UL(HtmlStyles.blockList); } /** @@ -615,7 +616,7 @@ Content getClassHeader(TypeElement typeElement) { ? getLink(new HtmlLinkInfo(configuration, HtmlLinkInfo.Kind.PLAIN, typeElement) .label(configuration.getClassName(typeElement))) : Text.of(utils.getFullyQualifiedName(typeElement)); - var section = HtmlTree.SECTION(HtmlStyle.serializedClassDetails) + var section = HtmlTree.SECTION(HtmlStyles.serializedClassDetails) .setId(htmlIds.forClass(typeElement)); Content superClassLink = typeElement.getSuperclass() != null ? getLink(new HtmlLinkInfo(configuration, HtmlLinkInfo.Kind.LINK_TYPE_PARAMS_AND_BOUNDS, @@ -640,12 +641,12 @@ Content getClassHeader(TypeElement typeElement) { signature.add(superClassLink); signature.add(" implements "); signature.add(interfaceLink); - section.add(HtmlTree.DIV(HtmlStyle.typeSignature, signature)); + section.add(HtmlTree.DIV(HtmlStyles.typeSignature, signature)); return section; } Content getSerialUIDInfoHeader() { - return HtmlTree.DL(HtmlStyle.nameValue); + return HtmlTree.DL(HtmlStyles.nameValue); } /** @@ -667,7 +668,7 @@ void addSerialUIDInfo(String header, } Content getClassContentHeader() { - return HtmlTree.UL(HtmlStyle.blockList); + return HtmlTree.UL(HtmlStyles.blockList); } /** diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Signatures.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Signatures.java index afc0648fa79..9059efcf814 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Signatures.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Signatures.java @@ -25,14 +25,12 @@ package jdk.javadoc.internal.doclets.formats.html; -import jdk.javadoc.doclet.DocletEnvironment; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.toolkit.util.Utils; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; +import java.util.stream.Collectors; import javax.lang.model.element.Element; import javax.lang.model.element.ElementKind; @@ -43,12 +41,16 @@ import javax.lang.model.element.TypeElement; import javax.lang.model.type.TypeMirror; import javax.lang.model.util.ElementKindVisitor14; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.SortedSet; -import java.util.TreeSet; -import java.util.stream.Collectors; + +import jdk.javadoc.doclet.DocletEnvironment; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; +import jdk.javadoc.internal.doclets.toolkit.util.Utils; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; import static javax.lang.model.element.Modifier.ABSTRACT; import static javax.lang.model.element.Modifier.FINAL; @@ -63,17 +65,17 @@ public class Signatures { public static Content getModuleSignature(ModuleElement mdle, ModuleWriter moduleWriter) { - var signature = HtmlTree.DIV(HtmlStyle.moduleSignature); + var signature = HtmlTree.DIV(HtmlStyles.moduleSignature); Content annotations = moduleWriter.getAnnotationInfo(mdle, true); if (!annotations.isEmpty()) { - signature.add(HtmlTree.SPAN(HtmlStyle.annotations, annotations)); + signature.add(HtmlTree.SPAN(HtmlStyles.annotations, annotations)); } DocletEnvironment docEnv = moduleWriter.configuration.docEnv; String label = mdle.isOpen() && (docEnv.getModuleMode() == DocletEnvironment.ModuleMode.ALL) ? "open module" : "module"; signature.add(label); signature.add(" "); - var nameSpan = HtmlTree.SPAN(HtmlStyle.elementName); + var nameSpan = HtmlTree.SPAN(HtmlStyles.elementName); nameSpan.add(mdle.getQualifiedName().toString()); signature.add(nameSpan); return signature; @@ -83,13 +85,13 @@ public static Content getPackageSignature(PackageElement pkg, PackageWriter pkgW if (pkg.isUnnamed()) { return Text.EMPTY; } - var signature = HtmlTree.DIV(HtmlStyle.packageSignature); + var signature = HtmlTree.DIV(HtmlStyles.packageSignature); Content annotations = pkgWriter.getAnnotationInfo(pkg, true); if (!annotations.isEmpty()) { - signature.add(HtmlTree.SPAN(HtmlStyle.annotations, annotations)); + signature.add(HtmlTree.SPAN(HtmlStyles.annotations, annotations)); } signature.add("package "); - var nameSpan = HtmlTree.SPAN(HtmlStyle.elementName); + var nameSpan = HtmlTree.SPAN(HtmlStyles.elementName); nameSpan.add(pkg.getQualifiedName().toString()); signature.add(nameSpan); return signature; @@ -122,16 +124,16 @@ public Content toContent() { Content content = new ContentBuilder(); Content annotationInfo = writer.getAnnotationInfo(typeElement, true); if (!annotationInfo.isEmpty()) { - content.add(HtmlTree.SPAN(HtmlStyle.annotations, annotationInfo)); + content.add(HtmlTree.SPAN(HtmlStyles.annotations, annotationInfo)); } - content.add(HtmlTree.SPAN(HtmlStyle.modifiers, modifiers)); + content.add(HtmlTree.SPAN(HtmlStyles.modifiers, modifiers)); - var nameSpan = HtmlTree.SPAN(HtmlStyle.elementName); + var nameSpan = HtmlTree.SPAN(HtmlStyles.elementName); Content className = Text.of(utils.getSimpleName(typeElement)); if (configuration.getOptions().linkSource()) { writer.addSrcLink(typeElement, className, nameSpan); } else { - nameSpan.addStyle(HtmlStyle.typeNameLabel).add(className); + nameSpan.addStyle(HtmlStyles.typeNameLabel).add(className); } HtmlLinkInfo linkInfo = new HtmlLinkInfo(configuration, HtmlLinkInfo.Kind.SHOW_TYPE_PARAMS_AND_BOUNDS, typeElement) @@ -144,7 +146,7 @@ public Content toContent() { content.add(getRecordComponents()); } if (!utils.isAnnotationInterface(typeElement)) { - var extendsImplements = HtmlTree.SPAN(HtmlStyle.extendsImplements); + var extendsImplements = HtmlTree.SPAN(HtmlStyles.extendsImplements); if (!utils.isPlainInterface(typeElement)) { TypeMirror superclass = utils.getFirstVisibleSuperClass(typeElement); if (superclass != null) { @@ -186,7 +188,7 @@ public Content toContent() { .filter(t -> utils.isLinkable(utils.asTypeElement(t))) .toList(); if (!linkablePermits.isEmpty()) { - var permitsSpan = HtmlTree.SPAN(HtmlStyle.permits); + var permitsSpan = HtmlTree.SPAN(HtmlStyles.permits); boolean isFirst = true; for (TypeMirror type : linkablePermits) { if (isFirst) { @@ -205,11 +207,11 @@ public Content toContent() { if (linkablePermits.size() < permits.size()) { Content c = Text.of(configuration.getDocResources().getText("doclet.not.exhaustive")); permitsSpan.add(" "); - permitsSpan.add(HtmlTree.SPAN(HtmlStyle.permitsNote, c)); + permitsSpan.add(HtmlTree.SPAN(HtmlStyles.permitsNote, c)); } content.add(permitsSpan); } - return HtmlTree.DIV(HtmlStyle.typeSignature, content); + return HtmlTree.DIV(HtmlStyles.typeSignature, content); } private Content getRecordComponents() { @@ -450,7 +452,7 @@ Content toContent() { // Annotations if (annotations != null && !annotations.isEmpty()) { - content.add(HtmlTree.SPAN(HtmlStyle.annotations, annotations)); + content.add(HtmlTree.SPAN(HtmlStyles.annotations, annotations)); lastLineSeparator = content.charCount(); } @@ -464,12 +466,12 @@ Content toContent() { // Return type if (returnType != null) { - content.add(HtmlTree.SPAN(HtmlStyle.returnType, returnType)); + content.add(HtmlTree.SPAN(HtmlStyles.returnType, returnType)); content.add(Entity.NO_BREAK_SPACE); } // Name - var nameSpan = HtmlTree.SPAN(HtmlStyle.elementName); + var nameSpan = HtmlTree.SPAN(HtmlStyles.elementName); if (memberWriter.options.linkSource()) { Content name = Text.of(memberWriter.name(element)); memberWriter.writer.addSrcLink(element, name, nameSpan); @@ -483,7 +485,7 @@ Content toContent() { appendParametersAndExceptions(content, lastLineSeparator); } - return HtmlTree.DIV(HtmlStyle.memberSignature, content); + return HtmlTree.DIV(HtmlStyles.memberSignature, content); } /** @@ -514,7 +516,7 @@ private void appendModifiers(Content target) { } if (!set.isEmpty()) { String mods = set.stream().map(Modifier::toString).collect(Collectors.joining(" ")); - target.add(HtmlTree.SPAN(HtmlStyle.modifiers, Text.of(mods))) + target.add(HtmlTree.SPAN(HtmlStyles.modifiers, Text.of(mods))) .add(Entity.NO_BREAK_SPACE); } } @@ -533,9 +535,9 @@ private int appendTypeParameters(Content target, int lastLineSeparator) { int typeParamLength = typeParameters.charCount(); if (typeParamLength >= TYPE_PARAMS_MAX_INLINE_LENGTH) { - target.add(HtmlTree.SPAN(HtmlStyle.typeParametersLong, typeParameters)); + target.add(HtmlTree.SPAN(HtmlStyles.typeParametersLong, typeParameters)); } else { - target.add(HtmlTree.SPAN(HtmlStyle.typeParameters, typeParameters)); + target.add(HtmlTree.SPAN(HtmlStyles.typeParameters, typeParameters)); } int lineLength = target.charCount() - lastLineSeparator; @@ -567,8 +569,8 @@ private void appendParametersAndExceptions(Content target, int lastLineSeparator // empty parameters are added without packing target.add(parameters); } else { - target.add(new HtmlTree(TagName.WBR)) - .add(HtmlTree.SPAN(HtmlStyle.parameters, parameters)); + target.add(new HtmlTree(HtmlTag.WBR)) + .add(HtmlTree.SPAN(HtmlStyles.parameters, parameters)); } // Exceptions @@ -577,7 +579,7 @@ private void appendParametersAndExceptions(Content target, int lastLineSeparator target.add(Text.NL) .add(indent) .add("throws ") - .add(HtmlTree.SPAN(HtmlStyle.exceptions, exceptions)); + .add(HtmlTree.SPAN(HtmlStyles.exceptions, exceptions)); } } } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SourceToHTMLConverter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SourceToHTMLConverter.java index 6f1381a70ca..070b3842122 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SourceToHTMLConverter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SourceToHTMLConverter.java @@ -25,8 +25,6 @@ package jdk.javadoc.internal.doclets.formats.html; -import jdk.javadoc.internal.doclets.formats.html.markup.Head; - import java.io.IOException; import java.io.LineNumberReader; import java.io.Reader; @@ -38,12 +36,9 @@ import javax.lang.model.element.TypeElement; import javax.tools.FileObject; +import jdk.javadoc.internal.doclets.formats.html.markup.Head; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlDocument; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.Messages; import jdk.javadoc.internal.doclets.toolkit.Resources; import jdk.javadoc.internal.doclets.toolkit.util.DocFile; @@ -52,6 +47,11 @@ import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.SimpleDocletException; import jdk.javadoc.internal.doclets.toolkit.util.Utils; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlId; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Converts Java Source Code to HTML. @@ -201,7 +201,7 @@ public void convertClass(TypeElement te, DocPath outputdir) .resolve(configuration.docPaths.forPackage(te)) .invert(); Content body = getHeader(); - var pre = new HtmlTree(TagName.PRE); + var pre = new HtmlTree(HtmlTag.PRE); try (var reader = new LineNumberReader(r)) { while ((line = reader.readLine()) != null) { addLineNo(pre, lineno); @@ -210,7 +210,7 @@ public void convertClass(TypeElement te, DocPath outputdir) } } addBlankLines(pre); - var div = HtmlTree.DIV(HtmlStyle.sourceContainer, pre); + var div = HtmlTree.DIV(HtmlStyles.sourceContainer, pre); body.add(HtmlTree.MAIN(div)); writeToFile(body, outputdir.resolve(configuration.docPaths.forClass(te)), te); } catch (IOException e) { @@ -246,7 +246,7 @@ private void writeToFile(Content body, DocPath path, TypeElement te) throws DocF * @return the header content for the HTML file */ private static Content getHeader() { - return new HtmlTree(TagName.BODY).setStyle(HtmlStyle.sourcePage); + return new HtmlTree(HtmlTag.BODY).setStyle(HtmlStyles.sourcePage); } /** @@ -256,7 +256,7 @@ private static Content getHeader() { * @param lineno The line number */ private static void addLineNo(Content pre, int lineno) { - var span = HtmlTree.SPAN(HtmlStyle.sourceLineNo); + var span = HtmlTree.SPAN(HtmlStyles.sourceLineNo); if (lineno < 10) { span.add("00" + lineno); } else if (lineno < 100) { diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SubWriterHolderWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SubWriterHolderWriter.java index 3926d4e9a4c..0876a1611cd 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SubWriterHolderWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SubWriterHolderWriter.java @@ -25,20 +25,23 @@ package jdk.javadoc.internal.doclets.formats.html; -import java.util.*; +import java.util.List; import javax.lang.model.element.Element; import javax.lang.model.element.TypeElement; import com.sun.source.doctree.DeprecatedTree; import com.sun.source.doctree.DocTree; + import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.PropertyUtils; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlId; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.HtmlTree; /** * This abstract class exists to provide functionality needed in the @@ -117,8 +120,8 @@ protected void addIndexComment(Element member, List firstSent List deprs = utils.getDeprecatedTrees(member); Content div; if (utils.isDeprecated(member)) { - var deprLabel = HtmlTree.SPAN(HtmlStyle.deprecatedLabel, getDeprecatedPhrase(member)); - div = HtmlTree.DIV(HtmlStyle.block, deprLabel); + var deprLabel = HtmlTree.SPAN(HtmlStyles.deprecatedLabel, getDeprecatedPhrase(member)); + div = HtmlTree.DIV(HtmlStyles.block, deprLabel); if (!deprs.isEmpty()) { addSummaryDeprecatedComment(member, deprs.get(0), div); } @@ -127,8 +130,8 @@ protected void addIndexComment(Element member, List firstSent } else { Element te = member.getEnclosingElement(); if (te != null && utils.isTypeElement(te) && utils.isDeprecated(te)) { - var deprLabel = HtmlTree.SPAN(HtmlStyle.deprecatedLabel, getDeprecatedPhrase(te)); - div = HtmlTree.DIV(HtmlStyle.block, deprLabel); + var deprLabel = HtmlTree.SPAN(HtmlStyles.deprecatedLabel, getDeprecatedPhrase(te)); + div = HtmlTree.DIV(HtmlStyles.block, deprLabel); tdSummaryContent.add(div); } } @@ -200,7 +203,7 @@ public void addClassContent(Content classContent) { * @return a list to be used for the list of summaries for members of a given kind */ public Content getSummariesList() { - return HtmlTree.UL(HtmlStyle.summaryList); + return HtmlTree.UL(HtmlStyles.summaryList); } /** @@ -219,7 +222,7 @@ public Content getSummariesListItem(Content content) { * @return a list to be used for the list of details for members of a given kind */ public Content getDetailsList() { - return HtmlTree.UL(HtmlStyle.detailsList); + return HtmlTree.UL(HtmlStyles.detailsList); } /** @@ -236,7 +239,7 @@ public Content getDetailsListItem(Content content) { * {@return a list to add member items to} */ public Content getMemberList() { - return HtmlTree.UL(HtmlStyle.memberList); + return HtmlTree.UL(HtmlStyles.memberList); } /** @@ -249,7 +252,7 @@ public Content getMemberListItem(Content member) { } public Content getMemberInherited() { - return HtmlTree.DIV(HtmlStyle.inheritedList); + return HtmlTree.DIV(HtmlStyles.inheritedList); } /** @@ -281,7 +284,7 @@ public Content getMember(Content content) { * @param memberContent the content used to generate the member summary */ public Content getMemberSummary(Content memberContent) { - return HtmlTree.SECTION(HtmlStyle.summary, memberContent); + return HtmlTree.SECTION(HtmlStyles.summary, memberContent); } /** diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SummaryListWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SummaryListWriter.java index ffe0350678d..8d2f621e5d4 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SummaryListWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SummaryListWriter.java @@ -31,18 +31,20 @@ import javax.lang.model.element.ModuleElement; import javax.lang.model.element.PackageElement; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.Script; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; import jdk.javadoc.internal.doclets.toolkit.util.SummaryAPIListBuilder; import jdk.javadoc.internal.doclets.toolkit.util.SummaryAPIListBuilder.SummaryElementKind; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlAttr; +import jdk.javadoc.internal.html.HtmlId; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Script; +import jdk.javadoc.internal.html.Text; /** * Base class for generating a summary page that lists elements with a common characteristic, @@ -139,8 +141,8 @@ public void buildPage() throws DocFileIOException { HtmlTree body = getHeader(getPageMode(), getTitleKey()); Content content = new ContentBuilder(); var heading = HtmlTree.HEADING_TITLE(Headings.PAGE_TITLE_HEADING, - HtmlStyle.title, getHeadContent()); - content.add(HtmlTree.DIV(HtmlStyle.header, heading)); + HtmlStyles.title, getHeadContent()); + content.add(HtmlTree.DIV(HtmlStyles.header, heading)); addContentSelectors(content); if (showContentsList()) { content.add(HtmlTree.HEADING_TITLE(Headings.CONTENT_HEADING, contents.contentsHeading)); @@ -201,7 +203,7 @@ protected boolean showContentsList() { * @return the contents list */ public Content getContentsList() { - var ul= HtmlTree.UL(HtmlStyle.contentsList); + var ul= HtmlTree.UL(HtmlStyles.contentsList); addExtraIndexLink(ul); for (SummaryElementKind kind : SummaryElementKind.values()) { if (builder.hasDocumentation(kind)) { @@ -238,7 +240,7 @@ protected void addSummaryAPI(SortedSet apiList, HtmlId id, if (apiList.size() > 0) { TableHeader tableHeader = getTableHeader(headerKey); - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setCaption(getTableCaption(headingKey)) .setHeader(tableHeader) .setId(id) @@ -267,7 +269,7 @@ protected void addSummaryAPI(SortedSet apiList, HtmlId id, } } // note: singleton list - content.add(HtmlTree.UL(HtmlStyle.blockList, HtmlTree.LI(table))); + content.add(HtmlTree.UL(HtmlStyles.blockList, HtmlTree.LI(table))); } } @@ -370,7 +372,7 @@ protected TableHeader getTableHeader(String headerKey) { * @return the styles to use for table columns */ protected HtmlStyle[] getColumnStyles() { - return new HtmlStyle[]{ HtmlStyle.colSummaryItemName, HtmlStyle.colLast }; + return new HtmlStyle[]{ HtmlStyles.colSummaryItemName, HtmlStyles.colLast }; } /** diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SystemPropertiesWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SystemPropertiesWriter.java index 45985532ad6..d7aacd3ab0f 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SystemPropertiesWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SystemPropertiesWriter.java @@ -38,15 +38,16 @@ import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.DocFileElement; import jdk.javadoc.internal.doclets.toolkit.OverviewElement; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.IndexItem; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; import static java.util.stream.Collectors.groupingBy; @@ -86,7 +87,7 @@ public void buildPage() throws DocFileIOException { addSystemProperties(mainContent); body.add(new BodyContents() .setHeader(getHeader(PageMode.SYSTEM_PROPERTIES)) - .addMainContent(HtmlTree.DIV(HtmlStyle.header, + .addMainContent(HtmlTree.DIV(HtmlStyles.header, HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, contents.getContent("doclet.systemProperties")))) .addMainContent(mainContent) @@ -106,10 +107,10 @@ public void buildPage() throws DocFileIOException { protected void addSystemProperties(Content target) { Map> searchIndexMap = groupSystemProperties(); Content separator = Text.of(", "); - var table = new Table(HtmlStyle.summaryTable) + var table = new Table(HtmlStyles.summaryTable) .setCaption(contents.systemPropertiesSummaryLabel) .setHeader(new TableHeader(contents.propertyLabel, contents.referencedIn)) - .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast); + .setColumnStyles(HtmlStyles.colFirst, HtmlStyles.colLast); for (Entry> entry : searchIndexMap.entrySet()) { Content propertyName = Text.of(entry.getKey()); List searchIndexItems = entry.getValue(); @@ -119,7 +120,7 @@ protected void addSystemProperties(Content target) { separatedReferenceLinks.add(separator); separatedReferenceLinks.add(createLink(searchIndexItems.get(i))); } - table.addRow(propertyName, HtmlTree.DIV(HtmlStyle.block, separatedReferenceLinks)); + table.addRow(propertyName, HtmlTree.DIV(HtmlStyles.block, separatedReferenceLinks)); } target.add(table); } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Table.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Table.java index 339cfbf6f72..5d09682d492 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Table.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Table.java @@ -34,13 +34,15 @@ import java.util.Set; import java.util.function.Predicate; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlAttr; +import jdk.javadoc.internal.html.HtmlId; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * An HTML container used to display summary tables for various kinds of elements @@ -303,7 +305,7 @@ public void addRow(T item, List contents) { Content row = new ContentBuilder(); int rowIndex = bodyRows.size(); - HtmlStyle rowStyle = rowIndex % 2 == 0 ? HtmlStyle.evenRowColor : HtmlStyle.oddRowColor; + HtmlStyle rowStyle = rowIndex % 2 == 0 ? HtmlStyles.evenRowColor : HtmlStyles.oddRowColor; List tabClasses = new ArrayList<>(); if (tabs != null) { @@ -359,16 +361,16 @@ public boolean write(Writer out, String newline, boolean atNewline) throws IOExc private Content toContent() { Content main; if (id != null) { - main = new HtmlTree(TagName.DIV).setId(id); + main = new HtmlTree(HtmlTag.DIV).setId(id); } else { main = new ContentBuilder(); } // If no grid style is set use on of the default styles if (gridStyle == null) { gridStyle = switch (columnStyles.size()) { - case 2 -> HtmlStyle.twoColumnSummary; - case 3 -> HtmlStyle.threeColumnSummary; - case 4 -> HtmlStyle.fourColumnSummary; + case 2 -> HtmlStyles.twoColumnSummary; + case 3 -> HtmlStyles.threeColumnSummary; + case 4 -> HtmlStyles.fourColumnSummary; default -> throw new IllegalStateException(); }; } @@ -383,16 +385,16 @@ private Content toContent() { table.add(getTableBody()); main.add(table); } else { - var tablist = HtmlTree.DIV(HtmlStyle.tableTabs) + var tablist = HtmlTree.DIV(HtmlStyles.tableTabs) .put(HtmlAttr.ROLE, "tablist") .put(HtmlAttr.ARIA_ORIENTATION, "horizontal"); HtmlId defaultTabId = HtmlIds.forTab(id, 0); if (renderTabs) { - tablist.add(createTab(defaultTabId, HtmlStyle.activeTableTab, true, defaultTab)); + tablist.add(createTab(defaultTabId, HtmlStyles.activeTableTab, true, defaultTab)); for (var tab : tabs) { if (occurringTabs.contains(tab)) { - tablist.add(createTab(HtmlIds.forTab(id, tab.index()), HtmlStyle.tableTab, false, tab.label())); + tablist.add(createTab(HtmlIds.forTab(id, tab.index()), HtmlStyles.tableTab, false, tab.label())); } } } else { @@ -401,7 +403,7 @@ private Content toContent() { if (id == null) { throw new IllegalStateException("no id set for table"); } - var tabpanel = new HtmlTree(TagName.DIV) + var tabpanel = new HtmlTree(HtmlTag.DIV) .setId(HtmlIds.forTabPanel(id)) .put(HtmlAttr.ROLE, "tabpanel") .put(HtmlAttr.ARIA_LABELLEDBY, defaultTabId.name()); @@ -414,7 +416,7 @@ private Content toContent() { } private HtmlTree createTab(HtmlId tabId, HtmlStyle style, boolean defaultTab, Content tabLabel) { - var tab = new HtmlTree(TagName.BUTTON) + var tab = new HtmlTree(HtmlTag.BUTTON) .setId(tabId) .put(HtmlAttr.ROLE, "tab") .put(HtmlAttr.ARIA_SELECTED, defaultTab ? "true" : "false") @@ -436,6 +438,6 @@ private Content getTableBody() { } private HtmlTree getCaption(Content title) { - return HtmlTree.DIV(HtmlStyle.caption, HtmlTree.SPAN(title)); + return HtmlTree.DIV(HtmlStyles.caption, HtmlTree.SPAN(title)); } } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TableHeader.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TableHeader.java index a505797764e..e1c42062c21 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TableHeader.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TableHeader.java @@ -30,10 +30,12 @@ import java.util.Arrays; import java.util.List; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlAttr; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.HtmlTree; /** * A row of header cells for an HTML table. @@ -152,10 +154,10 @@ private Content toContent() { int i = 0; for (Content cellContent : cellContents) { HtmlStyle style = (styles != null) ? styles.get(i) - : (i == 0) ? HtmlStyle.colFirst - : (i == (cellContents.size() - 1)) ? HtmlStyle.colLast - : (i == 1) ? HtmlStyle.colSecond : null; - var cell = HtmlTree.DIV(HtmlStyle.tableHeader, cellContent); + : (i == 0) ? HtmlStyles.colFirst + : (i == (cellContents.size() - 1)) ? HtmlStyles.colLast + : (i == 1) ? HtmlStyles.colSecond : null; + var cell = HtmlTree.DIV(HtmlStyles.tableHeader, cellContent); if (style != null) { cell.addStyle(style); } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TableOfContents.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TableOfContents.java index 7cfbffb6cee..a9036d7dcd8 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TableOfContents.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TableOfContents.java @@ -24,14 +24,15 @@ */ package jdk.javadoc.internal.doclets.formats.html; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.ListBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlAttr; +import jdk.javadoc.internal.html.HtmlId; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.ListBuilder; +import jdk.javadoc.internal.html.Text; /** * A class used by various {@link HtmlDocletWriter} subclasses to build tables of contents. @@ -46,7 +47,7 @@ public class TableOfContents { */ public TableOfContents(HtmlDocletWriter writer) { this.writer = writer; - listBuilder = new ListBuilder(HtmlTree.OL(HtmlStyle.tocList)); + listBuilder = new ListBuilder(HtmlTree.OL(HtmlStyles.tocList)); } /** @@ -64,7 +65,7 @@ public TableOfContents addLink(HtmlId id, Content label) { * Adds a new nested list to add new items to. */ public void pushNestedList() { - listBuilder.pushNestedList(HtmlTree.OL(HtmlStyle.tocList)); + listBuilder.pushNestedList(HtmlTree.OL(HtmlStyles.tocList)); } /** @@ -87,23 +88,23 @@ protected Content toContent(boolean hasFilterInput) { return Text.EMPTY; } var content = HtmlTree.NAV() - .setStyle(HtmlStyle.toc) + .setStyle(HtmlStyles.toc) .put(HtmlAttr.ARIA_LABEL, writer.resources.getText("doclet.table_of_contents")); - var header = HtmlTree.DIV(HtmlStyle.tocHeader, writer.contents.contentsHeading); + var header = HtmlTree.DIV(HtmlStyles.tocHeader, writer.contents.contentsHeading); if (hasFilterInput) { header.add(Entity.NO_BREAK_SPACE) - .add(HtmlTree.INPUT(HtmlAttr.InputType.TEXT, HtmlStyle.filterInput) + .add(HtmlTree.INPUT(HtmlAttr.InputType.TEXT, HtmlStyles.filterInput) .put(HtmlAttr.PLACEHOLDER, writer.resources.getText("doclet.filter_label")) .put(HtmlAttr.ARIA_LABEL, writer.resources.getText("doclet.filter_table_of_contents")) .put(HtmlAttr.AUTOCOMPLETE, "off")) - .add(HtmlTree.INPUT(HtmlAttr.InputType.RESET, HtmlStyle.resetFilter) + .add(HtmlTree.INPUT(HtmlAttr.InputType.RESET, HtmlStyles.resetFilter) .put(HtmlAttr.VALUE, writer.resources.getText("doclet.filter_reset"))); } content.add(header); - content.add(new HtmlTree(TagName.BUTTON).addStyle(HtmlStyle.hideSidebar) + content.add(new HtmlTree(HtmlTag.BUTTON).addStyle(HtmlStyles.hideSidebar) .add(HtmlTree.SPAN(writer.contents.hideSidebar).add(Entity.NO_BREAK_SPACE)) .add(Entity.LEFT_POINTING_ANGLE)); - content.add(new HtmlTree(TagName.BUTTON).addStyle(HtmlStyle.showSidebar) + content.add(new HtmlTree(HtmlTag.BUTTON).addStyle(HtmlStyles.showSidebar) .add(Entity.RIGHT_POINTING_ANGLE) .add(HtmlTree.SPAN(Entity.NO_BREAK_SPACE).add(writer.contents.showSidebar))); return content.add(listBuilder); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TreeWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TreeWriter.java index c5e0329e9e6..8af3b7016ce 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TreeWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/TreeWriter.java @@ -29,15 +29,16 @@ import javax.lang.model.element.PackageElement; -import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode; +import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.ClassTree; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; /** * Generate Class Hierarchy page for all the Classes in this run. Use @@ -78,8 +79,8 @@ public void buildPage() throws DocFileIOException { HtmlTree body = getBody(); Content headContent = contents.hierarchyForAllPackages; var heading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, - HtmlStyle.title, headContent); - var div = HtmlTree.DIV(HtmlStyle.header, heading); + HtmlStyles.title, headContent); + var div = HtmlTree.DIV(HtmlStyles.header, heading); Content mainContent = new ContentBuilder(); mainContent.add(div); addPackageTreeLinks(mainContent); @@ -105,10 +106,10 @@ protected void addPackageTreeLinks(Content content) { return; } if (!classesOnly) { - var span = HtmlTree.SPAN(HtmlStyle.packageHierarchyLabel, + var span = HtmlTree.SPAN(HtmlStyles.packageHierarchyLabel, contents.packageHierarchies); content.add(span); - var ul = HtmlTree.UL(HtmlStyle.horizontal).addStyle(HtmlStyle.contentsList); + var ul = HtmlTree.UL(HtmlStyles.horizontal).addStyle(HtmlStyles.contentsList); int i = 0; for (PackageElement pkg : packages) { // If the package name length is 0 or if -nodeprecated option diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/BodyContents.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/BodyContents.java index 71bf1f265cf..d7c865b8350 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/BodyContents.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/BodyContents.java @@ -25,14 +25,17 @@ package jdk.javadoc.internal.doclets.formats.html.markup; -import jdk.javadoc.internal.doclets.formats.html.Content; - import java.io.IOException; import java.io.Writer; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; + /** * Content for the {@code } element. * @@ -96,7 +99,7 @@ private Content toContent() { return new ContentBuilder() .add(header) - .add(HtmlTree.DIV(HtmlStyle.mainGrid) + .add(HtmlTree.DIV(HtmlStyles.mainGrid) .add(side == null ? Text.EMPTY : side) .add(HtmlTree.MAIN() .add(mainContents) diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Head.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Head.java index c4a223a94c7..3d5b1a494ba 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Head.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Head.java @@ -34,10 +34,15 @@ import java.util.List; import java.util.Locale; -import jdk.javadoc.internal.doclets.formats.html.Content; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; +import jdk.javadoc.internal.html.Comment; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlAttr; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Script; /** * An HTML {@code } element. @@ -267,7 +272,7 @@ public boolean write(Writer out, String newline, boolean atNewline) throws IOExc * @return the HTML */ private Content toContent() { - var head = new HtmlTree(TagName.HEAD); + var head = new HtmlTree(HtmlTag.HEAD); head.add(getGeneratedBy(showTimestamp, generatedDate)); head.add(HtmlTree.TITLE(title)); @@ -295,7 +300,7 @@ private Content toContent() { } if (canonicalLink != null) { - var link = new HtmlTree(TagName.LINK); + var link = new HtmlTree(HtmlTag.LINK); link.put(HtmlAttr.REL, "canonical"); link.put(HtmlAttr.HREF, canonicalLink.getPath()); head.add(link); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlAttr.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlAttr.java deleted file mode 100644 index 1d0d54a0525..00000000000 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlAttr.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (c) 2010, 2024, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package jdk.javadoc.internal.doclets.formats.html.markup; - -import jdk.javadoc.internal.doclets.toolkit.util.Utils; - -/** - * Enum representing HTML tag attributes. - */ -public enum HtmlAttr { - ALT, - ARIA_CONTROLS("aria-controls"), - ARIA_EXPANDED("aria-expanded"), - ARIA_LABEL("aria-label"), - ARIA_LABELLEDBY("aria-labelledby"), - ARIA_ORIENTATION("aria-orientation"), - ARIA_SELECTED("aria-selected"), - AUTOCOMPLETE, - CHECKED, - CLASS, - CLEAR, - COLS, - CONTENT, - DATA_COPIED("data-copied"), // custom HTML5 data attribute - DISABLED, - FOR, - HREF, - HTTP_EQUIV("http-equiv"), - ID, - LANG, - NAME, - ONCLICK, - ONKEYDOWN, - ONLOAD, - PLACEHOLDER, - REL, - ROLE, - ROWS, - SCOPE, - SCROLLING, - SRC, - STYLE, - SUMMARY, - TABINDEX, - TARGET, - TITLE, - TYPE, - VALUE, - WIDTH; - - private final String value; - - public enum Role { - - BANNER, - CONTENTINFO, - MAIN, - NAVIGATION, - REGION; - - private final String role; - - Role() { - role = Utils.toLowerCase(name()); - } - - public String toString() { - return role; - } - } - - public enum InputType { - - CHECKBOX, - RESET, - TEXT; - - private final String type; - - InputType() { - type = Utils.toLowerCase(name()); - } - - public String toString() { - return type; - } - } - - HtmlAttr() { - this.value = Utils.toLowerCase(name()); - } - - HtmlAttr(String name) { - this.value = name; - } - - public String toString() { - return value; - } -} diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlDocument.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlDocument.java index dcfed8707dd..051cbfd0042 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlDocument.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlDocument.java @@ -29,9 +29,11 @@ import java.io.StringWriter; import java.io.Writer; -import jdk.javadoc.internal.doclets.formats.html.Content; import jdk.javadoc.internal.doclets.toolkit.util.DocFile; import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.DocType; +import jdk.javadoc.internal.html.HtmlTag; /** * Class for generating an HTML document for javadoc output. @@ -43,7 +45,7 @@ public class HtmlDocument { /** * Constructs an HTML document. * - * @param html the {@link TagName#HTML HTML} element of the document + * @param html the {@link HtmlTag#HTML HTML} element of the document */ public HtmlDocument(Content html) { docContent = html; diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyles.java similarity index 99% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyles.java index 35a52b0c05d..35240fa69da 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyles.java @@ -28,6 +28,8 @@ import java.util.Locale; import java.util.regex.Pattern; +import jdk.javadoc.internal.html.HtmlStyle; + /** * Enum representing HTML styles, with associated entries in the stylesheet files. * @@ -49,7 +51,7 @@ * * @see WhatWG: {@code class} attribute */ -public enum HtmlStyle { +public enum HtmlStyles implements HtmlStyle { // // @@ -1098,13 +1100,13 @@ public enum HtmlStyle { private final String cssName; - HtmlStyle() { + HtmlStyles() { cssName = Pattern.compile("\\p{Upper}") .matcher(toString()) .replaceAll(mr -> "-" + mr.group().toLowerCase(Locale.US)); } - HtmlStyle(String cssName) { + HtmlStyles(String cssName) { this.cssName = cssName; } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Links.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Links.java index a0bd0b3dd04..0af29135654 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Links.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Links.java @@ -25,9 +25,14 @@ package jdk.javadoc.internal.doclets.formats.html.markup; -import jdk.javadoc.internal.doclets.formats.html.Content; import jdk.javadoc.internal.doclets.toolkit.util.DocLink; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlAttr; +import jdk.javadoc.internal.html.HtmlId; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Factory for HTML A elements: links (with a {@code href} attribute). @@ -197,7 +202,7 @@ public HtmlTree createLink(DocLink link, Content label, HtmlStyle style, } if (isExternal) { // Use addStyle as external links might have an explicit style set above as well. - l.addStyle(HtmlStyle.externalLink); + l.addStyle(HtmlStyles.externalLink); } return l; } @@ -211,6 +216,6 @@ public HtmlTree createLink(DocLink link, Content label, HtmlStyle style, */ public HtmlTree createExternalLink(DocLink link, Content label) { return HtmlTree.A(link.relativizeAgainst(file).toString(), label) - .setStyle(HtmlStyle.externalLink); + .setStyle(HtmlStyles.externalLink); } } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/TagName.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/TagName.java deleted file mode 100644 index d849c2f1798..00000000000 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/TagName.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2010, 2024, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package jdk.javadoc.internal.doclets.formats.html.markup; - -import java.util.Locale; - -import jdk.javadoc.internal.doclets.toolkit.util.Utils; - -/** - * Enum representing the names for HTML elements. - * - * @see WhatWG: Tag Name - * @see HTML 5.1: Tag Name - */ -public enum TagName { - A(true), - ASIDE, - BUTTON(true), - BLOCKQUOTE, - BODY, - BR(true), - CAPTION, - CODE(true), - DD, - DETAILS, - DIV, - DL, - DT, - EM(true), - FOOTER, - FORM, - H1, - H2, - H3, - H4, - H5, - H6, - HEAD, - HEADER, - HR, - HTML, - I(true), - IMG(true), - INPUT(true), - LABEL(true), - LI, - LISTING, - LINK(true), - MAIN, - MENU, - META, - NAV, - NOSCRIPT(true), - OL, - P, - PRE, - SCRIPT(true), - SECTION, - SMALL(true), - SPAN(true), - STRONG(true), - SUB(true), - SUMMARY, - SUP(true), - TABLE, - TBODY, - THEAD, - TD, - TH, - TITLE, - TR, - UL, - WBR(true); - - public final String value; - public final boolean phrasingContent; - - static TagName of(String s) { - return valueOf(s.toUpperCase(Locale.ROOT)); - } - - TagName() { - this(false); - } - - TagName(boolean phrasingContent) { - this.value = Utils.toLowerCase(name()); - this.phrasingContent = phrasingContent; - } - - public String toString() { - return value; - } - -} diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/package-info.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/package-info.java index aa279972f8c..efad5fc0fe9 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/package-info.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/package-info.java @@ -27,7 +27,7 @@ * This package contains classes that create and write HTML markup tags. * *

The primary low level classes are - * {@link jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree HtmlTree} + * {@link jdk.javadoc.internal.html.HtmlTree HtmlTree} * and other subtypes of {@code Content}. In addition, there are mid-level builders * like {@link jdk.javadoc.internal.doclets.formats.html.TableHeader TableHeader} * and {@link jdk.javadoc.internal.doclets.formats.html.Table Table} diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/BaseTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/BaseTaglet.java index bda31883f35..7b0a4329ee1 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/BaseTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/BaseTaglet.java @@ -33,10 +33,10 @@ import jdk.javadoc.doclet.Taglet.Location; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; -import jdk.javadoc.internal.doclets.formats.html.Content; import jdk.javadoc.internal.doclets.toolkit.Messages; import jdk.javadoc.internal.doclets.toolkit.Resources; import jdk.javadoc.internal.doclets.toolkit.util.Utils; +import jdk.javadoc.internal.html.Content; /** * A base class that implements the {@link Taglet} interface. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/DeprecatedTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/DeprecatedTaglet.java index d586b697bd7..fa30589e59d 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/DeprecatedTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/DeprecatedTaglet.java @@ -35,11 +35,11 @@ import jdk.javadoc.doclet.Taglet; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.Content; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; /** * A taglet that represents the {@code @deprecated} tag. @@ -61,7 +61,7 @@ public Content getAllBlockTagOutput(Element element, TagletWriter tagletWriter) List deprs = utils.getDeprecatedTrees(element); if (utils.isTypeElement(element)) { if (utils.isDeprecated(element)) { - result.add(HtmlTree.SPAN(HtmlStyle.deprecatedLabel, + result.add(HtmlTree.SPAN(HtmlStyles.deprecatedLabel, htmlWriter.getDeprecatedPhrase(element))); if (!deprs.isEmpty()) { List commentTrees = ch.getDescription(deprs.get(0)); @@ -72,18 +72,18 @@ public Content getAllBlockTagOutput(Element element, TagletWriter tagletWriter) } } else { if (utils.isDeprecated(element)) { - result.add(HtmlTree.SPAN(HtmlStyle.deprecatedLabel, + result.add(HtmlTree.SPAN(HtmlStyles.deprecatedLabel, htmlWriter.getDeprecatedPhrase(element))); if (!deprs.isEmpty()) { List bodyTrees = ch.getBody(deprs.get(0)); Content body = tagletWriter.commentTagsToOutput(element, null, bodyTrees, false); if (!body.isEmpty()) - result.add(HtmlTree.DIV(HtmlStyle.deprecationComment, body)); + result.add(HtmlTree.DIV(HtmlStyles.deprecationComment, body)); } } else { Element ee = utils.getEnclosingTypeElement(element); if (utils.isDeprecated(ee)) { - result.add(HtmlTree.SPAN(HtmlStyle.deprecatedLabel, + result.add(HtmlTree.SPAN(HtmlStyles.deprecatedLabel, htmlWriter.getDeprecatedPhrase(ee))); } } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/DocRootTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/DocRootTaglet.java index 94d701f7441..d4050f6e0ec 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/DocRootTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/DocRootTaglet.java @@ -33,8 +33,8 @@ import jdk.javadoc.doclet.Taglet; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; -import jdk.javadoc.internal.doclets.formats.html.Content; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.Text; /** * An inline taglet representing {@code {@docRoot}}. This taglet is diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/IndexTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/IndexTaglet.java index 4361dd5c1ef..6f5077bb32c 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/IndexTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/IndexTaglet.java @@ -35,7 +35,7 @@ import jdk.javadoc.doclet.Taglet; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; -import jdk.javadoc.internal.doclets.formats.html.Content; +import jdk.javadoc.internal.html.Content; /** * An inline taglet used to index a word or a phrase. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/InheritDocTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/InheritDocTaglet.java index b7b937a5fc6..b05bb144f1b 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/InheritDocTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/InheritDocTaglet.java @@ -39,12 +39,12 @@ import jdk.javadoc.doclet.Taglet.Location; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; -import jdk.javadoc.internal.doclets.formats.html.Content; import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper; import jdk.javadoc.internal.doclets.toolkit.util.DocFinder; import jdk.javadoc.internal.doclets.toolkit.util.DocFinder.Result; import jdk.javadoc.internal.doclets.toolkit.util.Utils; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; /** * A taglet that represents the {@code {@inheritDoc}} tag. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/LinkTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/LinkTaglet.java index 1b02c9ea05e..e16acd0315a 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/LinkTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/LinkTaglet.java @@ -46,12 +46,12 @@ import jdk.javadoc.internal.doclets.formats.html.ClassWriter; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; import jdk.javadoc.internal.doclets.formats.html.HtmlLinkInfo; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; -import jdk.javadoc.internal.doclets.formats.html.Content; import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper; import jdk.javadoc.internal.doclets.toolkit.util.DocLink; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; import static com.sun.source.doctree.DocTree.Kind.LINK; import static com.sun.source.doctree.DocTree.Kind.LINK_PLAIN; diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/LiteralTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/LiteralTaglet.java index 1d209427c21..c0543026f23 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/LiteralTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/LiteralTaglet.java @@ -34,9 +34,9 @@ import jdk.javadoc.doclet.Taglet; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; -import jdk.javadoc.internal.doclets.formats.html.Content; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * An inline taglet used to denote literal text, possibly in monospace font. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ParamTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ParamTaglet.java index 9963547acf3..ed46e6c5c86 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ParamTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ParamTaglet.java @@ -43,13 +43,13 @@ import jdk.javadoc.internal.doclets.formats.html.Contents; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; import jdk.javadoc.internal.doclets.formats.html.HtmlIds; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; -import jdk.javadoc.internal.doclets.formats.html.Content; import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper; import jdk.javadoc.internal.doclets.toolkit.util.DocFinder; import jdk.javadoc.internal.doclets.toolkit.util.Utils; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * A taglet that represents the {@code @param} tag. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ReturnTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ReturnTaglet.java index 6ba5d897c46..b9572afb9bc 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ReturnTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ReturnTaglet.java @@ -41,11 +41,11 @@ import jdk.javadoc.doclet.Taglet; import jdk.javadoc.internal.doclets.formats.html.Contents; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.Content; import jdk.javadoc.internal.doclets.toolkit.util.DocFinder; import jdk.javadoc.internal.doclets.toolkit.util.Utils; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; /** * A taglet that represents the {@code @return} and {@code {@return }} tags. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SeeTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SeeTaglet.java index 9052b1a49aa..abfb3b526ec 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SeeTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SeeTaglet.java @@ -45,16 +45,16 @@ import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; import jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter; import jdk.javadoc.internal.doclets.formats.html.SerializedFormWriter; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; -import jdk.javadoc.internal.doclets.formats.html.Content; import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper; import jdk.javadoc.internal.doclets.toolkit.util.DocFinder; import jdk.javadoc.internal.doclets.toolkit.util.DocLink; import jdk.javadoc.internal.doclets.toolkit.util.DocPath; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.Utils; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; public class SeeTaglet extends BaseTaglet implements InheritableTaglet { SeeTaglet(HtmlConfiguration config) { diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SimpleTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SimpleTaglet.java index 110a3e1246e..6ce38b3b515 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SimpleTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SimpleTaglet.java @@ -42,11 +42,11 @@ import jdk.javadoc.doclet.Taglet; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml; -import jdk.javadoc.internal.doclets.formats.html.Content; import jdk.javadoc.internal.doclets.toolkit.util.DocFinder; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.RawHtml; /** * A custom single-argument block tag. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SnippetTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SnippetTaglet.java index 0642b374064..af2378c0351 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SnippetTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SnippetTaglet.java @@ -51,21 +51,21 @@ import jdk.javadoc.doclet.Taglet; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.formats.html.taglets.snippet.Action; import jdk.javadoc.internal.doclets.formats.html.taglets.snippet.ParseException; import jdk.javadoc.internal.doclets.formats.html.taglets.snippet.Parser; import jdk.javadoc.internal.doclets.formats.html.taglets.snippet.Style; import jdk.javadoc.internal.doclets.formats.html.taglets.snippet.StyledText; -import jdk.javadoc.internal.doclets.formats.html.Content; import jdk.javadoc.internal.doclets.toolkit.DocletElement; import jdk.javadoc.internal.doclets.toolkit.Resources; import jdk.javadoc.internal.doclets.toolkit.util.DocPaths; import jdk.javadoc.internal.doclets.toolkit.util.Utils; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlAttr; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; import static jdk.javadoc.internal.doclets.formats.html.taglets.SnippetTaglet.Language.*; @@ -122,13 +122,13 @@ public Content getInlineTagOutput(Element holder, DocTree tag, TagletWriter tagl private Content snippetTagOutput(Element element, SnippetTree tag, StyledText content, String id, String lang) { var pathToRoot = tagletWriter.htmlWriter.pathToRoot; - var pre = new HtmlTree(TagName.PRE).setStyle(HtmlStyle.snippet); + var pre = new HtmlTree(HtmlTag.PRE).setStyle(HtmlStyles.snippet); if (id != null && !id.isBlank()) { pre.put(HtmlAttr.ID, id); } else { pre.put(HtmlAttr.ID, config.htmlIds.forSnippet(element, ids).name()); } - var code = new HtmlTree(TagName.CODE) + var code = new HtmlTree(HtmlTag.CODE) .addUnchecked(Text.EMPTY); // Make sure the element is always rendered if (lang != null && !lang.isBlank()) { code.addStyle("language-" + lang); @@ -196,16 +196,16 @@ private Content snippetTagOutput(Element element, SnippetTree tag, StyledText co String copyText = resources.getText("doclet.Copy_to_clipboard"); String copiedText = resources.getText("doclet.Copied_to_clipboard"); String copySnippetText = resources.getText("doclet.Copy_snippet_to_clipboard"); - var snippetContainer = HtmlTree.DIV(HtmlStyle.snippetContainer, - new HtmlTree(TagName.BUTTON) + var snippetContainer = HtmlTree.DIV(HtmlStyles.snippetContainer, + new HtmlTree(HtmlTag.BUTTON) .add(HtmlTree.SPAN(Text.of(copyText)) .put(HtmlAttr.DATA_COPIED, copiedText)) - .add(new HtmlTree(TagName.IMG) + .add(new HtmlTree(HtmlTag.IMG) .put(HtmlAttr.SRC, pathToRoot.resolve(DocPaths.RESOURCE_FILES) .resolve(DocPaths.CLIPBOARD_SVG).getPath()) .put(HtmlAttr.ALT, copySnippetText)) - .addStyle(HtmlStyle.copy) - .addStyle(HtmlStyle.snippetCopy) + .addStyle(HtmlStyles.copy) + .addStyle(HtmlStyles.snippetCopy) .put(HtmlAttr.ARIA_LABEL, copySnippetText) .put(HtmlAttr.ONCLICK, "copySnippet(this)")); return snippetContainer.add(pre.add(code)); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SpecTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SpecTaglet.java index e55ede7a7e1..b408d30b168 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SpecTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SpecTaglet.java @@ -30,7 +30,6 @@ import java.util.EnumSet; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; import javax.lang.model.element.Element; import javax.lang.model.element.ExecutableElement; @@ -42,16 +41,16 @@ import jdk.javadoc.doclet.Taglet; import jdk.javadoc.internal.doclets.formats.html.Contents; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.Entity; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; -import jdk.javadoc.internal.doclets.formats.html.Content; -import jdk.javadoc.internal.doclets.formats.html.markup.TextBuilder; import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper; import jdk.javadoc.internal.doclets.toolkit.util.DocFinder; import jdk.javadoc.internal.doclets.toolkit.util.Utils; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.Entity; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.RawHtml; +import jdk.javadoc.internal.html.Text; +import jdk.javadoc.internal.html.TextBuilder; /** * A taglet that represents the {@code @spec} tag. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SummaryTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SummaryTaglet.java index 0961c7312d5..7912abef0c6 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SummaryTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SummaryTaglet.java @@ -34,7 +34,7 @@ import jdk.javadoc.doclet.Taglet.Location; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; -import jdk.javadoc.internal.doclets.formats.html.Content; +import jdk.javadoc.internal.html.Content; /** * A taglet that represents the {@code {@summary}} tag. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SystemPropertyTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SystemPropertyTaglet.java index 3dc72e561a1..4cab9d90ce0 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SystemPropertyTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SystemPropertyTaglet.java @@ -34,8 +34,8 @@ import jdk.javadoc.doclet.Taglet; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.Content; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlTree; /** * A taglet that represents the {@code @systemProperty} tag. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/Taglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/Taglet.java index 0236287468c..c1c6a56e5cb 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/Taglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/Taglet.java @@ -26,12 +26,14 @@ package jdk.javadoc.internal.doclets.formats.html.taglets; import java.util.Set; + import javax.lang.model.element.Element; import com.sun.source.doctree.DocTree; + import jdk.javadoc.doclet.Taglet.Location; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.Content; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.HtmlTree; /** * This is the taglet interface used internally within the doclet. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/TagletWriter.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/TagletWriter.java index b977951f2fa..79b4433a58b 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/TagletWriter.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/TagletWriter.java @@ -43,20 +43,13 @@ import javax.lang.model.util.SimpleElementVisitor14; import com.sun.source.doctree.DocTree; - import com.sun.source.doctree.InlineTagTree; + import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; import jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter; import jdk.javadoc.internal.doclets.formats.html.HtmlIds; import jdk.javadoc.internal.doclets.formats.html.HtmlOptions; -import jdk.javadoc.internal.doclets.formats.html.IndexWriter; -import jdk.javadoc.internal.doclets.formats.html.SummaryListWriter; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlId; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; -import jdk.javadoc.internal.doclets.formats.html.Content; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; import jdk.javadoc.internal.doclets.formats.html.taglets.Taglet.UnsupportedTagletOperationException; import jdk.javadoc.internal.doclets.toolkit.DocletElement; import jdk.javadoc.internal.doclets.toolkit.Resources; @@ -64,6 +57,11 @@ import jdk.javadoc.internal.doclets.toolkit.util.DocLink; import jdk.javadoc.internal.doclets.toolkit.util.IndexItem; import jdk.javadoc.internal.doclets.toolkit.util.Utils; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlId; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.Text; /** * Context and utility methods for taglet classes. @@ -377,7 +375,7 @@ Content createAnchorAndSearchIndex(Element element, String tagText, Content tagC result = tagContent; } else { HtmlId id = HtmlIds.forText(tagText, htmlWriter.indexAnchorTable); - result = HtmlTree.SPAN(id, HtmlStyle.searchTagResult, tagContent); + result = HtmlTree.SPAN(id, HtmlStyles.searchTagResult, tagContent); if (options.createIndex() && !tagText.isEmpty()) { String holder = getHolderName(element); IndexItem item = IndexItem.of(element, tree, tagText, holder, desc, @@ -457,7 +455,7 @@ private String getHolderName(DocletElement de) { Content tagList(List items) { // Use a different style if any list item is longer than 30 chars or contains commas. boolean hasLongLabels = items.stream().anyMatch(this::isLongOrHasComma); - var list = HtmlTree.UL(hasLongLabels ? HtmlStyle.tagListLong : HtmlStyle.tagList); + var list = HtmlTree.UL(hasLongLabels ? HtmlStyles.tagListLong : HtmlStyles.tagList); items.stream() .filter(Predicate.not(Content::isEmpty)) .forEach(item -> list.add(HtmlTree.LI(item))); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ThrowsTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ThrowsTaglet.java index 131f0350e5e..ca4a8c939ab 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ThrowsTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ThrowsTaglet.java @@ -57,12 +57,12 @@ import jdk.javadoc.internal.doclets.formats.html.Contents; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; import jdk.javadoc.internal.doclets.formats.html.HtmlLinkInfo; -import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.Content; import jdk.javadoc.internal.doclets.toolkit.util.DocFinder; import jdk.javadoc.internal.doclets.toolkit.util.Utils; import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.ContentBuilder; +import jdk.javadoc.internal.html.HtmlTree; /** * A taglet that processes {@link ThrowsTree}, which represents {@code @throws} diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/UserTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/UserTaglet.java index bcfdd6682ed..cc5ae21ba29 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/UserTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/UserTaglet.java @@ -32,8 +32,8 @@ import com.sun.source.doctree.DocTree; -import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml; -import jdk.javadoc.internal.doclets.formats.html.Content; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.RawHtml; /** * A taglet wrapper, allows the public taglet {@link jdk.javadoc.doclet.Taglet} diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ValueTaglet.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ValueTaglet.java index 006277eeeb0..a4fddef0f11 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ValueTaglet.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/ValueTaglet.java @@ -39,10 +39,10 @@ import jdk.javadoc.doclet.Taglet; import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration; import jdk.javadoc.internal.doclets.formats.html.HtmlLinkInfo; -import jdk.javadoc.internal.doclets.formats.html.markup.Text; import jdk.javadoc.internal.doclets.toolkit.BaseConfiguration; -import jdk.javadoc.internal.doclets.formats.html.Content; import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper; +import jdk.javadoc.internal.html.Content; +import jdk.javadoc.internal.html.Text; /** * An inline taglet representing the value tag. This tag should only be used with diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java index d33e4874c00..7bc55639501 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java @@ -101,9 +101,16 @@ import com.sun.tools.javac.util.DefinedBy; import com.sun.tools.javac.util.DefinedBy.Api; -import jdk.javadoc.internal.doclint.HtmlTag.AttrKind; -import jdk.javadoc.internal.doclint.HtmlTag.ElemKind; -import static jdk.javadoc.internal.doclint.Messages.Group.*; +import jdk.javadoc.internal.html.HtmlAttr; +import jdk.javadoc.internal.html.HtmlAttr.AttrKind; +import jdk.javadoc.internal.html.HtmlTag; +import jdk.javadoc.internal.html.HtmlTag.ElemKind; + +import static jdk.javadoc.internal.doclint.Messages.Group.ACCESSIBILITY; +import static jdk.javadoc.internal.doclint.Messages.Group.HTML; +import static jdk.javadoc.internal.doclint.Messages.Group.MISSING; +import static jdk.javadoc.internal.doclint.Messages.Group.REFERENCE; +import static jdk.javadoc.internal.doclint.Messages.Group.SYNTAX; /** @@ -132,12 +139,12 @@ public enum Flag { static class TagStackItem { final DocTree tree; // typically, but not always, StartElementTree final HtmlTag tag; - final Set attrs; + final Set attrs; final Set flags; TagStackItem(DocTree tree, HtmlTag tag) { this.tree = tree; this.tag = tag; - attrs = EnumSet.noneOf(HtmlTag.Attr.class); + attrs = EnumSet.noneOf(HtmlAttr.class); flags = EnumSet.noneOf(Flag.class); } @Override @@ -399,7 +406,7 @@ void checkAllowsText(DocTree tree) { @Override @DefinedBy(Api.COMPILER_TREE) public Void visitStartElement(StartElementTree tree, Void ignore) { final Name treeName = tree.getName(); - final HtmlTag t = HtmlTag.get(treeName); + final HtmlTag t = HtmlTag.of(treeName); if (t == null) { env.messages.error(HTML, tree, "dc.tag.unknown", treeName); } else if (t.elemKind == ElemKind.HTML4) { @@ -472,7 +479,7 @@ public Void visitStartElement(StartElementTree tree, Void ignore) { } case IMG -> { - if (!top.attrs.contains(HtmlTag.Attr.ALT)) + if (!top.attrs.contains(HtmlAttr.ALT)) env.messages.error(ACCESSIBILITY, tree, "dc.no.alt.attr.for.image"); } } @@ -592,7 +599,7 @@ private int getHeadingRank(HtmlTag tag) { @Override @DefinedBy(Api.COMPILER_TREE) public Void visitEndElement(EndElementTree tree, Void ignore) { final Name treeName = tree.getName(); - final HtmlTag t = HtmlTag.get(treeName); + final HtmlTag t = HtmlTag.of(treeName); if (t == null) { env.messages.error(HTML, tree, "dc.tag.unknown", treeName); } else if (t.endKind == HtmlTag.EndKind.NONE) { @@ -605,7 +612,7 @@ public Void visitEndElement(EndElementTree tree, Void ignore) { switch (t) { case TABLE -> { if (!top.flags.contains(Flag.TABLE_IS_PRESENTATION) - && !top.attrs.contains(HtmlTag.Attr.SUMMARY) + && !top.attrs.contains(HtmlAttr.SUMMARY) && !top.flags.contains(Flag.TABLE_HAS_CAPTION)) { env.messages.error(ACCESSIBILITY, tree, "dc.no.summary.or.caption.for.table"); @@ -682,7 +689,7 @@ public Void visitAttribute(AttributeTree tree, Void ignore) { HtmlTag currTag = tagStack.peek().tag; if (currTag != null && currTag.elemKind != ElemKind.HTML4) { Name name = tree.getName(); - HtmlTag.Attr attr = currTag.getAttr(name); + HtmlAttr attr = currTag.getAttr(name); if (attr != null) { boolean first = tagStack.peek().attrs.add(attr); if (!first) @@ -758,19 +765,21 @@ public Void visitAttribute(AttributeTree tree, Void ignore) { String v = getAttrValue(tree); try { if (v == null || (!v.isEmpty() && Integer.parseInt(v) != 1)) { - env.messages.error(HTML, tree, "dc.attr.table.border.not.valid", attr); + env.messages.error(HTML, tree, "dc.attr.table.border.not.valid", + (v == null ? tree : v)); } } catch (NumberFormatException ex) { - env.messages.error(HTML, tree, "dc.attr.table.border.not.number", attr); + env.messages.error(HTML, tree, "dc.attr.table.border.not.number", v); } } else if (currTag == HtmlTag.IMG) { String v = getAttrValue(tree); try { if (v == null || (!v.isEmpty() && Integer.parseInt(v) != 0)) { - env.messages.error(HTML, tree, "dc.attr.img.border.not.valid", attr); + env.messages.error(HTML, tree, "dc.attr.img.border.not.valid", + (v == null ? tree : v)); } } catch (NumberFormatException ex) { - env.messages.error(HTML, tree, "dc.attr.img.border.not.number", attr); + env.messages.error(HTML, tree, "dc.attr.img.border.not.number", v); } } } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Comment.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Comment.java similarity index 94% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Comment.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Comment.java index aa563eeded7..77b456cc7ff 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Comment.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Comment.java @@ -23,14 +23,12 @@ * questions. */ -package jdk.javadoc.internal.doclets.formats.html.markup; +package jdk.javadoc.internal.html; import java.io.IOException; import java.io.Writer; import java.util.Objects; -import jdk.javadoc.internal.doclets.formats.html.Content; - /** * Class for generating a comment for HTML pages of javadoc output. */ diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Content.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Content.java similarity index 99% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Content.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Content.java index 13a2bb4c1bf..63142f83011 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Content.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Content.java @@ -23,7 +23,7 @@ * questions. */ -package jdk.javadoc.internal.doclets.formats.html; +package jdk.javadoc.internal.html; import java.io.IOException; import java.io.StringWriter; diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/ContentBuilder.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/ContentBuilder.java similarity index 96% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/ContentBuilder.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/ContentBuilder.java index b059b0fdb36..358b1591dfc 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/ContentBuilder.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/ContentBuilder.java @@ -23,7 +23,7 @@ * questions. */ -package jdk.javadoc.internal.doclets.formats.html.markup; +package jdk.javadoc.internal.html; import java.io.IOException; import java.io.Writer; @@ -31,8 +31,6 @@ import java.util.List; import java.util.Objects; -import jdk.javadoc.internal.doclets.formats.html.Content; - /** * A sequence of Content nodes. */ diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/DocType.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/DocType.java similarity index 96% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/DocType.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/DocType.java index dd4b50eb760..5e6bf502fe1 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/DocType.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/DocType.java @@ -23,7 +23,7 @@ * questions. */ -package jdk.javadoc.internal.doclets.formats.html.markup; +package jdk.javadoc.internal.html; /** * Supported DOCTYPE declarations. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Entity.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Entity.java similarity index 97% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Entity.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Entity.java index 542e081a583..fbc7e087616 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Entity.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Entity.java @@ -23,9 +23,7 @@ * questions. */ -package jdk.javadoc.internal.doclets.formats.html.markup; - -import jdk.javadoc.internal.doclets.formats.html.Content; +package jdk.javadoc.internal.html; import java.io.IOException; import java.io.Writer; diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlAttr.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlAttr.java new file mode 100644 index 00000000000..ccb193d6ab9 --- /dev/null +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlAttr.java @@ -0,0 +1,275 @@ +/* + * Copyright (c) 2010, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.javadoc.internal.html; + +import java.util.HashMap; +import java.util.Map; +import java.util.Locale; + + +/** + * An abstraction for the type-safe representation and use of HTML attributes. + * + * @apiNote + * Attributes are used when performing simple validity checks on HTML in + * documentation comments, and when generating HTML for output. + * + * @see HtmlTree#put(HtmlAttr, String) + */ +public enum HtmlAttr { + ABBR, + ACCESSKEY(true), + ALIGN, + ALINK, + ALT, + ARIA_ACTIVEDESCENDANT(true), + ARIA_CONTROLS(true), + ARIA_DESCRIBEDBY(true), + ARIA_EXPANDED(true), + ARIA_LABEL(true), + ARIA_LABELLEDBY(true), + ARIA_LEVEL(true), + ARIA_MULTISELECTABLE(true), + ARIA_ORIENTATION(true), + ARIA_OWNS(true), + ARIA_POSINSET(true), + ARIA_READONLY(true), + ARIA_REQUIRED(true), + ARIA_SELECTED(true), + ARIA_SETSIZE(true), + ARIA_SORT(true), + AUTOCAPITALIZE(true), + AUTOCOMPLETE, + AUTOFOCUS(true), + AXIS, + BACKGROUND, + BGCOLOR, + BORDER, + CELLPADDING, + CELLSPACING, + CHAR, + CHAROFF, + CHARSET, + CHECKED, + CITE, + CLASS(true), + CLEAR, + COLOR, + COLS, + COLSPAN, + COMPACT, + CONTENT, + CONTENTEDITABLE(true), + COORDS, + CROSSORIGIN, + DATA_COPIED, // custom HTML5 data attribute + DATETIME, + DIR(true), + DISABLED, + DRAGGABLE(true), + ENTERKEYHINT(true), + FACE, + FOR, + FORM, + FRAME, + FRAMEBORDER, + HEADERS, + HEIGHT, + HIDDEN(true), + HREF, + HSPACE, + HTTP_EQUIV, + ID(true), + INERT(true), + INPUTMODE(true), + IS(true), + ITEMID(true), + ITEMPROP(true), + ITEMREF(true), + ITEMSCOPE(true), + ITEMTYPE(true), + LANG(true), + LINK, + LONGDESC, + MARGINHEIGHT, + MARGINWIDTH, + NAME, + NONCE(true), + NOSHADE, + NOWRAP, + ONCLICK, + ONKEYDOWN, + ONLOAD, + PLACEHOLDER, + POPOVER(true), + PROFILE, + REL, + REV, + REVERSED, + ROLE(true), + ROWS, + ROWSPAN, + RULES, + SCHEME, + SCOPE, + SCROLLING, + SHAPE, + SIZE, + SPACE, + SPELLCHECK(true), + SRC, + START, + STYLE(true), + SUMMARY, + TABINDEX(true), + TARGET, + TEXT, + TITLE(true), + TRANSLATE(true), + TYPE, + VALIGN, + VALUE, + VERSION, + VLINK, + VSPACE, + WIDTH, + WRITINGSUGGESTIONS(true); + + /** + * The "external" name of this attribute. + */ + private final String name; + + /** + * Whether this is a global attribute, that can be used with all HTML tags. + */ + private final boolean isGlobal; + + /** + * An abstraction for the type-safe representation and use of ARIA roles. + * + * @see HtmlTree#setRole(Role) + */ + public enum Role { + + BANNER, + CONTENTINFO, + MAIN, + NAVIGATION, + REGION; + + private final String role; + + Role() { + role = name().toLowerCase(Locale.ROOT); + } + + public String toString() { + return role; + } + } + + /** + * An abstraction for the type-safe representation and use of "input" types. + * + * @see HtmlTree#INPUT(InputType, HtmlId) + * @see HtmlTree#INPUT(InputType, HtmlStyle) + */ + public enum InputType { + + CHECKBOX, + RESET, + TEXT; + + private final String type; + + InputType() { + type = name().toLowerCase(Locale.ROOT); + } + + public String toString() { + return type; + } + } + + /** + * An abstraction for the kind of an attribute in the context of an HTML tag. + * + * @see HtmlTag#attrs(AttrKind,HtmlAttr...) + */ + public enum AttrKind { + OK, + INVALID, + OBSOLETE, + HTML4 + } + + HtmlAttr() { + this(false); + } + + HtmlAttr(boolean flag) { + name = name().toLowerCase(Locale.ROOT).replace("_", "-"); + isGlobal = flag; + } + + /** + * {@return the "external" name of this attribute} + * The external name is the name of the enum member in lower case with {@code _} replaced by {@code -}. + */ + public String getName() { + return name; + } + + /** + * {@return whether this attribute is a global attribute, that may appear on all tags} + */ + public boolean isGlobal() { + return isGlobal; + } + + // FIXME: this is used in doclint Checker, when generating messages + @Override + public String toString() { + return name; + } + + private static final Map index = new HashMap<>(); + static { + for (HtmlAttr t : values()) { + index.put(t.getName(), t); + } + } + + /** + * {@return the attribute with the given name, or {@code null} if there is no known attribute} + * + * @param name the name + */ + public static HtmlAttr of(CharSequence name) { + return index.get(name.toString().toLowerCase(Locale.ROOT)); + } +} diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlId.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlId.java similarity index 96% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlId.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlId.java index 1e0db271ef5..a6af1438284 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlId.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlId.java @@ -23,7 +23,7 @@ * questions. */ -package jdk.javadoc.internal.doclets.formats.html.markup; +package jdk.javadoc.internal.html; /** * A type-safe wrapper around a {@code String}, for use as an "id" diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlStyle.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlStyle.java new file mode 100644 index 00000000000..9b77d5de8b4 --- /dev/null +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlStyle.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.javadoc.internal.html; + +/** + * An abstraction for the type-safe representation and use of CSS class names. + * + * @apiNote + * Despite the name, implementations of this interface provide values for the HTML + * {@code class} attribute, and not the HTML {@code style} attribute. + * This is to avoid confusion with the widespread use of the word "class" in the Java ecosystem, + * and the potential for clashes with methods called {@code setClass} instead of {@code setStyle}. + * + * @see HtmlTree#addStyle(HtmlStyle) + * @see HtmlTree#setStyle(HtmlStyle) + */ +public interface HtmlStyle { + String cssName(); +} diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/HtmlTag.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlTag.java similarity index 72% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/HtmlTag.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlTag.java index fa9d3ea578d..7b198a06631 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/HtmlTag.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlTag.java @@ -23,18 +23,18 @@ * questions. */ -package jdk.javadoc.internal.doclint; +package jdk.javadoc.internal.html; +import java.io.Serial; import java.util.EnumMap; import java.util.EnumSet; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.Set; import javax.lang.model.element.Name; -import com.sun.tools.javac.util.StringUtils; - -import static jdk.javadoc.internal.doclint.HtmlTag.Attr.*; +import static jdk.javadoc.internal.html.HtmlAttr.*; /** * Enum representing HTML tags. @@ -42,10 +42,6 @@ * The intent of this class is to embody the semantics of the current HTML standard, * to the extent supported/used by javadoc. * - * This class is derivative of {@link jdk.javadoc.internal.doclets.formats.html.markup.TagName}. - * Eventually, these two should be merged back together, and possibly made - * public. - * * @see HTML Living Standard * @see HTML 5 Specification * @see HTML 4.01 Specification @@ -88,6 +84,9 @@ public enum HtmlTag { BR(BlockType.INLINE, EndKind.NONE, attrs(AttrKind.HTML4, CLEAR)), + BUTTON(BlockType.INLINE, EndKind.REQUIRED, + attrs(AttrKind.OK, FORM, NAME, TYPE, VALUE)), + CAPTION(BlockType.TABLE_ITEM, EndKind.REQUIRED, EnumSet.of(Flag.ACCEPTS_INLINE, Flag.EXPECT_CONTENT), attrs(AttrKind.HTML4, ALIGN)), @@ -117,7 +116,10 @@ public boolean accepts(HtmlTag t) { DEL(BlockType.INLINE, EndKind.REQUIRED, EnumSet.of(Flag.EXPECT_CONTENT, Flag.NO_NEST), - attrs(AttrKind.OK, Attr.CITE, Attr.DATETIME)), + attrs(AttrKind.OK, HtmlAttr.CITE, HtmlAttr.DATETIME)), + + DETAILS(BlockType.BLOCK, EndKind.REQUIRED, + EnumSet.of(Flag.ACCEPTS_BLOCK, Flag.ACCEPTS_INLINE)), DFN(BlockType.INLINE, EndKind.REQUIRED, EnumSet.of(Flag.EXPECT_CONTENT, Flag.NO_NEST)), @@ -149,12 +151,10 @@ public boolean accepts(HtmlTag t) { EnumSet.of(Flag.ACCEPTS_BLOCK, Flag.ACCEPTS_INLINE)) { @Override public boolean accepts(HtmlTag t) { - switch (t) { - case HEADER: case FOOTER: case MAIN: - return false; - default: - return (t.blockType == BlockType.BLOCK) || (t.blockType == BlockType.INLINE); - } + return switch (t) { + case HEADER, FOOTER, MAIN -> false; + default -> (t.blockType == BlockType.BLOCK) || (t.blockType == BlockType.INLINE); + }; } }, @@ -186,12 +186,10 @@ public boolean accepts(HtmlTag t) { EnumSet.of(Flag.ACCEPTS_BLOCK, Flag.ACCEPTS_INLINE)) { @Override public boolean accepts(HtmlTag t) { - switch (t) { - case HEADER: case FOOTER: case MAIN: - return false; - default: - return (t.blockType == BlockType.BLOCK) || (t.blockType == BlockType.INLINE); - } + return switch (t) { + case HEADER, FOOTER, MAIN -> false; + default -> (t.blockType == BlockType.BLOCK) || (t.blockType == BlockType.INLINE); + }; } }, @@ -209,19 +207,25 @@ public boolean accepts(HtmlTag t) { attrs(AttrKind.OK, SRC, ALT, HEIGHT, WIDTH, CROSSORIGIN), attrs(AttrKind.HTML4, NAME, ALIGN, HSPACE, VSPACE, BORDER)), + INPUT(BlockType.INLINE, EndKind.NONE, + attrs(AttrKind.OK, NAME, TYPE, VALUE)), + INS(BlockType.INLINE, EndKind.REQUIRED, EnumSet.of(Flag.EXPECT_CONTENT, Flag.NO_NEST), - attrs(AttrKind.OK, Attr.CITE, Attr.DATETIME)), + attrs(AttrKind.OK, HtmlAttr.CITE, HtmlAttr.DATETIME)), KBD(BlockType.INLINE, EndKind.REQUIRED, EnumSet.of(Flag.EXPECT_CONTENT, Flag.NO_NEST)), + LABEL(BlockType.INLINE, EndKind.REQUIRED), + LI(BlockType.LIST_ITEM, EndKind.OPTIONAL, EnumSet.of(Flag.ACCEPTS_BLOCK, Flag.ACCEPTS_INLINE), attrs(AttrKind.OK, VALUE), attrs(AttrKind.HTML4, TYPE)), - LINK(BlockType.OTHER, EndKind.NONE), + LINK(BlockType.INLINE, EndKind.NONE, + attrs(AttrKind.OK, REL)), MAIN(BlockType.OTHER, EndKind.REQUIRED), @@ -262,12 +266,10 @@ public boolean accepts(HtmlTag t) { attrs(AttrKind.HTML4, WIDTH)) { @Override public boolean accepts(HtmlTag t) { - switch (t) { - case IMG: case BIG: case SMALL: case SUB: case SUP: - return false; - default: - return (t.blockType == BlockType.INLINE); - } + return switch (t) { + case IMG, BIG, SMALL, SUB, SUP -> false; + default -> (t.blockType == BlockType.INLINE); + }; } }, @@ -280,8 +282,8 @@ public boolean accepts(HtmlTag t) { SAMP(BlockType.INLINE, EndKind.REQUIRED, EnumSet.of(Flag.EXPECT_CONTENT, Flag.NO_NEST)), - SCRIPT(BlockType.OTHER, EndKind.REQUIRED, - attrs(AttrKind.OK, SRC)), + SCRIPT(BlockType.INLINE, EndKind.REQUIRED, + attrs(AttrKind.OK, SRC, TYPE)), SECTION(BlockType.BLOCK, EndKind.REQUIRED, EnumSet.of(Flag.ACCEPTS_BLOCK, Flag.ACCEPTS_INLINE)), @@ -303,25 +305,22 @@ public boolean accepts(HtmlTag t) { SUB(BlockType.INLINE, EndKind.REQUIRED, EnumSet.of(Flag.EXPECT_CONTENT, Flag.NO_NEST)), + SUMMARY(BlockType.BLOCK, EndKind.REQUIRED), + SUP(BlockType.INLINE, EndKind.REQUIRED, EnumSet.of(Flag.EXPECT_CONTENT, Flag.NO_NEST)), TABLE(BlockType.BLOCK, EndKind.REQUIRED, EnumSet.of(Flag.EXPECT_CONTENT), attrs(AttrKind.OK, BORDER), - attrs(AttrKind.HTML4, SUMMARY, CELLPADDING, CELLSPACING, - Attr.FRAME, RULES, WIDTH, ALIGN, BGCOLOR)) { + attrs(AttrKind.HTML4, HtmlAttr.SUMMARY, CELLPADDING, CELLSPACING, + HtmlAttr.FRAME, RULES, WIDTH, ALIGN, BGCOLOR)) { @Override public boolean accepts(HtmlTag t) { - switch (t) { - case CAPTION: - case COLGROUP: - case THEAD: case TBODY: case TFOOT: - case TR: // HTML 3.2 - return true; - default: - return false; - } + return switch (t) { + case CAPTION, COLGROUP, THEAD, TBODY, TFOOT, TR -> true; + default -> false; + }; } }, @@ -337,7 +336,7 @@ public boolean accepts(HtmlTag t) { TD(BlockType.TABLE_ITEM, EndKind.OPTIONAL, EnumSet.of(Flag.ACCEPTS_BLOCK, Flag.ACCEPTS_INLINE), attrs(AttrKind.OK, COLSPAN, ROWSPAN, HEADERS), - attrs(AttrKind.HTML4, AXIS, Attr.ABBR, SCOPE, ALIGN, VALIGN, CHAR, CHAROFF, + attrs(AttrKind.HTML4, AXIS, HtmlAttr.ABBR, SCOPE, ALIGN, VALIGN, CHAR, CHAROFF, WIDTH, BGCOLOR, HEIGHT, NOWRAP)), TEMPLATE(BlockType.BLOCK, EndKind.REQUIRED, @@ -353,7 +352,7 @@ public boolean accepts(HtmlTag t) { TH(BlockType.TABLE_ITEM, EndKind.OPTIONAL, EnumSet.of(Flag.ACCEPTS_BLOCK, Flag.ACCEPTS_INLINE), - attrs(AttrKind.OK, COLSPAN, ROWSPAN, HEADERS, SCOPE, Attr.ABBR), + attrs(AttrKind.OK, COLSPAN, ROWSPAN, HEADERS, SCOPE, HtmlAttr.ABBR), attrs(AttrKind.HTML4, WIDTH, BGCOLOR, HEIGHT, NOWRAP, AXIS, ALIGN, CHAR, CHAROFF, VALIGN)), THEAD(BlockType.TABLE_ITEM, EndKind.REQUIRED, @@ -408,6 +407,7 @@ public enum ElemKind { /** * Enum representing the type of HTML element. */ + // See JDK-8337586 for suggestions public enum BlockType { BLOCK, INLINE, @@ -432,150 +432,13 @@ public enum Flag { NO_NEST } - public enum Attr { - ABBR, - ACCESSKEY(true), - ALIGN, - ALINK, - ALT, - ARIA_ACTIVEDESCENDANT(true), - ARIA_CONTROLS(true), - ARIA_DESCRIBEDBY(true), - ARIA_EXPANDED(true), - ARIA_LABEL(true), - ARIA_LABELLEDBY(true), - ARIA_LEVEL(true), - ARIA_MULTISELECTABLE(true), - ARIA_OWNS(true), - ARIA_POSINSET(true), - ARIA_READONLY(true), - ARIA_REQUIRED(true), - ARIA_SELECTED(true), - ARIA_SETSIZE(true), - ARIA_SORT(true), - AUTOCAPITALIZE(true), - AUTOFOCUS(true), - AXIS, - BACKGROUND, - BGCOLOR, - BORDER, - CELLPADDING, - CELLSPACING, - CHAR, - CHAROFF, - CHARSET, - CITE, - CLASS(true), - CLEAR, - COLOR, - COLSPAN, - COMPACT, - CONTENTEDITABLE(true), - COORDS, - CROSSORIGIN, - DATETIME, - DIR(true), - DRAGGABLE(true), - ENTERKEYHINT(true), - FACE, - FRAME, - FRAMEBORDER, - HEADERS, - HEIGHT, - HIDDEN(true), - HREF, - HSPACE, - ID(true), - INERT(true), - INPUTMODE(true), - IS(true), - ITEMID(true), - ITEMPROP(true), - ITEMREF(true), - ITEMSCOPE(true), - ITEMTYPE(true), - LANG(true), - LINK, - LONGDESC, - MARGINHEIGHT, - MARGINWIDTH, - NAME, - NONCE(true), - NOSHADE, - NOWRAP, - POPOVER(true), - PROFILE, - REV, - REVERSED, - ROLE(true), - ROWSPAN, - RULES, - SCHEME, - SCOPE, - SCROLLING, - SHAPE, - SIZE, - SPACE, - SPELLCHECK(true), - SRC, - START, - STYLE(true), - SUMMARY, - TABINDEX(true), - TARGET, - TEXT, - TITLE(true), - TRANSLATE(true), - TYPE, - VALIGN, - VALUE, - VERSION, - VLINK, - VSPACE, - WIDTH, - WRITINGSUGGESTIONS(true); - - private final String name; - private final boolean isGlobal; - - Attr() { - this(false); - } - - Attr(boolean flag) { - name = StringUtils.toLowerCase(name().replace("_", "-")); - isGlobal = flag; - } - - public boolean isGlobal() { - return isGlobal; - } - - public String getText() { - return name; - } - - static final Map index = new HashMap<>(); - static { - for (Attr t: values()) { - index.put(t.getText(), t); - } - } - } - - public enum AttrKind { - OK, - INVALID, - OBSOLETE, - HTML4 - } - // This class exists to avoid warnings from using parameterized vararg type // Map in signature of HtmlTag constructor. - private static class AttrMap extends EnumMap { + private static class AttrMap extends EnumMap { + @Serial private static final long serialVersionUID = 0; AttrMap() { - super(Attr.class); + super(HtmlAttr.class); } } @@ -584,7 +447,7 @@ private static class AttrMap extends EnumMap { public final BlockType blockType; public final EndKind endKind; public final Set flags; - private final Map attrs; + private final Map attrs; HtmlTag(BlockType blockType, EndKind endKind, AttrMap... attrMaps) { this(ElemKind.OK, blockType, endKind, Set.of(), attrMaps); @@ -603,8 +466,8 @@ private static class AttrMap extends EnumMap { this.blockType = blockType; this.endKind = endKind; this.flags = flags; - this.attrs = new EnumMap<>(Attr.class); - for (Map m: attrMaps) + this.attrs = new EnumMap<>(HtmlAttr.class); + for (Map m: attrMaps) this.attrs.putAll(m); } @@ -615,20 +478,18 @@ public boolean accepts(HtmlTag t) { return (t.blockType == BlockType.BLOCK); } else if (flags.contains(Flag.ACCEPTS_INLINE)) { return (t.blockType == BlockType.INLINE); - } else - switch (blockType) { - case BLOCK: - case INLINE: - return (t.blockType == BlockType.INLINE); - case OTHER: + } else { + // any combination which could otherwise arrive here + // ought to have been handled in an overriding method + return switch (blockType) { + case BLOCK, INLINE -> (t.blockType == BlockType.INLINE); + case OTHER -> // OTHER tags are invalid in doc comments, and will be // reported separately, so silently accept/ignore any content - return true; - default: - // any combination which could otherwise arrive here - // ought to have been handled in an overriding method - throw new AssertionError(this + ":" + t); - } + true; + default -> throw new AssertionError(this + ":" + t); + }; + } } public boolean acceptsText() { @@ -637,16 +498,16 @@ public boolean acceptsText() { return accepts(B); } - public String getText() { - return StringUtils.toLowerCase(name()); + public String getName() { + return name().toLowerCase(Locale.ROOT).replace("_", "-"); } - public Attr getAttr(Name attrName) { - return Attr.index.get(StringUtils.toLowerCase(attrName.toString())); + public HtmlAttr getAttr(Name attrName) { + return HtmlAttr.of(attrName); } public AttrKind getAttrKind(Name attrName) { - Attr attr = getAttr(attrName); + HtmlAttr attr = getAttr(attrName); if (attr == null) { return AttrKind.INVALID; } @@ -655,20 +516,20 @@ public AttrKind getAttrKind(Name attrName) { attrs.getOrDefault(attr, AttrKind.INVALID); } - private static AttrMap attrs(AttrKind k, Attr... attrs) { + private static AttrMap attrs(AttrKind k, HtmlAttr... attrs) { AttrMap map = new AttrMap(); - for (Attr a: attrs) map.put(a, k); + for (HtmlAttr a : attrs) map.put(a, k); return map; } private static final Map index = new HashMap<>(); static { for (HtmlTag t: values()) { - index.put(t.getText(), t); + index.put(t.getName(), t); } } - public static HtmlTag get(Name tagName) { - return index.get(StringUtils.toLowerCase(tagName.toString())); + public static HtmlTag of(CharSequence tagName) { + return index.get(tagName.toString().toLowerCase(Locale.ROOT)); } } diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlTree.java similarity index 90% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlTree.java index 57adb966326..f6053751174 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/HtmlTree.java @@ -23,7 +23,7 @@ * questions. */ -package jdk.javadoc.internal.doclets.formats.html.markup; +package jdk.javadoc.internal.html; import java.io.IOException; import java.io.Writer; @@ -38,9 +38,6 @@ import java.util.Objects; import java.util.function.Function; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr.Role; -import jdk.javadoc.internal.doclets.formats.html.Content; - /** * A tree node representing an HTML element, containing the name of the element, * a collection of attributes, and content. @@ -63,10 +60,10 @@ public class HtmlTree extends Content { /** - * The name of the HTML element. + * The tag for the HTML element. * This value is never {@code null}. */ - public final TagName tagName; + public final HtmlTag tag; /** * The attributes for the HTML element. @@ -84,10 +81,10 @@ public class HtmlTree extends Content { * Creates an {@code HTMLTree} object representing an HTML element * with the given name. * - * @param tagName the name + * @param tag the name */ - public HtmlTree(TagName tagName) { - this.tagName = Objects.requireNonNull(tagName); + public HtmlTree(HtmlTag tag) { + this.tag = Objects.requireNonNull(tag); } /** @@ -131,7 +128,7 @@ public HtmlTree setTitle(Content body) { * @param role the role * @return this object */ - public HtmlTree setRole(Role role) { + public HtmlTree setRole(HtmlAttr.Role role) { return put(HtmlAttr.ROLE, role.toString()); } @@ -347,7 +344,7 @@ public static String encodeURL(String url) { * @return the element */ public static HtmlTree A(String ref, Content body) { - return new HtmlTree(TagName.A) + return new HtmlTree(HtmlTag.A) .put(HtmlAttr.HREF, encodeURL(ref)) .add(body); } @@ -363,7 +360,7 @@ public static HtmlTree A(String ref, Content body) { * @return the element */ public static HtmlTree A(URI ref, Content body) { - return new HtmlTree(TagName.A) + return new HtmlTree(HtmlTag.A) .put(HtmlAttr.HREF, ref.toASCIIString()) .add(body); } @@ -375,7 +372,7 @@ public static HtmlTree A(URI ref, Content body) { * @return the element */ public static HtmlTree CAPTION(Content body) { - return new HtmlTree(TagName.CAPTION) + return new HtmlTree(HtmlTag.CAPTION) .add(body); } @@ -386,7 +383,7 @@ public static HtmlTree CAPTION(Content body) { * @return the element */ public static HtmlTree CODE(Content body) { - return new HtmlTree(TagName.CODE) + return new HtmlTree(HtmlTag.CODE) .add(body); } @@ -397,7 +394,7 @@ public static HtmlTree CODE(Content body) { * @return the element */ public static HtmlTree DD(Content body) { - return new HtmlTree(TagName.DD) + return new HtmlTree(HtmlTag.DD) .add(body); } @@ -407,7 +404,7 @@ public static HtmlTree DD(Content body) { * @return the element */ public static HtmlTree DETAILS() { - return new HtmlTree(TagName.DETAILS); + return new HtmlTree(HtmlTag.DETAILS); } /** @@ -416,7 +413,7 @@ public static HtmlTree DETAILS() { * @return the element */ public static HtmlTree DETAILS(HtmlStyle style) { - return new HtmlTree(TagName.DETAILS) + return new HtmlTree(HtmlTag.DETAILS) .setStyle(style); } @@ -427,7 +424,7 @@ public static HtmlTree DETAILS(HtmlStyle style) { * @return the element */ public static HtmlTree DL(HtmlStyle style) { - return new HtmlTree(TagName.DL) + return new HtmlTree(HtmlTag.DL) .setStyle(style); } @@ -439,7 +436,7 @@ public static HtmlTree DL(HtmlStyle style) { * @return the element */ public static HtmlTree DL(HtmlStyle style, Content body) { - return new HtmlTree(TagName.DL) + return new HtmlTree(HtmlTag.DL) .setStyle(style) .add(body); } @@ -451,7 +448,7 @@ public static HtmlTree DL(HtmlStyle style, Content body) { * @return the element */ public static HtmlTree DIV(HtmlStyle style) { - return new HtmlTree(TagName.DIV) + return new HtmlTree(HtmlTag.DIV) .setStyle(style); } @@ -463,7 +460,7 @@ public static HtmlTree DIV(HtmlStyle style) { * @return the element */ public static HtmlTree DIV(HtmlStyle style, Content body) { - return new HtmlTree(TagName.DIV) + return new HtmlTree(HtmlTag.DIV) .setStyle(style) .add(body); } @@ -475,7 +472,7 @@ public static HtmlTree DIV(HtmlStyle style, Content body) { * @return the element */ public static HtmlTree DIV(Content body) { - return new HtmlTree(TagName.DIV) + return new HtmlTree(HtmlTag.DIV) .add(body); } @@ -486,7 +483,7 @@ public static HtmlTree DIV(Content body) { * @return the element */ public static HtmlTree DT(Content body) { - return new HtmlTree(TagName.DT) + return new HtmlTree(HtmlTag.DT) .add(body); } @@ -497,8 +494,8 @@ public static HtmlTree DT(Content body) { * @return the element */ public static HtmlTree FOOTER() { - return new HtmlTree(TagName.FOOTER) - .setRole(Role.CONTENTINFO); + return new HtmlTree(HtmlTag.FOOTER) + .setRole(HtmlAttr.Role.CONTENTINFO); } /** @@ -508,8 +505,8 @@ public static HtmlTree FOOTER() { * @return the element */ public static HtmlTree HEADER() { - return new HtmlTree(TagName.HEADER) - .setRole(Role.BANNER); + return new HtmlTree(HtmlTag.HEADER) + .setRole(HtmlAttr.Role.BANNER); } /** @@ -519,7 +516,7 @@ public static HtmlTree HEADER() { * @param body the content * @return the element */ - public static HtmlTree HEADING(TagName headingTag, Content body) { + public static HtmlTree HEADING(HtmlTag headingTag, Content body) { return new HtmlTree(checkHeading(headingTag)) .add(body); } @@ -532,7 +529,7 @@ public static HtmlTree HEADING(TagName headingTag, Content body) { * @param body the content * @return the element */ - public static HtmlTree HEADING(TagName headingTag, HtmlStyle style, Content body) { + public static HtmlTree HEADING(HtmlTag headingTag, HtmlStyle style, Content body) { return new HtmlTree(checkHeading(headingTag)) .setStyle(style) .add(body); @@ -547,7 +544,7 @@ public static HtmlTree HEADING(TagName headingTag, HtmlStyle style, Content body * @param body the content * @return the element */ - public static HtmlTree HEADING_TITLE(TagName headingTag, + public static HtmlTree HEADING_TITLE(HtmlTag headingTag, HtmlStyle style, Content body) { return new HtmlTree(checkHeading(headingTag)) .setTitle(body) @@ -563,13 +560,13 @@ public static HtmlTree HEADING_TITLE(TagName headingTag, * @param body the content * @return the element */ - public static HtmlTree HEADING_TITLE(TagName headingTag, Content body) { + public static HtmlTree HEADING_TITLE(HtmlTag headingTag, Content body) { return new HtmlTree(checkHeading(headingTag)) .setTitle(body) .add(body); } - private static TagName checkHeading(TagName headingTag) { + private static HtmlTag checkHeading(HtmlTag headingTag) { return switch (headingTag) { case H1, H2, H3, H4, H5, H6 -> headingTag; default -> throw new IllegalArgumentException(headingTag.toString()); @@ -586,7 +583,7 @@ private static TagName checkHeading(TagName headingTag) { * @return the {@code HTML} element */ public static HtmlTree HTML(String lang, Content head, Content body) { - return new HtmlTree(TagName.HTML) + return new HtmlTree(HtmlTag.HTML) .put(HtmlAttr.LANG, lang) .add(head) .add(body); @@ -601,7 +598,7 @@ public static HtmlTree HTML(String lang, Content head, Content body) { * @return the element */ public static HtmlTree INPUT(HtmlAttr.InputType type, HtmlId id) { - return new HtmlTree(TagName.INPUT) + return new HtmlTree(HtmlTag.INPUT) .put(HtmlAttr.TYPE, type.toString()) .setId(id) .put(HtmlAttr.DISABLED, ""); @@ -615,7 +612,7 @@ public static HtmlTree INPUT(HtmlAttr.InputType type, HtmlId id) { * @return the element */ public static HtmlTree INPUT(HtmlAttr.InputType type, HtmlStyle style) { - return new HtmlTree(TagName.INPUT) + return new HtmlTree(HtmlTag.INPUT) .put(HtmlAttr.TYPE, type.toString()) .setStyle(style) .put(HtmlAttr.DISABLED, ""); @@ -628,7 +625,7 @@ public static HtmlTree INPUT(HtmlAttr.InputType type, HtmlStyle style) { * @return the element */ public static HtmlTree LABEL(String forLabel, Content body) { - return new HtmlTree(TagName.LABEL) + return new HtmlTree(HtmlTag.LABEL) .put(HtmlAttr.FOR, forLabel) .add(body); } @@ -640,7 +637,7 @@ public static HtmlTree LABEL(String forLabel, Content body) { * @return the element */ public static HtmlTree LI(Content body) { - return new HtmlTree(TagName.LI) + return new HtmlTree(HtmlTag.LI) .add(body); } @@ -666,7 +663,7 @@ public static HtmlTree LI(HtmlStyle style, Content body) { * @return the element */ public static HtmlTree LINK(String rel, String type, String href, String title) { - return new HtmlTree(TagName.LINK) + return new HtmlTree(HtmlTag.LINK) .put(HtmlAttr.REL, rel) .put(HtmlAttr.TYPE, type) .put(HtmlAttr.HREF, href) @@ -680,8 +677,8 @@ public static HtmlTree LINK(String rel, String type, String href, String title) * @return the element */ public static HtmlTree MAIN() { - return new HtmlTree(TagName.MAIN) - .setRole(Role.MAIN); + return new HtmlTree(HtmlTag.MAIN) + .setRole(HtmlAttr.Role.MAIN); } /** @@ -691,8 +688,8 @@ public static HtmlTree MAIN() { * @return the element */ public static HtmlTree MAIN(Content body) { - return new HtmlTree(TagName.MAIN) - .setRole(Role.MAIN) + return new HtmlTree(HtmlTag.MAIN) + .setRole(HtmlAttr.Role.MAIN) .add(body); } @@ -705,7 +702,7 @@ public static HtmlTree MAIN(Content body) { * @return the element */ public static HtmlTree META(String httpEquiv, String content, String charset) { - return new HtmlTree(TagName.META) + return new HtmlTree(HtmlTag.META) .put(HtmlAttr.HTTP_EQUIV, httpEquiv) .put(HtmlAttr.CONTENT, content + "; charset=" + charset); } @@ -718,7 +715,7 @@ public static HtmlTree META(String httpEquiv, String content, String charset) { * @return the element */ public static HtmlTree META(String name, String content) { - return new HtmlTree(TagName.META) + return new HtmlTree(HtmlTag.META) .put(HtmlAttr.NAME, name) .put(HtmlAttr.CONTENT, content); } @@ -730,8 +727,8 @@ public static HtmlTree META(String name, String content) { * @return the element */ public static HtmlTree NAV() { - return new HtmlTree(TagName.NAV) - .setRole(Role.NAVIGATION); + return new HtmlTree(HtmlTag.NAV) + .setRole(HtmlAttr.Role.NAVIGATION); } /** @@ -741,7 +738,7 @@ public static HtmlTree NAV() { * @return the element */ public static HtmlTree NOSCRIPT(Content body) { - return new HtmlTree(TagName.NOSCRIPT) + return new HtmlTree(HtmlTag.NOSCRIPT) .add(body); } @@ -752,7 +749,7 @@ public static HtmlTree NOSCRIPT(Content body) { * @return the element */ public static HtmlTree OL(HtmlStyle style) { - return new HtmlTree(TagName.OL) + return new HtmlTree(HtmlTag.OL) .setStyle(style); } @@ -763,7 +760,7 @@ public static HtmlTree OL(HtmlStyle style) { * @return the element */ public static HtmlTree P(Content body) { - return new HtmlTree(TagName.P) + return new HtmlTree(HtmlTag.P) .add(body); } @@ -786,7 +783,7 @@ public static HtmlTree P(HtmlStyle style, Content body) { * @return the element */ public static HtmlTree PRE(Content body) { - return new HtmlTree(TagName.PRE).add(body); + return new HtmlTree(HtmlTag.PRE).add(body); } /** @@ -797,7 +794,7 @@ public static HtmlTree PRE(Content body) { * @return the element */ public static HtmlTree SCRIPT(String src) { - return new HtmlTree(TagName.SCRIPT) + return new HtmlTree(HtmlTag.SCRIPT) .put(HtmlAttr.TYPE, "text/javascript") .put(HtmlAttr.SRC, src); @@ -810,7 +807,7 @@ public static HtmlTree SCRIPT(String src) { * @return the element */ public static HtmlTree SECTION(HtmlStyle style) { - return new HtmlTree(TagName.SECTION) + return new HtmlTree(HtmlTag.SECTION) .setStyle(style); } @@ -822,7 +819,7 @@ public static HtmlTree SECTION(HtmlStyle style) { * @return the element */ public static HtmlTree SECTION(HtmlStyle style, Content body) { - return new HtmlTree(TagName.SECTION) + return new HtmlTree(HtmlTag.SECTION) .setStyle(style) .add(body); } @@ -834,7 +831,7 @@ public static HtmlTree SECTION(HtmlStyle style, Content body) { * @return the element */ public static HtmlTree SMALL(Content body) { - return new HtmlTree(TagName.SMALL) + return new HtmlTree(HtmlTag.SMALL) .add(body); } @@ -845,7 +842,7 @@ public static HtmlTree SMALL(Content body) { * @return the element */ public static HtmlTree SPAN(Content body) { - return new HtmlTree(TagName.SPAN) + return new HtmlTree(HtmlTag.SPAN) .add(body); } @@ -856,7 +853,7 @@ public static HtmlTree SPAN(Content body) { * @return the element */ public static HtmlTree SPAN(HtmlStyle styleClass) { - return new HtmlTree(TagName.SPAN) + return new HtmlTree(HtmlTag.SPAN) .setStyle(styleClass); } @@ -880,7 +877,7 @@ public static HtmlTree SPAN(HtmlStyle styleClass, Content body) { * @return the element */ public static HtmlTree SPAN_ID(HtmlId id, Content body) { - return new HtmlTree(TagName.SPAN) + return new HtmlTree(HtmlTag.SPAN) .setId(id) .add(body); } @@ -894,7 +891,7 @@ public static HtmlTree SPAN_ID(HtmlId id, Content body) { * @return the element */ public static HtmlTree SPAN(HtmlId id, HtmlStyle style, Content body) { - return new HtmlTree(TagName.SPAN) + return new HtmlTree(HtmlTag.SPAN) .setId(id) .setStyle(style) .add(body); @@ -907,7 +904,7 @@ public static HtmlTree SPAN(HtmlId id, HtmlStyle style, Content body) { * @return the element */ public static HtmlTree SUMMARY(Content body) { - return new HtmlTree(TagName.SUMMARY) + return new HtmlTree(HtmlTag.SUMMARY) .add(body); } @@ -918,7 +915,7 @@ public static HtmlTree SUMMARY(Content body) { * @return the element */ public static HtmlTree SUP(Content body) { - return new HtmlTree(TagName.SUP) + return new HtmlTree(HtmlTag.SUP) .add(body); } @@ -930,7 +927,7 @@ public static HtmlTree SUP(Content body) { * @return the element */ public static HtmlTree TD(HtmlStyle style, Content body) { - return new HtmlTree(TagName.TD) + return new HtmlTree(HtmlTag.TD) .setStyle(style) .add(body); } @@ -944,7 +941,7 @@ public static HtmlTree TD(HtmlStyle style, Content body) { * @return the element */ public static HtmlTree TH(HtmlStyle style, String scope, Content body) { - return new HtmlTree(TagName.TH) + return new HtmlTree(HtmlTag.TH) .setStyle(style) .put(HtmlAttr.SCOPE, scope) .add(body); @@ -958,7 +955,7 @@ public static HtmlTree TH(HtmlStyle style, String scope, Content body) { * @return the element */ public static HtmlTree TH(String scope, Content body) { - return new HtmlTree(TagName.TH) + return new HtmlTree(HtmlTag.TH) .put(HtmlAttr.SCOPE, scope) .add(body); } @@ -970,7 +967,7 @@ public static HtmlTree TH(String scope, Content body) { * @return the element */ public static HtmlTree TITLE(String body) { - return new HtmlTree(TagName.TITLE) + return new HtmlTree(HtmlTag.TITLE) .add(body); } @@ -981,7 +978,7 @@ public static HtmlTree TITLE(String body) { * @return the element */ public static HtmlTree UL(HtmlStyle style) { - return new HtmlTree(TagName.UL) + return new HtmlTree(HtmlTag.UL) .setStyle(style); } @@ -994,7 +991,7 @@ public static HtmlTree UL(HtmlStyle style) { * @return the element */ public static HtmlTree UL(HtmlStyle style, Content first, Content... more) { - var ul = new HtmlTree(TagName.UL) + var ul = new HtmlTree(HtmlTag.UL) .setStyle(style); ul.add(first); for (Content c : more) { @@ -1013,7 +1010,7 @@ public static HtmlTree UL(HtmlStyle style, Content first, Content... more) { * @return the element */ public static HtmlTree UL(HtmlStyle style, Collection items, Function mapper) { - return new HtmlTree(TagName.UL) + return new HtmlTree(HtmlTag.UL) .setStyle(style) .addAll(items, mapper); } @@ -1025,7 +1022,7 @@ public boolean isEmpty() { @Override public boolean isPhrasingContent() { - return tagName.phrasingContent; + return tag.blockType == HtmlTag.BlockType.INLINE; } /** @@ -1069,7 +1066,7 @@ public boolean isDiscardable() { return !isVoid() && !hasContent() && !hasAttr(HtmlAttr.ID) - && tagName != TagName.SCRIPT; + && tag != HtmlTag.SCRIPT; } /** @@ -1080,22 +1077,22 @@ public boolean isDiscardable() { * @see Phrasing Content */ public boolean isInline() { - return switch (tagName) { + return switch (tag) { case A, BUTTON, BR, CODE, EM, I, IMG, LABEL, SMALL, SPAN, STRONG, SUB, SUP, WBR -> true; default -> false; }; } /** - * Returns whether or not this is a void element. + * Returns whether this is a void element. * - * @return whether or not this is a void element + * @return whether this is a void element * * @see Void Elements */ public boolean isVoid() { - return switch (tagName) { - case BR, HR, IMG, INPUT, LINK, META, WBR -> true; + return switch (tag) { + case BR, COL, FRAME, HR, IMG, INPUT, LINK, META, WBR -> true; default -> false; }; } @@ -1106,14 +1103,14 @@ public boolean write(Writer out, String newline, boolean atNewline) throws IOExc if (!isInline && !atNewline) { out.write(newline); } - String tagString = tagName.toString(); + String tagString = tag.getName(); out.write("<"); out.write(tagString); for (var attr : attrs.entrySet()) { var key = attr.getKey(); var value = attr.getValue(); out.write(" "); - out.write(key.toString()); + out.write(key.getName()); if (!value.isEmpty()) { out.write("=\""); out.write(value.replace("\"", """)); diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/ListBuilder.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/ListBuilder.java similarity index 97% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/ListBuilder.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/ListBuilder.java index 603e5717895..05c9f8388db 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/ListBuilder.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/ListBuilder.java @@ -23,7 +23,7 @@ * questions. */ -package jdk.javadoc.internal.doclets.formats.html.markup; +package jdk.javadoc.internal.html; import java.io.IOException; import java.io.Writer; @@ -32,8 +32,6 @@ import java.util.NoSuchElementException; import java.util.Objects; -import jdk.javadoc.internal.doclets.formats.html.Content; - /** * A utility class for building nested HTML lists. This class is implemented as a * stack of nested list/item pairs where list items are added to the inner-most diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/RawHtml.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/RawHtml.java similarity index 96% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/RawHtml.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/RawHtml.java index a71ea7831da..1c9f60f69e8 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/RawHtml.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/RawHtml.java @@ -23,15 +23,13 @@ * questions. */ -package jdk.javadoc.internal.doclets.formats.html.markup; +package jdk.javadoc.internal.html; import java.io.IOException; import java.io.Writer; import java.util.regex.Matcher; import java.util.regex.Pattern; -import jdk.javadoc.internal.doclets.formats.html.Content; - /** * Class for generating raw HTML content to be added to HTML pages of javadoc output. */ @@ -147,8 +145,8 @@ public boolean isPhrasingContent() { Matcher m = tag.matcher(rawHtmlContent); while (m.find()) { try { - var tn = TagName.of(m.group("tag")); - if (!tn.phrasingContent) { + var tn = HtmlTag.of(m.group("tag")); + if (tn.blockType != HtmlTag.BlockType.INLINE) { return false; } } catch (IllegalArgumentException e) { diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Script.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Script.java similarity index 97% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Script.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Script.java index f194aa5527a..a5fc1521509 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Script.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Script.java @@ -23,13 +23,11 @@ * questions. */ -package jdk.javadoc.internal.doclets.formats.html.markup; +package jdk.javadoc.internal.html; import java.io.IOException; import java.io.Writer; -import jdk.javadoc.internal.doclets.formats.html.Content; - /** * A builder for HTML script elements. */ @@ -100,7 +98,7 @@ public Script appendStringLiteral(CharSequence text, char quoteChar) { */ public Content asContent() { ScriptContent scriptContent = new ScriptContent(sb); - var script = new HtmlTree(TagName.SCRIPT) { + var script = new HtmlTree(HtmlTag.SCRIPT) { @Override public HtmlTree add(Content c) { if (c != scriptContent) { diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Text.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Text.java similarity index 97% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Text.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Text.java index e05ca73001a..78bb5cb89e6 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Text.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/Text.java @@ -23,13 +23,11 @@ * questions. */ -package jdk.javadoc.internal.doclets.formats.html.markup; +package jdk.javadoc.internal.html; import java.io.IOException; import java.io.Writer; -import jdk.javadoc.internal.doclets.formats.html.Content; - /** * Class for containing immutable string content for HTML tags of javadoc output. * Newlines are always represented by {@code \n}. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/TextBuilder.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/TextBuilder.java similarity index 96% rename from src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/TextBuilder.java rename to src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/TextBuilder.java index 6c4d66024c5..f27e5922043 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/TextBuilder.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/html/TextBuilder.java @@ -23,13 +23,11 @@ * questions. */ -package jdk.javadoc.internal.doclets.formats.html.markup; +package jdk.javadoc.internal.html; import java.io.IOException; import java.io.Writer; -import jdk.javadoc.internal.doclets.formats.html.Content; - /** * Class for generating string content for HTML tags of javadoc output. * The content is mutable to the extent that additional content may be added. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/package-info.java b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/package-info.java index 4f5601b9600..dffb34f1e93 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/package-info.java +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/package-info.java @@ -68,9 +68,9 @@ * library in the * {@link jdk.javadoc.internal.doclets.formats.html.markup formats.html.markup} package, * to create trees (or acyclic graphs) of - * {@linkplain jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree HTML tree nodes}. + * {@linkplain jdk.javadoc.internal.html.HtmlTree HTML tree nodes}. * Apart from using a common format-neutral supertype, - * {@link jdk.javadoc.internal.doclets.formats.html.Content}, the {@code markup} library + * {@link jdk.javadoc.internal.html.Content}, the {@code markup} library * is mostly independent of the rest of the javadoc software stack. * *

Toolkit diff --git a/test/langtools/jdk/javadoc/doclet/checkStylesheetClasses/CheckStylesheetClasses.java b/test/langtools/jdk/javadoc/doclet/checkStylesheetClasses/CheckStylesheetClasses.java index b26f2afe96b..f103ef4e608 100644 --- a/test/langtools/jdk/javadoc/doclet/checkStylesheetClasses/CheckStylesheetClasses.java +++ b/test/langtools/jdk/javadoc/doclet/checkStylesheetClasses/CheckStylesheetClasses.java @@ -26,7 +26,8 @@ * @test * @bug 8267574 * @summary check stylesheet names against HtmlStyle - * @modules jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.markup + * @modules jdk.javadoc/jdk.javadoc.internal.html + * jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.markup * jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.resources:open */ @@ -44,10 +45,11 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; +import jdk.javadoc.internal.html.HtmlStyle; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyles; /** - * This test compares the set of CSS class names defined in HtmlStyle + * This test compares the set of CSS class names defined in HtmlStyles * and other files (such as search.js) against the set of CSS class names * defined in the main stylesheet.css provided by the doclet. * @@ -185,7 +187,7 @@ void error(String message) { } Set getHtmlStyleNames() { - return Arrays.stream(HtmlStyle.values()) + return Arrays.stream(HtmlStyles.values()) .map(HtmlStyle::cssName) .collect(Collectors.toCollection(TreeSet::new)); } @@ -193,7 +195,7 @@ Set getHtmlStyleNames() { Set getStylesheetNames() throws IOException { Set names = new TreeSet<>(); String stylesheet = "/jdk/javadoc/internal/doclets/formats/html/resources/stylesheet.css"; - URL url = HtmlStyle.class.getResource(stylesheet); + URL url = HtmlStyles.class.getResource(stylesheet); readStylesheet(url, names); return names; } diff --git a/test/langtools/jdk/javadoc/doclet/testHtmlDocument/TestHtmlDocument.java b/test/langtools/jdk/javadoc/doclet/testHtmlDocument/TestHtmlDocument.java index 7472a2c397e..9a9b20541c8 100644 --- a/test/langtools/jdk/javadoc/doclet/testHtmlDocument/TestHtmlDocument.java +++ b/test/langtools/jdk/javadoc/doclet/testHtmlDocument/TestHtmlDocument.java @@ -28,6 +28,7 @@ * @library ../../lib * @modules jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.markup * jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.util + * jdk.javadoc/jdk.javadoc.internal.html * jdk.javadoc/jdk.javadoc.internal.tool * @build javadoc.tester.* * @run main TestHtmlDocument @@ -35,6 +36,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.*; +import jdk.javadoc.internal.html.*; /** * The class reads each file, complete with newlines, into a string to easily @@ -68,19 +70,19 @@ public void test() { // Generate the HTML output using the HTML document generation within doclet. public static String generateHtmlTree() { // Document type for the HTML document - HtmlTree html = new HtmlTree(TagName.HTML); - HtmlTree head = new HtmlTree(TagName.HEAD); - HtmlTree title = new HtmlTree(TagName.TITLE); + HtmlTree html = new HtmlTree(HtmlTag.HTML); + HtmlTree head = new HtmlTree(HtmlTag.HEAD); + HtmlTree title = new HtmlTree(HtmlTag.TITLE); // String content within the document TextBuilder titleContent = new TextBuilder("Markup test"); title.add(titleContent); head.add(title); // Test META tag - HtmlTree meta = new HtmlTree(TagName.META); + HtmlTree meta = new HtmlTree(HtmlTag.META); meta.put(HtmlAttr.NAME, "keywords"); meta.put(HtmlAttr.CONTENT, "testContent"); head.add(meta); - HtmlTree link = new HtmlTree(TagName.LINK); + HtmlTree link = new HtmlTree(HtmlTag.LINK); link.put(HtmlAttr.REL, "testRel"); link.put(HtmlAttr.HREF, "testLink.html"); head.add(link); @@ -88,10 +90,10 @@ public static String generateHtmlTree() { // Comment within the document Comment bodyMarker = new Comment("======== START OF BODY ========"); html.add(bodyMarker); - HtmlTree body = new HtmlTree(TagName.BODY); + HtmlTree body = new HtmlTree(HtmlTag.BODY); Comment pMarker = new Comment("======== START OF PARAGRAPH ========"); body.add(pMarker); - HtmlTree p = new HtmlTree(TagName.P); + HtmlTree p = new HtmlTree(HtmlTag.P); TextBuilder bodyContent = new TextBuilder( "This document is generated from sample source code and HTML " + "files with examples of a wide variety of Java language constructs: packages, " + @@ -104,24 +106,24 @@ public static String generateHtmlTree() { TextBuilder pContent = new TextBuilder(" to out a link."); p.add(pContent); body.add(p); - HtmlTree p1 = new HtmlTree(TagName.P); + HtmlTree p1 = new HtmlTree(HtmlTag.P); // Test another version of A tag. - HtmlTree anchor = new HtmlTree(TagName.A); + HtmlTree anchor = new HtmlTree(HtmlTag.A); anchor.put(HtmlAttr.HREF, "testLink.html"); anchor.put(HtmlAttr.ID, "Another version of a tag"); p1.add(anchor); body.add(p1); // Test for empty tags. - HtmlTree dl = new HtmlTree(TagName.DL); + HtmlTree dl = new HtmlTree(HtmlTag.DL); html.add(dl); // Test for empty nested tags. - HtmlTree dlTree = new HtmlTree(TagName.DL); - dlTree.add(new HtmlTree(TagName.DT)); - dlTree.add(new HtmlTree (TagName.DD)); + HtmlTree dlTree = new HtmlTree(HtmlTag.DL); + dlTree.add(new HtmlTree(HtmlTag.DT)); + dlTree.add(new HtmlTree (HtmlTag.DD)); html.add(dlTree); - HtmlTree dlDisplay = new HtmlTree(TagName.DL); - dlDisplay.add(new HtmlTree(TagName.DT)); - HtmlTree dd = new HtmlTree (TagName.DD); + HtmlTree dlDisplay = new HtmlTree(HtmlTag.DL); + dlDisplay.add(new HtmlTree(HtmlTag.DT)); + HtmlTree dd = new HtmlTree (HtmlTag.DD); TextBuilder ddContent = new TextBuilder("Test DD"); dd.add(ddContent); dlDisplay.add(dd); @@ -130,7 +132,7 @@ public static String generateHtmlTree() { body.add(emptyString); Comment emptyComment = new Comment(""); body.add(emptyComment); - HtmlTree hr = new HtmlTree(TagName.HR); + HtmlTree hr = new HtmlTree(HtmlTag.HR); body.add(hr); html.add(body); HtmlDocument htmlDoc = new HtmlDocument(html); diff --git a/test/langtools/jdk/javadoc/doclet/testHtmlTableStyles/TestHtmlTableStyles.java b/test/langtools/jdk/javadoc/doclet/testHtmlTableStyles/TestHtmlTableStyles.java index 2225de2f9c5..c11e6d5f720 100644 --- a/test/langtools/jdk/javadoc/doclet/testHtmlTableStyles/TestHtmlTableStyles.java +++ b/test/langtools/jdk/javadoc/doclet/testHtmlTableStyles/TestHtmlTableStyles.java @@ -50,7 +50,7 @@ public void test() { checkOutput(Output.OUT, true, "attribute not supported in HTML5: summary", """ - attribute "border" for table only accepts "" or "1": BORDER""", + attribute "border" for table only accepts "" or "1": border""", "attribute not supported in HTML5: cellpadding", "attribute not supported in HTML5: cellspacing", "attribute not supported in HTML5: align"); diff --git a/test/langtools/jdk/javadoc/doclet/testVoidHtmlElements/TestVoidHtmlElements.java b/test/langtools/jdk/javadoc/doclet/testVoidHtmlElements/TestVoidHtmlElements.java index 6229533af4a..bd44fe88141 100644 --- a/test/langtools/jdk/javadoc/doclet/testVoidHtmlElements/TestVoidHtmlElements.java +++ b/test/langtools/jdk/javadoc/doclet/testVoidHtmlElements/TestVoidHtmlElements.java @@ -25,13 +25,12 @@ * @test * @bug 8266856 * @modules jdk.javadoc/jdk.javadoc.internal.doclint - * jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.markup + * jdk.javadoc/jdk.javadoc.internal.html * @run main TestVoidHtmlElements */ -import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree; -import jdk.javadoc.internal.doclets.formats.html.markup.TagName; -import jdk.javadoc.internal.doclint.HtmlTag; +import jdk.javadoc.internal.html.HtmlTree; +import jdk.javadoc.internal.html.HtmlTag; public class TestVoidHtmlElements { @@ -42,9 +41,8 @@ public static void main(String[] args) { // check that the definition of void-ness is the same. for (HtmlTag htmlTag : HtmlTag.values()) { try { - TagName tagName = TagName.valueOf(htmlTag.name()); checks++; - check(htmlTag, tagName); + check(htmlTag); } catch (IllegalArgumentException e) { // no matching TagName } @@ -56,8 +54,8 @@ public static void main(String[] args) { System.out.println(checks + " checks passed"); } - private static void check(HtmlTag htmlTag, TagName tagName) { - boolean elementIsVoid = new HtmlTree(tagName).isVoid(); + private static void check(HtmlTag htmlTag) { + boolean elementIsVoid = new HtmlTree(htmlTag).isVoid(); boolean elementHasNoEndTag = htmlTag.endKind == HtmlTag.EndKind.NONE; if (elementIsVoid != elementHasNoEndTag) { throw new AssertionError(htmlTag + ", " + elementIsVoid + ", " + elementHasNoEndTag); diff --git a/test/langtools/tools/doclint/CoverageExtras.java b/test/langtools/tools/doclint/CoverageExtras.java index 5a6c90c4b74..55ac63d6ab3 100644 --- a/test/langtools/tools/doclint/CoverageExtras.java +++ b/test/langtools/tools/doclint/CoverageExtras.java @@ -26,13 +26,15 @@ * @bug 8006263 * @summary Supplementary test cases needed for doclint * @modules jdk.javadoc/jdk.javadoc.internal.doclint + * jdk.javadoc/jdk.javadoc.internal.html */ import java.util.Objects; import jdk.javadoc.internal.doclint.Checker; -import jdk.javadoc.internal.doclint.HtmlTag; import jdk.javadoc.internal.doclint.Messages; +import jdk.javadoc.internal.html.HtmlAttr; +import jdk.javadoc.internal.html.HtmlTag; public class CoverageExtras { public static void main(String... args) { @@ -41,8 +43,8 @@ public static void main(String... args) { void run() { check(HtmlTag.A, HtmlTag.valueOf("A"), HtmlTag.values()); - check(HtmlTag.Attr.ABBR, HtmlTag.Attr.valueOf("ABBR"), HtmlTag.Attr.values()); - check(HtmlTag.AttrKind.INVALID, HtmlTag.AttrKind.valueOf("INVALID"), HtmlTag.AttrKind.values()); + check(HtmlAttr.ABBR, HtmlAttr.valueOf("ABBR"), HtmlAttr.values()); + check(HtmlAttr.AttrKind.INVALID, HtmlAttr.AttrKind.valueOf("INVALID"), HtmlAttr.AttrKind.values()); check(HtmlTag.BlockType.BLOCK, HtmlTag.BlockType.valueOf("BLOCK"), HtmlTag.BlockType.values()); check(HtmlTag.EndKind.NONE, HtmlTag.EndKind.valueOf("NONE"), HtmlTag.EndKind.values()); check(HtmlTag.Flag.EXPECT_CONTENT, HtmlTag.Flag.valueOf("EXPECT_CONTENT"), HtmlTag.Flag.values()); diff --git a/test/langtools/tools/doclint/html/HtmlVersionTagsAttrsTest.java b/test/langtools/tools/doclint/html/HtmlVersionTagsAttrsTest.java index 3b8f29d2d62..6ef32c881bb 100644 --- a/test/langtools/tools/doclint/html/HtmlVersionTagsAttrsTest.java +++ b/test/langtools/tools/doclint/html/HtmlVersionTagsAttrsTest.java @@ -100,10 +100,6 @@ public void SupportedAttrs_html5() { } * * hgroup no longer supported in HTML5. * - *
- * Summary - *

Details and Summary no longer supported in HTML5

- *
*/ public void notSupportedTags_html5() { } @@ -152,6 +148,10 @@ public void notSupportedTags_html5() { } * *

Test current time is at night

*

Testtext

+ *
+ * Summary + *

Details

+ *
*/ public void SupportedTags_html5() { } diff --git a/test/langtools/tools/doclint/html/HtmlVersionTagsAttrsTest.out b/test/langtools/tools/doclint/html/HtmlVersionTagsAttrsTest.out index 69b31d53831..badd9ea9982 100644 --- a/test/langtools/tools/doclint/html/HtmlVersionTagsAttrsTest.out +++ b/test/langtools/tools/doclint/html/HtmlVersionTagsAttrsTest.out @@ -226,7 +226,7 @@ HtmlVersionTagsAttrsTest.java:67: error: attribute not supported in HTML5: width HtmlVersionTagsAttrsTest.java:68: error: attribute not supported in HTML5: name * Anchor Test ^ -HtmlVersionTagsAttrsTest.java:69: error: attribute "border" for table only accepts "" or "1": BORDER +HtmlVersionTagsAttrsTest.java:69: error: attribute "border" for table only accepts "" or "1": 0 * ^ HtmlVersionTagsAttrsTest.java:71: error: no caption for table @@ -259,19 +259,7 @@ HtmlVersionTagsAttrsTest.java:97: error: unknown tag: hgroup HtmlVersionTagsAttrsTest.java:100: error: unknown tag: hgroup * ^ -HtmlVersionTagsAttrsTest.java:103: error: unknown tag: details - *
- ^ -HtmlVersionTagsAttrsTest.java:104: error: unknown tag: summary - * Summary - ^ -HtmlVersionTagsAttrsTest.java:104: error: unknown tag: summary - * Summary - ^ -HtmlVersionTagsAttrsTest.java:106: error: unknown tag: details - *
- ^ -HtmlVersionTagsAttrsTest.java:129: error: element not allowed in documentation comments:
+HtmlVersionTagsAttrsTest.java:125: error: element not allowed in documentation comments:
*
^ HtmlVersionTagsAttrsTest.java:161: error: heading not found for @@ -298,7 +286,7 @@ HtmlVersionTagsAttrsTest.java:181: error: tag not allowed here:
HtmlVersionTagsAttrsTest.java:184: error: element not allowed in documentation comments:
*
^ -HtmlVersionTagsAttrsTest.java:189: error: attribute "border" for table only accepts "" or "1": BORDER +HtmlVersionTagsAttrsTest.java:189: error: attribute "border" for table only accepts "" or "1": 2 *
^ HtmlVersionTagsAttrsTest.java:191: error: no caption for table @@ -310,5 +298,5 @@ HtmlVersionTagsAttrsTest.java:202: error: no caption for table HtmlVersionTagsAttrsTest.java:205: error: no caption for table *
^ -102 errors +98 errors 2 warnings diff --git a/test/langtools/tools/doclint/html/OtherTagsTest.java b/test/langtools/tools/doclint/html/OtherTagsTest.java index e64b12a71a8..6da198b3cef 100644 --- a/test/langtools/tools/doclint/html/OtherTagsTest.java +++ b/test/langtools/tools/doclint/html/OtherTagsTest.java @@ -16,7 +16,7 @@ public class OtherTagsTest { * * *
- * + * * * * diff --git a/test/langtools/tools/doclint/html/OtherTagsTest.out b/test/langtools/tools/doclint/html/OtherTagsTest.out index 571df0f20a3..f8e06bb6bb6 100644 --- a/test/langtools/tools/doclint/html/OtherTagsTest.out +++ b/test/langtools/tools/doclint/html/OtherTagsTest.out @@ -13,9 +13,6 @@ OtherTagsTest.java:17: error: element not allowed in documentation comments: ^ -OtherTagsTest.java:19: error: element not allowed in documentation comments: - * - ^ OtherTagsTest.java:20: error: element not allowed in documentation comments: * ^ @@ -25,4 +22,4 @@ OtherTagsTest.java:21: error: tag not supported in HTML5: noframes OtherTagsTest.java:23: error: element not allowed in documentation comments: * <title> ^ -9 errors +8 errors From 34edc7358f733cdf433d0ff50921bcb5a94c5e35 Mon Sep 17 00:00:00 2001 From: Vladimir Kozlov Date: Sat, 3 Aug 2024 06:21:28 +0000 Subject: [PATCH 6/6] 8337396: Cleanup usage of ExternalAddess Co-authored-by: Fei Yang Reviewed-by: vlivanov, adinn --- .../cpu/aarch64/macroAssembler_aarch64.cpp | 8 +- .../cpu/aarch64/stubGenerator_aarch64.cpp | 2 +- .../templateInterpreterGenerator_aarch64.cpp | 12 +-- .../cpu/riscv/macroAssembler_riscv.cpp | 4 +- src/hotspot/cpu/riscv/stubGenerator_riscv.cpp | 2 +- .../templateInterpreterGenerator_riscv.cpp | 6 +- src/hotspot/cpu/x86/stubGenerator_x86_64.cpp | 2 +- .../x86/templateInterpreterGenerator_x86.cpp | 6 +- src/hotspot/cpu/x86/templateTable_x86.cpp | 18 ++-- src/hotspot/share/code/oopRecorder.cpp | 92 ++++++++++++++++++- 10 files changed, 117 insertions(+), 35 deletions(-) diff --git a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp index f90aefc8fd3..e210c8b3de0 100644 --- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp @@ -736,7 +736,7 @@ void MacroAssembler::reserved_stack_check() { br(Assembler::LO, no_reserved_zone_enabling); enter(); // LR and FP are live. - lea(rscratch1, CAST_FROM_FN_PTR(address, SharedRuntime::enable_stack_reserved_zone)); + lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::enable_stack_reserved_zone))); mov(c_rarg0, rthread); blr(rscratch1); leave(); @@ -1879,7 +1879,7 @@ void MacroAssembler::_verify_oop(Register reg, const char* s, const char* file, movptr(rscratch1, (uintptr_t)(address)b); // call indirectly to solve generation ordering problem - lea(rscratch2, ExternalAddress(StubRoutines::verify_oop_subroutine_entry_address())); + lea(rscratch2, RuntimeAddress(StubRoutines::verify_oop_subroutine_entry_address())); ldr(rscratch2, Address(rscratch2)); blr(rscratch2); @@ -1918,7 +1918,7 @@ void MacroAssembler::_verify_oop_addr(Address addr, const char* s, const char* f movptr(rscratch1, (uintptr_t)(address)b); // call indirectly to solve generation ordering problem - lea(rscratch2, ExternalAddress(StubRoutines::verify_oop_subroutine_entry_address())); + lea(rscratch2, RuntimeAddress(StubRoutines::verify_oop_subroutine_entry_address())); ldr(rscratch2, Address(rscratch2)); blr(rscratch2); @@ -6454,7 +6454,7 @@ void MacroAssembler::verify_cross_modify_fence_not_required() { Label fence_not_required; cbz(rscratch1, fence_not_required); // If it does then fail. - lea(rscratch1, CAST_FROM_FN_PTR(address, JavaThread::verify_cross_modify_fence_failure)); + lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, JavaThread::verify_cross_modify_fence_failure))); mov(c_rarg0, rthread); blr(rscratch1); bind(fence_not_required); diff --git a/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp b/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp index 3f1a4423b5e..5e2ef97e4a3 100644 --- a/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp @@ -7045,7 +7045,7 @@ class StubGenerator: public StubCodeGenerator { Label thaw_success; // rscratch2 contains the size of the frames to thaw, 0 if overflow or no more frames __ cbnz(rscratch2, thaw_success); - __ lea(rscratch1, ExternalAddress(StubRoutines::throw_StackOverflowError_entry())); + __ lea(rscratch1, RuntimeAddress(StubRoutines::throw_StackOverflowError_entry())); __ br(rscratch1); __ bind(thaw_success); diff --git a/src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp b/src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp index 89f5fbd281b..d639d9cf17e 100644 --- a/src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp +++ b/src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2014, 2020, Red Hat Inc. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -1337,8 +1337,8 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) { { Label L; __ ldr(r10, Address(rmethod, Method::native_function_offset())); - address unsatisfied = (SharedRuntime::native_method_throw_unsatisfied_link_error_entry()); - __ mov(rscratch2, unsatisfied); + ExternalAddress unsatisfied(SharedRuntime::native_method_throw_unsatisfied_link_error_entry()); + __ lea(rscratch2, unsatisfied); __ ldr(rscratch2, rscratch2); __ cmp(r10, rscratch2); __ br(Assembler::NE, L); @@ -1432,7 +1432,7 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) { // hand. // __ mov(c_rarg0, rthread); - __ mov(rscratch2, CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans)); + __ lea(rscratch2, RuntimeAddress(CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans))); __ blr(rscratch2); __ get_method(rmethod); __ reinit_heapbase(); @@ -1482,7 +1482,7 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) { __ push_call_clobbered_registers(); __ mov(c_rarg0, rthread); - __ mov(rscratch2, CAST_FROM_FN_PTR(address, SharedRuntime::reguard_yellow_pages)); + __ lea(rscratch2, RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::reguard_yellow_pages))); __ blr(rscratch2); __ pop_call_clobbered_registers(); @@ -2085,7 +2085,7 @@ void TemplateInterpreterGenerator::trace_bytecode(Template* t) { assert(Interpreter::trace_code(t->tos_in()) != nullptr, "entry must have been generated"); - __ bl(Interpreter::trace_code(t->tos_in())); + __ bl(RuntimeAddress(Interpreter::trace_code(t->tos_in()))); __ reinit_heapbase(); } diff --git a/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp b/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp index e349eab3177..cd7a4ecf228 100644 --- a/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp +++ b/src/hotspot/cpu/riscv/macroAssembler_riscv.cpp @@ -547,7 +547,7 @@ void MacroAssembler::_verify_oop(Register reg, const char* s, const char* file, } // call indirectly to solve generation ordering problem - ExternalAddress target(StubRoutines::verify_oop_subroutine_entry_address()); + RuntimeAddress target(StubRoutines::verify_oop_subroutine_entry_address()); relocate(target.rspec(), [&] { int32_t offset; la(t1, target.target(), offset); @@ -592,7 +592,7 @@ void MacroAssembler::_verify_oop_addr(Address addr, const char* s, const char* f } // call indirectly to solve generation ordering problem - ExternalAddress target(StubRoutines::verify_oop_subroutine_entry_address()); + RuntimeAddress target(StubRoutines::verify_oop_subroutine_entry_address()); relocate(target.rspec(), [&] { int32_t offset; la(t1, target.target(), offset); diff --git a/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp b/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp index f78d7261e40..198835d733f 100644 --- a/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp +++ b/src/hotspot/cpu/riscv/stubGenerator_riscv.cpp @@ -3774,7 +3774,7 @@ class StubGenerator: public StubCodeGenerator { Label thaw_success; // t1 contains the size of the frames to thaw, 0 if overflow or no more frames __ bnez(t1, thaw_success); - __ la(t0, ExternalAddress(StubRoutines::throw_StackOverflowError_entry())); + __ la(t0, RuntimeAddress(StubRoutines::throw_StackOverflowError_entry())); __ jr(t0); __ bind(thaw_success); diff --git a/src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp b/src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp index 769e4dc5ccc..f01945bc6a3 100644 --- a/src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp +++ b/src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp @@ -1111,8 +1111,8 @@ address TemplateInterpreterGenerator::generate_native_entry(bool synchronized) { { Label L; __ ld(x28, Address(xmethod, Method::native_function_offset())); - address unsatisfied = (SharedRuntime::native_method_throw_unsatisfied_link_error_entry()); - __ mv(t, unsatisfied); + ExternalAddress unsatisfied(SharedRuntime::native_method_throw_unsatisfied_link_error_entry()); + __ la(t, unsatisfied); __ load_long_misaligned(t1, Address(t, 0), t0, 2); // 2 bytes aligned, but not 4 or 8 __ bne(x28, t1, L); @@ -1815,7 +1815,7 @@ void TemplateInterpreterGenerator::trace_bytecode(Template* t) { // the tosca in-state for the given template. assert(Interpreter::trace_code(t->tos_in()) != nullptr, "entry must have been generated"); - __ call(Interpreter::trace_code(t->tos_in())); + __ rt_call(Interpreter::trace_code(t->tos_in())); __ reinit_heapbase(); } diff --git a/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp b/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp index c9c4b056eb5..a7404b298f6 100644 --- a/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp +++ b/src/hotspot/cpu/x86/stubGenerator_x86_64.cpp @@ -3702,7 +3702,7 @@ address StubGenerator::generate_cont_thaw(const char* label, Continuation::thaw_ Label L_thaw_success; __ testptr(rbx, rbx); __ jccb(Assembler::notZero, L_thaw_success); - __ jump(ExternalAddress(StubRoutines::throw_StackOverflowError_entry())); + __ jump(RuntimeAddress(StubRoutines::throw_StackOverflowError_entry())); __ bind(L_thaw_success); // Make room for the thawed frames and align the stack. diff --git a/src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp b/src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp index fe2bf67afc9..3b32d577d44 100644 --- a/src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp +++ b/src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -178,7 +178,7 @@ address TemplateInterpreterGenerator::generate_exception_handler_common( rarg, rarg2); } // throw exception - __ jump(ExternalAddress(Interpreter::throw_exception_entry())); + __ jump(RuntimeAddress(Interpreter::throw_exception_entry())); return entry; } @@ -546,7 +546,7 @@ void TemplateInterpreterGenerator::generate_stack_overflow_check(void) { // Note: the restored frame is not necessarily interpreted. // Use the shared runtime version of the StackOverflowError. assert(StubRoutines::throw_StackOverflowError_entry() != nullptr, "stub not yet generated"); - __ jump(ExternalAddress(StubRoutines::throw_StackOverflowError_entry())); + __ jump(RuntimeAddress(StubRoutines::throw_StackOverflowError_entry())); // all done with frame size check __ bind(after_frame_check_pop); NOT_LP64(__ pop(rsi)); diff --git a/src/hotspot/cpu/x86/templateTable_x86.cpp b/src/hotspot/cpu/x86/templateTable_x86.cpp index 6446ec65987..fc6844aedd6 100644 --- a/src/hotspot/cpu/x86/templateTable_x86.cpp +++ b/src/hotspot/cpu/x86/templateTable_x86.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -774,7 +774,7 @@ void TemplateTable::index_check_without_pop(Register array, Register index) { __ jccb(Assembler::below, skip); // Pass array to create more detailed exceptions. __ mov(NOT_LP64(rax) LP64_ONLY(c_rarg1), array); - __ jump(ExternalAddress(Interpreter::_throw_ArrayIndexOutOfBoundsException_entry)); + __ jump(RuntimeAddress(Interpreter::_throw_ArrayIndexOutOfBoundsException_entry)); __ bind(skip); } @@ -1152,7 +1152,7 @@ void TemplateTable::aastore() { // Come here on failure // object is at TOS - __ jump(ExternalAddress(Interpreter::_throw_ArrayStoreException_entry)); + __ jump(RuntimeAddress(Interpreter::_throw_ArrayStoreException_entry)); // Come here on success __ bind(ok_is_subtype); @@ -1432,7 +1432,7 @@ void TemplateTable::ldiv() { // generate explicit div0 check __ testq(rcx, rcx); __ jump_cc(Assembler::zero, - ExternalAddress(Interpreter::_throw_ArithmeticException_entry)); + RuntimeAddress(Interpreter::_throw_ArithmeticException_entry)); // Note: could xor rax and rcx and compare with (-1 ^ min_int). If // they are not equal, one could do a normal division (no correction // needed), which may speed up this implementation for the common case. @@ -1445,7 +1445,7 @@ void TemplateTable::ldiv() { // check if y = 0 __ orl(rax, rdx); __ jump_cc(Assembler::zero, - ExternalAddress(Interpreter::_throw_ArithmeticException_entry)); + RuntimeAddress(Interpreter::_throw_ArithmeticException_entry)); __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::ldiv)); __ addptr(rsp, 4 * wordSize); // take off temporaries #endif @@ -1458,7 +1458,7 @@ void TemplateTable::lrem() { __ pop_l(rax); __ testq(rcx, rcx); __ jump_cc(Assembler::zero, - ExternalAddress(Interpreter::_throw_ArithmeticException_entry)); + RuntimeAddress(Interpreter::_throw_ArithmeticException_entry)); // Note: could xor rax and rcx and compare with (-1 ^ min_int). If // they are not equal, one could do a normal division (no correction // needed), which may speed up this implementation for the common case. @@ -1472,7 +1472,7 @@ void TemplateTable::lrem() { // check if y = 0 __ orl(rax, rdx); __ jump_cc(Assembler::zero, - ExternalAddress(Interpreter::_throw_ArithmeticException_entry)); + RuntimeAddress(Interpreter::_throw_ArithmeticException_entry)); __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::lrem)); __ addptr(rsp, 4 * wordSize); #endif @@ -4222,7 +4222,7 @@ void TemplateTable::checkcast() { // Come here on failure __ push_ptr(rdx); // object is at TOS - __ jump(ExternalAddress(Interpreter::_throw_ClassCastException_entry)); + __ jump(RuntimeAddress(Interpreter::_throw_ClassCastException_entry)); // Come here on success __ bind(ok_is_subtype); @@ -4340,7 +4340,7 @@ void TemplateTable::_breakpoint() { void TemplateTable::athrow() { transition(atos, vtos); __ null_check(rax); - __ jump(ExternalAddress(Interpreter::throw_exception_entry())); + __ jump(RuntimeAddress(Interpreter::throw_exception_entry())); } //----------------------------------------------------------------------------- diff --git a/src/hotspot/share/code/oopRecorder.cpp b/src/hotspot/share/code/oopRecorder.cpp index fd13b105041..1849493974c 100644 --- a/src/hotspot/share/code/oopRecorder.cpp +++ b/src/hotspot/share/code/oopRecorder.cpp @@ -32,6 +32,7 @@ #include "oops/oop.inline.hpp" #include "runtime/jniHandles.inline.hpp" #include "runtime/mutexLocker.hpp" +#include "runtime/os.hpp" #include "utilities/copy.hpp" #ifdef ASSERT @@ -220,6 +221,11 @@ ExternalsRecorder* ExternalsRecorder::_recorder = nullptr; ExternalsRecorder::ExternalsRecorder(): _arena(mtCode), _externals(&_arena) {} +#ifndef PRODUCT +static int total_access_count = 0; +static GrowableArray* extern_hist = nullptr; +#endif + void ExternalsRecorder_init() { ExternalsRecorder::initialize(); } @@ -228,30 +234,106 @@ void ExternalsRecorder::initialize() { // After Mutex and before CodeCache are initialized assert(_recorder == nullptr, "should initialize only once"); _recorder = new ExternalsRecorder(); +#ifndef PRODUCT + if (PrintNMethodStatistics) { + Arena* arena = &_recorder->_arena; + extern_hist = new(arena) GrowableArray(arena, 512, 512, 0); + } +#endif } int ExternalsRecorder::find_index(address adr) { - MutexLocker ml(ExternalsRecorder_lock, Mutex::_no_safepoint_check_flag); assert(_recorder != nullptr, "sanity"); - return _recorder->_externals.find_index(adr); + MutexLocker ml(ExternalsRecorder_lock, Mutex::_no_safepoint_check_flag); + int index = _recorder->_externals.find_index(adr); +#ifndef PRODUCT + if (PrintNMethodStatistics) { + total_access_count++; + int n = extern_hist->at_grow(index, 0); + extern_hist->at_put(index, (n + 1)); + } +#endif + return index; } address ExternalsRecorder::at(int index) { + assert(_recorder != nullptr, "sanity"); // find_index() may resize array by reallocating it and freeing old, // we need loock here to make sure we not accessing to old freed array. MutexLocker ml(ExternalsRecorder_lock, Mutex::_no_safepoint_check_flag); - assert(_recorder != nullptr, "sanity"); return _recorder->_externals.at(index); } int ExternalsRecorder::count() { - MutexLocker ml(ExternalsRecorder_lock, Mutex::_no_safepoint_check_flag); assert(_recorder != nullptr, "sanity"); + MutexLocker ml(ExternalsRecorder_lock, Mutex::_no_safepoint_check_flag); return _recorder->_externals.count(); } #ifndef PRODUCT +extern "C" { + // Order from large to small values + static int count_cmp(const void *i, const void *j) { + int a = *(int*)i; + int b = *(int*)j; + return a < b ? 1 : a > b ? -1 : 0; + } +} + void ExternalsRecorder::print_statistics() { - tty->print_cr("External addresses table: %d entries", count()); + int cnt = count(); + tty->print_cr("External addresses table: %d entries, %d accesses", cnt, total_access_count); + { // Print most accessed entries in the table. + int* array = NEW_C_HEAP_ARRAY(int, (2 * cnt), mtCode); + for (int i = 0; i < cnt; i++) { + array[(2 * i) + 0] = extern_hist->at(i); + array[(2 * i) + 1] = i; + } + // Reverse sort to have "hottest" addresses first. + qsort(array, cnt, 2*sizeof(int), count_cmp); + // Print all entries with Verbose flag otherwise only top 5. + int limit = (Verbose || cnt <= 5) ? cnt : 5; + int j = 0; + for (int i = 0; i < limit; i++) { + int index = array[(2 * i) + 1]; + int n = extern_hist->at(index); + if (n > 0) { + address addr = at(index); + tty->print("%d: %8d " INTPTR_FORMAT " :", j++, n, p2i(addr)); + if (addr != nullptr) { + if (StubRoutines::contains(addr)) { + StubCodeDesc* desc = StubCodeDesc::desc_for(addr); + if (desc == nullptr) { + desc = StubCodeDesc::desc_for(addr + frame::pc_return_offset); + } + const char* stub_name = (desc != nullptr) ? desc->name() : ""; + tty->print(" stub: %s", stub_name); + } else { + ResourceMark rm; + const int buflen = 1024; + char* buf = NEW_RESOURCE_ARRAY(char, buflen); + int offset = 0; + if (os::dll_address_to_function_name(addr, buf, buflen, &offset)) { + tty->print(" extn: %s", buf); + if (offset != 0) { + tty->print("+%d", offset); + } + } else { + if (CodeCache::contains((void*)addr)) { + // Something in CodeCache + tty->print(" in CodeCache"); + } else { + // It could be string + memcpy(buf, (char*)addr, 80); + buf[80] = '\0'; + tty->print(" '%s'", buf); + } + } + } + } + tty->cr(); + } + } + } } #endif