Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 66765 Details for
Bug 185838
[Parts] CoreExceptions are thrown as PartInitExceptions by TextFileDocumentProvider
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Patch
185838.txt (text/plain), 7.67 KB, created by
Tod Creasey
on 2007-05-10 15:47:52 EDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Tod Creasey
Created:
2007-05-10 15:47:52 EDT
Size:
7.67 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.ui.ide >Index: src/org/eclipse/ui/internal/ide/IDEWorkbenchPlugin.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchPlugin.java,v >retrieving revision 1.41 >diff -u -r1.41 IDEWorkbenchPlugin.java >--- src/org/eclipse/ui/internal/ide/IDEWorkbenchPlugin.java 8 May 2006 20:54:09 -0000 1.41 >+++ src/org/eclipse/ui/internal/ide/IDEWorkbenchPlugin.java 10 May 2007 19:45:04 -0000 >@@ -15,6 +15,7 @@ > import java.util.ArrayList; > import java.util.List; > >+import org.eclipse.core.resources.IResourceChangeListener; > import org.eclipse.core.resources.IWorkspace; > import org.eclipse.core.resources.ResourcesPlugin; > import org.eclipse.core.runtime.CoreException; >@@ -30,6 +31,7 @@ > import org.eclipse.ui.internal.ide.registry.ProjectImageRegistry; > import org.eclipse.ui.plugin.AbstractUIPlugin; > import org.osgi.framework.Bundle; >+import org.osgi.framework.BundleContext; > > /** > * This internal class represents the top of the IDE workbench. >@@ -84,6 +86,10 @@ > */ > private MarkerImageProviderRegistry markerImageProviderRegistry = null; > >+ >+ //The listener for resource changes that gives editor updates >+ private IResourceChangeListener editorListener; >+ > /** > * Create an instance of the receiver. > */ >@@ -305,5 +311,22 @@ > return imageDescriptorFromPlugin(IDE_WORKBENCH, ICONS_PATH + relativePath); > } > >+ /* (non-Javadoc) >+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) >+ */ >+ public void start(BundleContext context) throws Exception { >+ super.start(context); >+ editorListener = new IDEEditorUpdater(); >+ ResourcesPlugin.getWorkspace().addResourceChangeListener(editorListener); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) >+ */ >+ public void stop(BundleContext context) throws Exception { >+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(editorListener); >+ super.stop(context); >+ } >+ > > } >Index: src/org/eclipse/ui/internal/ide/IDEEditorUpdater.java >=================================================================== >RCS file: src/org/eclipse/ui/internal/ide/IDEEditorUpdater.java >diff -N src/org/eclipse/ui/internal/ide/IDEEditorUpdater.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ui/internal/ide/IDEEditorUpdater.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,163 @@ >+/******************************************************************************* >+ * Copyright (c) 2007 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.ide; >+ >+import java.util.Collection; >+import java.util.HashSet; >+import java.util.Iterator; >+ >+import org.eclipse.core.resources.IContainer; >+import org.eclipse.core.resources.IFile; >+import org.eclipse.core.resources.IResource; >+import org.eclipse.core.resources.IResourceChangeEvent; >+import org.eclipse.core.resources.IResourceChangeListener; >+import org.eclipse.core.resources.IResourceDelta; >+import org.eclipse.core.resources.IResourceDeltaVisitor; >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.ui.IEditorInput; >+import org.eclipse.ui.IEditorReference; >+import org.eclipse.ui.IFileEditorInput; >+import org.eclipse.ui.IWorkbenchPage; >+import org.eclipse.ui.IWorkbenchWindow; >+import org.eclipse.ui.PartInitException; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.statushandlers.StatusManager; >+ >+/** >+ * IDEEditorUpdater is a class that updates editor references if there has been >+ * a change to invalidate them in the model such as a deletion of thier input. >+ * >+ * @since 3.3 >+ * >+ */ >+public class IDEEditorUpdater implements IResourceChangeListener { >+ >+ private Collection editorsToClose = new HashSet(); >+ private Collection resources = new HashSet(); >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent) >+ */ >+ public void resourceChanged(IResourceChangeEvent event) { >+ if (event.getType() != IResourceChangeEvent.POST_CHANGE) >+ return; >+ >+ addDeletedResources(event.getDelta(), resources); >+ >+ if (resources.isEmpty()) >+ return; >+ >+ IWorkbenchWindow[] windows = PlatformUI.getWorkbench() >+ .getWorkbenchWindows(); >+ for (int i = 0; i < windows.length; i++) { >+ IWorkbenchPage[] pages = windows[i].getPages(); >+ for (int j = 0; j < pages.length; j++) { >+ closeEditorReferences(resources, pages[i]); >+ } >+ >+ } >+ resources.clear(); >+ } >+ >+ /** >+ * Get the deleted resources for the delta. >+ * >+ * @param delta >+ * the delta to check >+ * @param resources >+ * the Collection to add the resources to. >+ */ >+ private void addDeletedResources(IResourceDelta delta, >+ final Collection resources) { >+ IResourceDeltaVisitor visitor = new IResourceDeltaVisitor() { >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.core.resources.IResourceDeltaVisitor#visit(org.eclipse.core.resources.IResourceDelta) >+ */ >+ public boolean visit(IResourceDelta delta) { >+ switch (delta.getKind()) { >+ case IResourceDelta.ADDED: >+ return false; >+ case IResourceDelta.REMOVED: >+ IResource resource = delta.getResource(); >+ resources.add(resource); >+ return false; >+ case IResourceDelta.CHANGED: >+ // handle changed resource >+ break; >+ } >+ return true; >+ } >+ }; >+ try { >+ delta.accept(visitor); >+ } catch (CoreException e) { >+ StatusManager.getManager().addLoggedStatus(e.getStatus()); >+ } >+ } >+ >+ /** >+ * Close the editor references for resources on page. >+ * >+ * @param resources >+ * @param i >+ * @param pages >+ */ >+ private void closeEditorReferences(Collection resources, IWorkbenchPage page) { >+ >+ IEditorReference[] references = page.getEditorReferences(); >+ Iterator resourceIterator = resources.iterator(); >+ while (resourceIterator.hasNext()) { >+ IResource resource = (IResource) resourceIterator.next(); >+ >+ IContainer container = null; >+ if (resource instanceof IContainer) >+ container = (IContainer) resource; >+ for (int l = 0; l < references.length; l++) { >+ IEditorReference reference = references[l]; >+ {// Is this not created yet? >+ if (reference.getPart(false) == null) { >+ IEditorInput input; >+ try { >+ input = reference.getEditorInput(); >+ if (input instanceof IFileEditorInput) { >+ IFile file = ((IFileEditorInput) input) >+ .getFile(); >+ if (container == null) { >+ if (file.equals(resource)) >+ editorsToClose.add(reference); >+ } else if (container.getFile(file >+ .getProjectRelativePath()) != null) >+ editorsToClose.add(reference); >+ } >+ } catch (PartInitException e) { >+ StatusManager.getManager().addLoggedStatus( >+ e.getStatus()); >+ } >+ >+ } >+ } >+ } >+ } >+ if (editorsToClose.isEmpty()) >+ return; >+ IEditorReference[] closedReferences = new IEditorReference[editorsToClose >+ .size()]; >+ editorsToClose.toArray(closedReferences); >+ page.closeEditors(closedReferences, false); >+ editorsToClose.clear(); >+ >+ } >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 185838
: 66765 |
67221
|
82777
|
82778