mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-172561 vcs: use JBLoadingPanel
Issue might have been caused by missing validate()/repaint()
This commit is contained in:
+11
-67
@@ -34,7 +34,6 @@ import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.actions.ContextHelpAction;
|
||||
import com.intellij.ide.actions.ShowFilePathAction;
|
||||
import com.intellij.ide.ui.SplitterProportionsDataImpl;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.help.HelpManager;
|
||||
@@ -44,7 +43,10 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.*;
|
||||
import com.intellij.openapi.ui.popup.Balloon;
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
import com.intellij.openapi.util.*;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.util.Couple;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vcs.VcsException;
|
||||
import com.intellij.openapi.vcs.changes.ChangesUtil;
|
||||
@@ -53,11 +55,8 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.wm.ex.IdeFocusTraversalPolicy;
|
||||
import com.intellij.ui.*;
|
||||
import com.intellij.ui.awt.RelativePoint;
|
||||
import com.intellij.ui.components.JBLayeredPane;
|
||||
import com.intellij.ui.components.JBLoadingPanel;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.ui.AbstractLayoutManager;
|
||||
import com.intellij.util.ui.AnimatedIcon;
|
||||
import com.intellij.util.ui.AsyncProcessIcon;
|
||||
import com.intellij.util.ui.update.MergingUpdateQueue;
|
||||
import com.intellij.util.ui.update.Update;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -82,7 +81,7 @@ public abstract class HistoryDialog<T extends HistoryDialogModel> extends FrameW
|
||||
protected final VirtualFile myFile;
|
||||
private Splitter mySplitter;
|
||||
private RevisionsList myRevisionsList;
|
||||
private MyDiffContainer myDiffView;
|
||||
private JBLoadingPanel myDiffView;
|
||||
private ActionToolbar myToolBar;
|
||||
|
||||
private T myModel;
|
||||
@@ -147,8 +146,9 @@ public abstract class HistoryDialog<T extends HistoryDialogModel> extends FrameW
|
||||
root.setFocusTraversalPolicyProvider(true);
|
||||
|
||||
Pair<JComponent, Dimension> diffAndToolbarSize = createDiffPanel(root, traversalPolicy);
|
||||
myDiffView = new MyDiffContainer(diffAndToolbarSize.first);
|
||||
Disposer.register(this, myDiffView);
|
||||
|
||||
myDiffView = new JBLoadingPanel(new BorderLayout(), this, 200);
|
||||
myDiffView.add(diffAndToolbarSize.first, BorderLayout.CENTER);
|
||||
|
||||
JComponent revisionsSide = createRevisionsSide(diffAndToolbarSize.second);
|
||||
|
||||
@@ -268,7 +268,7 @@ public abstract class HistoryDialog<T extends HistoryDialogModel> extends FrameW
|
||||
|
||||
isUpdating = true;
|
||||
updateActions();
|
||||
myDiffView.startUpdating();
|
||||
myDiffView.startLoading();
|
||||
});
|
||||
|
||||
Runnable apply = null;
|
||||
@@ -293,7 +293,7 @@ public abstract class HistoryDialog<T extends HistoryDialogModel> extends FrameW
|
||||
}
|
||||
}
|
||||
updateActions();
|
||||
myDiffView.finishUpdating();
|
||||
myDiffView.stopLoading();
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -567,62 +567,6 @@ public abstract class HistoryDialog<T extends HistoryDialogModel> extends FrameW
|
||||
}
|
||||
}
|
||||
|
||||
private static class MyDiffContainer extends JBLayeredPane implements Disposable {
|
||||
private AnimatedIcon myIcon = new AsyncProcessIcon.Big(this.getClass().getName());
|
||||
|
||||
private JComponent myContent;
|
||||
private JComponent myLoadingPanel;
|
||||
|
||||
private MyDiffContainer(JComponent content) {
|
||||
setLayout(new MyOverlayLayout());
|
||||
myContent = content;
|
||||
myLoadingPanel = new JPanel(new MyPanelLayout());
|
||||
myLoadingPanel.setOpaque(false);
|
||||
myLoadingPanel.add(myIcon);
|
||||
|
||||
add(myContent);
|
||||
add(myLoadingPanel, JLayeredPane.POPUP_LAYER);
|
||||
|
||||
finishUpdating();
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
myIcon.dispose();
|
||||
}
|
||||
|
||||
public void startUpdating() {
|
||||
myLoadingPanel.setVisible(true);
|
||||
myIcon.resume();
|
||||
}
|
||||
|
||||
public void finishUpdating() {
|
||||
myIcon.suspend();
|
||||
myLoadingPanel.setVisible(false);
|
||||
}
|
||||
|
||||
private class MyOverlayLayout extends AbstractLayoutManager {
|
||||
public void layoutContainer(Container parent) {
|
||||
myContent.setBounds(0, 0, getWidth(), getHeight());
|
||||
myLoadingPanel.setBounds(0, 0, getWidth(), getHeight());
|
||||
}
|
||||
|
||||
public Dimension preferredLayoutSize(Container parent) {
|
||||
return myContent.getPreferredSize();
|
||||
}
|
||||
}
|
||||
|
||||
private class MyPanelLayout extends AbstractLayoutManager {
|
||||
public void layoutContainer(Container parent) {
|
||||
Dimension size = myIcon.getPreferredSize();
|
||||
myIcon.setBounds((getWidth() - size.width) / 2, (getHeight() - size.height) / 2, size.width, size.height);
|
||||
}
|
||||
|
||||
public Dimension preferredLayoutSize(Container parent) {
|
||||
return myContent.getPreferredSize();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class MyDialogWrapper extends DialogWrapper {
|
||||
@NotNull private final CreatePatchConfigurationPanel myPanel;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user