diff --git a/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/HistoryDialog.java b/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/HistoryDialog.java index 5f95cd3b8e5f..8597017c7689 100644 --- a/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/HistoryDialog.java +++ b/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/HistoryDialog.java @@ -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 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 extends FrameW root.setFocusTraversalPolicyProvider(true); Pair 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 extends FrameW isUpdating = true; updateActions(); - myDiffView.startUpdating(); + myDiffView.startLoading(); }); Runnable apply = null; @@ -293,7 +293,7 @@ public abstract class HistoryDialog extends FrameW } } updateActions(); - myDiffView.finishUpdating(); + myDiffView.stopLoading(); }); } }); @@ -567,62 +567,6 @@ public abstract class HistoryDialog 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;