Java源码示例:org.eclipse.jdt.internal.ui.wizards.buildpaths.BuildPathsBlock

示例1
/**
   * Creates a Java project with the specified name and raw classpath.
   *
   * @param projectName
   * @param rawClasspaths
   * @return a new project
   * @throws CoreException
   */
  private static IJavaProject createProject(String projectName,
      IClasspathEntry[] rawClasspaths) throws CoreException {
    IProject project = ProjectUtilities.createProject(projectName);
    NullProgressMonitor monitor = new NullProgressMonitor();
    BuildPathsBlock.addJavaNature(project, monitor);

    IJavaProject javaProject = JavaCore.create(project);
    javaProject.setRawClasspath(rawClasspaths, monitor);
    javaProject.open(monitor);

    /*
     * Should only need a single waitForIdle() call, even though we make 3
     * separate calls to asynchronous JDT methods above. The reason is that each
     * operation creates a Java workspace job with the same scheduling rule, so
     * they should end up running in FIFO order, meaning that each operation
     * will have its prerequisites met before it begins execution.
     */
    // Removing this wait significantly speeds up test execution time, because the Java
    // indexing jobs for the GWT_ROOT-imported projects can take over 5 minutes to complete.
    // This seems to run with no flakiness, but if flakiness continues, try figuring out
    // if there is a Job family for the classpath modify operations that can be waited on instead.
//    JobsUtilities.waitForIdle();

    return javaProject;
  }
 
示例2
protected IProject createProject(IProgressMonitor monitor) throws CoreException {
  IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
  IProject project = workspaceRoot.getProject(projectName);
  if (!project.exists()) {
    URI uri;
    if (isWorkspaceRootLocationURI(locationURI)) {
      // If you want to put a project in the workspace root then the location
      // needs to be null...
      uri = null;
    } else {
      // Non-default paths need to include the project name
      IPath path = URIUtil.toPath(locationURI).append(projectName);
      uri = URIUtil.toURI(path);
    }

    BuildPathsBlock.createProject(project, uri, monitor);
  }
  return project;
}
 
示例3
/**
 * Creates a Java project wizard creation page.
 * <p>
 * The Java project wizard reads project name and location from the main page.
 * </p>
 *
 * @param root the workspace root
 * @param mainpage the main page of the wizard
 */
public NewJavaProjectWizardPage(IWorkspaceRoot root, WizardNewProjectCreationPage mainpage) {
	super(PAGE_NAME);

	setTitle(NewWizardMessages.NewJavaProjectWizardPage_title);
	setDescription(NewWizardMessages.NewJavaProjectWizardPage_description);

	fMainPage= mainpage;
	IStatusChangeListener listener= new IStatusChangeListener() {
		public void statusChanged(IStatus status) {
			updateStatus(status);
		}
	};

	fBuildPathsBlock= new BuildPathsBlock(new BusyIndicatorRunnableContext(), listener, 0, false, null);

	fProjectModified= true;
	fOutputLocation= null;
	fClasspathEntries= null;
}
 
示例4
/**
 * Creates a Java project with the specified name and raw classpath.
 * 
 * @param projectName
 * @param rawClasspaths
 * @return a new project
 * @throws CoreException
 */
public static IJavaProject createProject(String projectName,
    IClasspathEntry[] rawClasspaths) throws CoreException {
  IProject project = ProjectTestUtilities.createProject(projectName);
  NullProgressMonitor monitor = new NullProgressMonitor();
  BuildPathsBlock.addJavaNature(project, monitor);

  IJavaProject javaProject = JavaCore.create(project);
  javaProject.setRawClasspath(rawClasspaths, monitor);
  javaProject.open(monitor);

  return javaProject;
}
 
示例5
/**
 * Creates a project with the specified name in the workspace.
 * 
 * @param projectName
 * @return new project
 * @throws CoreException
 */
public static IProject createProject(String projectName) throws CoreException {
  IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
  IProject project = workspaceRoot.getProject(projectName);
  if (project.exists()) {
    throw new IllegalStateException("Project " + projectName
        + " already exists in this workspace");
  }

  IProgressMonitor monitor = new NullProgressMonitor();
  BuildPathsBlock.createProject(project, project.getLocationURI(), monitor);
  return project;
}
 
