
jidefx.scene.control.field.InsetsField Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jidefx-fields Show documentation
Show all versions of jidefx-fields Show documentation
JideFX Common Layer is a collection of several extend feature for JavaFX
/*
* @(#)InsetsField.java 5/19/2013
*
* Copyright 2002 - 2013 JIDE Software Inc. All rights reserved.
*/
package jidefx.scene.control.field;
import javafx.geometry.Insets;
import javafx.util.Callback;
import jidefx.scene.control.field.popup.PopupContent;
import jidefx.scene.control.field.popup.ValuesPopupContent;
import jidefx.scene.control.field.verifier.NumberValuePatternVerifier;
import jidefx.utils.converter.ConverterContext;
import jidefx.utils.converter.javafx.InsetsConverter;
import java.util.ArrayList;
import java.util.List;
/**
* {@code InsetsField} is a {@code FormattedTextField} for {@link Insets}.
*/
public class InsetsField extends PopupField {
public InsetsField() {
}
private static final String STYLE_CLASS_DEFAULT = "insets-field"; //NON-NLS
@Override
protected void initializeStyle() {
super.initializeStyle();
getStyleClass().addAll(STYLE_CLASS_DEFAULT);
}
@Override
protected void initializePattern() {
super.initializePattern();
setStringConverter(new InsetsConverter() {
@Override
protected String toString(int i, Double o, ConverterContext context) {
if (o == null) return "";
return o.toString();
}
@Override
protected Double fromString(int i, String s, ConverterContext context) {
if (s == null || s.trim().isEmpty()) return null;
return Double.valueOf(s);
}
}.toStringConverter());
getPatternVerifiers().put("Top", new NumberValuePatternVerifier() { //NON-NLS
@Override
public Double toTargetValue(Insets fieldValue) {
return fieldValue.getTop();
}
@Override
public Insets fromTargetValue(Insets previousFieldValue, Number value) {
double top = value.doubleValue();
return previousFieldValue != null ? new Insets(top, previousFieldValue.getRight(), previousFieldValue.getBottom(), previousFieldValue.getLeft())
: new Insets(top, 0, 0, 0);
}
});
getPatternVerifiers().put("Right", new NumberValuePatternVerifier() { //NON-NLS
@Override
public Double toTargetValue(Insets fieldValue) {
return fieldValue.getRight();
}
@Override
public Insets fromTargetValue(Insets previousFieldValue, Number value) {
double right = value.doubleValue();
return previousFieldValue != null ? new Insets(previousFieldValue.getTop(), right, previousFieldValue.getBottom(), previousFieldValue.getLeft())
: new Insets(0, right, 0, 0);
}
});
getPatternVerifiers().put("Bottom", new NumberValuePatternVerifier() { //NON-NLS
@Override
public Double toTargetValue(Insets fieldValue) {
return fieldValue.getBottom();
}
@Override
public Insets fromTargetValue(Insets previousFieldValue, Number value) {
double bottom = value.doubleValue();
return previousFieldValue != null ? new Insets(previousFieldValue.getTop(), previousFieldValue.getRight(), bottom, previousFieldValue.getLeft())
: new Insets(0, 0, bottom, 0);
}
});
getPatternVerifiers().put("Left", new NumberValuePatternVerifier() { //NON-NLS
@Override
public Double toTargetValue(Insets fieldValue) {
return fieldValue.getLeft();
}
@Override
public Insets fromTargetValue(Insets previousFieldValue, Number value) {
double left = value.doubleValue();
return previousFieldValue != null ? new Insets(previousFieldValue.getTop(), previousFieldValue.getRight(), previousFieldValue.getBottom(), left)
: new Insets(0, 0, 0, left);
}
});
setPattern("Top; Right; Bottom; Left"); //NON-NLS
}
@Override
protected void initializeTextField() {
super.initializeTextField();
setPopupContentFactory(new Callback>() {
@Override
public PopupContent call(Insets param) {
ValuesPopupContent popupContent = new ValuesPopupContent(new String[]{getResourceString("top"), getResourceString("right"), getResourceString("bottom"), getResourceString("left")}) {
@Override
public List toValues(Insets value) {
ArrayList list = new ArrayList<>(4);
list.add(value.getTop());
list.add(value.getRight());
list.add(value.getBottom());
list.add(value.getLeft());
return list;
}
@Override
public Insets fromValues(List values) {
return new Insets(values.get(0), values.get(1), values.get(2), values.get(3));
}
@Override
public FormattedTextField createTextField(String label) {
return new DoubleField();
}
};
popupContent.setValue(getValue());
return popupContent;
}
});
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy