Search in sources :

Example 1 with CapReqLoader

use of bndtools.tasks.CapReqLoader in project bndtools by bndtools.

the class ResolutionView method setLoaders.

private boolean setLoaders(Set<CapReqLoader> newLoaders) {
    Set<CapReqLoader> oldLoaders = loaders;
    boolean swap = !oldLoaders.equals(newLoaders);
    if (swap) {
        loaders = newLoaders;
    }
    for (CapReqLoader l : swap ? oldLoaders : newLoaders) {
        IO.close(l);
    }
    return swap;
}
Also used : BndFileCapReqLoader(bndtools.tasks.BndFileCapReqLoader) BndBuilderCapReqLoader(bndtools.tasks.BndBuilderCapReqLoader) JarFileCapReqLoader(bndtools.tasks.JarFileCapReqLoader) ResourceCapReqLoader(bndtools.tasks.ResourceCapReqLoader) CapReqLoader(bndtools.tasks.CapReqLoader)

Example 2 with CapReqLoader

use of bndtools.tasks.CapReqLoader in project bndtools by bndtools.

the class ResolutionView method setInput.

public void setInput(Set<CapReqLoader> sourceLoaders, Map<String, List<Capability>> capabilities, Map<String, List<RequirementWrapper>> requirements) {
    setLoaders(sourceLoaders);
    sourceLoaders = loaders;
    if (reqsTree != null && !reqsTree.isDisposed() && capsTable != null && !capsTable.isDisposed()) {
        reqsViewer.setInput(requirements);
        capsViewer.setInput(capabilities);
        String label;
        if (!sourceLoaders.isEmpty()) {
            StringBuilder builder = new StringBuilder();
            String delim = "";
            boolean shortLabel = sourceLoaders.size() > 1;
            for (CapReqLoader l : sourceLoaders) {
                builder.append(delim);
                builder.append(shortLabel ? l.getShortLabel() : l.getLongLabel());
                delim = ", ";
            }
            label = builder.toString();
        } else {
            label = "<no input>";
        }
        setContentDescription(label);
    }
}
Also used : BndFileCapReqLoader(bndtools.tasks.BndFileCapReqLoader) BndBuilderCapReqLoader(bndtools.tasks.BndBuilderCapReqLoader) JarFileCapReqLoader(bndtools.tasks.JarFileCapReqLoader) ResourceCapReqLoader(bndtools.tasks.ResourceCapReqLoader) CapReqLoader(bndtools.tasks.CapReqLoader)

Example 3 with CapReqLoader

use of bndtools.tasks.CapReqLoader 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);
}
Also used : JavaModelException(org.eclipse.jdt.core.JavaModelException) IFile(org.eclipse.core.resources.IFile) CapReqMapContentProvider(bndtools.model.resolution.CapReqMapContentProvider) ViewerFilter(org.eclipse.jface.viewers.ViewerFilter) TreeViewer(org.eclipse.jface.viewers.TreeViewer) Label(org.eclipse.swt.widgets.Label) TableViewer(org.eclipse.jface.viewers.TableViewer) TreeViewer(org.eclipse.jface.viewers.TreeViewer) Viewer(org.eclipse.jface.viewers.Viewer) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) IType(org.eclipse.jdt.core.IType) GridLayout(org.eclipse.swt.layout.GridLayout) IWorkbenchPart(org.eclipse.ui.IWorkbenchPart) Iterator(java.util.Iterator) ISelection(org.eclipse.jface.viewers.ISelection) Tree(org.eclipse.swt.widgets.Tree) Clazz(aQute.bnd.osgi.Clazz) BndFileCapReqLoader(bndtools.tasks.BndFileCapReqLoader) BndBuilderCapReqLoader(bndtools.tasks.BndBuilderCapReqLoader) JarFileCapReqLoader(bndtools.tasks.JarFileCapReqLoader) ResourceCapReqLoader(bndtools.tasks.ResourceCapReqLoader) CapReqLoader(bndtools.tasks.CapReqLoader) PartInitException(org.eclipse.ui.PartInitException) RequirementWrapper(bndtools.model.resolution.RequirementWrapper) IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) Table(org.eclipse.swt.widgets.Table) Composite(org.eclipse.swt.widgets.Composite) CapabilityLabelProvider(bndtools.model.resolution.CapabilityLabelProvider) FillLayout(org.eclipse.swt.layout.FillLayout) BndBuilderCapReqLoader(bndtools.tasks.BndBuilderCapReqLoader) SashForm(org.eclipse.swt.custom.SashForm) RequirementWrapperLabelProvider(bndtools.model.resolution.RequirementWrapperLabelProvider) IOpenListener(org.eclipse.jface.viewers.IOpenListener) IJavaProject(org.eclipse.jdt.core.IJavaProject) IWorkspaceRoot(org.eclipse.core.resources.IWorkspaceRoot) GridData(org.eclipse.swt.layout.GridData) TableViewer(org.eclipse.jface.viewers.TableViewer) IFile(org.eclipse.core.resources.IFile) File(java.io.File) OpenEvent(org.eclipse.jface.viewers.OpenEvent)

