### Eclipse Workspace Patch 1.0 #P org.eclipse.compare Index: compare/org/eclipse/compare/internal/CompareEditor.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditor.java,v retrieving revision 1.79 diff -u -r1.79 CompareEditor.java --- compare/org/eclipse/compare/internal/CompareEditor.java 24 Apr 2009 14:58:50 -0000 1.79 +++ compare/org/eclipse/compare/internal/CompareEditor.java 29 Apr 2009 15:57:14 -0000 @@ -447,6 +447,8 @@ if (getSite().getSelectionProvider() == null) getSite().setSelectionProvider(new CompareEditorSelectionProvider()); fControl= ci.createContents(fPageBook); + if (fControl == null) + return; // closed while creating fPageBook.showPage(fControl); PlatformUI.getWorkbench().getHelpSystem().setHelp(fControl, ICompareContextIds.COMPARE_EDITOR); if (isActive()) { Index: compare/org/eclipse/compare/internal/CompareContentViewerSwitchingPane.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareContentViewerSwitchingPane.java,v retrieving revision 1.5 diff -u -r1.5 CompareContentViewerSwitchingPane.java --- compare/org/eclipse/compare/internal/CompareContentViewerSwitchingPane.java 17 Apr 2009 12:39:12 -0000 1.5 +++ compare/org/eclipse/compare/internal/CompareContentViewerSwitchingPane.java 29 Apr 2009 15:57:14 -0000 @@ -130,6 +130,8 @@ public void setInput(Object input) { super.setInput(input); + if (getViewer() == null || !Utilities.okToUse(getViewer().getControl())) + return; ViewerDescriptor[] vd = CompareUIPlugin.getDefault() .findContentViewerDescriptor(getViewer(), getInput(), getCompareConfiguration()); Index: compare/org/eclipse/compare/internal/CompareStructureViewerSwitchingPane.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareStructureViewerSwitchingPane.java,v retrieving revision 1.1 diff -u -r1.1 CompareStructureViewerSwitchingPane.java --- compare/org/eclipse/compare/internal/CompareStructureViewerSwitchingPane.java 17 Apr 2009 12:39:12 -0000 1.1 +++ compare/org/eclipse/compare/internal/CompareStructureViewerSwitchingPane.java 29 Apr 2009 15:57:14 -0000 @@ -130,6 +130,8 @@ public void setInput(Object input) { super.setInput(input); + if (getViewer() == null || !Utilities.okToUse(getViewer().getControl())) + return; ViewerDescriptor[] vd = null; if (getInput() instanceof ICompareInput) { vd = CompareUIPlugin.getDefault().findStructureViewerDescriptor( Index: compare/org/eclipse/compare/CompareEditorInput.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java,v retrieving revision 1.110 diff -u -r1.110 CompareEditorInput.java --- compare/org/eclipse/compare/CompareEditorInput.java 24 Apr 2009 14:58:50 -0000 1.110 +++ compare/org/eclipse/compare/CompareEditorInput.java 29 Apr 2009 15:57:14 -0000 @@ -543,7 +543,10 @@ fComposite.layout(); feedInput(); - + + if (!Utilities.okToUse(fComposite) || !Utilities.okToUse(fComposite)) + return fComposite; // null + fComposite.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { if (!(getWorkbenchPart() instanceof CompareEditor)) @@ -748,11 +751,15 @@ Object input= fStructureInputPane.getInput(); if (input != null) internalSetContentPaneInput(input); + if (!Utilities.okToUse(fStructurePane1) || !Utilities.okToUse(fStructurePane2)) + return; fStructurePane2.setInput(null); // clear downstream pane fStructurePane1.setInput(null); } else { Object input= getElement(selection); internalSetContentPaneInput(input); + if (!Utilities.okToUse(fStructurePane1) || !Utilities.okToUse(fStructurePane2)) + return; if (structureCompareOnSingleClick() || hasUnusableContentViewer()) fStructurePane1.setInput(input); fStructurePane2.setInput(null); // clear downstream pane Index: compare/org/eclipse/compare/CompareViewerSwitchingPane.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java,v retrieving revision 1.34 diff -u -r1.34 CompareViewerSwitchingPane.java --- compare/org/eclipse/compare/CompareViewerSwitchingPane.java 17 Mar 2009 12:08:26 -0000 1.34 +++ compare/org/eclipse/compare/CompareViewerSwitchingPane.java 29 Apr 2009 15:57:14 -0000 @@ -11,13 +11,19 @@ package org.eclipse.compare; import org.eclipse.compare.contentmergeviewer.IFlushable; -import org.eclipse.compare.internal.*; +import org.eclipse.compare.internal.CompareMessages; +import org.eclipse.compare.internal.NullViewer; +import org.eclipse.compare.internal.Utilities; import org.eclipse.compare.structuremergeviewer.ICompareInput; -import org.eclipse.jface.viewers.*; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.*; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; import com.ibm.icu.text.MessageFormat; @@ -269,6 +275,9 @@ // set input fViewer.setInput(input); + if (getViewer() == null || !Utilities.okToUse(getViewer().getControl())) + return; + Image image= null; if (!(fViewer instanceof NullViewer) && input instanceof ICompareInput) image= ((ICompareInput)input).getImage();