From d8b4bbf90cdc310594d070d57a8e4e47110512b4 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Wed, 8 Aug 2007 15:05:35 +0000 Subject: [PATCH] Fix for 199258, 'Show In' support for Include Browser. --- .../ui/includebrowser/IBConversions.java | 20 +++++++++++++++++++ .../ui/includebrowser/IBViewPart.java | 8 ++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBConversions.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBConversions.java index 83f1cc4d071..4881f158304 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBConversions.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBConversions.java @@ -11,6 +11,7 @@ package org.eclipse.cdt.internal.ui.includebrowser; +import java.util.ArrayList; import java.util.Iterator; import org.eclipse.core.resources.IFile; @@ -18,6 +19,7 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.editors.text.ILocationProvider; import org.eclipse.cdt.core.model.CModelException; @@ -54,6 +56,24 @@ public class IBConversions { return null; } + public static ISelection nodeSelectionToRepresentedTUSelection(ISelection sel) { + if (sel instanceof IStructuredSelection) { + IStructuredSelection ssel= (IStructuredSelection) sel; + ArrayList tus= new ArrayList(); + for (Iterator iter = ssel.iterator(); iter.hasNext();) { + Object obj= iter.next(); + if (obj instanceof IBNode) { + ITranslationUnit tu= ((IBNode) obj).getRepresentedTranslationUnit(); + if (tu != null) { + tus.add(tu); + } + } + } + return new StructuredSelection(tus); + } + return StructuredSelection.EMPTY; + } + public static ITranslationUnit objectToTU(Object object) { if (object instanceof ITranslationUnit) { return (ITranslationUnit) object; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBViewPart.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBViewPart.java index cd111f083f2..2308e0f835d 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBViewPart.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/includebrowser/IBViewPart.java @@ -79,6 +79,7 @@ import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.model.ITranslationUnit; +import org.eclipse.cdt.core.model.IWorkingCopy; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.internal.ui.CPluginImages; @@ -151,10 +152,13 @@ public class IBViewPart extends ViewPart updateDescription(); } - public void setInput(final ITranslationUnit input) { + public void setInput(ITranslationUnit input) { if (fPagebook.isDisposed()) { return; } + if (input instanceof IWorkingCopy) { + input= ((IWorkingCopy) input).getOriginalElement(); + } fSetInputJob.cancel(); if (input == null) { setMessage(IBMessages.IBViewPart_instructionMessage); @@ -730,7 +734,7 @@ public class IBViewPart extends ViewPart } public ShowInContext getShowInContext() { - return new ShowInContext(null, fTreeViewer.getSelection()); + return new ShowInContext(null, IBConversions.nodeSelectionToRepresentedTUSelection(fTreeViewer.getSelection())); } public boolean show(ShowInContext context) {