mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Simplify animation during file system refresh
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
+5
-18
@@ -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<ProgressIndicatorEx> myOriginals = new ArrayList<>();
|
||||
private final List<TaskInfo> 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) {
|
||||
|
||||
Reference in New Issue
Block a user