From a75ee5ad8c4a826a1b4f89dd5cd30eff9dc711b5 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 19 Jul 2017 17:28:59 +0200 Subject: [PATCH] Cleanup (unified code for setting app icon in debug mode) --- .../src/com/intellij/ui/AppUIUtil.java | 66 ++++++++----------- 1 file changed, 26 insertions(+), 40 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ui/AppUIUtil.java b/platform/platform-impl/src/com/intellij/ui/AppUIUtil.java index 887d20d80b5c..914cc3e3826e 100644 --- a/platform/platform-impl/src/com/intellij/ui/AppUIUtil.java +++ b/platform/platform-impl/src/com/intellij/ui/AppUIUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,8 +34,8 @@ import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.wm.ToolWindowManager; -import com.intellij.ui.components.JBScrollPane; import com.intellij.ui.AppIcon.MacAppIcon; +import com.intellij.ui.components.JBScrollPane; import com.intellij.util.*; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.ImageUtil; @@ -65,56 +65,44 @@ import static javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED; */ public class AppUIUtil { private static final String VENDOR_PREFIX = "jetbrains-"; + private static final boolean DEBUG_MODE = SystemProperties.getBooleanProperty("idea.debug.mode", false); public static void updateWindowIcon(@NotNull Window window) { - window.setIconImages(getAppIconImages()); - } - - static { - // Forcedly set app-icon for the debug IDE on macOS. - ApplicationInfoEx appInfo = ApplicationInfoImpl.getShadowInstance(); - if (SystemInfo.isMac && appInfo.getBuild().isSnapshot()) { - Image bigIcon = getBigAppIcon(); - if (bigIcon != null) { - MacAppIcon.setDockIcon(ImageUtil.toBufferedImage(bigIcon)); - } - } - } - - @SuppressWarnings({"UnnecessaryFullyQualifiedName", "deprecation"}) - private static List getAppIconImages() { ApplicationInfoEx appInfo = ApplicationInfoImpl.getShadowInstance(); List images = ContainerUtil.newArrayListWithCapacity(3); - if (SystemInfo.isUnix) {//MacOS is Unix too - Image bigIcon = getBigAppIcon(); - if (bigIcon != null) { - images.add(bigIcon); + if (SystemInfo.isUnix) { + String bigIconUrl = appInfo.getBigIconUrl(); + if (bigIconUrl != null) { + Image bigIcon = ImageLoader.loadFromResource(bigIconUrl); + if (bigIcon != null) { + images.add(bigIcon); + } } } - images.add(com.intellij.util.ImageLoader.loadFromResource(appInfo.getIconUrl())); - images.add(com.intellij.util.ImageLoader.loadFromResource(appInfo.getSmallIconUrl())); + images.add(ImageLoader.loadFromResource(appInfo.getIconUrl())); + images.add(ImageLoader.loadFromResource(appInfo.getSmallIconUrl())); + for (int i = 0; i < images.size(); i++) { Image image = images.get(i); if (image instanceof JBHiDPIScaledImage) { images.set(i, ((JBHiDPIScaledImage)image).getDelegate()); } } - return images; - } - private static Image getBigAppIcon() { - ApplicationInfoEx appInfo = ApplicationInfoImpl.getShadowInstance(); - String bigIconUrl = appInfo.getBigIconUrl(); - if (bigIconUrl != null) { - return ImageLoader.loadFromResource(bigIconUrl); + if (!images.isEmpty()) { + if (!SystemInfo.isMac) { + window.setIconImages(images); + } + else if (DEBUG_MODE) { + MacAppIcon.setDockIcon(ImageUtil.toBufferedImage(images.get(0))); + } } - return null; } public static void invokeLaterIfProjectAlive(@NotNull Project project, @NotNull Runnable runnable) { - final Application application = ApplicationManager.getApplication(); + Application application = ApplicationManager.getApplication(); if (application.isDispatchThread()) { runnable.run(); } @@ -145,8 +133,8 @@ public class AppUIUtil { public static void updateFrameClass() { try { - final Toolkit toolkit = Toolkit.getDefaultToolkit(); - final Class aClass = toolkit.getClass(); + Toolkit toolkit = Toolkit.getDefaultToolkit(); + Class aClass = toolkit.getClass(); if ("sun.awt.X11.XToolkit".equals(aClass.getName())) { ReflectionUtil.setField(aClass, toolkit, null, "awtAppClassName", getFrameClass()); } @@ -157,10 +145,9 @@ public class AppUIUtil { public static String getFrameClass() { String name = ApplicationNamesInfo.getInstance().getProductName().toLowerCase(Locale.US); String wmClass = VENDOR_PREFIX + name.replace(' ', '-'); - if ("true".equals(System.getProperty("idea.debug.mode"))) { - wmClass += "-debug"; - } - return PlatformUtils.isCommunityEdition() ? wmClass + "-ce" : wmClass; + if (PlatformUtils.isCommunityEdition()) wmClass += "-ce"; + if (DEBUG_MODE) wmClass += "-debug"; + return wmClass; } public static void registerBundledFonts() { @@ -261,7 +248,6 @@ public class AppUIUtil { */ public static void showPrivacyPolicyAgreement(@NotNull String htmlText) { DialogWrapper dialog = new DialogWrapper(true) { - @Nullable @Override protected JComponent createCenterPanel() { JPanel centerPanel = new JPanel(new BorderLayout(JBUI.scale(5), JBUI.scale(5)));