View Javadoc
1   /*
2    * Copyright (c) 2002-2026 Gargoyle Software Inc.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * https://www.apache.org/licenses/LICENSE-2.0
8    *
9    * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */
15  package org.htmlunit.javascript.host.html;
16  
17  import org.htmlunit.html.DomElement;
18  import org.htmlunit.html.HtmlProgress;
19  import org.htmlunit.javascript.configuration.JsxClass;
20  import org.htmlunit.javascript.configuration.JsxConstructor;
21  import org.htmlunit.javascript.configuration.JsxGetter;
22  import org.htmlunit.javascript.host.dom.NodeList;
23  
24  /**
25   * The JavaScript object {@code HTMLProgressElement}.
26   *
27   * @author Ahmed Ashour
28   * @author Marc Guillemot
29   * @author Ronald Brill
30   * @author Frank Danek
31   *
32   * @see <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement">MDN Documentation</a>
33   */
34  @JsxClass(domClass = HtmlProgress.class)
35  public class HTMLProgressElement extends HTMLElement {
36  
37      /** "Live" labels collection; has to be a member to have equality (==) working. */
38      private NodeList labels_;
39  
40      /**
41       * JavaScript constructor.
42       */
43      @Override
44      @JsxConstructor
45      public void jsConstructor() {
46          super.jsConstructor();
47      }
48  
49      /**
50       * Returns the {@code value} property.
51       * @return the {@code value} property
52       */
53      @JsxGetter
54      @Override
55      public Double getValue() {
56          return getAttributeAsDouble(DomElement.VALUE_ATTRIBUTE, 0);
57      }
58  
59      /**
60       * Returns the {@code max} property.
61       * @return the {@code max} property
62       */
63      @JsxGetter
64      public double getMax() {
65          return getAttributeAsDouble("max", 1);
66      }
67  
68      private double getAttributeAsDouble(final String attributeName, final double defaultValue) {
69          try {
70              return Double.parseDouble(getDomNodeOrDie().getAttribute(attributeName));
71          }
72          catch (final NumberFormatException e) {
73              return defaultValue;
74          }
75      }
76  
77      /**
78       * Returns the labels associated with the element.
79       * @return the labels associated with the element
80       */
81      @JsxGetter
82      public NodeList getLabels() {
83          if (labels_ == null) {
84              labels_ = new LabelsNodeList(getDomNodeOrDie());
85          }
86          return labels_;
87      }
88  
89  }