Example 4 with CapReqLoader

use of bndtools.tasks.CapReqLoader 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;
                    }
                }
            }
        }
    }
}
Also used : IFile(org.eclipse.core.resources.IFile) IWorkspaceRoot(org.eclipse.core.resources.IWorkspaceRoot) BndFileCapReqLoader(bndtools.tasks.BndFileCapReqLoader) BndBuilderCapReqLoader(bndtools.tasks.BndBuilderCapReqLoader) JarFileCapReqLoader(bndtools.tasks.JarFileCapReqLoader) ResourceCapReqLoader(bndtools.tasks.ResourceCapReqLoader) CapReqLoader(bndtools.tasks.CapReqLoader) IFile(org.eclipse.core.resources.IFile) File(java.io.File) BndBuilderCapReqLoader(bndtools.tasks.BndBuilderCapReqLoader)

Example 5 with CapReqLoader

use of bndtools.tasks.CapReqLoader in project bndtools by bndtools.

the class ResolutionView method getLoadersFromSelection.

private Set<CapReqLoader> getLoadersFromSelection(IStructuredSelection structSel) {
    Set<CapReqLoader> result = new LinkedHashSet<CapReqLoader>();
    Iterator<?> iter = structSel.iterator();
    while (iter.hasNext()) {
        Object element = iter.next();
        CapReqLoader loader = null;
        File file = SelectionUtils.adaptObject(element, File.class);
        if (file != null) {
            loader = getLoaderForFile(file);
        } else {
            IResource eresource = SelectionUtils.adaptObject(element, IResource.class);
            if (eresource != null) {
                IPath location = eresource.getLocation();
                if (location != null) {
                    loader = getLoaderForFile(location.toFile());
                }
            } else if (element instanceof RepositoryResourceElement) {
                Resource resource = ((RepositoryResourceElement) element).getResource();
                loader = new ResourceCapReqLoader(resource);
            }
        }
        if (loader != null)
            result.add(loader);
    }
    return result;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) RepositoryResourceElement(bndtools.model.repo.RepositoryResourceElement) IPath(org.eclipse.core.runtime.IPath) ResourceCapReqLoader(bndtools.tasks.ResourceCapReqLoader) Resource(org.osgi.resource.Resource) IResource(org.eclipse.core.resources.IResource) BndFileCapReqLoader(bndtools.tasks.BndFileCapReqLoader) BndBuilderCapReqLoader(bndtools.tasks.BndBuilderCapReqLoader) JarFileCapReqLoader(bndtools.tasks.JarFileCapReqLoader) ResourceCapReqLoader(bndtools.tasks.ResourceCapReqLoader) CapReqLoader(bndtools.tasks.CapReqLoader) IFile(org.eclipse.core.resources.IFile) File(java.io.File) IResource(org.eclipse.core.resources.IResource)

Aggregations

BndBuilderCapReqLoader (bndtools.tasks.BndBuilderCapReqLoader)5 BndFileCapReqLoader (bndtools.tasks.BndFileCapReqLoader)5 CapReqLoader (bndtools.tasks.CapReqLoader)5 JarFileCapReqLoader (bndtools.tasks.JarFileCapReqLoader)5 ResourceCapReqLoader (bndtools.tasks.ResourceCapReqLoader)5 File (java.io.File)3 IFile (org.eclipse.core.resources.IFile)3 IWorkspaceRoot (org.eclipse.core.resources.IWorkspaceRoot)2 Clazz (aQute.bnd.osgi.Clazz)1 RepositoryResourceElement (bndtools.model.repo.RepositoryResourceElement)1 CapReqMapContentProvider (bndtools.model.resolution.CapReqMapContentProvider)1 CapabilityLabelProvider (bndtools.model.resolution.CapabilityLabelProvider)1 RequirementWrapper (bndtools.model.resolution.RequirementWrapper)1 RequirementWrapperLabelProvider (bndtools.model.resolution.RequirementWrapperLabelProvider)1 Iterator (java.util.Iterator)1 LinkedHashSet (java.util.LinkedHashSet)1 IResource (org.eclipse.core.resources.IResource)1 IPath (org.eclipse.core.runtime.IPath)1 IStatus (org.eclipse.core.runtime.IStatus)1 Status (org.eclipse.core.runtime.Status)1