/******************************************************************************* * Copyright (c) 2006, 2008 Wind River Systems, Inc. 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: * Markus Schorn - initial API and implementation *******************************************************************************/ package org.eclipse.cdt.internal.ui.includebrowser; import java.util.ArrayList; import java.util.Iterator; import org.eclipse.core.resources.IFile; 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; import org.eclipse.cdt.core.model.CoreModelUtil; import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.ui.CUIPlugin; public class IBConversions { public static IBNode selectionToNode(ISelection sel) { if (sel instanceof IStructuredSelection) { IStructuredSelection ssel= (IStructuredSelection) sel; for (Iterator<?> iter = ssel.iterator(); iter.hasNext();) { Object o= iter.next(); if (o instanceof IBNode) { IBNode node = (IBNode) o; return node; } } } return null; } public static ITranslationUnit selectionToTU(ISelection sel) { if (sel instanceof IStructuredSelection) { IStructuredSelection ssel= (IStructuredSelection) sel; for (Iterator<?> iter = ssel.iterator(); iter.hasNext();) { ITranslationUnit tu= objectToTU(iter.next()); if (tu != null) { return tu; } } } return null; } public static ISelection nodeSelectionToRepresentedTUSelection(ISelection sel) { if (sel instanceof IStructuredSelection) { IStructuredSelection ssel= (IStructuredSelection) sel; ArrayList<ITranslationUnit> tus= new ArrayList<ITranslationUnit>(); 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; } if (object instanceof IFile) { return CoreModelUtil.findTranslationUnit((IFile) object); } if (object instanceof IAdaptable) { IAdaptable adaptable = (IAdaptable) object; ITranslationUnit result= (ITranslationUnit) adaptable.getAdapter(ITranslationUnit.class); if (result != null) { return result; } IFile file= (IFile) adaptable.getAdapter(IFile.class); if (file != null) { return CoreModelUtil.findTranslationUnit(file); } ILocationProvider locProvider= (ILocationProvider) adaptable.getAdapter(ILocationProvider.class); if (locProvider != null) { IPath path= locProvider.getPath(locProvider); if (path != null) { try { return CoreModelUtil.findTranslationUnitForLocation(path, null); } catch (CModelException e) { CUIPlugin.log(e); } } } } return null; } }