diff options
Diffstat (limited to 'org.eclipse.search/search/org/eclipse/search/internal/ui/text/EditorOpener.java')
-rw-r--r-- | org.eclipse.search/search/org/eclipse/search/internal/ui/text/EditorOpener.java | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/org.eclipse.search/search/org/eclipse/search/internal/ui/text/EditorOpener.java b/org.eclipse.search/search/org/eclipse/search/internal/ui/text/EditorOpener.java deleted file mode 100644 index 48f80193db3..00000000000 --- a/org.eclipse.search/search/org/eclipse/search/internal/ui/text/EditorOpener.java +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.search.internal.ui.text; - -import org.eclipse.core.resources.IFile; -import org.eclipse.search.internal.ui.SearchPlugin; -import org.eclipse.search.ui.NewSearchUI; -import org.eclipse.search.ui.text.Match; -import org.eclipse.ui.IEditorDescriptor; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IEditorReference; -import org.eclipse.ui.IEditorRegistry; -import org.eclipse.ui.IFileEditorInput; -import org.eclipse.ui.IReusableEditor; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.ide.IDE; -import org.eclipse.ui.part.FileEditorInput; - -public class EditorOpener { - - private IEditorPart fEditor; - - IEditorPart open(Match match) throws PartInitException { - IWorkbenchPage wbPage= SearchPlugin.getActivePage(); - if (NewSearchUI.reuseEditor()) - return showWithReuse(match, wbPage); - else - return showWithoutReuse(match, wbPage); - } - - private IEditorPart showWithoutReuse(Match match, IWorkbenchPage wbPage) throws PartInitException { - return IDE.openEditor(wbPage, (IFile) match.getElement(), false); - } - - private IEditorPart showWithReuse(Match match, IWorkbenchPage wbPage) throws PartInitException { - IFile file= (IFile) match.getElement(); - String editorID= getEditorID(file); - return showInEditor(wbPage, file, editorID); - } - - - private String getEditorID(IFile file) throws PartInitException { - IEditorDescriptor desc= IDE.getEditorDescriptor(file); - if (desc == null) - return SearchPlugin.getDefault().getWorkbench().getEditorRegistry().findEditor(IEditorRegistry.SYSTEM_EXTERNAL_EDITOR_ID).getId(); - else - return desc.getId(); - } - - - private boolean isPinned(IEditorPart editor) { - if (editor == null) - return false; - - IEditorReference[] editorRefs= editor.getEditorSite().getPage().getEditorReferences(); - int i= 0; - while (i < editorRefs.length) { - if (editor.equals(editorRefs[i].getEditor(false))) - return editorRefs[i].isPinned(); - i++; - } - return false; - } - - private IEditorPart showInEditor(IWorkbenchPage page, IFile file, String editorId) throws PartInitException { - IFileEditorInput input= new FileEditorInput(file); - IEditorPart editor= page.findEditor(input); - if (editor != null) - page.bringToTop(editor); - else { - boolean isOpen= false; - if (fEditor != null) { - IEditorReference[] parts= page.getEditorReferences(); - int i= 0; - while (!isOpen && i < parts.length) - isOpen= fEditor == parts[i++].getEditor(false); - } - - boolean canBeReused= isOpen && !fEditor.isDirty() && !isPinned(fEditor); - boolean showsSameInputType= fEditor != null && fEditor.getSite().getId().equals(editorId); - if (canBeReused && !showsSameInputType) { - page.closeEditor(fEditor, false); - fEditor= null; - } - - if (canBeReused && showsSameInputType) { - ((IReusableEditor)fEditor).setInput(input); - page.bringToTop(fEditor); - editor= fEditor; - } else { - editor= IDE.openEditor(page, file, false); - if (editor instanceof IReusableEditor) - fEditor= editor; - else - fEditor= null; - } - } - return editor; - } - -} |