import javafx.scene.image.ImageView; //导入方法依赖的package包/类
@FXThread
private static void updateListener(@NotNull final Node node, @NotNull final ImageView imageView,
@NotNull final ReadOnlyBooleanProperty condition,
@NotNull final Object listenerKey, @NotNull final Object notSelectedKey,
@NotNull final Object selectedKey) {
final EditorConfig editorConfig = EditorConfig.getInstance();
final CssColorTheme theme = editorConfig.getTheme();
if (!theme.needRepaintIcons()) {
return;
}
final ObservableMap properties = node.getProperties();
final Image newImage = imageView.getImage();
if (newImage == null) {
properties.remove(listenerKey);
return;
}
final Image original = FILE_ICON_MANAGER.getOriginal(newImage);
properties.put(notSelectedKey, newImage);
properties.put(selectedKey, original);
final ChangeListener listener = (observable, oldValue, newValue) -> {
if (newValue) {
imageView.setImage((Image) properties.get(selectedKey));
} else {
imageView.setImage((Image) properties.get(notSelectedKey));
}
};
condition.addListener(listener);
properties.put(listenerKey, listener);
if (condition.get()) {
imageView.setImage(original);
} else {
imageView.setImage(newImage);
}
}