Example usage for org.eclipse.jface.viewers IStructuredSelection iterator

List of usage examples for org.eclipse.jface.viewers IStructuredSelection iterator

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers IStructuredSelection iterator.

Prototype

@Override
public Iterator iterator();

Source Link

Document

Returns an iterator over the elements of this selection.

Usage

From source file:bndtools.editor.pkgpatterns.PkgPatternsListPart.java

License:Open Source License

private void doAddClausesAfterSelection(Collection<? extends C> newClauses) {
    if (newClauses != null && !newClauses.isEmpty()) {
        int selectedIndex = -1;
        IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
        if (!selection.isEmpty()) {
            // find the highest selected index
            for (Iterator<?> iter = selection.iterator(); iter.hasNext();) {
                int index = this.clauses.indexOf(iter.next());
                if (index > selectedIndex)
                    selectedIndex = index;
            }/*from w w w  .  ja v  a 2s.  c o  m*/
        }
        doAddClauses(newClauses, selectedIndex, true);
    }
}

From source file:bndtools.MakeBundleWithRefreshAction.java

License:Open Source License

@Override
public void run(IAction action) {
    // What should we refresh??
    IStructuredSelection selection = StructuredSelection.EMPTY;
    if (targetPart instanceof IEditorPart) {
        IEditorInput input = ((IEditorPart) targetPart).getEditorInput();
        if (input instanceof IFileEditorInput) {
            IFile file = ((IFileEditorInput) input).getFile();
            selection = new StructuredSelection(file);
        }//from   w w w  .j a  v  a2 s  . co  m
    } else {
        ISelection sel = targetPart.getSite().getSelectionProvider().getSelection();
        if (sel instanceof IStructuredSelection) {
            selection = (IStructuredSelection) sel;
        }
    }
    selectionChanged(action, selection);
    super.run(action);

    final List<IResource> resources = new ArrayList<IResource>(selection.size());
    for (Iterator<?> iter = selection.iterator(); iter.hasNext();) {
        Object next = iter.next();
        if (next instanceof IResource)
            resources.add((IResource) next);
    }
    if (!resources.isEmpty()) {
        final IWorkspace workspace = resources.get(0).getWorkspace();
        final IWorkspaceRunnable operation = new IWorkspaceRunnable() {
            public void run(IProgressMonitor monitor) throws CoreException {
                SubMonitor progress = SubMonitor.convert(monitor, resources.size());
                MultiStatus status = new MultiStatus(Plugin.PLUGIN_ID, 0,
                        "One or more errors occurred while refreshing resources", null);
                for (IResource resource : resources) {
                    try {
                        resource.getParent().refreshLocal(1, progress.newChild(1));
                    } catch (CoreException e) {
                        status.add(new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, e.getMessage(), e));
                    }
                }
                if (!status.isOK()) {
                    ErrorDialog.openError(targetPart.getSite().getShell(), "Error", null, status);
                }
            }
        };
        IRunnableWithProgress task = new IRunnableWithProgress() {
            public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
                try {
                    workspace.run(operation, monitor);
                } catch (CoreException e) {
                    throw new InvocationTargetException(e);
                }
            }
        };
        try {
            targetPart.getSite().getWorkbenchWindow().run(false, false, task);
        } catch (InvocationTargetException e) {
            CoreException ce = (CoreException) e.getCause();
            ErrorDialog.openError(targetPart.getSite().getShell(), "Error", null,
                    new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, "Error refreshing resources", ce));
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
    }

    // Process it
    IRunnableContext context = targetPart.getSite().getWorkbenchWindow();
    try {
        context.run(false, false, new IRunnableWithProgress() {
            public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
            }
        });
    } catch (InvocationTargetException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

From source file:bndtools.utils.SelectionUtils.java

License:Open Source License

public static <T> Collection<T> getSelectionMembers(ISelection selection, Class<T> clazz,
        Predicate<? super T> filter) throws Exception {
    if (selection.isEmpty() || !(selection instanceof IStructuredSelection)) {
        return Collections.emptyList();
    }/* w  ww  .  j av  a  2s  . c om*/

    IStructuredSelection structSel = (IStructuredSelection) selection;
    List<T> result = new ArrayList<T>(structSel.size());
    Iterator<?> iter = structSel.iterator();
    while (iter.hasNext()) {
        Object element = iter.next();
        if (clazz.isInstance(element)) {
            @SuppressWarnings("unchecked")
            T casted = (T) element;
            if (filter == null || filter.test(casted)) {
                result.add(casted);
            }
        } else if (element instanceof IAdaptable) {
            @SuppressWarnings("unchecked")
            T adapted = (T) ((IAdaptable) element).getAdapter(clazz);
            if (adapted != null) {
                if (filter == null || filter.test(adapted)) {
                    result.add(adapted);
                }
            }
        }
    }
    return result;
}

From source file:bndtools.views.ImportsExportsView.java

License:Open Source License

@Override
public void createPartControl(Composite parent) {
    this.display = parent.getDisplay();

    tree = new Tree(parent, SWT.FULL_SELECTION | SWT.MULTI);
    tree.setHeaderVisible(true);/*w  w  w  .ja va  2 s  . co m*/
    tree.setLinesVisible(true);

    TreeColumn col;
    col = new TreeColumn(tree, SWT.NONE);
    col.setText("Package");
    col.setWidth(400);

    col = new TreeColumn(tree, SWT.NONE);
    col.setText("Attribs");
    col.setWidth(100);

    viewer = new TreeViewer(tree);
    viewer.setContentProvider(new ImportsExportsTreeContentProvider());
    viewer.setSorter(new ImportsAndExportsViewerSorter());
    viewer.setLabelProvider(new ImportsExportsTreeLabelProvider());
    viewer.setAutoExpandLevel(2);

    hideSelfImportsFilter = new ViewerFilter() {
        @Override
        public boolean select(Viewer viewer, Object parentElement, Object element) {
            if (element instanceof ImportPackage) {
                return !((ImportPackage) element).isSelfImport();
            } else if (element instanceof RequiredBundle) {
                return !((RequiredBundle) element).isSatisfied();
            }
            return true;
        }
    };
    viewer.setFilters(new ViewerFilter[] { hideSelfImportsFilter });

    viewer.addDragSupport(DND.DROP_MOVE | DND.DROP_COPY,
            new Transfer[] { LocalSelectionTransfer.getTransfer() }, new DragSourceListener() {
                public void dragStart(DragSourceEvent event) {
                }

                public void dragSetData(DragSourceEvent event) {
                    LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer();
                    if (transfer.isSupportedType(event.dataType))
                        transfer.setSelection(viewer.getSelection());
                }

                public void dragFinished(DragSourceEvent event) {
                }
            });

    viewer.addOpenListener(new IOpenListener() {
        public void open(OpenEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            for (Iterator<?> iter = selection.iterator(); iter.hasNext();) {
                Object item = iter.next();
                if (item instanceof ImportUsedByClass) {
                    ImportUsedByClass importUsedBy = (ImportUsedByClass) item;
                    String className = importUsedBy.getClazz().getFQN();
                    IType type = null;
                    if (selectedFiles != null) {
                        IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getRoot();
                        for (File selectedFile : selectedFiles) {
                            IFile[] wsfiles = wsroot.findFilesForLocationURI(selectedFile.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);
}

From source file:bndtools.views.ImportsExportsView.java

License:Open Source License

private static Collection<File> getFilesFromSelection(ISelection selection) {
    if (selection.isEmpty() || !(selection instanceof IStructuredSelection)) {
        return Collections.emptyList();
    }//from  w ww. jav  a  2 s  .c  om

    IStructuredSelection structSel = (IStructuredSelection) selection;
    Collection<File> result = new ArrayList<File>();
    Iterator<?> iter = structSel.iterator();
    while (iter.hasNext()) {
        Object element = iter.next();
        File file = SelectionUtils.adaptObject(element, File.class);
        if (file != null) {
            result.add(file);
        } else {
            IResource resource = SelectionUtils.adaptObject(element, IResource.class);
            if (resource != null) {
                IPath location = resource.getLocation();
                if (location != null)
                    result.add(location.toFile());
            }
        }
    }
    return result;
}

From source file:bndtools.views.resolution.ResolutionView.java

License:Open Source License

@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;//from  ww  w  .ja va  2 s  .  c o m
    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);
}

From source file:bndtools.views.resolution.ResolutionView.java

License:Open Source License

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;/*from  w  ww.  j a va 2s . c om*/

        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;
}

From source file:bndtools.views.ResolutionView.java

License:Open Source License

@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;/*  w  ww .  j  av  a 2s  .  c  o  m*/
    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 (selectedFiles != null) {
                        IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getRoot();
                        for (File selectedFile : selectedFiles) {
                            IFile[] wsfiles = wsroot.findFilesForLocationURI(selectedFile.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);
}

From source file:ca.mcgill.sable.soot.attributes.VisManLauncher.java

License:Open Source License

public void selectionChanged(IAction action, ISelection selection) {
    if (selection instanceof IStructuredSelection) {
        IStructuredSelection struct = (IStructuredSelection) selection;
        Iterator it = struct.iterator();
        while (it.hasNext()) {
            Object next = it.next();
            if (next instanceof IResource) {
                setProj(((IResource) next).getProject());
                setRec((IResource) next);
            } else if (next instanceof IJavaElement) {
                IJavaElement jElem = (IJavaElement) next;
                setProj(jElem.getJavaProject().getProject());
                setRec(jElem.getResource());
            }//from  w  w w .j a va 2 s .  co m
        }
    }
}

From source file:ca.uvic.chisel.diver.sequencediagrams.sc.java.actions.OpenEditorAction.java

License:Open Source License

/**
 * Selection in the workbench has been changed. We 
 * can change the state of the 'real' action here
 * if we want, but this can only happen after 
 * the delegate has been created./*from  w  w  w. ja  v a2  s. co  m*/
 * @see IWorkbenchWindowActionDelegate#selectionChanged
 */
public void selectionChanged(IAction action, ISelection selection) {
    action.setEnabled(false);
    if (selection instanceof IStructuredSelection) {
        IStructuredSelection ss = (IStructuredSelection) selection;
        this.method = null;
        for (Iterator<?> i = ss.iterator(); i.hasNext();) {
            Object o = i.next();
            if (o instanceof IAdaptable) {
                IMethod method = (IMethod) ((IAdaptable) o).getAdapter(IMethod.class);
                this.method = method;
                break;
            }
        }
        action.setEnabled(method != null);
    }
}