Java 类javafx.beans.binding.Binding 实例源码
项目:Learning-RxJava
文件:Ch9_6.java
@Override
public void start(Stage stage) throws Exception {
VBox root = new VBox();
Label label = new Label("");
// Turn Observable into Binding
Binding<String> binding =
Observable.interval(1, TimeUnit.SECONDS)
.map(i -> i.toString())
.observeOn(JavaFxScheduler.platform())
.to(JavaFxObserver::toBinding);
//Bind Label to Binding
label.textProperty().bind(binding);
root.setMinSize(200, 100);
root.getChildren().addAll(label);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
项目:Learning-RxJava
文件:Ch9_5.java
@Override
public void start(Stage stage) throws Exception {
VBox root = new VBox();
Label label = new Label("");
// Observable with second timer
Observable<String> seconds =
Observable.interval(1, TimeUnit.SECONDS)
.map(i -> i.toString())
.observeOn(JavaFxScheduler.platform());
// Turn Observable into Binding
Binding<String> binding =
JavaFxObserver.toBinding(seconds);
//Bind Label to Binding
label.textProperty().bind(binding);
root.setMinSize(200, 100);
root.getChildren().addAll(label);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
项目:fx-log
文件:StyledTableCell.java
public StyledTableCell(TableColumn<LogEntry, String> column, Search search) {
text = new SearchableLabel(search);
text.fontProperty().bind(fontProperty());
setGraphic(text);
setText(null);
// this is usually called only once (when this cell is attached to a row)
EasyBind.subscribe(tableRowProperty(), row -> {
if (row == null) {
return;
}
// bind the text for the foreground
//noinspection unchecked
Binding<Style> colorizedLogStyle = getOrCreateStyleBinding(row, colorizer);
text.normalStyleProperty().bind(colorizedLogStyle);
// apply the style to the cell for the background
EasyBind.subscribe(colorizedLogStyle, s -> s.bindNode(this));
});
}
项目:fx-log
文件:MainController.java
/**
* Binds the filtered logs list predicate, the current filter, and the filter text field together.
*/
private void configureFiltering() {
Callable<Predicate<LogEntry>> createFilter = () -> {
try {
filterField.pseudoClassStateChanged(Css.INVALID, false);
if (filterField.getText().isEmpty()) {
return log -> true;
}
int flags = caseSensitiveFilterCheckbox.isSelected() ? 0 : Pattern.CASE_INSENSITIVE;
return Filter.findInRawLog(filterField.getText(), flags);
} catch (PatternSyntaxException e) {
filterField.pseudoClassStateChanged(Css.INVALID, true);
return log -> false;
}
};
Binding<Predicate<LogEntry>> filterBinding =
Bindings.createObjectBinding(createFilter, filterField.textProperty(),
caseSensitiveFilterCheckbox.selectedProperty());
filterField.setText("");
UIUtils.makeClearable(filterField);
filteredLogs.predicateProperty().bind(filterBinding);
}
项目:fx-log
文件:SearchController.java
@Override
public void initialize(URL location, ResourceBundle resources) {
UIUtils.makeClearable(searchTextField);
BooleanBinding disableMatchBrowsing = Bindings.createBooleanBinding(matchRows::isEmpty, matchRows);
nextButton.disableProperty().bind(disableMatchBrowsing);
previousButton.disableProperty().bind(disableMatchBrowsing);
// TODO regex mode feature
regexCheckBox.setDisable(true);
search.textProperty().bind(searchTextField.textProperty());
search.matchCaseProperty().bind(matchCaseCheckBox.selectedProperty());
search.regexModeProperty().bind(regexCheckBox.selectedProperty());
Binding<Integer> matchRowsCount = Bindings.createObjectBinding(matchRows::size, matchRows);
Binding<Integer> currentMatchRowIndexOneBased = Bindings.createObjectBinding(() -> {
return currentMatchRowIndex.get() == null ? 0 : currentMatchRowIndex.get() + 1;
}, currentMatchRowIndex);
matchNavigationLabel.currentCountProperty().bind(currentMatchRowIndexOneBased);
matchNavigationLabel.totalCountProperty().bind(matchRowsCount);
matchNavigationLabel.visibleProperty().bind(currentMatchRowIndex.isNotNull());
}
项目:fx-log
文件:MacherTest.java
@Test
public void testSimpleMatchBinding() {
Matcher<Integer> matcher = i -> i > 5;
Property<Integer> intProp = new SimpleObjectProperty<>(2);
Binding<Boolean> matches = matcher.matches(intProp);
Assert.assertFalse(matches.getValue());
intProp.setValue(6);
Assert.assertFalse(matches.isValid());
Assert.assertTrue(matches.getValue());
intProp.setValue(3);
Assert.assertFalse(matches.isValid());
Assert.assertFalse(matches.getValue());
}
项目:JXTN
文件:SelectBinding.java
@SuppressWarnings("all")
private SelectBindingHelper(Binding<?> binding, ObservableValue<?> firstProperty, String... steps) {
if (firstProperty == null) {
throw new NullPointerException("Must specify the root");
}
if (steps == null) {
steps = new String[0];
}
this.binding = binding;
final int n = steps.length;
for (int i = 0; i < n; i++) {
if (steps[i] == null) {
throw new NullPointerException("all steps must be specified");
}
}
this.observer = new WeakInvalidationListener(this);
this.propertyNames = new String[n];
System.arraycopy(steps, 0, this.propertyNames, 0, n);
this.propRefs = new PropertyReference<?>[n];
this.properties = new ObservableValue<?>[n + 1];
this.properties[0] = firstProperty;
this.properties[0].addListener(this.observer);
}
项目:advanced-bindings
文件:MathBindingsTestHelper.java
/**
* @param <A> the type of the argument
* @param <Obs> the type of the observable
* @param <R> the type of the return value
*/
@SuppressWarnings("unchecked")
private static <A extends Number, Obs extends ObservableNumberValue, R extends Number> void testBinding(Function<Obs, Binding<R>> bindingFunction, Function<A, R> mathFunction, A... args) {
if (args.length == 0) {
throw new IllegalArgumentException("No args to verify!");
}
Property base = createProperty(args[0]);
final Binding<R> binding = bindingFunction.apply((Obs) base);
for (A arg : args) {
base.setValue(arg);
R expectedResult = mathFunction.apply(arg);
assertThat(binding).hasValue(expectedResult);
}
}
项目:advanced-bindings
文件:MathBindingsTestHelper.java
@SuppressWarnings("unchecked")
static <A1 extends Number, A2 extends Number, Obs1 extends ObservableNumberValue, Obs2 extends ObservableNumberValue, R extends Number> void testTwoArgBinding1(BiFunction<Obs1, Obs2, Binding<R>> bindingFunction, BiFunction<A1, A2, R> mathFunction, Args<A1, A2>... args) {
if (args.length == 0) {
throw new IllegalArgumentException("No args to verify!");
}
Property arg1 = createProperty(args[0].getFirst());
Property arg2 = createProperty(args[0].getSecond());
final Binding<R> binding = bindingFunction.apply((Obs1) arg1, (Obs2) arg2);
for (Args<A1, A2> arg : args) {
arg1.setValue(arg.getFirst());
arg2.setValue(arg.getSecond());
R expectedResult = mathFunction.apply(arg.getFirst(), arg.getSecond());
assertThat(binding).hasValue(expectedResult);
}
}
项目:advanced-bindings
文件:MathBindingsTestHelper.java
@SuppressWarnings("unchecked")
static <A1 extends Number, A2 extends Number, Obs extends ObservableNumberValue, R extends Number>
void testTwoArgBinding2(BiFunction<A1, Obs, Binding<R>> bindingFunction, BiFunction<A1, A2, R> mathFunction, Args<A1, A2>... args) {
if (args.length == 0) {
throw new IllegalArgumentException("No args to verify!");
}
Property second = createProperty(args[0].getSecond());
for (Args<A1, A2> arg : args) {
second.setValue(arg.getSecond());
final Binding<R> binding = bindingFunction.apply(arg.getFirst(), (Obs) second);
R expectedResult = mathFunction.apply(arg.getFirst(), arg.getSecond());
assertThat(binding).hasValue(expectedResult);
}
}
项目:advanced-bindings
文件:MathBindingsTestHelper.java
@SuppressWarnings("unchecked")
static <A1 extends Number, A2 extends Number, Obs extends ObservableNumberValue, R extends Number>
void testTwoArgBinding3(BiFunction<Obs, A2, Binding<R>> bindingFunction, BiFunction<A1, A2, R> mathFunction, Args<A1, A2>... args) {
if (args.length == 0) {
throw new IllegalArgumentException("No args to verify!");
}
Property first = createProperty(args[0].getFirst());
for (Args<A1, A2> arg : args) {
first.setValue(arg.getFirst());
final Binding<R> binding = bindingFunction.apply((Obs) first, arg.getSecond());
R expectedResult = mathFunction.apply(arg.getFirst(), arg.getSecond());
assertThat(binding).hasValue(expectedResult);
}
}
项目:shuffleboard
文件:PropertyUtils.java
/**
* Binds {@code firstProperty} to {@code secondProperty}, using a conversion function to map
* values of type {@code U} to {@code T} so the first property can be bound.
*
* @param firstProperty the property to bind
* @param secondProperty the property to bind to
* @param u2tConverter the conversion function
*/
public static <T, U> void bindWithConverter(
Property<T> firstProperty,
Property<U> secondProperty,
Function<U, T> u2tConverter) {
Binding<T> binding = EasyBind.monadic(secondProperty).map(u2tConverter);
bindings.put(firstProperty, binding);
firstProperty.bind(binding);
}
项目:ExtremeGuiMakeover
文件:Movie.java
public final Binding<Image> createPosterImageBinding() {
return Bindings.createObjectBinding(() -> {
return Optional.ofNullable(getPosterFileName()).
map(s -> new Image(Database.class.getResource(s).toExternalForm())).
orElse(null);
}, posterFileNameProperty());
}
项目:ExtremeGuiMakeover
文件:Movie.java
public final Binding<Image> createBackgroundImageBinding() {
return Bindings.createObjectBinding(() -> {
return Optional.ofNullable(getBackgroundFileName()).
map(s -> new Image(Database.class.getResource(s).toExternalForm())).
orElse(null);
}, backgroundFileNameProperty());
}
项目:vars-annotation
文件:BindingDemo.java
public static void main(String[] args) {
ObjectProperty<LocalDateTime> dp = new SimpleObjectProperty<>(LocalDateTime.now());
ObjectProperty<Instant> ip = new SimpleObjectProperty<>();
Binding<Instant> ib = Bindings.createObjectBinding(
() -> dp.get().toInstant(OffsetDateTime.now().getOffset()),
dp);
ip.bind(ib);
// Binding<LocalDateTime> db = Bindings.createObjectBinding(
// () -> ip.get().atZone(ZoneId.systemDefault()).toLocalDateTime(),
// ip);
// dp.bind(db);
dp.addListener((obs, ov, nv) -> System.out.println(dp.get()));
ip.addListener((obs, ov, nv) -> System.out.println(ip.get()));
dp.setValue(LocalDateTime.of(2000, 9, 22, 9, 16, 0));
dp.setValue(LocalDateTime.of(1968, 12, 25, 8, 0, 0));
dp.setValue(LocalDateTime.of(2002, 7, 27, 3, 30, 0));
//
// ip.setValue(Instant.EPOCH);
// ip.setValue(Instant.MAX);
// ip.setValue(Instant.MIN);
}
项目:fx-log
文件:FirstMatchBinding.java
private void bindRule(Rule<T, U, M> rule) {
bind(rule.resultProperty());
Binding<Boolean> currentBinding = EasyBind.select(rule.matcherProperty()).selectObject(m -> m.matches(input));
ruleMatchBindings.put(rule, currentBinding);
bind(currentBinding);
}
项目:fx-log
文件:StyledTableCell.java
private static Binding<Style> getOrCreateStyleBinding(TableRow<LogEntry> row,
ObservableValue<Colorizer> colorizer) {
@SuppressWarnings("unchecked")
Binding<Style> colorizedLogStyle = (Binding<Style>) row.getProperties().get(STYLE_BINDING_KEY);
if (colorizedLogStyle == null) {
ObservableValue<LogEntry> observableLogValue = row.itemProperty();
colorizedLogStyle = RuleSet.outputFor(colorizer, observableLogValue, Style.DEFAULT);
row.getProperties().put(STYLE_BINDING_KEY, colorizedLogStyle);
}
return colorizedLogStyle;
}
项目:fx-log
文件:ColumnDefinition.java
private Binding<Tooltip> createTooltipBinding() {
Tooltip tooltip = new Tooltip();
tooltip.textProperty().bind(description);
BooleanBinding descriptionIsNull = description.isNull();
Callable<Tooltip> tooltipCallable = () -> {
if (descriptionIsNull.get()) {
// no tooltip when no description
return null;
}
return tooltip;
};
return Bindings.createObjectBinding(tooltipCallable, descriptionIsNull);
}
项目:fx-log
文件:SearchController.java
private Binding<Predicate<LogEntry>> createLogSearcherBinding(Binding<Predicate<String>> textMatcherBinding) {
Callable<Predicate<LogEntry>> createLogMatcher = () -> {
return createLogEntryMatcher(textMatcherBinding.getValue(), columnDefinitions.getValue());
};
return Bindings.createObjectBinding(createLogMatcher, textMatcherBinding, columnDefinitions);
}
项目:fx-log
文件:ColorizersController.java
private static void bindActivableColorPicker(@NotNull Property<Color> colorProperty, @NotNull ColorPicker picker,
@NotNull CheckBox checkbox) {
// initial values
Color currentValue = colorProperty.getValue();
picker.setValue(currentValue == null ? Color.WHITE : currentValue);
checkbox.setSelected(currentValue != null);
// binding
Callable<Color> getColor = () -> checkbox.isSelected() ? picker.getValue() : null;
Binding<Color> colorBinding =
Bindings.createObjectBinding(getColor, checkbox.selectedProperty(), picker.valueProperty());
colorProperty.bind(colorBinding);
}
项目:fx-log
文件:RuleSetTest.java
@Test
public void testSimpleRuleSetBinding() {
RuleSet<Integer, String, Matcher<Integer>, Rule<Integer, String, Matcher<Integer>>> ruleSet = new RuleSet<>();
ruleSet.getRules().add(new Rule<>(i -> i != null && i < 5, "Very small"));
ruleSet.getRules().add(new Rule<>(i -> i != null && i < 10, "Small"));
ruleSet.getRules().add(new Rule<>(i -> i != null && i < 15, "Large"));
ruleSet.getRules().add(new Rule<>(i1 -> i1 != null && i1 < 20, "Very large"));
Property<Integer> intProp = new SimpleObjectProperty<>(null);
Binding<String> resultBinding = ruleSet.outputFor(intProp, "default");
Assert.assertEquals("Should return the default", "default", resultBinding.getValue());
intProp.setValue(3);
Assert.assertFalse(resultBinding.isValid());
Assert.assertEquals("Should match 1st rule", "Very small", resultBinding.getValue());
intProp.setValue(8);
Assert.assertFalse(resultBinding.isValid());
Assert.assertEquals("Should match 2nd rule", "Small", resultBinding.getValue());
intProp.setValue(17);
Assert.assertFalse(resultBinding.isValid());
Assert.assertEquals("Should match 4th rule", "Very large", resultBinding.getValue());
intProp.setValue(50);
Assert.assertFalse(resultBinding.isValid());
Assert.assertEquals("Should return the default", "default", resultBinding.getValue());
}
项目:fx-log
文件:RuleSetTest.java
@Test
public void testChangingRules() {
RuleSet<Integer, String, Matcher<Integer>, Rule<Integer, String, Matcher<Integer>>> ruleSet = new RuleSet<>();
ruleSet.getRules().add(new Rule<>(i -> i != null && i < 5, "Very small"));
ruleSet.getRules().add(new Rule<>(i -> i != null && i < 10, "Small"));
ruleSet.getRules().add(new Rule<>(i -> i != null && i < 15, "Large"));
Rule<Integer, String, Matcher<Integer>> veryLargeRule = new Rule<>(i -> i != null && i < 20, "Very large");
ruleSet.getRules().add(veryLargeRule);
Property<Integer> intProp = new SimpleObjectProperty<>(null);
Binding<String> resultBinding = ruleSet.outputFor(intProp, "default");
intProp.setValue(50);
Assert.assertFalse(resultBinding.isValid());
Assert.assertEquals("Should return the default", "default", resultBinding.getValue());
ruleSet.getRules().add(new Rule<>(i -> i != null && i < 100, "Extra large"));
Assert.assertFalse(resultBinding.isValid());
Assert.assertEquals("Should match new rule", "Extra large", resultBinding.getValue());
intProp.setValue(17);
Assert.assertFalse(resultBinding.isValid());
Assert.assertEquals("Should match 4th rule", "Very large", resultBinding.getValue());
ruleSet.getRules().remove(veryLargeRule);
Assert.assertFalse(resultBinding.isValid());
Assert.assertEquals("Should match 5th rule", "Extra large", resultBinding.getValue());
}
项目:qupath
文件:ObservableMeasurementTableData.java
public Binding<Number> createNumericMeasurement(final PathObject pathObject, final String column) {
MeasurementBuilder<?> builder = builderMap.get(column);
if (builder == null)
return new ObservableMeasurement(pathObject, column);
else if (builder instanceof NumericMeasurementBuilder)
return ((NumericMeasurementBuilder)builder).createMeasurement(pathObject);
else
throw new IllegalArgumentException(column + " does not represent a numeric measurement!");
}
项目:qupath
文件:ObservableMeasurementTableData.java
public Binding<String> createStringMeasurement(final PathObject pathObject, final String column) {
MeasurementBuilder<?> builder = builderMap.get(column);
if (builder instanceof StringMeasurementBuilder)
return ((StringMeasurementBuilder)builder).createMeasurement(pathObject);
else
throw new IllegalArgumentException(column + " does not represent a String measurement!");
}
项目:qupath
文件:ObservableMeasurementTableData.java
@Override
public Binding<Number> createMeasurement(final PathObject pathObject) {
// Only return density measurements for annotations
if (pathObject.isAnnotation() || (pathObject.isTMACore() && pathObject.getChildObjects().size() == 1))
return new ClassDensityMeasurementPerMM(server, pathObject, pathClass);
return Bindings.createDoubleBinding(() -> Double.NaN);
}
项目:qupath
文件:ObservableMeasurementTableData.java
@Override
public Binding<String> createMeasurement(final PathObject pathObject) {
return new StringBinding() {
@Override
protected String computeValue() {
return getMeasurementValue(pathObject);
}
};
}
项目:qupath
文件:ObservableMeasurementTableData.java
@Override
public Binding<Number> createMeasurement(PathObject pathObject) {
return new DoubleBinding() {
@Override
protected double computeValue() {
return getCentroid(pathObject.getROI());
}
};
}
项目:qupath
文件:ObservableMeasurementTableData.java
@Override
public Binding<Number> createMeasurement(final PathObject pathObject) {
return new DoubleBinding() {
@Override
protected double computeValue() {
ROI roi = pathObject.getROI();
if (!(roi instanceof PathArea))
return Double.NaN;
if (hasPixelSizeMicrons())
return ((PathArea)roi).getScaledArea(pixelWidthMicrons(), pixelHeightMicrons());
return ((PathArea)roi).getArea();
}
};
}
项目:qupath
文件:ObservableMeasurementTableData.java
@Override
public Binding<Number> createMeasurement(final PathObject pathObject) {
return new DoubleBinding() {
@Override
protected double computeValue() {
ROI roi = pathObject.getROI();
if (!(roi instanceof PathArea))
return Double.NaN;
if (hasPixelSizeMicrons())
return ((PathArea)roi).getScaledPerimeter(pixelWidthMicrons(), pixelHeightMicrons());
return ((PathArea)roi).getPerimeter();
}
};
}
项目:qupath
文件:ObservableMeasurementTableData.java
@Override
public Binding<Number> createMeasurement(final PathObject pathObject) {
return new DoubleBinding() {
@Override
protected double computeValue() {
ROI roi = pathObject.getROI();
List<Point2> points;
if (roi instanceof PolygonROI)
points = ((PolygonROI)roi).getPolygonPoints();
else if (roi instanceof AreaROI)
points = ((AreaROI)roi).getPolygonPoints();
else
return Double.NaN;
double xScale = hasPixelSizeMicrons() ? pixelWidthMicrons() : 1;
double yScale = hasPixelSizeMicrons() ? pixelHeightMicrons() : 1;
double maxLengthSq = 0;
for (int i = 0; i < points.size(); i++) {
Point2 pi = points.get(i);
for (int j = i+1; j < points.size(); j++) {
Point2 pj = points.get(j);
double dx = (pi.getX() - pj.getX()) * xScale;
double dy = (pi.getY() - pj.getY()) * yScale;
maxLengthSq = Math.max(maxLengthSq, dx*dx + dy*dy);
}
}
return Math.sqrt(maxLengthSq);
}
};
}
项目:qupath
文件:ObservableMeasurementTableData.java
@Override
public Binding<Number> createMeasurement(final PathObject pathObject) {
return new DoubleBinding() {
@Override
protected double computeValue() {
ROI roi = pathObject.getROI();
if (!(roi instanceof PathLine))
return Double.NaN;
if (hasPixelSizeMicrons())
return ((PathLine)roi).getScaledLength(pixelWidthMicrons(), pixelHeightMicrons());
return ((PathLine)roi).getLength();
}
};
}
项目:qupath
文件:ObservableMeasurementTableData.java
@Override
public Binding<Number> createMeasurement(final PathObject pathObject) {
return new DoubleBinding() {
@Override
protected double computeValue() {
ROI roi = pathObject.getROI();
if (!(roi instanceof PathPoints))
return Double.NaN;
return ((PathPoints)roi).getNPoints();
}
};
}
项目:ISAAC
文件:CustomClipboard.java
public static void updateBindings()
{
for (Binding<Boolean> b : bindings_)
{
b.invalidate();
}
}
项目:assertj-javafx
文件:FloatTest.java
@Test
public void testGenericBinding(){
Binding<Float> actual = Bindings.createObjectBinding(() -> 20f);
assertThat(actual).hasValue(20f);
assertThat(actual).hasSameValue(actual);
}
项目:assertj-javafx
文件:IntegerTest.java
@Test
public void testGenericBinding(){
Binding<Integer> actual = Bindings.createObjectBinding(() -> 20);
assertThat(actual).hasValue(20);
assertThat(actual).hasSameValue(actual);
}
项目:assertj-javafx
文件:LongTest.java
@Test
public void testGenericBinding(){
Binding<Long> actual = Bindings.createObjectBinding(() -> 20l);
assertThat(actual).hasValue(20l);
assertThat(actual).hasSameValue(actual);
}
项目:assertj-javafx
文件:ObjectTest.java
@Test
public void testGenericBinding(){
Binding<TestPerson> actual = Bindings.createObjectBinding(()->person);
assertThat(actual).hasValue(person);
assertThat(actual).hasSameValue(actual);
}
项目:assertj-javafx
文件:DoubleTest.java
@Test
public void testGenericBinding(){
Binding<Double> actual = Bindings.createObjectBinding(()->20.2);
assertThat(actual).hasValue(20.2);
assertThat(actual).hasSameValue(actual);
}
项目:assertj-javafx
文件:StringTest.java
@Test
public void testGenericBinding(){
Binding<String> actual = Bindings.createObjectBinding(()-> "test");
assertThat(actual).hasValue("test");
assertThat(actual).hasSameValue(actual);
}
项目:assertj-javafx
文件:BindingAssertions_hasNotNullValue_test.java
@Test
public void should_fail_if_actual_has_a_value_of_null(){
try{
Binding<String> actual = Bindings.createObjectBinding(()->null);
new BindingAssertions<>(actual).hasNotNullValue();
fail("Should throw an AssertionError");
}catch(AssertionError error){
assertThat(error).hasMessageContaining("Expected binding to not have a value of null");
}
}