示例6
/**
 * Creates a project with the specified name in the workspace.
 *
 * @param projectName
 * @return new project
 * @throws CoreException
 */
public static IProject createProject(String projectName) throws CoreException {
  IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
  IProject project = workspaceRoot.getProject(projectName);
  if (project.exists()) {
    throw new IllegalStateException("Project " + projectName
        + " already exists in this workspace");
  }

  IProgressMonitor monitor = new NullProgressMonitor();
  BuildPathsBlock.createProject(project, project.getLocationURI(), monitor);
  return project;
}
 
示例7
/**
   * Constructor of the <code>NewSourceContainerWorkbookPage</code> which consists of
   * a tree representing the project, a toolbar with the available actions, an area
   * containing hyperlinks that perform the same actions as those in the toolbar but
   * additionally with some short description.
   *
   * @param classPathList
   * @param outputLocationField
   * @param context a runnable context, can be <code>null</code>
   * @param buildPathsBlock
   */
  public NewSourceContainerWorkbookPage(ListDialogField<CPListElement> classPathList, StringDialogField outputLocationField, IRunnableContext context, BuildPathsBlock buildPathsBlock) {
      fClassPathList= classPathList;
fOutputLocationField= outputLocationField;
fContext= context;
fBuildPathsBlock= buildPathsBlock;

      fUseFolderOutputs= new SelectionButtonDialogField(SWT.CHECK);
      fUseFolderOutputs.setSelection(false);
      fUseFolderOutputs.setLabelText(NewWizardMessages.SourceContainerWorkbookPage_folders_check);

fPackageExplorer= new DialogPackageExplorer();
fHintTextGroup= new HintTextGroup();
   }
 
示例8
/** Configure the source folders for a SARL project.
 *
 *
 * @param project the project.
 * @param createFolders indicates if the folders must be created or not.
 * @param monitor the monitor.
 * @since 0.8
 * @see #addSarlNatures(IProject, IProgressMonitor)
 * @see #configureSARLProject(IProject, boolean, boolean, boolean, IProgressMonitor)
 */
public static void configureSARLSourceFolders(IProject project, boolean createFolders, IProgressMonitor monitor) {
	try {
		final SubMonitor subMonitor = SubMonitor.convert(monitor, 8);

		final OutParameter<IFolder[]> sourceFolders = new OutParameter<>();
		final OutParameter<IFolder[]> testSourceFolders = new OutParameter<>();
		final OutParameter<IFolder[]> generationFolders = new OutParameter<>();
		final OutParameter<IFolder[]> testGenerationFolders = new OutParameter<>();
		final OutParameter<IFolder> testOutputFolder = new OutParameter<>();
		ensureSourceFolders(project, createFolders, subMonitor,
				sourceFolders, testSourceFolders,
				generationFolders, testGenerationFolders,
				null,
				null,
				null,
				testOutputFolder);

		final IJavaProject javaProject = JavaCore.create(project);
		subMonitor.worked(1);

		// Build path
		BuildPathsBlock.flush(
				buildClassPathEntries(javaProject,
						sourceFolders.get(),
						testSourceFolders.get(),
						generationFolders.get(),
						testGenerationFolders.get(),
						testOutputFolder.get().getFullPath(),
						true, false),
				javaProject.getOutputLocation(), javaProject, null, subMonitor.newChild(1));

		subMonitor.done();
	} catch (CoreException exception) {
		SARLEclipsePlugin.getDefault().log(exception);
	}
}
 
示例9
private void createJavaProject(IProject project) throws CoreException {
	if (!project.exists()) {
		BuildPathsBlock.createProject(project, null, new NullProgressMonitor());
		BuildPathsBlock.addJavaNature(project, new NullProgressMonitor());
	}
}
 
