From c7eadcb5fb2c5ffb866df2b3f9b9b3d56f438880 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Thu, 6 Apr 2017 18:59:31 +0300 Subject: [PATCH] diff: high resolution icons for frame windows --- .../intellij/diff/impl/DiffWindowBase.java | 3 +-- .../src/com/intellij/diff/util/DiffUtil.java | 14 ++++++++++++ platform/icons/src/diff_frame128.png | Bin 0 -> 633 bytes platform/icons/src/diff_frame16.png | Bin 0 -> 155 bytes platform/icons/src/diff_frame32.png | Bin 0 -> 217 bytes platform/icons/src/diff_frame64.png | Bin 0 -> 363 bytes platform/icons/src/icon-robots.txt | 1 + .../integration/ui/views/HistoryDialog.java | 4 ++-- .../intellij/openapi/ui/WindowWrapper.java | 3 ++- .../com/intellij/openapi/ui/FrameWrapper.java | 20 ++++++++++-------- .../openapi/ui/WindowWrapperBuilder.java | 7 +++--- 11 files changed, 35 insertions(+), 17 deletions(-) create mode 100644 platform/icons/src/diff_frame128.png create mode 100644 platform/icons/src/diff_frame16.png create mode 100644 platform/icons/src/diff_frame32.png create mode 100644 platform/icons/src/diff_frame64.png create mode 100644 platform/icons/src/icon-robots.txt diff --git a/platform/diff-impl/src/com/intellij/diff/impl/DiffWindowBase.java b/platform/diff-impl/src/com/intellij/diff/impl/DiffWindowBase.java index 0b72007c6928..2618a34113de 100644 --- a/platform/diff-impl/src/com/intellij/diff/impl/DiffWindowBase.java +++ b/platform/diff-impl/src/com/intellij/diff/impl/DiffWindowBase.java @@ -22,7 +22,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.WindowWrapper; import com.intellij.openapi.ui.WindowWrapperBuilder; import com.intellij.openapi.util.Disposer; -import com.intellij.util.ImageLoader; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -58,7 +57,7 @@ public abstract class DiffWindowBase { myProcessor.updateRequest(); }) .build(); - myWrapper.setImage(ImageLoader.loadFromResource("/diff/Diff.png")); + myWrapper.setImages(DiffUtil.DIFF_FRAME_ICONS); Disposer.register(myWrapper, myProcessor); } diff --git a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java index 097af8c4fc8a..481c376804d1 100644 --- a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java +++ b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java @@ -88,6 +88,7 @@ import com.intellij.ui.awt.RelativePoint; import com.intellij.ui.components.JBLabel; import com.intellij.util.ArrayUtil; import com.intellij.util.DocumentUtil; +import com.intellij.util.ImageLoader; import com.intellij.util.LineSeparator; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.Convertor; @@ -113,6 +114,19 @@ public class DiffUtil { @NotNull public static final String DIFF_CONFIG = "diff.xml"; public static final int TITLE_GAP = JBUI.scale(2); + public static final List DIFF_FRAME_ICONS = loadDiffFrameImages(); + + + @NotNull + private static List loadDiffFrameImages() { + return ContainerUtil.list( + ImageLoader.loadFromResource("/diff_frame16.png"), + ImageLoader.loadFromResource("/diff_frame32.png"), + ImageLoader.loadFromResource("/diff_frame64.png"), + ImageLoader.loadFromResource("/diff_frame128.png") + ); + } + // // Editor // diff --git a/platform/icons/src/diff_frame128.png b/platform/icons/src/diff_frame128.png new file mode 100644 index 0000000000000000000000000000000000000000..7fe30c2947391f6b13c569063e50d583c5e2910e GIT binary patch literal 633 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n4~>j978H@y}5hP^Kb$~+ruRt$E$)^+&47eV7;O#qAobs z$@Pog(cG3G^AC&I`kj={`uqI0eIM!dwOZ=-q-CM1o|9BOCk3tgeeXcg*MB=t);An( zUd%iH!{Y00!u^eJ7#JKFI2afe7+4P2msb|1PEBF>Ud}JDYF4KeE&n9g=8O~eE z!r{)~V8O(2NRUCGkD;M}g`q{cz|MiaY1yQFk*WXZ9sTy&!ivd4h=GBTK>!Q!k%Iw? z2@DD{jlqZ5TnvuA+Gif{Yj<<|x<8gx&d=vKfTE}YXcChHC_Ys@_x}<~V7PrW+GN$i Ru(=FC;OXk;vd$@?2>|tS=V|}| literal 0 HcmV?d00001 diff --git a/platform/icons/src/diff_frame16.png b/platform/icons/src/diff_frame16.png new file mode 100644 index 0000000000000000000000000000000000000000..b86600dd917b4e77b77d1ad22f918932612261b7 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`NuDl_Ar-fh6BdY7e0=q_K4(T_ zBQN{0M289&o>aC5m5IEHrx{Y5J4_gMD@{-gF->^1WaX1;#wC(hy;WG0e2fFx7Pu>K zN;_lXD@F$G@qC`(fkXJAn4pYbg2i{mk%Z492SelF{r5}E-2 C#4`i{ literal 0 HcmV?d00001 diff --git a/platform/icons/src/diff_frame32.png b/platform/icons/src/diff_frame32.png new file mode 100644 index 0000000000000000000000000000000000000000..65bb77966fd35ff56928b139cec5c4d441ec5daa GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ1)eUBAr-fh6C_wO9voeL{lDiy z9-bVPM+;vxeCU|bSjym`tml5=EaMIt$8h$9VwStI4evO#tQt(36Z#|!*bm4U7Rfp^ zYe;->@wl5~QF!S}qjrbGw8v#Kz1>MOo`#e*Oxy3H*$y?79@lSwAfCjGyf!A8hl>@w9^s-MN!mBy+3`d zIYKy89smFUfCRwleDMu1Tx<`5DS$l)<^XaLOakN}m<32hFb$A`U>;x#!3Dq?f*XJ( z1cd-~|Ii%49l#vHCBPKHEx?EX0Ji`SL0*GQgqRAm7|I&g+uiSScnF{OJ3|eTF?YJhxr^Qvb#ifqRtKArp{9Zui))-%m004kZ0E(ha*B4wjjw@Q=v916B002ov JPDHLkV1oPaj#K~u literal 0 HcmV?d00001 diff --git a/platform/icons/src/icon-robots.txt b/platform/icons/src/icon-robots.txt new file mode 100644 index 000000000000..e9a17d2af1c5 --- /dev/null +++ b/platform/icons/src/icon-robots.txt @@ -0,0 +1 @@ +skip: diff_frame* \ No newline at end of file diff --git a/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/HistoryDialog.java b/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/HistoryDialog.java index 6611ccfc4b4c..ddc45b1f09b6 100644 --- a/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/HistoryDialog.java +++ b/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/HistoryDialog.java @@ -20,6 +20,7 @@ import com.intellij.CommonBundle; import com.intellij.diff.contents.DiffContent; import com.intellij.diff.requests.ContentDiffRequest; import com.intellij.diff.requests.SimpleDiffRequest; +import com.intellij.diff.util.DiffUtil; import com.intellij.history.core.LocalHistoryFacade; import com.intellij.history.integration.IdeaGateway; import com.intellij.history.integration.LocalHistoryBundle; @@ -54,7 +55,6 @@ import com.intellij.ui.*; import com.intellij.ui.awt.RelativePoint; import com.intellij.ui.components.JBLayeredPane; import com.intellij.util.Consumer; -import com.intellij.util.ImageLoader; import com.intellij.util.ui.AbstractLayoutManager; import com.intellij.util.ui.AnimatedIcon; import com.intellij.util.ui.AsyncProcessIcon; @@ -98,7 +98,7 @@ public abstract class HistoryDialog extends FrameW setProject(project); setDimensionKey(getPropertiesKey()); - setImage(ImageLoader.loadFromResource("/diff/Diff.png")); + setImages(DiffUtil.DIFF_FRAME_ICONS); closeOnEsc(); if (doInit) init(); diff --git a/platform/platform-api/src/com/intellij/openapi/ui/WindowWrapper.java b/platform/platform-api/src/com/intellij/openapi/ui/WindowWrapper.java index 9baa58dd63d1..7455b9aa6982 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/WindowWrapper.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/WindowWrapper.java @@ -7,6 +7,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.*; +import java.util.List; public interface WindowWrapper extends Disposable { enum Mode {FRAME, MODAL, NON_MODAL} @@ -27,7 +28,7 @@ public interface WindowWrapper extends Disposable { void setTitle(@Nullable String title); - void setImage(@Nullable Image image); + void setImages(@Nullable List images); void close(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/ui/FrameWrapper.java b/platform/platform-impl/src/com/intellij/openapi/ui/FrameWrapper.java index ca7a39ec6b37..6a571575964e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/ui/FrameWrapper.java +++ b/platform/platform-impl/src/com/intellij/openapi/ui/FrameWrapper.java @@ -24,7 +24,6 @@ import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.actionSystem.ex.ActionManagerEx; import com.intellij.openapi.actionSystem.ex.ActionUtil; import com.intellij.openapi.actionSystem.impl.MouseGestureManager; -import com.intellij.openapi.application.impl.ApplicationInfoImpl; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.ProjectManagerAdapter; @@ -45,7 +44,6 @@ import com.intellij.ui.AppUIUtil; import com.intellij.ui.BalloonLayout; import com.intellij.ui.FocusTrackback; import com.intellij.ui.FrameState; -import com.intellij.util.ImageLoader; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.ImageUtil; import com.intellij.util.ui.UIUtil; @@ -57,6 +55,8 @@ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.File; +import java.util.Collections; +import java.util.List; import java.util.Map; public class FrameWrapper implements Disposable, DataProvider { @@ -65,7 +65,7 @@ public class FrameWrapper implements Disposable, DataProvider { private JComponent myComponent = null; private JComponent myPreferredFocus = null; private String myTitle = ""; - private Image myImage = ImageLoader.loadFromResource(ApplicationInfoImpl.getShadowInstance().getIconUrl()); + private List myImages = null; private boolean myCloseOnEsc = false; private Window myFrame; private final Map myDataMap = ContainerUtil.newHashMap(); @@ -81,7 +81,6 @@ public class FrameWrapper implements Disposable, DataProvider { protected StatusBar myStatusBar; private boolean myShown; private boolean myIsDialog; - private boolean myImageWasChanged; public FrameWrapper(Project project) { this(project, null); @@ -175,9 +174,9 @@ public class FrameWrapper implements Disposable, DataProvider { } else { ((JDialog)frame).setTitle(myTitle); } - if (myImageWasChanged && myImage != null) { + if (myImages != null) { // unwrap the image before setting as frame's icon - frame.setIconImage(ImageUtil.toBufferedImage(myImage)); + frame.setIconImages(ContainerUtil.map(myImages, ImageUtil::toBufferedImage)); } else { AppUIUtil.updateWindowIcon(myFrame); @@ -230,7 +229,7 @@ public class FrameWrapper implements Disposable, DataProvider { myFocusedCallback = null; myFocusTrackback = null; myComponent = null; - myImage = null; + myImages = null; myDisposed = true; if (statusBar != null) { @@ -333,8 +332,11 @@ public class FrameWrapper implements Disposable, DataProvider { } public void setImage(Image image) { - myImageWasChanged = true; - myImage = image; + setImages(image != null ? Collections.singletonList(image) : Collections.emptyList()); + } + + public void setImages(List images) { + myImages = images; } protected void loadFrameState() { diff --git a/platform/platform-impl/src/com/intellij/openapi/ui/WindowWrapperBuilder.java b/platform/platform-impl/src/com/intellij/openapi/ui/WindowWrapperBuilder.java index 96e25cef9497..39ff610194be 100644 --- a/platform/platform-impl/src/com/intellij/openapi/ui/WindowWrapperBuilder.java +++ b/platform/platform-impl/src/com/intellij/openapi/ui/WindowWrapperBuilder.java @@ -14,6 +14,7 @@ import javax.swing.border.Border; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.util.List; public class WindowWrapperBuilder { @NotNull private final Mode myMode; @@ -170,7 +171,7 @@ public class WindowWrapperBuilder { } @Override - public void setImage(@Nullable Image image) { + public void setImages(@Nullable List images) { } @Override @@ -305,8 +306,8 @@ public class WindowWrapperBuilder { } @Override - public void setImage(@Nullable Image image) { - myFrame.setImage(image); + public void setImages(@Nullable List images) { + myFrame.setImages(images); } @Override