/** * Copyright (C) 2016 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jboss.errai.ui.test.binding.client.res; import org.jboss.errai.common.client.api.annotations.Element; import org.jboss.errai.common.client.api.annotations.Property; import org.jboss.errai.common.client.ui.HasValue; import jsinterop.annotations.JsOverlay; import jsinterop.annotations.JsPackage; import jsinterop.annotations.JsProperty; import jsinterop.annotations.JsType; /** * This native input element wrapper treats a text input element as if it has a number value. This tests that the * presence of {@link HasValue} overrides type inference based on element type. * * @author Max Barkley <mbarkley@redhat.com> */ @Element("input") @Property(name = "type", value = "number") @JsType(isNative = true, name = "HTMLInputElement", namespace = JsPackage.GLOBAL) public abstract class JsOverlayNumberInputElement implements HasValue<Double> { @JsProperty(name = "value") public abstract String getRawValue(); @JsProperty(name = "value") public abstract void setRawValue(String value); @JsOverlay @Override public final Double getValue() { final String rawValue = getRawValue(); if (rawValue == null || "".equals(rawValue)) { return null; } else { return Double.parseDouble(rawValue); } } @JsOverlay @Override public final void setValue(final Double value) { if (value == null) { setRawValue(""); } else { setRawValue(value.toString()); } } }