View Javadoc
1   /*
2    * Copyright (c) 2002-2025 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  @JsxClass(domClass = HtmlProgress.class)
33  public class HTMLProgressElement extends HTMLElement {
34  
35      /** "Live" labels collection; has to be a member to have equality (==) working. */
36      private NodeList labels_;
37  
38      /**
39       * JavaScript constructor.
40       */
41      @Override
42      @JsxConstructor
43      public void jsConstructor() {
44          super.jsConstructor();
45      }
46  
47      /**
48       * The getter for the "value" property.
49       * @return the value
50       */
51      @JsxGetter
52      @Override
53      public Double getValue() {
54          return getAttributeAsDouble(DomElement.VALUE_ATTRIBUTE, 0);
55      }
56  
57      /**
58       * The getter for the "max" property.
59       * @return the value
60       */
61      @JsxGetter
62      public double getMax() {
63          return getAttributeAsDouble("max", 1);
64      }
65  
66      private double getAttributeAsDouble(final String attributeName, final double defaultValue) {
67          try {
68              return Double.parseDouble(getDomNodeOrDie().getAttribute(attributeName));
69          }
70          catch (final NumberFormatException e) {
71              return defaultValue;
72          }
73      }
74  
75      /**
76       * Returns the labels associated with the element.
77       * @return the labels associated with the element
78       */
79      @JsxGetter
80      public NodeList getLabels() {
81          if (labels_ == null) {
82              labels_ = new LabelsNodeList(getDomNodeOrDie());
83          }
84          return labels_;
85      }
86  
87  }