Bug 162916 [Undo] [IDE] Invalid thread access from new file wizard
Build: I20061031-0656 1) Create a simple project 2) In the file system, add file "a.txt" to the project 3) Back in Eclipse, do File > New > File, select the project and enter a name of "a.txt". An internal error occurs because it is trying to open an error dialog from a modal context thread: org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:3407) at org.eclipse.swt.SWT.error(SWT.java:3330) at org.eclipse.swt.SWT.error(SWT.java:3301) at org.eclipse.swt.widgets.Widget.error(Widget.java:432) at org.eclipse.swt.widgets.Shell.<init>(Shell.java:271) at org.eclipse.swt.widgets.Shell.<init>(Shell.java:357) at org.eclipse.jface.window.Window.createShell(Window.java:482) at org.eclipse.jface.window.Window.create(Window.java:425) at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1111) at org.eclipse.jface.window.Window.open(Window.java:785) at org.eclipse.jface.dialogs.ErrorDialog.open(ErrorDialog.java:296) at org.eclipse.jface.dialogs.ErrorDialog.openError(ErrorDialog.java:360) at org.eclipse.jface.dialogs.ErrorDialog.openError(ErrorDialog.java:325) at org.eclipse.ui.dialogs.WizardNewFileCreationPage$4.run(WizardNewFileCreationPage.java:343) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/WizardNewFileCreationPage.java
setErrorMessage(null);
        setMessage(null);
        setControl(topLevel);
    }
    /**
     * Creates a file resource given the file handle and contents.
     *
     * @param fileHandle the file handle to create a file resource with
     * @param contents the initial contents of the new file resource, or
     *   <code>null</code> if none (equivalent to an empty stream)
     * @param monitor the progress monitor to show visual progress with
     * @exception CoreException if the operation fails
     * @exception OperationCanceledException if the operation is canceled
     * 
     * @deprecated As of 3.3, use or override {@link #createNewFile()} which uses the
     *   undoable operation support.  To supply customized file content for
     *   a subclass, use {@link #getInitialContents()}.  
     */
    protected void createFile(IFile fileHandle, InputStream contents,
            IProgressMonitor monitor) throws CoreException {
        if (contents == null) {
			contents = new ByteArrayInputStream(new byte[0]);
		}
        try {
            
            if (linkTargetPath != null) {
				fileHandle.createLink(linkTargetPath,
                        IResource.ALLOW_MISSING_LOCAL, monitor);
			} else {
                IPath path = fileHandle.getFullPath();