示例10
/** Configure the SARL project.
 *
 * <p>This function does the following:<ul>
 * <li>Add the SARL nature to the project;</li>
 * <li>Create the standard SARL folders if {@code createFolders} is evaluated to true;</li>
 * <li>Set the output configuration of the project from the
 * {@link SARLPreferences#setSpecificSARLConfigurationFor(IProject, IPath) general SARL configuration};</li>
 * <li>Reset the Java configuration in order to follow the SARL configuration, if {@code configureJabvaNature}
 * is evaluated to true.</li>
 * </ul>
 *
 * @param project the project.
 * @param addNatures indicates if the natures must be added to the project by calling {@link #addSarlNatures(IProject, IProgressMonitor)}.
 * @param configureJavaNature indicates if the Java configuration elements must be configured.
 * @param createFolders indicates if the folders must be created or not.
 * @param monitor the monitor.
 * @see #addSarlNatures(IProject, IProgressMonitor)
 * @see #configureSARLSourceFolders(IProject, boolean, IProgressMonitor)
 */
public static void configureSARLProject(IProject project, boolean addNatures,
		boolean configureJavaNature, boolean createFolders, IProgressMonitor monitor) {
	try {
		final SubMonitor subMonitor = SubMonitor.convert(monitor, 11);
		// Add Natures
		final IStatus status = Status.OK_STATUS;
		if (addNatures) {
			addSarlNatures(project, subMonitor.newChild(1));
			if (status != null && !status.isOK()) {
				SARLEclipsePlugin.getDefault().getLog().log(status);
			}
		}

		// Ensure SARL specific folders.
		final OutParameter<IFolder[]> sourceFolders = new OutParameter<>();
		final OutParameter<IFolder[]> testSourceFolders = new OutParameter<>();
		final OutParameter<IFolder[]> generationFolders = new OutParameter<>();
		final OutParameter<IFolder[]> testGenerationFolders = new OutParameter<>();
		final OutParameter<IFolder> generationFolder = new OutParameter<>();
		final OutParameter<IFolder> testGenerationFolder = new OutParameter<>();
		final OutParameter<IFolder> outputFolder = new OutParameter<>();
		final OutParameter<IFolder> testOutputFolder = new OutParameter<>();
		ensureSourceFolders(project, createFolders, subMonitor,
				sourceFolders, testSourceFolders,
				generationFolders, testGenerationFolders,
				generationFolder, testGenerationFolder,
				outputFolder, testOutputFolder);

		// SARL specific configuration
		final IFolder testGenerationFolderFolder = testGenerationFolder.get();
		final IPath testGenerationFolderPath = testGenerationFolderFolder == null ? null
				: testGenerationFolderFolder.getProjectRelativePath();
		SARLPreferences.setSpecificSARLConfigurationFor(project,
				generationFolder.get().getProjectRelativePath(),
				testGenerationFolderPath);
		subMonitor.worked(1);

		// Create the Java project
		if (configureJavaNature) {

			if (!addNatures) {
				addNatures(project, subMonitor.newChild(1), JavaCore.NATURE_ID);
			}

			final IJavaProject javaProject = JavaCore.create(project);
			subMonitor.worked(1);

			// Build path
			BuildPathsBlock.flush(
					buildClassPathEntries(javaProject,
							sourceFolders.get(),
							testSourceFolders.get(),
							generationFolders.get(),
							testGenerationFolders.get(),
							testOutputFolder.get().getFullPath(),
							false, true),
					outputFolder.get().getFullPath(), javaProject, null, subMonitor.newChild(1));
		}
		subMonitor.done();
	} catch (CoreException exception) {
		SARLEclipsePlugin.getDefault().log(exception);
	}
}
 
示例11
protected void flushBuildPath(final Repository repository, final IProgressMonitor monitor) throws CoreException, JavaModelException {
    final IJavaProject javaProject = asJavaProject(repository);
    BuildPathsBlock.flush(Arrays.asList(CPListElement.createFromExisting(javaProject)), javaProject.getOutputLocation(), javaProject, null, monitor);
}
 
示例12
/**
 * Helper method to create and open a IProject. The project location
 * is configured. No natures are added.
 *
 * @param project The handle of the project to create.
 * @param locationURI The location of the project or <code>null</code> to create the project in the workspace
 * @param monitor a progress monitor to report progress or <code>null</code> if
 *  progress reporting is not desired
 * @throws CoreException if the project couldn't be created
 * @see org.eclipse.core.resources.IProjectDescription#setLocationURI(java.net.URI)
 * @since 3.2
 */
public static void createProject(IProject project, URI locationURI, IProgressMonitor monitor) throws CoreException {
	BuildPathsBlock.createProject(project, locationURI, monitor);
}