DependencyExtentQuery.java :  » IDE-Eclipse » pde » org » eclipse » pde » internal » ui » search » dependencies » Java Open Source

Java Open Source » IDE Eclipse » pde 
pde » org » eclipse » pde » internal » ui » search » dependencies » DependencyExtentQuery.java
/*******************************************************************************
 *  Copyright (c) 2005, 2008 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 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 result = new ArrayList();
    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 (IPackageFragmentRoot[]) result.toArray(new IPackageFragmentRoot[result.size()]);
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.