use of org.eclipse.core.resources.IWorkspaceRoot in project bndtools by bndtools.
the class BndtoolsBuilder method calculateDependsOn.
private IProject[] calculateDependsOn(Project model) throws Exception {
Collection<Project> dependsOn = model.getDependson();
IWorkspaceRoot wsroot = getProject().getWorkspace().getRoot();
List<IProject> result = new ArrayList<IProject>(dependsOn.size() + 1);
IProject cnfProject = WorkspaceUtils.findCnfProject(wsroot, model.getWorkspace());
if (cnfProject != null) {
result.add(cnfProject);
}
for (Project project : dependsOn) {
IProject targetProj = WorkspaceUtils.findOpenProject(wsroot, project);
if (targetProj == null)
logger.logWarning("No open project in workspace for Bnd '-dependson' dependency: " + project.getName(), null);
else
result.add(targetProj);
}
buildLog.full("Calculated dependsOn list: %s", result);
return result.toArray(new IProject[0]);
}
use of org.eclipse.core.resources.IWorkspaceRoot in project bndtools by bndtools.
the class ResolutionView method createPartControl.
@Override
public void createPartControl(Composite parent) {
this.display = parent.getDisplay();
SashForm splitPanel = new SashForm(parent, SWT.HORIZONTAL);
splitPanel.setLayout(new FillLayout());
Composite reqsPanel = new Composite(splitPanel, SWT.NONE);
reqsPanel.setBackground(parent.getBackground());
GridLayout reqsLayout = new GridLayout(1, false);
reqsLayout.marginWidth = 0;
reqsLayout.marginHeight = 0;
reqsLayout.verticalSpacing = 2;
reqsPanel.setLayout(reqsLayout);
new Label(reqsPanel, SWT.NONE).setText("Requirements:");
reqsTree = new Tree(reqsPanel, SWT.FULL_SELECTION | SWT.MULTI | SWT.BORDER);
reqsTree.setHeaderVisible(false);
reqsTree.setLinesVisible(false);
reqsTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
reqsViewer = new TreeViewer(reqsTree);
ColumnViewerToolTipSupport.enableFor(reqsViewer);
reqsViewer.setLabelProvider(new RequirementWrapperLabelProvider(true));
reqsViewer.setContentProvider(new CapReqMapContentProvider());
Composite capsPanel = new Composite(splitPanel, SWT.NONE);
capsPanel.setBackground(parent.getBackground());
GridLayout capsLayout = new GridLayout(1, false);
capsLayout.marginWidth = 0;
capsLayout.marginHeight = 0;
capsLayout.verticalSpacing = 2;
capsPanel.setLayout(capsLayout);
new Label(capsPanel, SWT.NONE).setText("Capabilities:");
capsTable = new Table(capsPanel, SWT.FULL_SELECTION | SWT.MULTI | SWT.BORDER);
capsTable.setHeaderVisible(false);
capsTable.setLinesVisible(false);
capsTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
capsViewer = new TableViewer(capsTable);
ColumnViewerToolTipSupport.enableFor(capsViewer);
capsViewer.setLabelProvider(new CapabilityLabelProvider(true));
capsViewer.setContentProvider(new CapReqMapContentProvider());
capsViewer.setFilters(new ViewerFilter[] { new ViewerFilter() {
@Override
public boolean select(Viewer viewer, Object parent, Object element) {
return !filteredCapabilityNamespaces.contains(((Capability) element).getNamespace());
}
} });
hideSelfImportsFilter = new ViewerFilter() {
@Override
public boolean select(Viewer viewer, Object parentElement, Object element) {
if (element instanceof RequirementWrapper) {
RequirementWrapper rw = (RequirementWrapper) element;
return !rw.resolved;
}
return true;
}
};
reqsViewer.setFilters(new ViewerFilter[] { hideSelfImportsFilter });
reqsViewer.addDragSupport(DND.DROP_MOVE | DND.DROP_COPY, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new LocalTransferDragListener(reqsViewer));
capsViewer.addDragSupport(DND.DROP_MOVE | DND.DROP_COPY, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new LocalTransferDragListener(capsViewer));
reqsViewer.addOpenListener(new IOpenListener() {
@Override
public void open(OpenEvent event) {
IStructuredSelection selection = (IStructuredSelection) event.getSelection();
for (Iterator<?> iter = selection.iterator(); iter.hasNext(); ) {
Object item = iter.next();
if (item instanceof Clazz) {
Clazz clazz = (Clazz) item;
String className = clazz.getFQN();
IType type = null;
if (!loaders.isEmpty()) {
IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getRoot();
for (CapReqLoader loader : loaders) {
if (loader instanceof BndBuilderCapReqLoader) {
File loaderFile = ((BndBuilderCapReqLoader) loader).getFile();
IFile[] wsfiles = wsroot.findFilesForLocationURI(loaderFile.toURI());
for (IFile wsfile : wsfiles) {
IJavaProject javaProject = JavaCore.create(wsfile.getProject());
try {
type = javaProject.findType(className);
if (type != null)
break;
} catch (JavaModelException e) {
ErrorDialog.openError(getSite().getShell(), "Error", "", new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, MessageFormat.format("Error opening Java class '{0}'.", className), e));
}
}
}
}
}
try {
if (type != null)
JavaUI.openInEditor(type, true, true);
} catch (PartInitException e) {
ErrorDialog.openError(getSite().getShell(), "Error", "", new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, MessageFormat.format("Error opening Java editor for class '{0}'.", className), e));
} catch (JavaModelException e) {
ErrorDialog.openError(getSite().getShell(), "Error", "", new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, MessageFormat.format("Error opening Java class '{0}'.", className), e));
}
}
}
}
});
fillActionBars();
getSite().getPage().addPostSelectionListener(this);
getSite().getPage().addPartListener(partAdapter);
ResourcesPlugin.getWorkspace().addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
// Current selection & part
IWorkbenchPart activePart = getSite().getPage().getActivePart();
ISelection activeSelection = getSite().getWorkbenchWindow().getSelectionService().getSelection();
selectionChanged(activePart, activeSelection);
}
use of org.eclipse.core.resources.IWorkspaceRoot in project bndtools by bndtools.
the class ResolutionView method resourceChanged.
@Override
public void resourceChanged(IResourceChangeEvent event) {
if (!loaders.isEmpty()) {
IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getRoot();
for (CapReqLoader loader : loaders) {
if (loader instanceof BndBuilderCapReqLoader) {
File file = ((BndBuilderCapReqLoader) loader).getFile();
IFile[] wsfiles = wsroot.findFilesForLocationURI(file.toURI());
for (IFile wsfile : wsfiles) {
if (event.getDelta().findMember(wsfile.getFullPath()) != null) {
executeAnalysis();
break;
}
}
}
}
}
}
use of org.eclipse.core.resources.IWorkspaceRoot in project bndtools by bndtools.
the class ImportBndWorkspaceWizard method importBndProject.
private void importBndProject(final Project bndProject, final Workspace bndWorkspace, final ImportSettings importSettings, IProgressMonitor monitor) throws IOException, CoreException, Exception {
monitor.subTask("Import Bnd project '" + bndProject.getName() + "'.");
final IWorkspace eclipseWorkspace = ResourcesPlugin.getWorkspace();
final IWorkspaceRoot eclipseWorkspaceRoot = eclipseWorkspace.getRoot();
if (importSettings.deleteSettings) {
deleteOldProjectFiles(Paths.get(bndWorkspace.getBaseURI()).resolve(bndProject.getName()));
}
// create generic project
final IProjectDescription projectDescription = eclipseWorkspace.newProjectDescription(bndProject.getName());
final IProject project = eclipseWorkspaceRoot.getProject(bndProject.getName());
IPath path = URIUtil.toPath(bndProject.getBaseURI());
if (Platform.getLocation().isPrefixOf(path)) {
projectDescription.setLocation(null);
} else {
projectDescription.setLocation(path);
}
if (!project.exists()) {
project.create(projectDescription, monitor);
}
project.open(monitor);
setNatures(project, monitor, JavaCore.NATURE_ID, Plugin.BNDTOOLS_NATURE);
IJavaProject javaProject = JavaCore.create(project);
if (!javaProject.isOpen()) {
javaProject.open(monitor);
}
updateJavaProjectSettings(bndProject, javaProject, importSettings, monitor);
importSourceAndOutputFolders(bndProject, project, javaProject, monitor);
}
use of org.eclipse.core.resources.IWorkspaceRoot in project bndtools by bndtools.
the class FileUtils method toWorkspaceResource.
public static IResource toWorkspaceResource(File file) {
IPath path = new Path(file.toString());
final IWorkspace workspace = ResourcesPlugin.getWorkspace();
final IWorkspaceRoot workspaceRoot = workspace.getRoot();
IPath workspacePath = workspaceRoot.getLocation();
if (workspacePath.isPrefixOf(path)) {
final IPath relativePath = path.removeFirstSegments(workspacePath.segmentCount());
IResource resource;
if (file.isDirectory()) {
resource = workspaceRoot.getFolder(relativePath);
} else {
resource = workspaceRoot.getFile(relativePath);
}
return resource;
}
return null;
}
Aggregations