From 5f63d363e95844acee15faec15878814518eaa02 Mon Sep 17 00:00:00 2001 From: Sergey Malenkov Date: Fri, 23 Nov 2018 15:29:41 +0300 Subject: [PATCH] Simplify animation during file system refresh --- .../util/ui/RefreshFileSystemIcon.java | 64 ------------------- .../wm/impl/status/InfoAndProgressPanel.java | 23 ++----- 2 files changed, 5 insertions(+), 82 deletions(-) delete mode 100644 platform/platform-api/src/com/intellij/util/ui/RefreshFileSystemIcon.java diff --git a/platform/platform-api/src/com/intellij/util/ui/RefreshFileSystemIcon.java b/platform/platform-api/src/com/intellij/util/ui/RefreshFileSystemIcon.java deleted file mode 100644 index 2ef0eea61119..000000000000 --- a/platform/platform-api/src/com/intellij/util/ui/RefreshFileSystemIcon.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2000-2012 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.intellij.util.ui; - -import com.intellij.icons.AllIcons; - -import javax.swing.*; -import java.awt.*; - -/** - * @author Konstantin Bulenkov - */ -public class RefreshFileSystemIcon extends AnimatedIcon { - private static final Icon[] ICONS = { - AllIcons.Process.FS.Step_1, - AllIcons.Process.FS.Step_2, - AllIcons.Process.FS.Step_3, - AllIcons.Process.FS.Step_4, - AllIcons.Process.FS.Step_5, - AllIcons.Process.FS.Step_6, - AllIcons.Process.FS.Step_7, - AllIcons.Process.FS.Step_8, - AllIcons.Process.FS.Step_9, - AllIcons.Process.FS.Step_10, - AllIcons.Process.FS.Step_11, - AllIcons.Process.FS.Step_12, - AllIcons.Process.FS.Step_13, - AllIcons.Process.FS.Step_14, - AllIcons.Process.FS.Step_15, - AllIcons.Process.FS.Step_16, - AllIcons.Process.FS.Step_17, - AllIcons.Process.FS.Step_18 - }; - - public RefreshFileSystemIcon() { - super("Refreshing filesystem", ICONS, EmptyIcon.ICON_16, 800); - } - - @Override - public Dimension getPreferredSize() { - if (!isRunning()) return new Dimension(0, 0); - return super.getPreferredSize(); - } - - @Override - public void paint(Graphics g) { - g.translate(0, -1); - super.paint(g); - g.translate(0, 1); - } -} diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/InfoAndProgressPanel.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/InfoAndProgressPanel.java index 75ba2e77e4e4..3b722c2df2c2 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/InfoAndProgressPanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/InfoAndProgressPanel.java @@ -29,6 +29,7 @@ import com.intellij.openapi.wm.StatusBar; import com.intellij.openapi.wm.StatusBarWidget; import com.intellij.openapi.wm.ex.ProgressIndicatorEx; import com.intellij.openapi.wm.impl.ToolWindowsPane; +import com.intellij.ui.AnimatedIcon; import com.intellij.ui.BalloonLayoutImpl; import com.intellij.ui.Gray; import com.intellij.ui.InplaceButton; @@ -61,7 +62,7 @@ public class InfoAndProgressPanel extends JPanel implements CustomStatusBarWidge private final StatusPanel myInfoPanel = new StatusPanel(); private final JPanel myRefreshAndInfoPanel = new JPanel(); - private final AnimatedIcon myProgressIcon; + private final AsyncProcessIcon myProgressIcon; private final List myOriginals = new ArrayList<>(); private final List myInfos = new ArrayList<>(); @@ -73,8 +74,7 @@ public class InfoAndProgressPanel extends JPanel implements CustomStatusBarWidge private boolean myShouldClosePopupAndOnProcessFinish; - private final Alarm myRefreshAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD); - private final AnimatedIcon myRefreshIcon; + private final JLabel myRefreshIcon = new JLabel(new AnimatedIcon.FS()); private String myCurrentRequestor; private boolean myDisposed; @@ -98,8 +98,7 @@ public class InfoAndProgressPanel extends JPanel implements CustomStatusBarWidge setOpaque(false); - myRefreshIcon = new RefreshFileSystemIcon(); - myRefreshIcon.setPaintPassiveIcon(false); + myRefreshIcon.setVisible(false); myRefreshAndInfoPanel.setLayout(new BorderLayout()); myRefreshAndInfoPanel.setOpaque(false); @@ -494,19 +493,7 @@ public class InfoAndProgressPanel extends JPanel implements CustomStatusBarWidge } void setRefreshVisible(final boolean visible) { - UIUtil.invokeLaterIfNeeded(() -> { - myRefreshAlarm.cancelAllRequests(); - myRefreshAlarm.addRequest(() -> { - if (visible) { - myRefreshIcon.resume(); - } - else { - myRefreshIcon.suspend(); - } - myRefreshIcon.revalidate(); - myRefreshIcon.repaint(); - }, visible ? 100 : 300); - }); + UIUtil.invokeLaterIfNeeded(() -> myRefreshIcon.setVisible(visible)); } void setRefreshToolTipText(final String tooltip) {