/*
* Copyright (c) 2013 by Gerrit Grunwald
*
* 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 eu.hansolo.enzo.simpleindicator;
import eu.hansolo.enzo.simpleindicator.skin.SimpleIndicatorSkin;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.scene.control.Control;
import javafx.scene.control.Skin;
/**
* Created by
* User: hansolo
* Date: 06.03.12
* Time: 13:48
*/
public class SimpleIndicator extends Control {
public static final String STYLE_CLASS_OFF = "indicator-off";
public static final String STYLE_CLASS_RED = "indicator-red";
public static final String STYLE_CLASS_GREEN = "indicator-green";
public static final String STYLE_CLASS_BLUE = "indicator-blue";
public static final String STYLE_CLASS_YELLOW = "indicator-yellow";
public static final String STYLE_CLASS_ORANGE = "indicator-orange";
public static final String STYLE_CLASS_CYAN = "indicator-cyan";
public static final String STYLE_CLASS_MAGENTA = "indicator-magenta";
public static final String STYLE_CLASS_PURPLE = "indicator-purple";
public static final String STYLE_CLASS_GRAY = "indicator-gray";
public enum IndicatorStyle {
OFF(STYLE_CLASS_OFF),
RED(STYLE_CLASS_RED),
GREEN(STYLE_CLASS_GREEN),
BLUE(STYLE_CLASS_BLUE),
YELLOW(STYLE_CLASS_YELLOW),
ORANGE(STYLE_CLASS_ORANGE),
CYAN(STYLE_CLASS_CYAN),
MAGENTA(STYLE_CLASS_MAGENTA),
PURPLE(STYLE_CLASS_PURPLE),
GRAY(STYLE_CLASS_GRAY);
public final String CLASS;
private IndicatorStyle(final String CLASS_NAME) {
CLASS = CLASS_NAME;
}
}
private IndicatorStyle _indicatorStyle = IndicatorStyle.OFF;
private ObjectProperty<IndicatorStyle> indicatorStyle;
// ******************** Constructors **************************************
public SimpleIndicator() {
getStyleClass().add("indicator");
}
// ******************** Methods *******************************************
public final IndicatorStyle getIndicatorStyle() {
return null == indicatorStyle ? _indicatorStyle : indicatorStyle.get();
}
public final void setIndicatorStyle(final IndicatorStyle INDICATOR_STYLE) {
if (null == indicatorStyle) {
_indicatorStyle = INDICATOR_STYLE;
} else {
indicatorStyle.set(INDICATOR_STYLE);
}
}
public final ObjectProperty<IndicatorStyle> indicatorStyleProperty() {
if (null == indicatorStyle) {
indicatorStyle = new SimpleObjectProperty<>(this, "indicatorStyle", _indicatorStyle);
}
return indicatorStyle;
}
// ******************** Style related *************************************
@Override protected Skin createDefaultSkin() {
return new SimpleIndicatorSkin(this);
}
@Override protected String getUserAgentStylesheet() {
return getClass().getResource("simpleindicator.css").toExternalForm();
}
}