public synchronized void refreshDependencies(final IProject project) throws CoreException { List oldRefs = (List) referenceCache.get(project); if (oldRefs == null) { oldRefs = new ArrayList(); } final IProject[] refProjects = project.getDescription().getReferencedProjects(); final List newRefs = new ArrayList(); for (int j = 0; j < refProjects.length; j++) { addDependency(refProjects[j], project); newRefs.add(refProjects[j]); oldRefs.remove(refProjects[j]); } referenceCache.put(project, newRefs); // need to cull the stale refs from the reverse map Iterator i = oldRefs.iterator(); while (i.hasNext()) { removeDependency((IProject) i.next(), project); } }
/** * Remove the list of projects from the list of "referenced projects" in the project's description. * * @param project * @param toBeRemovedProjectList * @throws org.eclipse.core.runtime.CoreException * * @since 1.0.0 */ public static void removeReferenceProjects(IProject project, List toBeRemovedProjectList) throws org.eclipse.core.runtime.CoreException { IProjectDescription description = project.getDescription(); IProject[] projects = description.getReferencedProjects(); ArrayList projectsList = new ArrayList(); for (int i = 0; i < projects.length; i++) { projectsList.add(projects[i]); } for (int i = 0; i < toBeRemovedProjectList.size(); i++) { projectsList.remove(toBeRemovedProjectList.get(i)); } IProject[] refProjects = new IProject[projectsList.size()]; for (int i = 0; i < refProjects.length; i++) { refProjects[i] = (IProject) (projectsList.get(i)); } description.setReferencedProjects(refProjects); project.setDescription(description, null); }
/** * Add the list of projects to end of the "referenced projects" list from the project's description. * * @param project * @param toBeAddedProjectsList * @throws CoreException * * @since 1.0.0 */ public static void addReferenceProjects(IProject project, List toBeAddedProjectsList) throws CoreException { IProjectDescription description = project.getDescription(); IProject[] projects = description.getReferencedProjects(); ArrayList projectsList = new ArrayList(); for (int i = 0; i < projects.length; i++) { projectsList.add(projects[i]); } for (int i = 0; i < toBeAddedProjectsList.size(); i++) { projectsList.add(toBeAddedProjectsList.get(i)); } IProject[] refProjects = new IProject[projectsList.size()]; for (int i = 0; i < refProjects.length; i++) { refProjects[i] = (IProject) (projectsList.get(i)); } description.setReferencedProjects(refProjects); project.setDescription(description, null); }
/** * Add the single project to the end of the "referenced projects" list from the project's description. * * @param project * @param projectToBeAdded * @throws CoreException * * @since 1.0.0 */ public static void addReferenceProjects(IProject project, IProject projectToBeAdded) throws CoreException { IProjectDescription description = project.getDescription(); IProject[] projects = description.getReferencedProjects(); ArrayList projectsList = new ArrayList(); for (int i = 0; i < projects.length; i++) { projectsList.add(projects[i]); } projectsList.add(projectToBeAdded); IProject[] refProjects = new IProject[projectsList.size()]; for (int i = 0; i < refProjects.length; i++) { refProjects[i] = (IProject) (projectsList.get(i)); } description.setReferencedProjects(refProjects); project.setDescription(description, null); }
/** * Remove the project from the list of "referenced projects" in the description for the given project. * * @param project * @param toBeRemovedProject * @throws org.eclipse.core.runtime.CoreException * * @since 1.0.0 */ public static void removeReferenceProjects(IProject project, IProject toBeRemovedProject) throws org.eclipse.core.runtime.CoreException { IProjectDescription description = project.getDescription(); IProject[] projects = description.getReferencedProjects(); ArrayList projectsList = new ArrayList(); for (int i = 0; i < projects.length; i++) { projectsList.add((projects[i])); } projectsList.remove(toBeRemovedProject); IProject[] refProjects = new IProject[projectsList.size()]; for (int i = 0; i < refProjects.length; i++) { refProjects[i] = (IProject) (projectsList.get(i)); } description.setReferencedProjects(refProjects); project.setDescription(description, null); }
@Override public Object[] getChildren(Object o) { if (!(o instanceof IWorkspace)) { return new Object[0]; } // Collect all the projects in the workspace except the given project IProject[] projects = ((IWorkspace) o).getRoot().getProjects(); ArrayList referenced = new ArrayList(projects.length); boolean found = false; for (int i = 0; i < projects.length; i++) { if (!found && projects[i].equals(project)) { found = true; continue; } referenced.add(projects[i]); } // Add any referenced that do not exist in the workspace currently try { projects = project.getDescription().getReferencedProjects(); for (int i = 0; i < projects.length; i++) { if (!referenced.contains(projects[i])) { referenced.add(projects[i]); } } } catch (CoreException e) { //Ignore core exceptions } return referenced.toArray(); } };
protected void updateRequiredProjects(IJavaProject jproject, String[] prevRequiredProjects, IProgressMonitor monitor) throws CoreException { String[] newRequiredProjects = jproject.getRequiredProjectNames(); ArrayList prevEntries = new ArrayList(Arrays.asList(prevRequiredProjects)); ArrayList newEntries = new ArrayList(Arrays.asList(newRequiredProjects)); IProject proj = jproject.getProject(); IProjectDescription projDesc = proj.getDescription(); ArrayList newRefs = new ArrayList(); IProject[] referencedProjects = projDesc.getReferencedProjects(); for (int i = 0; i < referencedProjects.length; i++) { String curr = referencedProjects[i].getName(); if (newEntries.remove(curr) || !prevEntries.contains(curr)) { newRefs.add(referencedProjects[i]); } } IWorkspaceRoot root = proj.getWorkspace().getRoot(); for (int i = 0; i < newEntries.size(); i++) { String curr = (String) newEntries.get(i); newRefs.add(root.getProject(curr)); } projDesc.setReferencedProjects((IProject[]) newRefs.toArray(new IProject[newRefs.size()])); proj.setDescription(projDesc, monitor); } }
@Override protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException { IProjectDescription projectDescription = from.getDescription(); IProject[] projects = projectDescription .getReferencedProjects(); IProject[] newProjects = new IProject[projects.length + 1]; System.arraycopy(projects, 0, newProjects, 0, projects.length); newProjects[projects.length] = to; projectDescription.setReferencedProjects(newProjects); from.setDescription(projectDescription, monitor()); } }.run(monitor());
@Override protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException { IProjectDescription projectDescription = from.getDescription(); IProject[] projects = projectDescription .getReferencedProjects(); IProject[] newProjects = new IProject[projects.length + 1]; System.arraycopy(projects, 0, newProjects, 0, projects.length); newProjects[projects.length] = to; projectDescription.setReferencedProjects(newProjects); from.setDescription(projectDescription, monitor()); } }.run(monitor());
@Override protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException { IProjectDescription projectDescription = from.getDescription(); IProject[] projects = projectDescription .getReferencedProjects(); for (int i = 0; i < projects.length; ++i) { if (to.equals(projects[i])) { // Remove the nature IProject[] newProjects = new IProject[projects.length - 1]; System.arraycopy(projects, 0, newProjects, 0, i); System.arraycopy(projects, i + 1, newProjects, i, projects.length - i - 1); projectDescription.setReferencedProjects(newProjects); from.setDescription(projectDescription, null); return; } } } }.run(monitor());
@Override protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException { IProjectDescription projectDescription = from.getDescription(); IProject[] projects = projectDescription .getReferencedProjects(); for (int i = 0; i < projects.length; ++i) { if (to.equals(projects[i])) { // Remove the nature IProject[] newProjects = new IProject[projects.length - 1]; System.arraycopy(projects, 0, newProjects, 0, i); System.arraycopy(projects, i + 1, newProjects, i, projects.length - i - 1); projectDescription.setReferencedProjects(newProjects); from.setDescription(projectDescription, null); return; } } } }.run(monitor());
public static IProject copyProject(String projectName) throws CoreException { IProgressMonitor m = new NullProgressMonitor(); IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); IProject project = workspaceRoot.getProject(projectName); IProjectDescription projectDescription = project.getDescription(); String cloneName = projectName + "_copy"; // create clone project in workspace IProjectDescription cloneDescription = workspaceRoot.getWorkspace().newProjectDescription(cloneName); // copy project files project.copy(cloneDescription, true, m); IProject clone = workspaceRoot.getProject(cloneName); // copy the project properties cloneDescription.setNatureIds(projectDescription.getNatureIds()); cloneDescription.setReferencedProjects(projectDescription.getReferencedProjects()); cloneDescription.setDynamicReferences(projectDescription.getDynamicReferences()); cloneDescription.setBuildSpec(projectDescription.getBuildSpec()); cloneDescription.setReferencedProjects(projectDescription.getReferencedProjects()); clone.setDescription(cloneDescription, null); return clone; }
/** * Does the dependent project have a .project reference on the refactored project? * (dynamic project refs don't count) * @return True if a project reference exists. */ protected static boolean hadProjectReference(final ProjectRefactorMetadata dependentMetadata, final ProjectRefactorMetadata refactoredMetadata) { try { final IProject[] refs = dependentMetadata.getProject().getDescription().getReferencedProjects(); final IProject refactoredProject= refactoredMetadata.getProject(); for (int i = 0; i < refs.length; i++) { if (refs[i].equals(refactoredProject)) { return true; } } } catch (CoreException ce) { Logger.getLogger().logError(ce); } return false; }
referencedProjects.addAll(Arrays.asList(project.getDescription().getReferencedProjects())); projectLocation = getLocationURI(project); referencedProjects.addAll(Arrays.asList(modelProject.getDescription().getReferencedProjects())); referencedProjects.addAll(Arrays.asList(otherEditProject.getDescription().getReferencedProjects())); referencedProjects.addAll(Arrays.asList(editProject.getDescription().getReferencedProjects()));
if (project.exists()) referencedProjects.addAll(Arrays.asList(project.getDescription().getReferencedProjects())); projectLocation = project.getDescription().getLocation(); referencedProjects.addAll(Arrays.asList(modelProject.getDescription().getReferencedProjects())); referencedProjects.addAll(Arrays.asList(otherEditProject.getDescription().getReferencedProjects())); referencedProjects.addAll(Arrays.asList(editProject.getDescription().getReferencedProjects()));
if (project.exists()) referencedProjects.addAll(Arrays.asList(project.getDescription().getReferencedProjects())); projectLocation = project.getDescription().getLocation(); referencedProjects.addAll(Arrays.asList(modelProject.getDescription().getReferencedProjects())); referencedProjects.addAll(Arrays.asList(otherEditProject.getDescription().getReferencedProjects())); referencedProjects.addAll(Arrays.asList(editProject.getDescription().getReferencedProjects()));
desc.setNatureIds(record.description.getNatureIds()); desc.setReferencedProjects(record.description .getReferencedProjects()); record.description = desc;
if (project.exists()) referencedProjects.addAll(Arrays.asList(project.getDescription().getReferencedProjects())); projectLocation = project.getDescription().getLocation(); referencedProjects.addAll(Arrays.asList(modelProject.getDescription().getReferencedProjects())); referencedProjects.addAll(Arrays.asList(otherEditProject.getDescription().getReferencedProjects())); referencedProjects.addAll(Arrays.asList(editProject.getDescription().getReferencedProjects()));
if (project.exists()) referencedProjects.addAll(Arrays.asList(project.getDescription().getReferencedProjects())); projectLocation = project.getDescription().getLocation(); referencedProjects.addAll(Arrays.asList(modelProject.getDescription().getReferencedProjects())); referencedProjects.addAll(Arrays.asList(otherEditProject.getDescription().getReferencedProjects())); referencedProjects.addAll(Arrays.asList(editProject.getDescription().getReferencedProjects()));
@Override protected Control createContents(Composite parent) { PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), IIDEHelpContextIds.PROJECT_REFERENCE_PROPERTY_PAGE); Composite composite = new Composite(parent, SWT.NONE); initialize(); createDescriptionLabel(composite); listViewer = CheckboxTableViewer.newCheckList(composite, SWT.TOP | SWT.BORDER); if(!project.isOpen()) listViewer.getControl().setEnabled(false); listViewer.setLabelProvider(WorkbenchLabelProvider .getDecoratingWorkbenchLabelProvider()); listViewer.setContentProvider(getContentProvider(project)); listViewer.setComparator(new ViewerComparator()); listViewer.setInput(project.getWorkspace()); try { listViewer.setCheckedElements(project.getDescription() .getReferencedProjects()); } catch (CoreException e) { //don't initial-check anything } //check for initial modification to avoid work if no changes are made listViewer.addCheckStateListener(event -> modified = true); applyDialogFont(composite); GridLayoutFactory.fillDefaults().generateLayout(composite); return composite; }