use of org.cytoscape.work.util.BoundedChangeListener in project cytoscape-impl by cytoscape.
the class BoundedHandler method update.
@Override
public void update() {
isUpdating = true;
try {
final T bounded = getBounded();
if (lastBounded != bounded) {
lastBounded = bounded;
// Make sure we're the only handler for this Tunable that's listening
// for changes. If we're in the middle of a refresh, we can sometimes
// be in a state where there are two...
BoundedChangeListener<N> found = null;
List<BoundedChangeListener<N>> listeners = ((AbstractBounded) lastBounded).getListeners();
for (BoundedChangeListener<N> listener : listeners) {
if (listener instanceof AbstractGUITunableHandler && ((AbstractGUITunableHandler) listener).getQualifiedName().equals(this.getQualifiedName()))
found = listener;
}
if (found != null)
lastBounded.removeListener(found);
lastBounded.addListener(this);
panel.removeAll();
initPanel(bounded);
} else {
if (useSlider) {
Number n = (Number) bounded.getValue();
slider.setValue(n);
} else {
boundedField = new TunableBoundedField((Number) bounded.getValue(), (Number) bounded.getLowerBound(), (Number) bounded.getUpperBound(), bounded.isLowerBoundStrict(), bounded.isUpperBoundStrict());
}
}
} catch (Exception e) {
logger.error("Could not update bounded value", e);
}
isUpdating = false;
}
Aggregations