public static void initFramePainters(@NotNull PaintersHelper painters) { PaintersHelper.initWallpaperPainter("idea.wallpaper.ide", painters); ApplicationInfoEx appInfo = ApplicationInfoEx.getInstanceEx(); String path = UIUtil.isUnderDarcula()? appInfo.getEditorBackgroundImageUrl() : null; URL url = path == null ? null : appInfo.getClass().getResource(path); Image centerImage = url == null ? null : ImageLoader.loadFromUrl(url); if (centerImage != null) { painters.addPainter(PaintersHelper.newImagePainter(centerImage, PaintersHelper.FillType.TOP_CENTER, 1.0f, JBUI.insets(10, 0, 0, 0)), null); } painters.addPainter(new AbstractPainter() { EditorEmptyTextPainter p = ServiceManager.getService(EditorEmptyTextPainter.class); @Override public boolean needsRepaint() { return true; } @Override public void executePaint(Component component, Graphics2D g) { p.paintEmptyText((JComponent)component, g); } }, null); }
public static AbstractPainter newImagePainter(final Image image, final FillType fillType, final float alpha, final Insets insets) { return new ImagePainter() { @Override public void executePaint(Component component, Graphics2D g) { executePaint(g, component, image, fillType, alpha, insets); } }; }
public static AbstractPainter newImagePainter(@Nonnull final Image image, final Fill fillType, final Place place, final float alpha, final Insets insets) { return new ImagePainter() { @Override public boolean needsRepaint() { return true; } @Override public void executePaint(Component component, Graphics2D g) { executePaint(g, component, image, fillType, place, alpha, insets); } }; }
public static void initFramePainters(@Nonnull IdeGlassPaneImpl glassPane) { PaintersHelper painters = glassPane.getNamedPainters(FRAME_PROP); PaintersHelper.initWallpaperPainter(FRAME_PROP, painters); ApplicationInfoEx appInfo = ApplicationInfoEx.getInstanceEx(); String path = /*UIUtil.isUnderDarcula()? appInfo.getEditorBackgroundImageUrl() : */null; URL url = path == null ? null : appInfo.getClass().getResource(path); Image centerImage = url == null ? null : ImageLoader.loadFromUrl(url); if (centerImage != null) { painters.addPainter(PaintersHelper.newImagePainter(centerImage, PaintersHelper.Fill.PLAIN, PaintersHelper.Place.TOP_CENTER, 1.0f, JBUI.insets(10, 0, 0, 0)), null); } painters.addPainter(new AbstractPainter() { EditorEmptyTextPainter p = EditorEmptyTextPainter.ourInstance; @Override public boolean needsRepaint() { return true; } @Override public void executePaint(Component component, Graphics2D g) { p.paintEmptyText((JComponent)component, g); } }, null); }
private static AbstractPainter newWallpaperPainter(@NotNull final String propertyName) { return new ImagePainter() { Image image; float alpha; Insets insets; FillType fillType; String current; @Override public void executePaint(Component component, Graphics2D g) { String value = StringUtil.notNullize(System.getProperty(propertyName), propertyName + ".png"); if (!Comparing.equal(value, current)) { current = value; image = scaled = null; insets = JBUI.emptyInsets(); String[] parts = value.split(","); try { alpha = StringUtil.parseInt(parts.length > 1 ? parts[1]: "", 10) / 100f; try { fillType = FillType.valueOf(parts.length > 2 ? parts[2].toUpperCase(Locale.ENGLISH) : ""); } catch (IllegalArgumentException e) { fillType = FillType.SCALE; } String filePath = parts[0]; URL url = filePath.contains("://") ? new URL(filePath) : (FileUtil.isAbsolutePlatformIndependent(filePath) ? new File(filePath) : new File(PathManager.getConfigPath(), filePath)).toURI().toURL(); image = ImageLoader.loadFromUrl(url); } catch (Exception ignored) { } } if (image == null) return; executePaint(g, component, image, fillType, alpha, insets); } }; }