Example usage for org.eclipse.jface.viewers StructuredSelection EMPTY

List of usage examples for org.eclipse.jface.viewers StructuredSelection EMPTY

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers StructuredSelection EMPTY.

Prototype

StructuredSelection EMPTY

To view the source code for org.eclipse.jface.viewers StructuredSelection EMPTY.

Click Source Link

Document

The canonical empty selection.

Usage

From source file:at.spardat.xma.gui.mapper.MapperDialog.java

License:Open Source License

/**
 * The selection changed in the widget-tree. The reaction is, that an associated
 * relationship and the attribute is highlithed.
 *///from ww w  .  ja  va 2s .c  om
private void widgetTreeSelectionChanged(SelectionChangedEvent event) {
    Iterator iter = ((StructuredSelection) event.getSelection()).iterator();
    if (iter.hasNext()) {
        Object widget = iter.next();
        if (widget instanceof IBDAttachable) {
            //for debugging
            debug("--> widget selected: " + ((IBDAttachable) widget).getNamInstance());

            // is there a relationship attached?
            Relationship rel = mdlRels_.find((IBDAttachable) widget);
            if (rel == null) {
                // no attachment; deselect all
                bdTreeViewer.setSelection(StructuredSelection.EMPTY);
                mapGraphics_.setFocusedRelationship(null);
            } else {
                MdlAttribute attr = rel.attribute_;
                if (attr != null) {
                    if (mapGraphics_.getFocusedRelationship() != rel) {
                        mapGraphics_.setFocusedRelationship(rel);
                        StructuredSelection sel = new StructuredSelection(attr);
                        bdTreeViewer.setSelection(sel, true);
                    }
                }
            }
            relArea.redraw();
            stateChanged();
        }
    }
}

From source file:at.spardat.xma.gui.mapper.MapperDialog.java

License:Open Source License

/**
 * The selection changed in the businessData-tree. The reaction is, that an associated
 * relationshiop and the widget is highlighted.
 *///from w w  w  . ja v  a 2  s . c  om
private void bdTreeSelectionChanged(SelectionChangedEvent event) {
    int numSelected = 0;
    Iterator iter = ((StructuredSelection) event.getSelection()).iterator();
    while (iter.hasNext()) {
        iter.next();
        numSelected++;
    }
    if (numSelected == 1) {
        iter = ((StructuredSelection) event.getSelection()).iterator();
        if (iter.hasNext()) {
            Object attribute = iter.next();
            if (attribute instanceof MdlAttribute) {
                // for debugging
                debug("---> attribute selected: " + ((MdlAttribute) attribute).getNamInstance());

                // is there a relationship attached?
                Relationship rel = null;

                // fixe for mantis bug 18593
                rel = getInvolvedRS((MdlAttribute) attribute);
                if (rel != null) {
                    if (mapGraphics_.getFocusedRelationship() != rel) {
                        mapGraphics_.setFocusedRelationship(rel);
                        StructuredSelection sel = new StructuredSelection(rel.bdAttachable_);
                        widgetTreeViewer.setSelection(sel, true);
                    }
                } else {
                    // no attachment; deselect all
                    widgetTreeViewer.setSelection(StructuredSelection.EMPTY);
                    mapGraphics_.setFocusedRelationship(null);
                }
                relArea.redraw();
                stateChanged();
            }
        }
    }
}

From source file:at.spardat.xma.guidesign.presentation.action.GuidesignActionBarContributor.java

License:Open Source License

/**
 * the sense of this override of the superclass method is to remove
 * undo/redo from the global actions//from  w  w w.j  ava2 s. c  om
 */
public void update() {
    ISelectionProvider selectionProvider = activeEditor instanceof ISelectionProvider
            ? (ISelectionProvider) activeEditor
            : activeEditor.getEditorSite().getSelectionProvider();
    ISelection selection = selectionProvider.getSelection();
    IStructuredSelection structuredSelection = selection instanceof IStructuredSelection
            ? (IStructuredSelection) selection
            : StructuredSelection.EMPTY;

    deleteAction.updateSelection(structuredSelection);
    cutAction.updateSelection(structuredSelection);
    copyAction.updateSelection(structuredSelection);
    pasteAction.updateSelection(structuredSelection);
    //undoAction.update();
    //redoAction.update();
}

From source file:at.spardat.xma.guidesign.presentation.GuidesignEditor.java

License:Open Source License

/**
 * Handles what to do with changed resources on activation.
 */// w w w  .j a  va 2s.c o  m
protected void handleChangedResources(Resource changedResource) {
    if (!isDirty() || handleDirtyConflict()) {
        // remember old selection before we reload the model
        ISelection isel = getSelection();
        Resource mainResource = (Resource) editingDomain.getResourceSet().getResources().get(0);

        //for (Iterator i = changedResources.iterator(); i.hasNext(); ) {
        Resource resource = changedResource;
        // main resource changed?
        boolean isMainRes = mainResource.equals(resource);
        if (resource.isLoaded()) {
            resource.unload();
        }
        try {
            resource.load(Collections.EMPTY_MAP);
            component = (XMAComponent) resource.getContents().get(0);
        } catch (IOException exception) {
            GUIDesignerPlugin.INSTANCE.log(exception);
        }

        // main resource changed?
        if (isMainRes) {

            // Determine the new selection                   
            final ISelection newSel;
            if (isel instanceof StructuredSelection) {
                EList eList = resource.getContents();
                newSel = createNewSelection((StructuredSelection) isel, eList);
            } else {
                newSel = StructuredSelection.EMPTY;
            }

            // Take the new selection as input when possible (to avoid flickering)
            Object input = resource;
            if (newSel instanceof StructuredSelection) {
                StructuredSelection structSel = (StructuredSelection) newSel;
                if (structSel.getFirstElement() instanceof XMAWidget) {
                    input = (XMAWidget) structSel.getFirstElement();
                }
            }

            // force viewer to reload                   
            graphViewer.invalidateOldInput();
            graphViewer.setInput(input);

            // we only care about structured selections (there should not be somethin else)
            if (isel instanceof StructuredSelection) {
                // asyncExec to avoid timing problems
                getSite().getShell().getDisplay().asyncExec(new Runnable() {
                    public void run() {
                        //set the selection to the composite
                        setSelection(newSel);
                    }
                });
            }
        }
        //}
        ((BasicCommandStack) editingDomain.getCommandStack()).saveIsDone();
        dirty = false;
        firePropertyChange(IEditorPart.PROP_DIRTY);
    }
}

From source file:at.spardat.xma.guidesign.presentation.GuidesignEditor.java

License:Open Source License

/**
 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
 * <!-- begin-user-doc -->/*from  w w w. j  ava  2  s  . c  om*/
 * <!-- end-user-doc -->
 * @generated
 */
public ISelection getSelection() {
    if (editorSelection == null) {
        return StructuredSelection.EMPTY;
    } else {
        return editorSelection;
    }
}

From source file:au.gov.ga.earthsci.application.parts.layer.LayerTreePart.java

License:Apache License

@PostConstruct
public void init(Composite parent, EMenuService menuService) {
    LayerOpacityToolControl.setPartContext(context);

    viewer = new CheckboxTreeViewer(parent, SWT.MULTI);
    viewer.getTree().setBackgroundImage(ImageRegistry.getInstance().get(ImageRegistry.ICON_TRANSPARENT));
    context.set(TreeViewer.class, viewer);

    clipboard = new Clipboard(shell.getDisplay());
    context.set(Clipboard.class, clipboard);

    IListProperty childrenProperty = new MultiListProperty(
            new IListProperty[] { BeanProperties.list("children") }); //$NON-NLS-1$

    ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider(
            childrenProperty.listFactory(), null);
    viewer.setContentProvider(contentProvider);

    //TreeViewerEditor.create(viewer, new SecondClickColumnViewerEditorActivationStrategy(viewer), ColumnViewerEditor.DEFAULT);

    IObservableSet knownElements = contentProvider.getKnownElements();
    IObservableMap enabledMap = BeanProperties.value("enabled").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap opacityMap = BeanProperties.value("opacity").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap nameMap = BeanProperties.value("name").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap labelMap = BeanProperties.value("label").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap statusMap = BeanProperties.value("status").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap anyChildrenEnabledMap = BeanProperties.value("anyChildrenEnabled") //$NON-NLS-1$
            .observeDetail(knownElements);
    IObservableMap allChildrenEnabledMap = BeanProperties.value("allChildrenEnabled") //$NON-NLS-1$
            .observeDetail(knownElements);
    IObservableMap childrenMap = BeanProperties.value("children").observeDetail(knownElements); //$NON-NLS-1$
    IObservableMap expandedMap = BeanProperties.value("expanded").observeDetail(knownElements); //$NON-NLS-1$

    IObservableMap[] labelAttributeMaps = new IObservableMap[] { enabledMap, opacityMap, nameMap, labelMap,
            anyChildrenEnabledMap, allChildrenEnabledMap, statusMap };

    labelProvider = new LayerTreeLabelProvider(labelAttributeMaps);
    viewer.setLabelProvider(labelProvider);
    viewer.setCheckStateProvider(new LayerTreeCheckStateProvider());

    viewer.setInput(model.getRootNode());
    viewer.setExpandedElements(getExpandedNodes());

    IMapChangeListener childrenListener = new IMapChangeListener() {
        @Override//from w  w w .  ja  va 2s. c o m
        public void handleMapChange(MapChangeEvent event) {
            //for any children added, expand the nodes
            Set<?> addedKeys = event.diff.getAddedKeys();
            for (Object o : addedKeys) {
                if (o instanceof ILayerTreeNode) {
                    ((ILayerTreeNode) o).getParent().getValue().setExpanded(true);
                }
            }
        }
    };
    IMapChangeListener expandedListener = new IMapChangeListener() {
        @Override
        public void handleMapChange(MapChangeEvent event) {
            //ensure the expanded elements are kept in sync with the model
            viewer.getTree().getDisplay().asyncExec(new Runnable() {
                @Override
                public void run() {
                    if (!viewer.getTree().isDisposed()) {
                        viewer.setExpandedElements(getExpandedNodes());
                    }
                }
            });
        }
    };
    childrenMap.addMapChangeListener(childrenListener);
    childrenMap.addMapChangeListener(expandedListener);
    expandedMap.addMapChangeListener(expandedListener);

    viewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            if (element instanceof ILayerTreeNode) {
                ILayerTreeNode node = (ILayerTreeNode) element;
                node.enableChildren(event.getChecked());
            }
        }
    });

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
            List<?> list = selection.toList();
            ILayerTreeNode[] array = list.toArray(new ILayerTreeNode[list.size()]);
            selectionService.setSelection(array.length == 1 ? array[0] : array);
        }
    });

    viewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(true);
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(false);
        }
    });

    viewer.getTree().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDoubleClick(MouseEvent e) {
            ViewerCell cell = viewer.getCell(new Point(e.x, e.y));
            if (cell == null)
                return;

            ILayerTreeNode layer = (ILayerTreeNode) cell.getElement();
            selectLayer(layer);
        }

        @Override
        public void mouseDown(MouseEvent e) {
            ViewerCell cell = viewer.getCell(new Point(e.x, e.y));
            if (cell == null) {
                viewer.setSelection(StructuredSelection.EMPTY);
            }
        }
    });

    viewer.getTree().addTraverseListener(new TraverseListener() {
        @Override
        public void keyTraversed(TraverseEvent e) {
            if (e.detail == SWT.TRAVERSE_RETURN) {
                IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
                if (selection.size() == 1) {
                    ILayerTreeNode layer = (ILayerTreeNode) selection.getFirstElement();
                    selectLayer(layer);
                }
            }
        }
    });

    viewer.setCellEditors(new CellEditor[] { new TextCellEditor(viewer.getTree(), SWT.BORDER) });
    viewer.setColumnProperties(new String[] { "layer" }); //$NON-NLS-1$

    viewer.setCellModifier(new ICellModifier() {
        @Override
        public void modify(Object element, String property, Object value) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            ((ILayerTreeNode) element).setLabel((String) value);
        }

        @Override
        public Object getValue(Object element, String property) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            return ((ILayerTreeNode) element).getLabelOrName();
        }

        @Override
        public boolean canModify(Object element, String property) {
            return true;
        }
    });

    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(viewer) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TreeViewerEditor.create(viewer, activationStrategy, ColumnViewerEditor.KEYBOARD_ACTIVATION);

    //add drag and drop support
    int ops = DND.DROP_COPY | DND.DROP_MOVE;
    viewer.addDragSupport(ops, new Transfer[] { LayerTransfer.getInstance() },
            new LayerTreeDragSourceListener(viewer));
    viewer.addDropSupport(ops, new Transfer[] { LayerTransfer.getInstance(), FileTransfer.getInstance() },
            new LayerTreeDropAdapter(viewer, model, context));

    //add context menu
    menuService.registerContextMenu(viewer.getTree(), "au.gov.ga.earthsci.application.layertree.popupmenu"); //$NON-NLS-1$
}

