javafx.css.PseudoClass Maven / Gradle / Ivy
/*
* Copyright (c) 2011, 2021, 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 javafx.css;
import com.sun.javafx.css.PseudoClassState;
/**
* PseudoClass represents one unique pseudo-class state. Introducing a
* pseudo-class into a JavaFX class only requires that the method
* {@link javafx.scene.Node#pseudoClassStateChanged(javafx.css.PseudoClass, boolean)}
* be called when the pseudo-class state changes. Typically, the
* {@code pseudoClassStateChanged} method is called from the
* {@code protected void invalidated()} method of one of the property base
* classes in the {@code javafx.beans.property} package.
*
* Note that if a node has a default pseudo-class state, a horizontal orientation
* for example, {@code pseudoClassStateChanged} should be called from the
* constructor to set the initial state.
*
* The following example would allow "xyzzy" to be used as a
* pseudo-class in a CSS selector.
*
* public boolean isMagic() {
* return magic.get();
* }
*
* public BooleanProperty magicProperty() {
* return magic;
* }
*
* public BooleanProperty magic =
* new BooleanPropertyBase(false) {
*
* {@literal @}Override protected void invalidated() {
* pseudoClassStateChanged(MAGIC_PSEUDO_CLASS. get());
* }
*
* {@literal @}Override public Object getBean() {
* return MyControl.this;
* }
*
* {@literal @}Override public String getName() {
* return "magic";
* }
* }
*
* private static final PseudoClass
* MAGIC_PSEUDO_CLASS = PseudoClass.getPseudoClass("xyzzy");
*
* @since JavaFX 8.0
*/
public abstract class PseudoClass {
/**
* Constructor for subclasses to call.
*/
public PseudoClass() {
}
/**
* Gets the {@code PseudoClass} instance for a given pseudo class name.
*
* Note: There is only one {@code PseudoClass} instance for a given pseudo class name.
*
* @param pseudoClass the name of the pseudo class
* @return the {@code PseudoClass} instance for a given pseudo class name;
* It will not return {@code null}
* @throws IllegalArgumentException if pseudoClass parameter is {@code null} or an empty {@code String}
*/
public static PseudoClass getPseudoClass(String pseudoClass) {
return PseudoClassState.getPseudoClass(pseudoClass);
}
/**
* Gets the name of the {@code PseudoClass}.
* @return the name of the {@code PseudoClass}
*/
abstract public String getPseudoClassName();
}