diff --git a/platform/lang-api/src/com/intellij/openapi/project/ProjectUtil.java b/platform/lang-api/src/com/intellij/openapi/project/ProjectUtil.java index 8f9c4c822c8c..e49b6604bda5 100644 --- a/platform/lang-api/src/com/intellij/openapi/project/ProjectUtil.java +++ b/platform/lang-api/src/com/intellij/openapi/project/ProjectUtil.java @@ -19,7 +19,10 @@ */ package com.intellij.openapi.project; +import com.intellij.ide.DataManager; import com.intellij.ide.highlighter.InternalFileType; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtil; @@ -36,6 +39,7 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import javax.swing.*; import java.io.File; public class ProjectUtil { @@ -134,4 +138,19 @@ public class ProjectUtil { if (fileType instanceof InternalFileType) return true; return file.getPath().contains("/"+ DIRECTORY_BASED_PROJECT_DIR +"/"); } + + @NotNull + public static Project guessCurrentProject(JComponent component) { + Project project = null; + Project[] openProjects = ProjectManager.getInstance().getOpenProjects(); + if (openProjects.length > 0) project = openProjects[0]; + if (project == null) { + DataContext dataContext = component == null ? DataManager.getInstance().getDataContext() : DataManager.getInstance().getDataContext(component); + project = PlatformDataKeys.PROJECT.getData(dataContext); + } + if (project == null) { + project = ProjectManager.getInstance().getDefaultProject(); + } + return project; + } } diff --git a/platform/lang-impl/src/com/intellij/application/options/CodeStyleAbstractPanel.java b/platform/lang-impl/src/com/intellij/application/options/CodeStyleAbstractPanel.java index 5337559fd452..c70d7099baca 100644 --- a/platform/lang-impl/src/com/intellij/application/options/CodeStyleAbstractPanel.java +++ b/platform/lang-impl/src/com/intellij/application/options/CodeStyleAbstractPanel.java @@ -18,10 +18,8 @@ package com.intellij.application.options; import com.intellij.application.options.codeStyle.CodeStyleSchemesModel; import com.intellij.application.options.codeStyle.LanguageSelector; import com.intellij.codeStyle.CodeStyleFacade; -import com.intellij.ide.DataManager; import com.intellij.lang.Language; import com.intellij.openapi.Disposable; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.application.ApplicationBundle; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; @@ -35,7 +33,7 @@ import com.intellij.openapi.editor.highlighter.EditorHighlighter; import com.intellij.openapi.editor.markup.*; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.ProjectManager; +import com.intellij.openapi.project.ProjectUtil; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; @@ -183,7 +181,7 @@ public abstract class CodeStyleAbstractPanel implements Disposable { int currOffs = myEditor.getScrollingModel().getVerticalScrollOffset(); - final Project finalProject = getCurrentProject(); + final Project finalProject = ProjectUtil.guessCurrentProject(getPanel()); CommandProcessor.getInstance().executeCommand(finalProject, new Runnable() { public void run() { replaceText(finalProject); @@ -197,7 +195,7 @@ public abstract class CodeStyleAbstractPanel implements Disposable { private int getAdjustedRightMargin() { int result = getRightMargin(); - return result > 0 ? result : CodeStyleFacade.getInstance(getCurrentProject()).getRightMargin(); + return result > 0 ? result : CodeStyleFacade.getInstance(ProjectUtil.guessCurrentProject(getPanel())).getRightMargin(); } protected abstract int getRightMargin(); @@ -294,19 +292,6 @@ public abstract class CodeStyleAbstractPanel implements Disposable { return psiFile; } - protected Project getCurrentProject() { - Project project = null; - Project[] openProjects = ProjectManager.getInstance().getOpenProjects(); - if (openProjects.length > 0) project = openProjects[0]; - if (project == null) { - project = PlatformDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext(getPanel())); - } - if (project == null) { - project = ProjectManager.getInstance().getDefaultProject(); - } - return project; - } - private void highlightChanges(Document beforeReformat) { if (mySkipPreviewHighlighting) { return; @@ -593,7 +578,7 @@ public abstract class CodeStyleAbstractPanel implements Disposable { } public final void applyPredefinedSettings(@NotNull PredefinedCodeStyle codeStyle) { - CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getCurrentProject()).clone(); + CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(ProjectUtil.guessCurrentProject(getPanel())).clone(); codeStyle.apply(settings); reset(settings); onSomethingChanged(); diff --git a/platform/lang-impl/src/com/intellij/application/options/codeStyle/MultilanguageCodeStyleAbstractPanel.java b/platform/lang-impl/src/com/intellij/application/options/codeStyle/MultilanguageCodeStyleAbstractPanel.java index 112035bf6049..9ed2425fe621 100644 --- a/platform/lang-impl/src/com/intellij/application/options/codeStyle/MultilanguageCodeStyleAbstractPanel.java +++ b/platform/lang-impl/src/com/intellij/application/options/codeStyle/MultilanguageCodeStyleAbstractPanel.java @@ -28,6 +28,7 @@ import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeEditorHighlighterProviders; import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectUtil; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; import com.intellij.psi.codeStyle.CodeStyleManager; @@ -168,7 +169,8 @@ public abstract class MultilanguageCodeStyleAbstractPanel extends CodeStyleAbstr @Nullable protected EditorHighlighter createHighlighter(final EditorColorsScheme scheme) { FileType fileType = getFileType(); - return FileTypeEditorHighlighterProviders.INSTANCE.forFileType(fileType).getEditorHighlighter(getCurrentProject(), fileType, null, scheme); + return FileTypeEditorHighlighterProviders.INSTANCE.forFileType(fileType).getEditorHighlighter( + ProjectUtil.guessCurrentProject(getPanel()), fileType, null, scheme); } diff --git a/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/FileHistoryDialog.java b/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/FileHistoryDialog.java index ad2c63b42f03..f6fe14c6f6cb 100644 --- a/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/FileHistoryDialog.java +++ b/platform/lvcs-impl/src/com/intellij/history/integration/ui/views/FileHistoryDialog.java @@ -26,6 +26,7 @@ import com.intellij.openapi.diff.DiffPanel; import com.intellij.openapi.diff.ex.DiffPanelEx; import com.intellij.openapi.diff.ex.DiffPanelOptions; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Pair; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.ExcludingTraversalPolicy; @@ -45,12 +46,6 @@ public class FileHistoryDialog extends HistoryDialog { super(p, gw, f, doInit); } - @Override - public void dispose() { - myDiffPanel.dispose(); - super.dispose(); - } - @Override protected FileHistoryDialogModel createModel(LocalHistoryFacade vcs) { return new EntireFileHistoryDialogModel(myProject, myGateway, vcs, myFile); @@ -58,10 +53,9 @@ public class FileHistoryDialog extends HistoryDialog { @Override protected Pair createDiffPanel(JPanel root, ExcludingTraversalPolicy traversalPolicy) { - myDiffPanel = DiffManager.getInstance().createDiffPanel(getFrame(), myProject); + myDiffPanel = DiffManager.getInstance().createDiffPanel(getFrame(), myProject,this); DiffPanelOptions o = ((DiffPanelEx)myDiffPanel).getOptions(); o.setRequestFocusOnNewContent(false); - return Pair.create((JComponent)myDiffPanel.getComponent(), null); } diff --git a/platform/platform-api/src/com/intellij/ide/diff/DiffElement.java b/platform/platform-api/src/com/intellij/ide/diff/DiffElement.java index d1b7c9f4559c..ddb15063dd14 100644 --- a/platform/platform-api/src/com/intellij/ide/diff/DiffElement.java +++ b/platform/platform-api/src/com/intellij/ide/diff/DiffElement.java @@ -129,7 +129,7 @@ public abstract class DiffElement implements Disposable { return null; } if (request != null) { - myDiffPanel = DiffManager.getInstance().createDiffPanel(parentWindow, project); + myDiffPanel = DiffManager.getInstance().createDiffPanel(parentWindow, project,this); myDiffPanel.setRequestFocus(false); myDiffPanel.setDiffRequest(request); myDiffPanel.setTitle1(getName()); diff --git a/platform/platform-api/src/com/intellij/openapi/diff/DiffManager.java b/platform/platform-api/src/com/intellij/openapi/diff/DiffManager.java index 0aa76da836a4..75284ddb1e8c 100644 --- a/platform/platform-api/src/com/intellij/openapi/diff/DiffManager.java +++ b/platform/platform-api/src/com/intellij/openapi/diff/DiffManager.java @@ -15,9 +15,11 @@ */ package com.intellij.openapi.diff; +import com.intellij.openapi.Disposable; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.editor.markup.MarkupEditorFilter; import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.NotNull; import java.awt.*; @@ -62,6 +64,9 @@ public abstract class DiffManager { /** * @param window this window will be disposed, when user clicks on the line number + * You must call Disposer.dispose() when done. + * @deprecated use {@link #createDiffPanel(Window, Project, Disposable)} instead */ public abstract DiffPanel createDiffPanel(Window window, Project project); + public abstract DiffPanel createDiffPanel(Window window, Project project, @NotNull Disposable parentDisposable); } diff --git a/platform/platform-api/src/com/intellij/openapi/ui/DialogBuilder.java b/platform/platform-api/src/com/intellij/openapi/ui/DialogBuilder.java index 5783b54908b0..4687500e1244 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/DialogBuilder.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/DialogBuilder.java @@ -23,13 +23,14 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.util.ArrayList; -public class DialogBuilder { +public class DialogBuilder implements Disposable { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.ui.DialogBuilder"); @NonNls public static final String REQUEST_FOCUS_ENABLED = "requestFocusEnabled"; @@ -40,7 +41,6 @@ public class DialogBuilder { private String myDimensionServiceKey; private ArrayList myActions = null; private final MyDialogWrapper myDialogWrapper; - private final ArrayList myDisposables = new ArrayList(); private Runnable myCancelOperation = null; private Runnable myOkOperation = null; @@ -54,10 +54,16 @@ public class DialogBuilder { public DialogBuilder(Project project) { myDialogWrapper = new MyDialogWrapper(project, true); + Disposer.register(myDialogWrapper.getDisposable(), this); } public DialogBuilder(Component parent) { myDialogWrapper = new MyDialogWrapper(parent, true); + Disposer.register(myDialogWrapper.getDisposable(), this); + } + + @Override + public void dispose() { } private MyDialogWrapper showImpl(boolean isModal) { @@ -118,8 +124,8 @@ public class DialogBuilder { return closeAction; } - public void addDisposable(Disposable disposable) { - myDisposables.add(disposable); + public void addDisposable(@NotNull Disposable disposable) { + Disposer.register(this, disposable); } public void setButtonsAlignment(int alignment) { @@ -292,9 +298,6 @@ public class DialogBuilder { public void dispose() { myPreferedFocusComponent = null; - for (Disposable disposable : myDisposables) { - Disposer.dispose(disposable); - } super.dispose(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffUtil.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffUtil.java index 68ce858356c2..b4b986825db8 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/DiffUtil.java @@ -45,7 +45,6 @@ public class DiffUtil { frameWrapper.setImage(ImageLoader.loadFromResource("/diff/Diff.png")); frameWrapper.setPreferredFocusedComponent(diffPanel.getPreferredFocusedComponent()); frameWrapper.closeOnEsc(); - frameWrapper.addDisposable(diffPanel); } @Nullable diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/external/BinaryDiffTool.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/external/BinaryDiffTool.java index cb95913d01e7..fbe1402eac73 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/external/BinaryDiffTool.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/external/BinaryDiffTool.java @@ -22,7 +22,6 @@ import com.intellij.openapi.fileEditor.ex.FileEditorProviderManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; -import com.intellij.openapi.util.Disposer; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; @@ -68,15 +67,9 @@ public class BinaryDiffTool implements DiffTool { return new Action[]{close}; } - @Override - protected void dispose() { - super.dispose(); - Disposer.dispose(myPanel); - } - @Override protected JComponent createCenterPanel() { - myPanel = DiffManager.getInstance().createDiffPanel(getWindow(), project); + myPanel = DiffManager.getInstance().createDiffPanel(getWindow(), project,getDisposable()); myPanel.setDiffRequest(data); myPanel.setTitle1(src.getPath()); myPanel.setTitle2(trg.getPath()); diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/external/DiffManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/external/DiffManagerImpl.java index d2c610ffb9e5..b38c32c6c211 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/external/DiffManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/external/DiffManagerImpl.java @@ -15,6 +15,7 @@ */ package com.intellij.openapi.diff.impl.external; +import com.intellij.openapi.Disposable; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.diff.DiffManager; import com.intellij.openapi.diff.DiffPanel; @@ -26,10 +27,7 @@ import com.intellij.openapi.diff.impl.mergeTool.MergeTool; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.markup.MarkupEditorFilter; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.InvalidDataException; -import com.intellij.openapi.util.JDOMExternalizable; -import com.intellij.openapi.util.Key; -import com.intellij.openapi.util.WriteExternalException; +import com.intellij.openapi.util.*; import com.intellij.util.config.*; import org.jdom.Element; import org.jetbrains.annotations.NonNls; @@ -120,6 +118,13 @@ public class DiffManagerImpl extends DiffManager implements JDOMExternalizable { return new DiffPanelImpl(window, project, true, true); } + @Override + public DiffPanel createDiffPanel(Window window, Project project, @NotNull Disposable parentDisposable) { + DiffPanel diffPanel = createDiffPanel(window, project); + Disposer.register(parentDisposable, diffPanel); + return diffPanel; + } + public static DiffManagerImpl getInstanceEx() { return (DiffManagerImpl)DiffManager.getInstance(); } @@ -151,10 +156,10 @@ public class DiffManagerImpl extends DiffManager implements JDOMExternalizable { public AbstractProperty.AbstractPropertyContainer getProperties() { return myProperties; } - public static DiffPanel createDiffPanel(DiffRequest data, Window window) { + static DiffPanel createDiffPanel(DiffRequest data, Window window, @NotNull Disposable parentDisposable) { DiffPanel diffPanel = null; try { - diffPanel = DiffManager.getInstance().createDiffPanel(window, data.getProject()); + diffPanel = DiffManager.getInstance().createDiffPanel(window, data.getProject(), parentDisposable); int contentCount = data.getContents().length; LOG.assertTrue(contentCount == 2, String.valueOf(contentCount)); LOG.assertTrue(data.getContentTitles().length == contentCount); @@ -162,7 +167,9 @@ public class DiffManagerImpl extends DiffManager implements JDOMExternalizable { return diffPanel; } catch (RuntimeException e) { - if (diffPanel != null) diffPanel.dispose(); + if (diffPanel != null) { + Disposer.dispose(diffPanel); + } throw e; } } diff --git a/platform/platform-impl/src/com/intellij/openapi/diff/impl/external/FrameDiffTool.java b/platform/platform-impl/src/com/intellij/openapi/diff/impl/external/FrameDiffTool.java index 124bae554830..9521d072139c 100644 --- a/platform/platform-impl/src/com/intellij/openapi/diff/impl/external/FrameDiffTool.java +++ b/platform/platform-impl/src/com/intellij/openapi/diff/impl/external/FrameDiffTool.java @@ -15,6 +15,7 @@ */ package com.intellij.openapi.diff.impl.external; +import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CustomShortcutSet; @@ -22,13 +23,15 @@ import com.intellij.openapi.diff.*; import com.intellij.openapi.diff.impl.ComparisonPolicy; import com.intellij.openapi.diff.impl.DiffPanelImpl; import com.intellij.openapi.diff.impl.DiffUtil; -import com.intellij.openapi.ui.FrameWrapper; import com.intellij.openapi.keymap.KeymapManager; import com.intellij.openapi.ui.DialogBuilder; +import com.intellij.openapi.ui.FrameWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.ex.MessagesEx; import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.util.Disposer; import com.intellij.openapi.vfs.VirtualFile; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -45,10 +48,9 @@ class FrameDiffTool implements DiffTool { boolean shouldOpenDialog = shouldOpenDialog(hints); if (shouldOpenDialog) { final DialogBuilder builder = new DialogBuilder(request.getProject()); - DiffPanelImpl diffPanel = createDiffPanelIfShouldShow(request, builder.getWindow()); + DiffPanelImpl diffPanel = createDiffPanelIfShouldShow(request, builder.getWindow(), builder); if (diffPanel == null) return; builder.setCenterPanel(diffPanel.getComponent()); - builder.addDisposable(diffPanel); builder.setPreferedFocusComponent(diffPanel.getPreferredFocusedComponent()); builder.removeAllActions(); builder.setTitle(request.getWindowTitle()); @@ -61,9 +63,10 @@ class FrameDiffTool implements DiffTool { }.registerCustomShortcutSet(new CustomShortcutSet(KeymapManager.getInstance().getActiveKeymap().getShortcuts("CloseContent")), diffPanel.getComponent()); showDiffDialog(builder, hints); - } else { + } + else { final FrameWrapper frameWrapper = new FrameWrapper(request.getProject(), request.getGroupKey()); - DiffPanelImpl diffPanel = createDiffPanelIfShouldShow(request, frameWrapper.getFrame()); + DiffPanelImpl diffPanel = createDiffPanelIfShouldShow(request, frameWrapper.getFrame(), frameWrapper); if (diffPanel == null) return; frameWrapper.setTitle(request.getWindowTitle()); DiffUtil.initDiffFrame(frameWrapper, diffPanel); @@ -80,10 +83,10 @@ class FrameDiffTool implements DiffTool { } @Nullable - private static DiffPanelImpl createDiffPanelIfShouldShow(DiffRequest request, Window window) { - DiffPanelImpl diffPanel = (DiffPanelImpl)DiffManagerImpl.createDiffPanel(request, window); + private static DiffPanelImpl createDiffPanelIfShouldShow(DiffRequest request, Window window, @NotNull Disposable parentDisposable) { + DiffPanelImpl diffPanel = (DiffPanelImpl)DiffManagerImpl.createDiffPanel(request, window, parentDisposable); if (checkNoDifferenceAndNotify(diffPanel, request, window)) { - diffPanel.dispose(); + Disposer.dispose(diffPanel); diffPanel = null; } return diffPanel; @@ -106,11 +109,12 @@ class FrameDiffTool implements DiffTool { if (!Comparing.equal(manager.getComparisonPolicy(), ComparisonPolicy.DEFAULT)) { ComparisonPolicy oldPolicy = manager.getComparisonPolicy(); manager.setComparisonPolicy(ComparisonPolicy.DEFAULT); - DiffPanel maybeDiffPanel = DiffManagerImpl.createDiffPanel(data, window); + Disposable parentDisposable = Disposer.newDisposable(); + DiffPanel maybeDiffPanel = DiffManagerImpl.createDiffPanel(data, window, parentDisposable); manager.setComparisonPolicy(oldPolicy); boolean hasDiffs = maybeDiffPanel.hasDifferences(); - maybeDiffPanel.dispose(); + Disposer.dispose(parentDisposable); if (hasDiffs) return false; } @@ -131,11 +135,9 @@ class FrameDiffTool implements DiffTool { MessagesEx.error(data.getProject(), e.getMessage()).showNow(); return false; } - String message; - if (Arrays.equals(bytes1, bytes2)) - message = DiffBundle.message("diff.contents.are.identical.message.text"); - else - message = DiffBundle.message("diff.contents.have.differences.only.in.line.separators.message.text"); + String message = Arrays.equals(bytes1, bytes2) + ? DiffBundle.message("diff.contents.are.identical.message.text") + : DiffBundle.message("diff.contents.have.differences.only.in.line.separators.message.text"); Messages.showInfoMessage(data.getProject(), message, DiffBundle.message("no.differences.dialog.title")); return false; //return Messages.showDialog(data.getProject(), message + "\nShow diff anyway?", "No Differences", new String[]{"Yes", "No"}, 1, diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java index 74a4d4f9c88b..a5db747f014a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileDocumentManagerImpl.java @@ -537,14 +537,13 @@ public class FileDocumentManagerImpl extends FileDocumentManager implements Appl request.setContentTitles(UIBundle.message("file.cache.conflict.diff.content.file.system.content"), UIBundle.message("file.cache.conflict.diff.content.memory.content")); DialogBuilder diffBuilder = new DialogBuilder(project); - DiffPanelImpl diffPanel = (DiffPanelImpl)DiffManager.getInstance().createDiffPanel(diffBuilder.getWindow(), project); + DiffPanelImpl diffPanel = (DiffPanelImpl)DiffManager.getInstance().createDiffPanel(diffBuilder.getWindow(), project,diffBuilder); diffPanel.getOptions().setShowSourcePolicy(DiffPanelOptions.ShowSourcePolicy.DONT_SHOW); diffBuilder.setCenterPanel(diffPanel.getComponent()); diffPanel.setDiffRequest(request); diffBuilder.addOkAction().setText(UIBundle.message("file.cache.conflict.save.changes.button")); diffBuilder.addCancelAction(); diffBuilder.setTitle(windowtitle); - diffBuilder.addDisposable(diffPanel); if (diffBuilder.show() == DialogWrapper.OK_EXIT_CODE) { builder.getDialogWrapper().close(DialogWrapper.CANCEL_EXIT_CODE); } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/AbstractRefreshablePanel.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/AbstractRefreshablePanel.java index 742fc95c95fc..24540c51fe04 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/AbstractRefreshablePanel.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/AbstractRefreshablePanel.java @@ -43,7 +43,7 @@ import javax.swing.*; * Time: 3:13 PM */ public abstract class AbstractRefreshablePanel implements RefreshablePanel { - private final static Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.changes.AbstractRefreshablePanel"); + private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vcs.changes.AbstractRefreshablePanel"); private final Ticket myTicket; private final DetailsPanel myDetailsPanel; private final GenericDetailsLoader myDetailsLoader; diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsChangeDetailsManager.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsChangeDetailsManager.java index 7f3ae611f51c..9cc981dd1a2f 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsChangeDetailsManager.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/VcsChangeDetailsManager.java @@ -128,7 +128,7 @@ public class VcsChangeDetailsManager { myRequestFromChange = new BinaryDiffRequestFromChange(myProject); myChangeListManager = ChangeListManager.getInstance(myProject); - myPanel = DiffManager.getInstance().createDiffPanel(null, myProject); + myPanel = DiffManager.getInstance().createDiffPanel(null, myProject,this); myPanel.enableToolbar(false); myPanel.removeStatusBar(); DiffPanelOptions o = ((DiffPanelEx)myPanel).getOptions(); @@ -188,7 +188,6 @@ public class VcsChangeDetailsManager { @Override protected void disposeImpl() { - Disposer.dispose(myPanel); } @Override diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java index 0695282ba701..1fae3fff7efd 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsHistoryDialog.java @@ -69,14 +69,14 @@ public class VcsHistoryDialog extends DialogWrapper implements DataProvider { private final DiffPanel myDiffPanel; private final Project myProject; - private final static ColumnInfo REVISION = new ColumnInfo(VcsBundle.message("column.name.revision.version")) { + private static final ColumnInfo REVISION = new ColumnInfo(VcsBundle.message("column.name.revision.version")) { public Object valueOf(Object object) { return ((VcsFileRevision)object).getRevisionNumber(); } }; - private final static ColumnInfo DATE = new ColumnInfo(VcsBundle.message("column.name.revision.list.date")) { + private static final ColumnInfo DATE = new ColumnInfo(VcsBundle.message("column.name.revision.list.date")) { public Object valueOf(Object object) { Date date = ((VcsFileRevision)object).getRevisionDate(); if (date == null) return ""; @@ -85,21 +85,21 @@ public class VcsHistoryDialog extends DialogWrapper implements DataProvider { }; - private final static ColumnInfo MESSAGE = new ColumnInfo(VcsBundle.message("column.name.revision.list.message")) { + private static final ColumnInfo MESSAGE = new ColumnInfo(VcsBundle.message("column.name.revision.list.message")) { public Object valueOf(Object object) { return ((VcsFileRevision)object).getCommitMessage(); } }; - private final static ColumnInfo AUTHOR = new ColumnInfo(VcsBundle.message("column.name.revision.list.author")) { + private static final ColumnInfo AUTHOR = new ColumnInfo(VcsBundle.message("column.name.revision.list.author")) { public Object valueOf(Object object) { return ((VcsFileRevision)object).getAuthor(); } }; - private final static ColumnInfo[] COLUMNS = new ColumnInfo[]{REVISION, DATE, AUTHOR, MESSAGE}; + private static final ColumnInfo[] COLUMNS = new ColumnInfo[]{REVISION, DATE, AUTHOR, MESSAGE}; private final TableView myList; protected final List myRevisions; @@ -139,7 +139,7 @@ public class VcsHistoryDialog extends DialogWrapper implements DataProvider { myList.getEmptyText().setText(VcsBundle.message("history.empty")); - myDiffPanel = DiffManager.getInstance().createDiffPanel(getWindow(), myProject); + myDiffPanel = DiffManager.getInstance().createDiffPanel(getWindow(), myProject,getDisposable()); myRevisions.addAll(session.getRevisionList()); final VcsRevisionNumber currentRevisionNumber = session.getCurrentRevisionNumber(); @@ -315,7 +315,6 @@ public class VcsHistoryDialog extends DialogWrapper implements DataProvider { public synchronized void dispose() { myIsDisposed = true; - myDiffPanel.dispose(); super.dispose(); }