[Pydev-cvs] org.python.pydev/src/org/python/pydev/navigator/ui PydevPackageExplorer.java, 1.2, 1.3
Brought to you by:
fabioz
From: Fabio Z. <fa...@us...> - 2007-02-14 12:17:25
|
Update of /cvsroot/pydev/org.python.pydev/src/org/python/pydev/navigator/ui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21053/src/org/python/pydev/navigator/ui Modified Files: PydevPackageExplorer.java Log Message: Index: PydevPackageExplorer.java =================================================================== RCS file: /cvsroot/pydev/org.python.pydev/src/org/python/pydev/navigator/ui/PydevPackageExplorer.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** PydevPackageExplorer.java 11 Feb 2007 11:12:58 -0000 1.2 --- PydevPackageExplorer.java 14 Feb 2007 12:17:13 -0000 1.3 *************** *** 5,8 **** --- 5,11 ---- package org.python.pydev.navigator.ui; + import java.util.HashSet; + + import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IAdaptable; *************** *** 12,80 **** import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.navigator.CommonNavigator; import org.eclipse.ui.part.IShowInTarget; import org.eclipse.ui.part.ShowInContext; ! public class PydevPackageExplorer extends CommonNavigator implements IShowInTarget{ ! /** ! * Returns the element contained in the EditorInput ! */ ! Object getElementOfInput(IEditorInput input) { ! if (input instanceof IFileEditorInput){ ! return ((IFileEditorInput)input).getFile(); ! } ! return null; ! } ! public boolean show(ShowInContext context) { ! ISelection selection= context.getSelection(); ! if (selection instanceof IStructuredSelection) { ! IStructuredSelection structuredSelection= ((IStructuredSelection) selection); ! if (structuredSelection.size() == 1 && tryToReveal(structuredSelection.getFirstElement())) ! return true; ! } ! ! Object input= context.getInput(); ! if (input instanceof IEditorInput) { ! Object elementOfInput= getElementOfInput((IEditorInput)context.getInput()); ! return elementOfInput != null && tryToReveal(elementOfInput); ! } ! return false; ! } ! ! public boolean tryToReveal(Object element) { ! if (revealElementOrParent(element)) ! return true; ! return false; ! } ! ! private boolean revealElementOrParent(Object element) { ! if (revealAndVerify(element)) ! return true; ! if (element != null) { ! if (revealAndVerify(element)) ! return true; ! if (element instanceof IAdaptable) { ! IAdaptable adaptable = (IAdaptable) element; ! IResource resource = (IResource) adaptable.getAdapter(IResource.class); ! if (resource != null) { ! if (revealAndVerify(resource)) ! return true; ! } ! } ! } ! return false; ! } ! ! ! private boolean revealAndVerify(Object element) { ! if (element == null) ! return false; ! selectReveal(new StructuredSelection(element)); ! return ! getSite().getSelectionProvider().getSelection().isEmpty(); ! } } --- 15,103 ---- import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IFileEditorInput; + import org.eclipse.ui.internal.navigator.ContributorTrackingSet; + import org.eclipse.ui.internal.navigator.NavigatorContentService; import org.eclipse.ui.navigator.CommonNavigator; + import org.eclipse.ui.navigator.INavigatorPipelineService; + import org.eclipse.ui.navigator.PipelinedShapeModification; import org.eclipse.ui.part.IShowInTarget; import org.eclipse.ui.part.ShowInContext; ! public class PydevPackageExplorer extends CommonNavigator implements IShowInTarget { ! /** ! * Returns the element contained in the EditorInput ! */ ! Object getElementOfInput(IEditorInput input) { ! if (input instanceof IFileEditorInput) { ! return ((IFileEditorInput) input).getFile(); ! } ! return null; ! } ! /** ! * Implements the 'show in...' action ! */ ! public boolean show(ShowInContext context) { ! Object elementOfInput = null; ! ISelection selection = context.getSelection(); ! if (selection instanceof IStructuredSelection) { ! IStructuredSelection structuredSelection = ((IStructuredSelection) selection); ! if (structuredSelection.size() == 1) { ! elementOfInput = structuredSelection.getFirstElement(); ! } ! } ! Object input = context.getInput(); ! if (input instanceof IEditorInput) { ! elementOfInput = getElementOfInput((IEditorInput) context.getInput()); ! } ! ! return elementOfInput != null && tryToReveal(elementOfInput); ! } ! ! public boolean tryToReveal(Object element) { ! INavigatorPipelineService pipelineService = this.getNavigatorContentService().getPipelineService(); ! if(element instanceof IAdaptable){ ! IAdaptable adaptable = (IAdaptable) element; ! IFile file = (IFile) adaptable.getAdapter(IFile.class); ! if(file != null){ ! HashSet<Object> files = new ContributorTrackingSet((NavigatorContentService) this.getNavigatorContentService()); ! files.add(file); ! pipelineService.interceptAdd(new PipelinedShapeModification(file.getParent(), files)); ! if(files.size() > 0){ ! element = files.iterator().next(); ! } ! } ! } ! ! if (revealAndVerify(element)) { ! return true; ! } + if (element != null) { + if (revealAndVerify(element)) { + return true; + } + + if (element instanceof IAdaptable) { + IAdaptable adaptable = (IAdaptable) element; + IResource resource = (IResource) adaptable.getAdapter(IResource.class); + if (resource != null) { + if (revealAndVerify(resource)){ + return true; + } + } + } + } + return false; + } + private boolean revealAndVerify(Object element) { + if (element == null){ + return false; + } + + selectReveal(new StructuredSelection(element)); + return !getSite().getSelectionProvider().getSelection().isEmpty(); + } } |