diff options
author | Jean Michel-Lemieux | 2003-11-24 19:33:51 +0000 |
---|---|---|
committer | Jean Michel-Lemieux | 2003-11-24 19:33:51 +0000 |
commit | 951b2573db62ddd77215f800cb37b154075ef772 (patch) | |
tree | 5775c561c70b873ed8ef134f52c8b7ab35de16e7 /bundles/org.eclipse.team.cvs.ui | |
parent | 1d4c1fef9e9ffba1a98350961bbe0ec7c30179db (diff) | |
download | eclipse.platform.team-951b2573db62ddd77215f800cb37b154075ef772.tar.gz eclipse.platform.team-951b2573db62ddd77215f800cb37b154075ef772.tar.xz eclipse.platform.team-951b2573db62ddd77215f800cb37b154075ef772.zip |
Bug 47287 ClassCastException using CVS annotate
Diffstat (limited to 'bundles/org.eclipse.team.cvs.ui')
-rw-r--r-- | bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AnnotateView.java | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AnnotateView.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AnnotateView.java index 10b284938..61dd02b9b 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AnnotateView.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AnnotateView.java @@ -17,6 +17,7 @@ import java.util.Collection; import java.util.Iterator; import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.text.*; import org.eclipse.jface.viewers.*; import org.eclipse.swt.SWT; @@ -26,6 +27,8 @@ import org.eclipse.team.internal.ccvs.core.*; import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; import org.eclipse.ui.*; import org.eclipse.ui.help.WorkbenchHelp; +import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; +import org.eclipse.ui.internal.registry.EditorDescriptor; import org.eclipse.ui.part.ViewPart; import org.eclipse.ui.texteditor.IDocumentProvider; import org.eclipse.ui.texteditor.ITextEditor; @@ -267,9 +270,8 @@ public class AnnotateView extends ViewPart implements ISelectionChangedListener private IEditorPart openEditor() throws InvocationTargetException { // Open the editor IEditorPart part; - - IEditorRegistry registry = CVSUIPlugin.getPlugin().getWorkbench().getEditorRegistry(); - ICVSRemoteFile file; + ICVSRemoteFile file; + IEditorRegistry registry; try { file = (ICVSRemoteFile) CVSWorkspaceRoot.getRemoteResourceFor(cvsResource); @@ -277,12 +279,34 @@ public class AnnotateView extends ViewPart implements ISelectionChangedListener throw new InvocationTargetException(e1); } + registry = CVSUIPlugin.getPlugin().getWorkbench().getEditorRegistry(); IEditorDescriptor descriptor = registry.getDefaultEditor(file.getName()); + + // Determine if the registered editor is an ITextEditor. + // There is currently no support from UI to determine this information. This + // problem has been logged in: https://bugs.eclipse.org/bugs/show_bug.cgi?id=47362 + // For now, use internal classes. + String id; + + if (descriptor == null || !(descriptor instanceof EditorDescriptor) || !(((EditorDescriptor)descriptor).isInternal())) { + id = IDEWorkbenchPlugin.DEFAULT_TEXT_EDITOR_ID; //$NON-NLS-1$ + } else { + try { + Object obj = IDEWorkbenchPlugin.createExtension(((EditorDescriptor) descriptor).getConfigurationElement(), "class"); //$NON-NLS-1$ + if (obj instanceof ITextEditor) { + id = descriptor.getId(); + } else { + id = IDEWorkbenchPlugin.DEFAULT_TEXT_EDITOR_ID; + } + } catch (CoreException e) { + id = IDEWorkbenchPlugin.DEFAULT_TEXT_EDITOR_ID; + } + } // Either reuse an existing editor or open a new editor of the correct type. try { try { - if (editor != null && editor instanceof IReusableEditor && page.isPartVisible(editor) && editor.getSite().getId().equals(descriptor.getId())) { + if (editor != null && editor instanceof IReusableEditor && page.isPartVisible(editor) && editor.getSite().getId().equals(id)) { // We can reuse the editor ((IReusableEditor) editor).setInput(new RemoteAnnotationEditorInput(file, contents)); part = editor; @@ -292,7 +316,7 @@ public class AnnotateView extends ViewPart implements ISelectionChangedListener page.closeEditor(editor, false); editor = null; } - part = page.openEditor(new RemoteAnnotationEditorInput(file, contents), descriptor.getId()); + part = page.openEditor(new RemoteAnnotationEditorInput(file, contents), id); } } catch (PartInitException e) { throw e; |