Search in sources :

Example 11 with IOpenListener

use of org.eclipse.jface.viewers.IOpenListener in project bndtools by bndtools.

the class BundleCalculatedImportsPart method createSection.

private void createSection(Section section, FormToolkit toolkit) {
    // CREATE COMPONENTS
    section.setText(Messages.BundleCalculatedImportsPart_title);
    ToolBar toolbar = new ToolBar(section, SWT.FLAT);
    section.setTextClient(toolbar);
    final ToolItem showSelfImportsItem = new ToolItem(toolbar, SWT.CHECK);
    showSelfImportsItem.setImage(imgShowSelfImports);
    showSelfImportsItem.setToolTipText(Messages.BundleCalculatedImportsPart_tooltipShowSelfImports);
    Composite composite = toolkit.createComposite(section);
    section.setClient(composite);
    // toolkit.createLabel(composite,
    // Messages.BundleCalculatedImportsPart_description, SWT.WRAP);
    tree = toolkit.createTree(composite, SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER);
    viewer = new TreeViewer(tree);
    viewer.setContentProvider(new CapReqMapContentProvider());
    viewer.setLabelProvider(new RequirementWrapperLabelProvider(true));
    ColumnViewerToolTipSupport.enableFor(viewer);
    nonPkgFilter = new ViewerFilter() {

        @Override
        public boolean select(Viewer viewer, Object parent, Object element) {
            if (element instanceof RequirementWrapper)
                return PackageNamespace.PACKAGE_NAMESPACE.equals(((RequirementWrapper) element).requirement.getNamespace());
            return true;
        }
    };
    hideSelfImportsFilter = new ViewerFilter() {

        @Override
        public boolean select(Viewer viewer, Object parentElement, Object element) {
            if (element instanceof RequirementWrapper)
                return !((RequirementWrapper) element).resolved;
            return true;
        }
    };
    viewer.setFilters(new ViewerFilter[] { nonPkgFilter, hideSelfImportsFilter });
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            getManagedForm().fireSelectionChanged(BundleCalculatedImportsPart.this, event.getSelection());
        }
    });
    viewer.addDragSupport(DND.DROP_MOVE | DND.DROP_COPY, new Transfer[] { LocalSelectionTransfer.getTransfer() }, new DragSourceAdapter() {

        @Override
        public void dragSetData(DragSourceEvent event) {
            LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer();
            if (transfer.isSupportedType(event.dataType))
                transfer.setSelection(viewer.getSelection());
        }
    });
    viewer.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 importUsedBy = (Clazz) item;
                    String className = importUsedBy.getFQN();
                    IType type = null;
                    IFile file = getEditorFile();
                    if (file != null) {
                        IJavaProject javaProject = JavaCore.create(file.getProject());
                        try {
                            type = javaProject.findType(className);
                        } catch (JavaModelException e) {
                            ErrorDialog.openError(tree.getShell(), Messages.BundleCalculatedImportsPart_error, Messages.BundleCalculatedImportsPart_errorFindingType, new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, MessageFormat.format(Messages.BundleCalculatedImportsPart_errorOpeningClass, className), e));
                        }
                    }
                    try {
                        if (type != null)
                            JavaUI.openInEditor(type, true, true);
                    } catch (PartInitException e) {
                        ErrorDialog.openError(tree.getShell(), Messages.BundleCalculatedImportsPart_error, null, new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, MessageFormat.format(Messages.BundleCalculatedImportsPart_errorOpeningJavaEditor, className), e));
                    } catch (JavaModelException e) {
                        ErrorDialog.openError(tree.getShell(), Messages.BundleCalculatedImportsPart_error, null, new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, MessageFormat.format(Messages.BundleCalculatedImportsPart_errorOpeningClass, className), e));
                    }
                }
            }
        }
    });
    // LISTENERS
    showSelfImportsItem.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            boolean showSelfImports = showSelfImportsItem.getSelection();
            ViewerFilter[] filters = showSelfImports ? new ViewerFilter[] { nonPkgFilter } : new ViewerFilter[] { nonPkgFilter, hideSelfImportsFilter };
            viewer.setFilters(filters);
        }
    });
    // LAYOUT
    GridLayout layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    layout.verticalSpacing = 2;
    composite.setLayout(layout);
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    gd.heightHint = 75;
    gd.widthHint = 75;
    tree.setLayoutData(gd);
}
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) TreeViewer(org.eclipse.jface.viewers.TreeViewer) Viewer(org.eclipse.jface.viewers.Viewer) SelectionChangedEvent(org.eclipse.jface.viewers.SelectionChangedEvent) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) IType(org.eclipse.jdt.core.IType) DragSourceEvent(org.eclipse.swt.dnd.DragSourceEvent) GridLayout(org.eclipse.swt.layout.GridLayout) Iterator(java.util.Iterator) SelectionEvent(org.eclipse.swt.events.SelectionEvent) Clazz(aQute.bnd.osgi.Clazz) PartInitException(org.eclipse.ui.PartInitException) RequirementWrapper(bndtools.model.resolution.RequirementWrapper) LocalSelectionTransfer(org.eclipse.jface.util.LocalSelectionTransfer) ToolItem(org.eclipse.swt.widgets.ToolItem) IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) DragSourceAdapter(org.eclipse.swt.dnd.DragSourceAdapter) Composite(org.eclipse.swt.widgets.Composite) ISelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) RequirementWrapperLabelProvider(bndtools.model.resolution.RequirementWrapperLabelProvider) IOpenListener(org.eclipse.jface.viewers.IOpenListener) IJavaProject(org.eclipse.jdt.core.IJavaProject) ToolBar(org.eclipse.swt.widgets.ToolBar) GridData(org.eclipse.swt.layout.GridData) OpenEvent(org.eclipse.jface.viewers.OpenEvent)

Aggregations

IOpenListener (org.eclipse.jface.viewers.IOpenListener)11 OpenEvent (org.eclipse.jface.viewers.OpenEvent)11 ISelectionChangedListener (org.eclipse.jface.viewers.ISelectionChangedListener)9 SelectionChangedEvent (org.eclipse.jface.viewers.SelectionChangedEvent)9 GridData (org.eclipse.swt.layout.GridData)8 GridLayout (org.eclipse.swt.layout.GridLayout)8 Composite (org.eclipse.swt.widgets.Composite)8 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)6 TableViewer (org.eclipse.jface.viewers.TableViewer)6 Table (org.eclipse.swt.widgets.Table)6 TreeViewer (org.eclipse.jface.viewers.TreeViewer)5 Label (org.eclipse.swt.widgets.Label)5 ISelection (org.eclipse.jface.viewers.ISelection)4 ViewerFilter (org.eclipse.jface.viewers.ViewerFilter)4 SelectionAdapter (org.eclipse.swt.events.SelectionAdapter)4 SelectionEvent (org.eclipse.swt.events.SelectionEvent)4 Iterator (java.util.Iterator)3 IStatus (org.eclipse.core.runtime.IStatus)3 Status (org.eclipse.core.runtime.Status)3 Viewer (org.eclipse.jface.viewers.Viewer)3