From b833599f0ce9938f63ab373248fe60b777923171 Mon Sep 17 00:00:00 2001 From: Kirill Likhodedov Date: Wed, 24 Sep 2014 17:31:06 +0400 Subject: [PATCH] [push] Change loading icons to the standard ones, fix widths Let the LoadingIcon occupy the same area as the JCheckbox does to avoid flickering when loading icon is changed to the checkbox. Keep an empty icon to occupy the same place for the single repo case. --- .../dvcs-impl/resources/icons/Loading@2x.gif | Bin 3233 -> 0 bytes .../resources/icons/Loading@2x_dark.gif | Bin 3332 -> 0 bytes .../dvcs-impl/resources/icons/loading.gif | Bin 1460 -> 3244 bytes .../dvcs-impl/resources/icons/loading@2x.gif | Bin 0 -> 6488 bytes .../resources/icons/loading@2x_dark.gif | Bin 0 -> 6585 bytes .../resources/icons/loading_dark.gif | Bin 1496 -> 3213 bytes ...dingIconProvider.java => LoadingIcon.java} | 56 +++++++++++++++--- .../intellij/dvcs/push/ui/RepositoryNode.java | 15 ++--- .../dvcs/push/ui/SingleRepositoryNode.java | 10 ++-- .../src/com/intellij/util/ui/JBImageIcon.java | 2 +- 10 files changed, 62 insertions(+), 21 deletions(-) delete mode 100644 platform/dvcs-impl/resources/icons/Loading@2x.gif delete mode 100644 platform/dvcs-impl/resources/icons/Loading@2x_dark.gif create mode 100644 platform/dvcs-impl/resources/icons/loading@2x.gif create mode 100644 platform/dvcs-impl/resources/icons/loading@2x_dark.gif rename platform/dvcs-impl/src/com/intellij/dvcs/push/ui/{LoadingIconProvider.java => LoadingIcon.java} (57%) diff --git a/platform/dvcs-impl/resources/icons/Loading@2x.gif b/platform/dvcs-impl/resources/icons/Loading@2x.gif deleted file mode 100644 index 77c756d99cb18bb98f980681b8d087d3f7b29f4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3233 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 diff --git a/platform/dvcs-impl/resources/icons/Loading@2x_dark.gif b/platform/dvcs-impl/resources/icons/Loading@2x_dark.gif deleted file mode 100644 index f95c9287108f411b3dfaf5a865c18ba990810f6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3332 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 XLTbR3iaM>gCi=mci^(Jtgbn`zOH}69 diff --git a/platform/dvcs-impl/resources/icons/loading.gif b/platform/dvcs-impl/resources/icons/loading.gif index bfd4da22375397b37ce384876b1c2bb9db8df59d..de907980d8ebdaba06fa2c7add57681d66d47722 100644 GIT binary patch literal 3244 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 F{{vVJ@-P4Z literal 0 HcmV?d00001 diff --git a/platform/dvcs-impl/resources/icons/loading_dark.gif b/platform/dvcs-impl/resources/icons/loading_dark.gif index e41778b2c6e7fa38b1ebccb6c3c865f1eaeaf41f..5d4800a0f98becce75008af34c02b44bb052f908 100644 GIT binary patch literal 3213 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 b6GNtZ1?~Ow_!uo5>d#V@tqPsJA7A_z9{74+ literal 1496 zcmb``Z%h++7zglcdz7|N{*(hs+c|2l*JI)Y)|kSUr5u08&#k6Xk`>bzJux_&pafkA zFIMS<^;%jKdPK!7(e?Oe3K+8pnq`F^Mp>2_%=U7LZP$_x7GXe7G5pPfAjDY;1I3 zVBo=njbJc%?%YrxJb}T%!C>&?bUGalha-{5nKOe!Lqh`try`NFJ39rQ508&W=jU%+ zxG+*EY;A1Z&t`95yf_kzU0PpXy?Jw9lD_Wh>LUJ+$No>r@vgo=N4vkP1Yt6|Xql(`ZS|?6D*7P1j7F2zcx>%u}|ze#?v!q`u{EFB!l5+{#q$ z#nXH3zj=f!#ux20L6AO+N@d{)t(Neqii%Y61eKaLawIkGt1;SZI;$C`y3^!znz|W- zf$4PWbj~|Drq1Q6yL+$O#vHJ@G#Xc}Q&SsY3p?L;mbwm>{`eEu{-04rsE7*u650ed zf=ZTV#h$BThnnz)+Z@>ww7$tql=VJtKH1nEI^yhq-=(J_CM=$)&a9}bPmyXf%>Im3 z7ZMqg{?B3opm=*jQZD}V|33i>kU}f%9Oia)_-a%{P0qY85|BrC5(=;j*=3` z#1}#`1yh9z$D0)#IFMPbHX~3V2(Y;91a7X_s$c*NL4!OTj^KE*(3uBhjUZZ;d|MSLg%5pBMaNk-R3b5=c~UJGvELuG!SKB0Vi+;Ni78>2qg76rxaI(11QBI z2(Ywb1@G#*f&nlD5%Svt0_XlZwqcHzrF#=zQS88@`L=hK0!$rCsjoeIK7uO@op)f} z;q+DKt|wvUQr_{H;Sk<^XdueM{!QQtk}2h1!TNDZZzK+&^oAh7(uxDPt6ECY0GOl} zgsp;rfVsbJSx>rUsm0HdVh0}0*H~tI(JW;vQ-A0<-C(a+cr}`FXEXR_XTBA+wft#! z(mM&O4-H&mVgK-5Or@cN1gsyY)CR|^)P^9y(h3b++#O)R3po;bEtNndb$@@IP^oK@ zrQTtWPL!W~Lh%QV&U?KX+u@q*W9^?h$`E@sD!OYe=*bHWI%%;_4RZ&5x0Kz72F6*~ qKe&r&n45(4-n1 diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/LoadingIconProvider.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/LoadingIcon.java similarity index 57% rename from platform/dvcs-impl/src/com/intellij/dvcs/push/ui/LoadingIconProvider.java rename to platform/dvcs-impl/src/com/intellij/dvcs/push/ui/LoadingIcon.java index a1179e933514..69c43cc4467e 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/LoadingIconProvider.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/LoadingIcon.java @@ -15,6 +15,7 @@ */ package com.intellij.dvcs.push.ui; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.util.ImageLoader; import com.intellij.util.ui.JBImageIcon; import com.intellij.util.ui.UIUtil; @@ -25,23 +26,60 @@ import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import java.awt.*; -import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; -class LoadingIconProvider { +class LoadingIcon extends JBImageIcon { private static final String LOADING_ICON = "/icons/loading.gif"; - private static final JBImageIcon EMPTY_ICON = new JBImageIcon(UIUtil.createImage(18, 18, BufferedImage.TYPE_3BYTE_BGR)); + private static final Logger LOG = Logger.getInstance(LoadingIcon.class); - @NotNull - public static JBImageIcon getLoadingIcon() { - Image image = ImageLoader.loadFromResource(LOADING_ICON); - return image == null ? EMPTY_ICON : new JBImageIcon(image); + private final int myWidth; + private final int myHeight; + private final int myDeltaX; + private final int myDeltaY; + + LoadingIcon(@NotNull Image image, int width, int height) { + super(image); + int myOriginalWidth = image.getWidth(null); + int myOriginalHeight = image.getHeight(null); + myWidth = Math.max(width, myOriginalWidth); + myHeight = Math.max(height, myOriginalHeight); + myDeltaX = (myWidth - myOriginalWidth) / 2 - 2; + myDeltaY = (myHeight - myOriginalHeight) / 2 + 2; } @NotNull - public static ImageObserver createObserver(@NotNull JTree tree, @NotNull TreeNode treeNode) { - return new NodeImageObserver(tree, treeNode); + static LoadingIcon create(int width, int height) { + Image image = ImageLoader.loadFromResource(LOADING_ICON); + if (image == null) { + LOG.error("Couldn't load image: " + LOADING_ICON); + return createEmpty(width, height); + } + return new LoadingIcon(image, width, height); + } + + @NotNull + static LoadingIcon createEmpty(int width, int height) { + return new LoadingIcon(UIUtil.createImage(width, height, Transparency.TRANSLUCENT), width, height); + } + + void setObserver(@NotNull JTree tree, @NotNull TreeNode treeNode) { + setImageObserver(new NodeImageObserver(tree, treeNode)); + } + + @Override + public final synchronized void paintIcon(final Component c, final Graphics g, final int x, final int y) { + super.paintIcon(c, g, x + myDeltaX, y + myDeltaY); + } + + @Override + public int getIconHeight() { + return myHeight; + } + + @Override + public int getIconWidth() { + return myWidth; } private static class NodeImageObserver implements ImageObserver { diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryNode.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryNode.java index 3f1582afeb04..b75ce5079558 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryNode.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryNode.java @@ -34,20 +34,22 @@ import java.util.concurrent.atomic.AtomicReference; public class RepositoryNode extends CheckedTreeNode implements EditableTreeNode, Comparable { - private static final int CHECKBOX_WIDTH = new JCheckBox().getPreferredSize().width; - - @NotNull protected final ImageIcon myLoadingIcon; + @NotNull protected final LoadingIcon myLoadingIcon; @NotNull protected final AtomicBoolean myLoading = new AtomicBoolean(true); @NotNull private final RepositoryWithBranchPanel myRepositoryPanel; @Nullable private Future> myFuture; + protected final int myLoadingIconWidth; public RepositoryNode(@NotNull RepositoryWithBranchPanel repositoryPanel, boolean enabled) { super(repositoryPanel); setChecked(false); setEnabled(enabled); myRepositoryPanel = repositoryPanel; - myLoadingIcon = LoadingIconProvider.getLoadingIcon(); + + Dimension size = new JCheckBox().getPreferredSize(); + myLoadingIconWidth = size.width; + myLoadingIcon = LoadingIcon.create(myLoadingIconWidth, size.height); } public boolean isCheckboxVisible() { @@ -60,8 +62,7 @@ public class RepositoryNode extends CheckedTreeNode implements EditableTreeNode, if (myLoading.get()) { renderer.setIcon(myLoadingIcon); renderer.setIconOnTheRight(false); - renderer.setIconTextGap(CHECKBOX_WIDTH - myLoadingIcon.getIconWidth()); - repoFixedWidth += CHECKBOX_WIDTH; + repoFixedWidth += myLoadingIconWidth; } renderer.append(getRepoName(renderer, repoFixedWidth), SimpleTextAttributes.GRAY_ATTRIBUTES); renderer.appendFixedTextFragmentWidth(repoFixedWidth); @@ -110,7 +111,7 @@ public class RepositoryNode extends CheckedTreeNode implements EditableTreeNode, public void startLoading(@NotNull JTree tree, @NotNull Future> future) { myFuture = future; myLoading.set(true); - myLoadingIcon.setImageObserver(LoadingIconProvider.createObserver(tree, this)); + myLoadingIcon.setObserver(tree, this); } public int compareTo(@NotNull RepositoryNode repositoryNode) { diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/SingleRepositoryNode.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/SingleRepositoryNode.java index 65fecd19e010..3cf9a5290d2f 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/SingleRepositoryNode.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/SingleRepositoryNode.java @@ -23,10 +23,12 @@ import org.jetbrains.annotations.NotNull; public class SingleRepositoryNode extends RepositoryNode { @NotNull private final RepositoryWithBranchPanel myRepositoryPanel; + private final LoadingIcon myEmptyIcon; public SingleRepositoryNode(@NotNull RepositoryWithBranchPanel repositoryPanel) { super(repositoryPanel, true); myRepositoryPanel = repositoryPanel; + myEmptyIcon = LoadingIcon.createEmpty(myLoadingIcon.getIconWidth(), myLoadingIcon.getIconHeight()); } @Override @@ -36,11 +38,11 @@ public class SingleRepositoryNode extends RepositoryNode { @Override public void render(@NotNull ColoredTreeCellRenderer renderer) { - if (myLoading.get()) { - renderer.setIcon(myLoadingIcon); - renderer.setIconOnTheRight(false); - } + renderer.setIcon(myLoading.get() ? myLoadingIcon : myEmptyIcon); + renderer.setIconOnTheRight(false); + renderer.append(""); + renderer.appendFixedTextFragmentWidth(myLoadingIconWidth); renderer.append(myRepositoryPanel.getSourceName(), SimpleTextAttributes.REGULAR_ATTRIBUTES); renderer.append(myRepositoryPanel.getArrow(), SimpleTextAttributes.REGULAR_ATTRIBUTES); PushTargetPanel pushTargetPanel = myRepositoryPanel.getTargetPanel(); diff --git a/platform/util/src/com/intellij/util/ui/JBImageIcon.java b/platform/util/src/com/intellij/util/ui/JBImageIcon.java index a955de287cbf..d3990cf18396 100644 --- a/platform/util/src/com/intellij/util/ui/JBImageIcon.java +++ b/platform/util/src/com/intellij/util/ui/JBImageIcon.java @@ -32,7 +32,7 @@ public class JBImageIcon extends ImageIcon { } @Override - public final synchronized void paintIcon(final Component c, final Graphics g, final int x, final int y) { + public synchronized void paintIcon(final Component c, final Graphics g, final int x, final int y) { final ImageObserver observer = getImageObserver(); UIUtil.drawImage(g, getImage(), x, y, observer == null ? c : observer);