All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.gwt.aria.client.Attribute Maven / Gradle / Ivy

There is a newer version: 2.10.0
Show newest version
/*
 * Copyright 2012 Google Inc.
 *
 * 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 com.google.gwt.aria.client;
/////////////////////////////////////////////////////////
// This is auto-generated code.  Do not manually edit! //
/////////////////////////////////////////////////////////

import com.google.gwt.dom.client.Element;

/**
 * 

Class representing ARIA state/property attribute. Contains methods for setting, getting, * removing ARIA attributes for an HTML {@link com.google.gwt.dom.client.Element}.

* *

For more details about ARIA states and properties check the W3C ARIA documentation * Supported States and Properties * .

* * @param The attribute value type */ public abstract class Attribute { protected final String name; protected String defaultValue; /** * Constructs a state/property ARIA attribute with name {@code name} and {@code defaultValue}. * * @param name State/Property name * @param defaultValue Default values */ public Attribute(String name, String defaultValue) { assert name != null : "Name cannot be null"; this.name = name; this.defaultValue = defaultValue; } /** * Constructs a state/property ARIA attribute with name {@code name} and null default value. * * @param name State/Property name */ public Attribute(String name) { this(name, null); } /** * Gets the HTML attribute value for the attribute with name {@code name} for element * {@code element} * * @param element HTML element * @return The attribute value for {@code element} */ public String get(Element element) { assert element != null : "Element cannot be null."; return element.getAttribute(name); } /** * Gets the property/state name * * @return The attribute name */ public String getName() { return name; } /** * Removes the state/property attribute for element {@code element}. * * @param element HTM element */ public void remove(Element element) { assert element != null : "Element cannot be null."; element.removeAttribute(name); } /** * Sets the state/property {@code value} for the HTML element {@code element}. * * @param element HTML element * @param values Attribute value */ public void set(Element element, T... values) { assert element != null : "Element cannot be null."; assert values.length > 0; element.setAttribute(name, getAriaValue(values)); } /** * Sets the state/property value to the defaultValue if not null. If a list of default values is * set, every default value is converted to string and the string values are concatenated in a * string token list. There is an assertion checking whether the default is null. Note that the * asserts are enabled during development and testing but they will be stripped in production * mode. * * @param element HTML element */ public void setDefault(Element element) { assert element != null : "Element cannot be null."; assert defaultValue != null && !defaultValue.isEmpty() : "Default value cannot be null."; element.setAttribute(name, defaultValue); } /** * Gets the string representation of {@code value} to be set as an attribute value * to an HTML element. * * @param value The item to be stringified * @return the stringified representation of {@code value} */ protected abstract String getSingleValue(T value); private String getAriaValue(T... value) { StringBuilder buf = new StringBuilder(); for (T item : value) { buf.append(getSingleValue(item)).append(" "); } return buf.toString().trim(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy