void (@Nullable String propertyValue) { String[] parts = (propertyValue == null ? propertyName + ".png" : propertyValue).split(","); float newAlpha = Math.abs(Math.min(StringUtil.parseInt(parts.length > 1 ? parts[1] : "", 10) / 100f, 1f)); IdeBackgroundUtil.Fill newFillType = StringUtil.parseEnum(parts.length > 2 ? Strings.toUpperCase(parts[2]) : "", IdeBackgroundUtil.Fill.SCALE, IdeBackgroundUtil.Fill.class); IdeBackgroundUtil.Anchor newAnchor = StringUtil.parseEnum(parts.length > 3 ? Strings.toUpperCase(parts[3]) : "", IdeBackgroundUtil.Anchor.CENTER, IdeBackgroundUtil.Anchor.class); String flip = parts.length > 4 ? parts[4] : "none"; String filePath = parts[0]; boolean flipH = "flipHV".equals(flip) || "flipH".equals(flip); boolean flipV = "flipHV".equals(flip) || "flipV".equals(flip); ImageLoadSettings newLoadSettings = new ImageLoadSettings(filePath, flipH, flipV); if (Strings.isEmpty(filePath)) { resetImage(propertyValue, newLoadSettings, null, newAlpha, newFillType, newAnchor); return; } if (Objects.equals(imageLoadSettings, newLoadSettings)) { resetImage(propertyValue, newLoadSettings, image, newAlpha, newFillType, newAnchor); return; } ModalityState modalityState = ModalityState.stateForComponent(rootComponent); ApplicationManager.getApplication().executeOnPooledThread(() -> { Image newImage = filterImage(loadImage(newLoadSettings), newLoadSettings); ApplicationManager.getApplication().invokeLater(() -> { resetImage(propertyValue, newLoadSettings, newImage, newAlpha, newFillType, newAnchor); }, modalityState); }); }