// Copyright (c) 2009-2010 by the projectusus.org contributors // This software is released under the terms and conditions // of the Eclipse Public License (EPL) 1.0. // See http://www.eclipse.org/legal/epl-v10.html for details. package org.projectusus.ui.internal.proportions.infopresenter.infomodel; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IMethod; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaModelException; public class UsusInfoBuilder { public static IUsusInfo of( IJavaElement element ) { try { IJavaElement currentElement = element; while( currentElement != null ) { if( currentElement.getElementType() == IJavaElement.METHOD ) { return new UsusInfoForMethod( (IMethod)currentElement ); } if( currentElement.getElementType() == IJavaElement.TYPE ) { return new UsusInfoForClass( (IType)currentElement ); } if( currentElement.getElementType() == IJavaElement.COMPILATION_UNIT ) { return new UsusInfoForFile( currentElement.getUnderlyingResource() ); } currentElement = currentElement.getParent(); } } catch( JavaModelException e ) { // do nothing } return new UnavailableUsusInfo( element ); } private UsusInfoBuilder() { super(); } }