From source file:au.gov.ga.earthsci.discovery.ui.TableViewerSelectionHelper.java

License:Apache License

public TableViewerSelectionHelper(final TableViewer viewer, final Class<T> selectionType) {
    viewer.getControl().addMouseListener(new MouseAdapter() {
        @Override/*from w w  w . j a  v  a  2 s . com*/
        public void mouseDown(MouseEvent e) {
            ViewerCell cell = viewer.getCell(new Point(e.x, e.y));
            if (cell == null) {
                viewer.setSelection(StructuredSelection.EMPTY);
            }
        }
    });

    viewer.getTable().addSelectionListener(new SelectionListener() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
            Object s = selection.getFirstElement();
            if (s == null) {
                itemSelected(null);
            } else if (selectionType.isInstance(s)) {
                T t = selectionType.cast(s);
                itemSelected(t);
            }
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
            Object s = selection.getFirstElement();
            if (selectionType.isInstance(s)) {
                T t = selectionType.cast(s);
                itemDefaultSelected(t);
            }
        }
    });
}

From source file:au.gov.ga.earthsci.layer.ui.LayerTreePart.java

License:Apache License

protected void createStructureViewer(Composite parent, EMenuService menuService, CTabItem tabItem) {
    structureViewer = new CheckboxTreeViewer(parent, SWT.MULTI);
    tabItem.setControl(structureViewer.getControl());
    structureViewer.getTree()//from   w  w  w. j a v  a2 s.c om
            .setBackgroundImage(ImageRegistry.getInstance().get(ImageRegistry.ICON_TRANSPARENT));
    context.set(TreeViewer.class, structureViewer);

    clipboard = new Clipboard(parent.getDisplay());
    context.set(Clipboard.class, clipboard);

    //create a property change listener for updating the labels whenever a property
    //changes on an ILayerTreeNode instance
    final PropertyChangeListener anyChangeListener = new PropertyChangeListener() {
        @Override
        public void propertyChange(final PropertyChangeEvent evt) {
            updateElementLabel(evt.getSource());
        }
    };
    //create a property change listener that ensures the expanded state of the tree
    //is kept in sync with the value of the expanded property for each node
    final PropertyChangeListener expandedChangeListener = new PropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            syncExpandedNodes();
        }
    };

    //setup the label provider
    labelProvider = new LayerTreeLabelProvider();

    //create a bean list property associated with ILayerTreeNode's children property
    IBeanListProperty<ILayerTreeNode, ILayerTreeNode> childrenProperty = BeanProperties
            .list(ILayerTreeNode.class, "children", ILayerTreeNode.class); //$NON-NLS-1$
    //setup a factory for creating observables observing ILayerTreeNodes
    IObservableFactory<ILayerTreeNode, IObservableList<ILayerTreeNode>> observableFactory = childrenProperty
            .listFactory();

    //listen for any changes (additions/removals) to any of the children in the tree
    observableListTreeSupport = new ObservableListTreeSupport<ILayerTreeNode>(observableFactory);
    observableListTreeSupport.addListener(new ITreeChangeListener<ILayerTreeNode>() {
        @Override
        public void elementAdded(ILayerTreeNode element) {
            element.addPropertyChangeListener(anyChangeListener);
            element.addPropertyChangeListener("expanded", expandedChangeListener); //$NON-NLS-1$
        }

        @Override
        public void elementRemoved(ILayerTreeNode element) {
            element.removePropertyChangeListener(anyChangeListener);
            element.removePropertyChangeListener("expanded", expandedChangeListener); //$NON-NLS-1$
        }
    });

    //create a content provider that listens for changes to any children in the tree
    ObservableListTreeContentProvider<ILayerTreeNode> contentProvider = new ObservableListTreeContentProvider<ILayerTreeNode>(
            observableFactory, null);

    //set the viewer's providers
    structureViewer.setContentProvider(contentProvider);
    structureViewer.setLabelProvider(labelProvider);
    structureViewer.setCheckStateProvider(new LayerTreeCheckStateProvider());

    //set the viewer and listener inputs
    structureViewer.setInput(model.getRootNode());
    observableListTreeSupport.setInput(model.getRootNode());

    //Listen for any additions to the tree, and expand added node's parent, so that
    //added nodes are always visible. This is done after the input is set up, so that
    //we don't expand all the nodes that are already in the tree.
    observableListTreeSupport.addListener(new TreeChangeAdapter<ILayerTreeNode>() {
        @Override
        public void elementAdded(ILayerTreeNode element) {
            //for any children added, expand the nodes
            if (!element.isRoot()) {
                element.getParent().setExpanded(true);
            }

            //if the nodes were already expanded, the expanded property change event
            //is not fired, so we need to sync the expanded state anyway
            syncExpandedNodes();

            //when a layer is added, we should activate this part and select the added element
            activateAndSelectElement(element);
        }
    });

    //expand any nodes that should be expanded after unpersisting
    syncExpandedNodes();

    //enable/disable any nodes that are checked/unchecked
    structureViewer.addCheckStateListener(new ICheckStateListener() {
        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            if (element instanceof ILayerTreeNode) {
                ILayerTreeNode node = (ILayerTreeNode) element;
                node.enableChildren(event.getChecked());
            }
        }
    });

    //setup the selection tracking
    structureViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) structureViewer.getSelection();
            List<?> list = selection.toList();
            ILayerTreeNode[] array = list.toArray(new ILayerTreeNode[list.size()]);
            settingSelection = true;
            selectionService.setSelection(array.length == 1 ? array[0] : array);
            settingSelection = false;
        }
    });
    structureViewer.getTree().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) structureViewer.getSelection();
            ILayerTreeNode firstElement = (ILayerTreeNode) selection.getFirstElement();
            if (firstElement != null) {
                selectLayer(firstElement);
            }
        }
    });

    //setup tree expansion/collapse listening
    structureViewer.addTreeListener(new ITreeViewerListener() {
        @Override
        public void treeExpanded(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(true);
        }

        @Override
        public void treeCollapsed(TreeExpansionEvent event) {
            ILayerTreeNode layerNode = (ILayerTreeNode) event.getElement();
            layerNode.setExpanded(false);
        }
    });

    //make tree cells unselectable by selecting outside
    structureViewer.getTree().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseDown(MouseEvent e) {
            ViewerCell cell = structureViewer.getCell(new Point(e.x, e.y));
            if (cell == null) {
                structureViewer.setSelection(StructuredSelection.EMPTY);
            }
        }
    });

    //setup cell editing
    structureViewer
            .setCellEditors(new CellEditor[] { new TextCellEditor(structureViewer.getTree(), SWT.BORDER) });
    structureViewer.setColumnProperties(new String[] { "layer" }); //$NON-NLS-1$
    structureViewer.setCellModifier(new ICellModifier() {
        @Override
        public void modify(Object element, String property, Object value) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            ((ILayerTreeNode) element).setLabel((String) value);
        }

        @Override
        public Object getValue(Object element, String property) {
            if (element instanceof Item) {
                element = ((Item) element).getData();
            }
            return ((ILayerTreeNode) element).getLabelOrName();
        }

        @Override
        public boolean canModify(Object element, String property) {
            return true;
        }
    });

    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(
            structureViewer) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TreeViewerEditor.create(structureViewer, activationStrategy, ColumnViewerEditor.KEYBOARD_ACTIVATION);

    //add drag and drop support
    int ops = DND.DROP_COPY | DND.DROP_MOVE;
    structureViewer.addDragSupport(ops,
            new Transfer[] { LocalLayerTransfer.getInstance(), LayerTransfer.getInstance() },
            new LayerTreeDragSourceListener(structureViewer));
    structureViewer
            .addDropSupport(ops,
                    new Transfer[] { LocalLayerTransfer.getInstance(), LayerTransfer.getInstance(),
                            FileTransfer.getInstance() },
                    new LayerTreeDropAdapter(structureViewer, model, context));

    //add context menu
    menuService.registerContextMenu(structureViewer.getTree(),
            "au.gov.ga.earthsci.application.layertree.popupmenu"); //$NON-NLS-1$
}

From source file:bilab.ValueViewer.java

License:Open Source License

@Override
public ISelection getSelection() {
    if (viewer != null) {
        return viewer.getSelection();
    }
    return StructuredSelection.EMPTY;
}

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);
        }// w  w w  .  ja v a2s  .com
    } 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();
    }
}