diff --git a/platform/diff-api/src/com/intellij/diff/requests/MessageDiffRequest.java b/platform/diff-api/src/com/intellij/diff/requests/MessageDiffRequest.java index 8e4c9f1a10c7..0d3dde3a195e 100644 --- a/platform/diff-api/src/com/intellij/diff/requests/MessageDiffRequest.java +++ b/platform/diff-api/src/com/intellij/diff/requests/MessageDiffRequest.java @@ -49,4 +49,8 @@ public abstract class MessageDiffRequest extends DiffRequest { public void setMessage(@NotNull String message) { myMessage = message; } + + @Override + public final void onAssigned(boolean isAssigned) { + } } diff --git a/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestPanelImpl.java b/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestPanelImpl.java index 964c09bcf399..8677e343d868 100644 --- a/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestPanelImpl.java +++ b/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestPanelImpl.java @@ -35,7 +35,6 @@ public class DiffRequestPanelImpl implements DiffRequestPanel { public DiffRequestPanelImpl(@Nullable Project project, @Nullable Window window) { myProcessor = new MyCacheDiffRequestChainProcessor(project, window); - myProcessor.init(); myPanel = new JPanel(new BorderLayout()) { @Override diff --git a/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java b/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java index 7244faf8aff3..f939641e63fb 100644 --- a/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java +++ b/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java @@ -93,7 +93,7 @@ public abstract class DiffRequestProcessor implements Disposable { @NotNull private DiffRequest myActiveRequest; - @NotNull private ViewerState myState; + @Nullable private ViewerState myState; public DiffRequestProcessor(@Nullable Project project) { this(project, new UserDataHolderBase()); @@ -106,14 +106,14 @@ public abstract class DiffRequestProcessor implements Disposable { public DiffRequestProcessor(@Nullable Project project, @NotNull UserDataHolder context) { myProject = project; - myAvailableTools = DiffManagerEx.getInstance().getDiffTools(); - myToolOrder = new LinkedList(); - myContext = new MyDiffContext(context); myActiveRequest = NoDiffRequest.INSTANCE; mySettings = DiffSettingsHolder.getInstance().getSettings(myContext.getUserData(DiffUserDataKeysEx.PLACE)); + myAvailableTools = DiffManagerEx.getInstance().getDiffTools(); + myToolOrder = new LinkedList(getToolOrderFromSettings(myAvailableTools)); + // UI myPanel = new JPanel(new BorderLayout()); @@ -139,6 +139,8 @@ public abstract class DiffRequestProcessor implements Disposable { if (bottomPanel != null) myMainPanel.add(bottomPanel, BorderLayout.SOUTH); if (bottomPanel instanceof Disposable) Disposer.register(this, (Disposable)bottomPanel); + myState = new EmptyState(); + myContentPanel.setContent(DiffUtil.createMessagePanel(NoDiffRequest.INSTANCE.getMessage())); myOpenInEditorAction = new OpenInEditorAction(new Runnable() { @Override @@ -148,14 +150,6 @@ public abstract class DiffRequestProcessor implements Disposable { }); } - public void init() { - myToolOrder.addAll(getToolOrderFromSettings(myAvailableTools)); - - myActiveRequest.onAssigned(true); - myState = new ErrorState((MessageDiffRequest)myActiveRequest); - myState.init(); - } - // // Update // @@ -966,6 +960,7 @@ public abstract class DiffRequestProcessor implements Disposable { // private interface ViewerState { + @CalledInAwt void init(); @CalledInAwt @@ -981,6 +976,34 @@ public abstract class DiffRequestProcessor implements Disposable { DiffTool getActiveTool(); } + private static class EmptyState implements ViewerState { + @Override + public void init() { + } + + @Override + public void destroy() { + } + + @Nullable + @Override + public JComponent getPreferredFocusedComponent() { + return null; + } + + @Nullable + @Override + public Object getData(@NonNls String dataId) { + return null; + } + + @NotNull + @Override + public DiffTool getActiveTool() { + return ErrorDiffTool.INSTANCE; + } + } + private class ErrorState implements ViewerState { @Nullable private final DiffTool myDiffTool; @NotNull private final MessageDiffRequest myRequest; @@ -999,6 +1022,7 @@ public abstract class DiffRequestProcessor implements Disposable { } @Override + @CalledInAwt public void init() { myContentPanel.setContent(myViewer.getComponent()); @@ -1043,6 +1067,7 @@ public abstract class DiffRequestProcessor implements Disposable { } @Override + @CalledInAwt public void init() { myContentPanel.setContent(myViewer.getComponent()); setTitle(myActiveRequest.getTitle()); @@ -1100,6 +1125,7 @@ public abstract class DiffRequestProcessor implements Disposable { } @Override + @CalledInAwt public void init() { myContentPanel.setContent(myWrapperViewer.getComponent()); setTitle(myActiveRequest.getTitle()); diff --git a/platform/diff-impl/src/com/intellij/diff/impl/DiffWindowBase.java b/platform/diff-impl/src/com/intellij/diff/impl/DiffWindowBase.java index 8d9cff475107..309385201233 100644 --- a/platform/diff-impl/src/com/intellij/diff/impl/DiffWindowBase.java +++ b/platform/diff-impl/src/com/intellij/diff/impl/DiffWindowBase.java @@ -64,7 +64,6 @@ public abstract class DiffWindowBase { } }) .build(); - myProcessor.init(); myWrapper.setImage(ImageLoader.loadFromResource("/diff/Diff.png")); Disposer.register(myWrapper, myProcessor); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesViewManager.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesViewManager.java index a19ebeaf68e0..0eab66982017 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesViewManager.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesViewManager.java @@ -121,7 +121,6 @@ public class ChangesViewManager implements ChangesViewI, JDOMExternalizable, Pro Disposer.register(project, myView); myRepaintAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD, project); myDiffDetails = new MyChangeProcessor(myProject); - myDiffDetails.init(); myTsl = new TreeSelectionListener() { @Override public void valueChanged(TreeSelectionEvent e) { diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java index 18d6150b335c..3125ab0d34e4 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/CommitChangeListDialog.java @@ -321,7 +321,6 @@ public class CommitChangeListDialog extends DialogWrapper implements CheckinProj }); } }); - myDiffDetails.init(); myBrowserExtender.addToolbarActions(this);