1 | |
package com.sun.javafx.runtime.sequence; |
2 | |
|
3 | |
import com.sun.javafx.runtime.location.SequenceChangeListener; |
4 | |
import com.sun.javafx.runtime.location.SequenceLocation; |
5 | |
|
6 | |
|
7 | |
|
8 | |
|
9 | |
|
10 | |
|
11 | |
public class BoundUpcastSequence<T, V extends T> extends AbstractBoundSequence<T> { |
12 | |
|
13 | |
private final SequenceLocation<V> sequence; |
14 | |
|
15 | |
public BoundUpcastSequence(Class<T> clazz, SequenceLocation<V> sequence) { |
16 | 0 | super(clazz); |
17 | 0 | this.sequence = sequence; |
18 | 0 | setInitialValue(computeValue()); |
19 | 0 | addTriggers(); |
20 | 0 | } |
21 | |
|
22 | |
private Sequence<T> computeValue() { |
23 | 0 | return Sequences.upcast(getClazz(), sequence.get()); |
24 | |
} |
25 | |
|
26 | |
private void addTriggers() { |
27 | 0 | sequence.addChangeListener(new SequenceChangeListener<V>() { |
28 | |
public void onChange(int startPos, int endPos, Sequence<? extends V> newElements, Sequence<V> oldValue, Sequence<V> newValue) { |
29 | 0 | updateSlice(startPos, endPos, newElements, Sequences.upcast(getClazz(), newValue)); |
30 | 0 | } |
31 | |
}); |
32 | 0 | } |
33 | |
} |