Java tutorial
/******************************************************************************* * Copyright (c) 2005, 2012 IBM Corporation 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.pde.internal.ui.search.dependencies; import org.eclipse.jdt.core.IPackageFragmentRoot; import java.util.ArrayList; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.*; import org.eclipse.jdt.core.*; import org.eclipse.pde.internal.ui.PDEUIMessages; import org.eclipse.search.ui.ISearchQuery; import org.eclipse.search.ui.ISearchResult; import org.eclipse.search.ui.text.AbstractTextSearchResult; public class DependencyExtentQuery implements ISearchQuery { private ISearchResult fSearchResult; private IProject fProject; private String fImportID; public DependencyExtentQuery(IProject project, String importID) { fProject = project; fImportID = importID; } /* (non-Javadoc) * @see org.eclipse.search.ui.ISearchQuery#run(org.eclipse.core.runtime.IProgressMonitor) */ public IStatus run(IProgressMonitor monitor) { final AbstractTextSearchResult result = (AbstractTextSearchResult) getSearchResult(); result.removeAll(); DependencyExtentOperation op = new DependencyExtentOperation(fProject, fImportID, result); op.execute(monitor); return Status.OK_STATUS; } /* (non-Javadoc) * @see org.eclipse.search.ui.ISearchQuery#getLabel() */ public String getLabel() { return PDEUIMessages.DependencyExtentQuery_label + " " + fImportID; //$NON-NLS-1$ } /* (non-Javadoc) * @see org.eclipse.search.ui.ISearchQuery#canRerun() */ public boolean canRerun() { return true; } /* (non-Javadoc) * @see org.eclipse.search.ui.ISearchQuery#canRunInBackground() */ public boolean canRunInBackground() { return true; } /* (non-Javadoc) * @see org.eclipse.search.ui.ISearchQuery#getSearchResult() */ public ISearchResult getSearchResult() { if (fSearchResult == null) fSearchResult = new DependencyExtentSearchResult(this); return fSearchResult; } public IPackageFragmentRoot[] getDirectRoots() { ArrayList<IPackageFragmentRoot> result = new ArrayList<IPackageFragmentRoot>(); try { IPackageFragmentRoot[] roots = JavaCore.create(fProject).getPackageFragmentRoots(); for (int i = 0; i < roots.length; i++) { if (roots[i].getKind() == IPackageFragmentRoot.K_SOURCE || (roots[i].isArchive() && !roots[i].isExternal())) { result.add(roots[i]); } } } catch (JavaModelException e) { } return result.toArray(new IPackageFragmentRoot[result.size()]); } }