import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.util.Pair;
+import com.intellij.openapi.wm.StatusBar;
import com.intellij.openapi.wm.WindowManager;
-import com.intellij.openapi.wm.ex.StatusBarEx;
-import com.intellij.util.containers.HashMap;
+import com.intellij.util.containers.ContainerUtil;
import javax.swing.*;
+import java.util.Map;
+
+import static com.intellij.openapi.util.Pair.pair;
+import static com.intellij.util.ObjectUtils.notNull;
public class StatusBarProgress extends ProgressIndicatorBase {
// statusBar -> [textToRestore, MyPreviousText]
- private final HashMap<StatusBarEx, Pair<String, String>> myStatusBar2SavedText = new HashMap<StatusBarEx, Pair<String, String>>();
+ private final Map<StatusBar, Pair<String, String>> myStatusBar2SavedText = ContainerUtil.newHashMap();
public StatusBarProgress() {
super(true);
@Override
public void start() {
super.start();
- SwingUtilities.invokeLater (
+ //noinspection SSBasedInspection
+ SwingUtilities.invokeLater(
new Runnable() {
@Override
public void run() {
if (ApplicationManager.getApplication().isDisposed()) return;
- final WindowManager windowManager = WindowManager.getInstance();
+ WindowManager windowManager = WindowManager.getInstance();
if (windowManager == null) return;
- Project[] projects=ProjectManager.getInstance().getOpenProjects();
- if(projects.length==0){
- projects=new Project[]{null};
- }
+ Project[] projects = ProjectManager.getInstance().getOpenProjects();
+ if (projects.length == 0) projects = new Project[]{null};
for (Project project : projects) {
- final StatusBarEx statusBar = (StatusBarEx)windowManager.getStatusBar(project);
- if (statusBar == null) continue;
-
- String info = statusBar.getInfo();
- if (info == null) info = "";
- myStatusBar2SavedText.put(statusBar, Pair.create(info, info)); // initial value
+ StatusBar statusBar = windowManager.getStatusBar(project);
+ if (statusBar != null) {
+ String info = notNull(statusBar.getInfo(), "");
+ myStatusBar2SavedText.put(statusBar, pair(info, info)); // initial value
+ }
}
}
}
@Override
public void stop() {
super.stop();
- SwingUtilities.invokeLater (
+ //noinspection SSBasedInspection
+ SwingUtilities.invokeLater(
new Runnable() {
@Override
public void run() {
- for (final StatusBarEx statusBar : myStatusBar2SavedText.keySet()) {
- final String textToRestore = updateRestoreText(statusBar);
+ for (StatusBar statusBar : myStatusBar2SavedText.keySet()) {
+ String textToRestore = updateRestoreText(statusBar);
statusBar.setInfo(textToRestore);
}
myStatusBar2SavedText.clear();
update();
}
- private void update(){
+ private void update() {
String text;
- if (!isRunning()){
+ if (!isRunning()) {
text = "";
}
- else{
+ else {
text = getText();
double fraction = getFraction();
if (fraction > 0) {
text += " " + (int)(fraction * 100 + 0.5) + "%";
}
}
- final String text1 = text;
- SwingUtilities.invokeLater (
+ final String _text = text;
+ //noinspection SSBasedInspection
+ SwingUtilities.invokeLater(
new Runnable() {
@Override
public void run() {
- for (final StatusBarEx statusBarEx : myStatusBar2SavedText.keySet()) {
- setStatusBarText(statusBarEx, text1);
+ for (StatusBar statusBarEx : myStatusBar2SavedText.keySet()) {
+ setStatusBarText(statusBarEx, _text);
}
}
}
);
}
- private void setStatusBarText(StatusBarEx statusBar, String text) {
+ private void setStatusBarText(StatusBar statusBar, String text) {
updateRestoreText(statusBar);
- final Pair<String, String> textsPair = myStatusBar2SavedText.get(statusBar);
- myStatusBar2SavedText.put(statusBar, Pair.create(textsPair.first, text));
+ Pair<String, String> textsPair = myStatusBar2SavedText.get(statusBar);
+ myStatusBar2SavedText.put(statusBar, pair(textsPair.first, text));
statusBar.setInfo(text);
}
- private String updateRestoreText(StatusBarEx statusBar) {
- final Pair<String, String> textsPair = myStatusBar2SavedText.get(statusBar);
+ private String updateRestoreText(StatusBar statusBar) {
+ Pair<String, String> textsPair = myStatusBar2SavedText.get(statusBar);
// if current status bar info doesn't match the value, that we set, use this value as a restore value
- String info = statusBar.getInfo();
- if (info == null) {
- info = "";
- }
+ String info = notNull(statusBar.getInfo(), "");
if (!textsPair.getSecond().equals(info)) {
- myStatusBar2SavedText.put(statusBar, Pair.create(info, textsPair.second));
+ myStatusBar2SavedText.put(statusBar, pair(info, textsPair.second));
}
return textsPair.getFirst();
}