Example usage for org.eclipse.jface.viewers TreeViewer getExpandedElements

List of usage examples for org.eclipse.jface.viewers TreeViewer getExpandedElements

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers TreeViewer getExpandedElements.

Prototype

public Object[] getExpandedElements() 

Source Link

Document

Returns a list of elements corresponding to expanded nodes in this viewer's tree, including currently hidden ones that are marked as expanded but are under a collapsed ancestor.

Usage

From source file:org.eclipse.mylyn.reviews.r4e.ui.internal.commands.filters.HideRuleSetsFilterHandler.java

License:Open Source License

/**
 * Method execute./*from w  ww .j  a v a 2 s .c om*/
 * 
 * @param aEvent
 *            ExecutionEvent
 * @return Object
 * @see org.eclipse.core.commands.IHandler#execute(ExecutionEvent)
 */
public Object execute(final ExecutionEvent aEvent) {

    final UIJob job = new UIJob(COMMAND_MESSAGE) {
        @Override
        public IStatus runInUIThread(IProgressMonitor monitor) {
            monitor.beginTask(COMMAND_MESSAGE, 1);

            //We need to preserve the expansion state and restore it afterwards
            final TreeViewer viewer = R4EUIModelController.getNavigatorView().getTreeViewer();
            final Object[] elements = viewer.getExpandedElements();

            final HideRuleSetsFilter filter = ((ReviewNavigatorActionGroup) R4EUIModelController
                    .getNavigatorView().getActionSet()).getHideRuleSetsFilter();

            boolean oldValue;
            try {
                oldValue = HandlerUtil.toggleCommandState(aEvent.getCommand());
            } catch (ExecutionException e) {
                monitor.done();
                return Status.CANCEL_STATUS;
            }

            if (!oldValue) {
                R4EUIPlugin.Ftracer.traceInfo("Apply Hide Rule Sets elements filter to ReviewNavigator"); //$NON-NLS-1$
                viewer.addFilter(filter);
            } else {
                R4EUIPlugin.Ftracer.traceInfo("Remove Hide Rule Sets elements filter from ReviewNavigator"); //$NON-NLS-1$
                viewer.removeFilter(filter);
            }
            R4EUIModelController.getNavigatorView().getTreeViewer().setExpandedElements(elements);

            monitor.worked(1);
            monitor.done();
            return Status.OK_STATUS;
        }
    };
    job.setUser(true);
    job.schedule();
    return null;
}

From source file:org.eclipse.mylyn.reviews.r4e.ui.internal.commands.filters.ReviewedElemsFilterHandler.java

License:Open Source License

/**
 * Method execute./*from   w  w w  .  j a v a2s  . co  m*/
 * 
 * @param aEvent
 *            ExecutionEvent
 * @return Object
 * @see org.eclipse.core.commands.IHandler#execute(ExecutionEvent)
 */
public Object execute(final ExecutionEvent aEvent) {

    final UIJob job = new UIJob(COMMAND_MESSAGE) {
        @Override
        public IStatus runInUIThread(IProgressMonitor monitor) {
            monitor.beginTask(COMMAND_MESSAGE, 1);

            //We need to preserve the expansion state and restore it afterwards
            final TreeViewer viewer = R4EUIModelController.getNavigatorView().getTreeViewer();
            final Object[] elements = viewer.getExpandedElements();

            final ReviewedElemsFilter filter = ((ReviewNavigatorActionGroup) R4EUIModelController
                    .getNavigatorView().getActionSet()).getReviewedElemsFilter();

            boolean oldValue;
            try {
                oldValue = HandlerUtil.toggleCommandState(aEvent.getCommand());
            } catch (ExecutionException e) {
                monitor.done();
                return Status.CANCEL_STATUS;
            }
            if (!oldValue) {
                R4EUIPlugin.Ftracer.traceInfo("Apply Hide Reviewed Elements filter to ReviewNavigator"); //$NON-NLS-1$
                viewer.addFilter(filter);
            } else {
                R4EUIPlugin.Ftracer.traceInfo("Remove Hide Reviewed Elements filter from ReviewNavigator"); //$NON-NLS-1$
                viewer.removeFilter(filter);
            }
            R4EUIModelController.getNavigatorView().getTreeViewer().setExpandedElements(elements);

            monitor.worked(1);
            monitor.done();
            return Status.OK_STATUS;
        }
    };
    job.setUser(true);
    job.schedule();
    return null;
}

From source file:org.eclipse.mylyn.reviews.r4e.ui.internal.commands.filters.ReviewsCompletedFilterHandler.java

License:Open Source License

/**
 * Method execute./*  w  ww .java  2s .c  om*/
 * 
 * @param aEvent
 *            ExecutionEvent
 * @return Object
 * @see org.eclipse.core.commands.IHandler#execute(ExecutionEvent)
 */
public Object execute(final ExecutionEvent aEvent) {

    final UIJob job = new UIJob(COMMAND_MESSAGE) {
        @Override
        public IStatus runInUIThread(IProgressMonitor monitor) {
            monitor.beginTask(COMMAND_MESSAGE, 1);

            //We need to preserve the expansion state and restore it afterwards
            final TreeViewer viewer = R4EUIModelController.getNavigatorView().getTreeViewer();
            final Object[] elements = viewer.getExpandedElements();

            final ReviewCompletedFilter filter = ((ReviewNavigatorActionGroup) R4EUIModelController
                    .getNavigatorView().getActionSet()).getReviewsCompletedFilter();

            boolean oldValue;
            try {
                oldValue = HandlerUtil.toggleCommandState(aEvent.getCommand());
            } catch (ExecutionException e) {
                monitor.done();
                return Status.CANCEL_STATUS;
            }

            if (!oldValue) {
                R4EUIPlugin.Ftracer.traceInfo("Apply Hide Completed Reviews filter to ReviewNavigator"); //$NON-NLS-1$
                viewer.addFilter(filter);
            } else {
                R4EUIPlugin.Ftracer.traceInfo("Remove Hide Completed Reviews filter from ReviewNavigator"); //$NON-NLS-1$
                viewer.removeFilter(filter);
            }
            R4EUIModelController.getNavigatorView().getTreeViewer().setExpandedElements(elements);

            monitor.worked(1);
            monitor.done();
            return Status.OK_STATUS;
        }
    };
    job.setUser(true);
    job.schedule();
    return null;
}

From source file:org.eclipse.mylyn.reviews.r4e.ui.internal.commands.filters.ReviewsMyFilterHandler.java

License:Open Source License

/**
 * Method execute.//from   w  w  w. j av a 2s.  c o  m
 * 
 * @param aEvent
 *            ExecutionEvent
 * @return Object
 * @see org.eclipse.core.commands.IHandler#execute(ExecutionEvent)
 */
public Object execute(final ExecutionEvent aEvent) {

    final UIJob job = new UIJob(COMMAND_MESSAGE) {
        @Override
        public IStatus runInUIThread(IProgressMonitor monitor) {
            monitor.beginTask(COMMAND_MESSAGE, 1);

            //We need to preserve the expansion state and restore it afterwards
            final TreeViewer viewer = R4EUIModelController.getNavigatorView().getTreeViewer();
            final Object[] elements = viewer.getExpandedElements();

            final ReviewParticipantFilter filter = ((ReviewNavigatorActionGroup) R4EUIModelController
                    .getNavigatorView().getActionSet()).getReviewsMyFilter();
            filter.setParticipant(R4EUIModelController.getReviewer());

            boolean oldValue;
            try {
                oldValue = HandlerUtil.toggleCommandState(aEvent.getCommand());
            } catch (ExecutionException e) {
                monitor.done();
                return Status.CANCEL_STATUS;
            }

            if (!oldValue) {
                R4EUIPlugin.Ftracer.traceInfo("Apply My Reviews filter to ReviewNavigator"); //$NON-NLS-1$
                viewer.addFilter(filter);
            } else {
                R4EUIPlugin.Ftracer.traceInfo("Remove My Reviews filter from ReviewNavigator"); //$NON-NLS-1$
                viewer.removeFilter(filter);
            }
            R4EUIModelController.getNavigatorView().getTreeViewer().setExpandedElements(elements);

            monitor.worked(1);
            monitor.done();
            return Status.OK_STATUS;
        }
    };
    job.setUser(true);
    job.schedule();
    return null;
}

From source file:org.eclipse.mylyn.reviews.r4e.ui.internal.commands.filters.ReviewsOnlyFilterHandler.java

License:Open Source License

/**
 * Method execute./*from w  w w  . j  av a 2 s .  c om*/
 * 
 * @param aEvent
 *            ExecutionEvent
 * @return Object
 * @see org.eclipse.core.commands.IHandler#execute(ExecutionEvent)
 */
public Object execute(final ExecutionEvent aEvent) {

    final UIJob job = new UIJob(COMMAND_MESSAGE) {
        @Override
        public IStatus runInUIThread(IProgressMonitor monitor) {
            monitor.beginTask(COMMAND_MESSAGE, 1);
            //We need to preserve the expansion state and restore it afterwards
            final TreeViewer viewer = R4EUIModelController.getNavigatorView().getTreeViewer();
            final Object[] elements = viewer.getExpandedElements();

            final ReviewsOnlyFilter filter = ((ReviewNavigatorActionGroup) R4EUIModelController
                    .getNavigatorView().getActionSet()).getReviewsOnlyFilter();

            boolean oldValue;
            try {
                oldValue = HandlerUtil.toggleCommandState(aEvent.getCommand());
            } catch (ExecutionException e) {
                monitor.done();
                return Status.CANCEL_STATUS;
            }

            if (!oldValue) {
                R4EUIPlugin.Ftracer.traceInfo("Apply Reviews Only filter to ReviewNavigator"); //$NON-NLS-1$
                viewer.addFilter(filter);
            } else {
                R4EUIPlugin.Ftracer.traceInfo("Remove Reviews Only filter from ReviewNavigator"); //$NON-NLS-1$
                viewer.removeFilter(filter);
            }
            R4EUIModelController.getNavigatorView().getTreeViewer().setExpandedElements(elements);

            monitor.worked(1);
            monitor.done();
            return Status.OK_STATUS;
        }
    };
    job.setUser(true);
    job.schedule();
    return null;
}

From source file:org.eclipse.mylyn.reviews.r4e.ui.internal.commands.filters.ReviewsParticipantFilterHandler.java

License:Open Source License

/**
 * Method execute./*from   w  w w .  j  ava  2 s . c o m*/
 * 
 * @param aEvent
 *            ExecutionEvent
 * @return Object
 * @see org.eclipse.core.commands.IHandler#execute(ExecutionEvent)
 */
public Object execute(final ExecutionEvent aEvent) {

    final UIJob job = new UIJob(COMMAND_MESSAGE) {
        @Override
        public IStatus runInUIThread(IProgressMonitor monitor) {
            monitor.beginTask(COMMAND_MESSAGE, 1);

            //We need to preserve the expansion state and restore it afterwards
            final TreeViewer viewer = R4EUIModelController.getNavigatorView().getTreeViewer();
            final Object[] elements = viewer.getExpandedElements();

            final ReviewParticipantFilter filter = ((ReviewNavigatorActionGroup) R4EUIModelController
                    .getNavigatorView().getActionSet()).getReviewsParticipantFilter();
            if (filter.getParticipant().equals("")) { //$NON-NLS-1$
                final String participant = UIUtils.getParticipantFilterInputDialog();
                if (participant.equals("")) { //$NON-NLS-1$
                    return Status.CANCEL_STATUS;
                }
                filter.setParticipant(participant);
            }

            boolean oldValue;
            try {
                oldValue = HandlerUtil.toggleCommandState(aEvent.getCommand());
            } catch (ExecutionException e) {
                monitor.done();
                return Status.CANCEL_STATUS;
            }

            if (!oldValue) {
                R4EUIPlugin.Ftracer
                        .traceInfo("Apply Reviews Participant filter for participant " + filter.getParticipant() //$NON-NLS-1$
                                + " to ReviewNavigator"); //$NON-NLS-1$
                viewer.addFilter(filter);
            } else {
                R4EUIPlugin.Ftracer.traceInfo("Remove Reviews Participant filter from ReviewNavigator"); //$NON-NLS-1$
                viewer.removeFilter(filter);
                filter.setParticipant(""); //$NON-NLS-1$
            }
            R4EUIModelController.getNavigatorView().getTreeViewer().setExpandedElements(elements);

            monitor.worked(1);
            monitor.done();
            return Status.OK_STATUS;
        }
    };
    job.setUser(true);
    job.schedule();
    return null;
}

From source file:org.eclipse.mylyn.reviews.r4e.ui.internal.commands.filters.UnassignFilterHandler.java

License:Open Source License

/**
 * Method execute.//from   w  w w .  j  a v  a  2s.  com
 * 
 * @param aEvent
 *            ExecutionEvent
 * @return Object
 * @see org.eclipse.core.commands.IHandler#execute(ExecutionEvent)
 */
public Object execute(final ExecutionEvent aEvent) {

    final UIJob job = new UIJob(COMMAND_MESSAGE) {
        @Override
        public IStatus runInUIThread(IProgressMonitor monitor) {
            monitor.beginTask(COMMAND_MESSAGE, 1);

            //We need to preserve the expansion state and restore it afterwards
            final TreeViewer viewer = R4EUIModelController.getNavigatorView().getTreeViewer();
            final Object[] elements = viewer.getExpandedElements();

            final UnassignParticipantFilter filter = ((ReviewNavigatorActionGroup) R4EUIModelController
                    .getNavigatorView().getActionSet()).getUnassignedFilter();

            boolean oldValue;
            try {
                oldValue = HandlerUtil.toggleCommandState(aEvent.getCommand());
            } catch (ExecutionException e) {
                monitor.done();
                return Status.CANCEL_STATUS;
            }

            if (!oldValue) {
                R4EUIPlugin.Ftracer.traceInfo("Apply Unassigned Elements filter to ReviewNavigator"); //$NON-NLS-1$
                viewer.addFilter(filter);
            } else {
                R4EUIPlugin.Ftracer.traceInfo("Remove Unassigned Elements filter from ReviewNavigator"); //$NON-NLS-1$
                viewer.removeFilter(filter);
            }
            R4EUIModelController.getNavigatorView().getTreeViewer().setExpandedElements(elements);

            monitor.worked(1);
            monitor.done();
            return Status.OK_STATUS;
        }
    };
    job.setUser(true);
    job.schedule();
    return null;
}

From source file:org.eclipse.mylyn.reviews.r4e.ui.internal.commands.sorters.AlphaSortHandler.java

License:Open Source License

/**
 * Method execute.//from   ww w .j a v  a 2 s.  c o  m
 * 
 * @param aEvent
 *            ExecutionEvent
 * @return Object
 * @throws ExecutionException
 * @see org.eclipse.core.commands.IHandler#execute(ExecutionEvent)
 */
public Object execute(final ExecutionEvent aEvent) {

    final ISelection selection = R4EUIModelController.getNavigatorView().getTreeViewer().getSelection();

    final UIJob job = new UIJob(COMMAND_MESSAGE) {
        @Override
        public IStatus runInUIThread(IProgressMonitor monitor) {
            monitor.beginTask(COMMAND_MESSAGE, 1);

            //We need to preserve the expansion state and restore it afterwards
            final TreeViewer viewer = R4EUIModelController.getNavigatorView().getTreeViewer();
            final Object[] elements = viewer.getExpandedElements();

            //First check if there is already another sorter applied, if so, remove if
            ViewerComparator oldSorter = viewer.getComparator();
            if (null != oldSorter && oldSorter instanceof ReviewTypeComparator) {
                ((ReviewNavigatorActionGroup) R4EUIModelController.getNavigatorView().getActionSet())
                        .resetReviewTypeSorterCommand();
            }

            //Then apply the new Comparator
            final ViewerComparator sorter = ((ReviewNavigatorActionGroup) R4EUIModelController
                    .getNavigatorView().getActionSet()).getAlphaSorter();

            boolean oldValue;
            try {
                oldValue = HandlerUtil.toggleCommandState(aEvent.getCommand());
            } catch (ExecutionException e) {
                monitor.done();
                return Status.CANCEL_STATUS;
            }

            if (!oldValue) {
                R4EUIPlugin.Ftracer.traceInfo("Apply alpha sorter to ReviewNavigator"); //$NON-NLS-1$
                viewer.setComparator(sorter);
            } else {
                R4EUIPlugin.Ftracer.traceInfo("Remove alpha sorter from ReviewNavigator"); //$NON-NLS-1$
                viewer.setComparator(null);
            }
            R4EUIModelController.getNavigatorView().getTreeViewer().setExpandedElements(elements);

            try {
                final IEvaluationService evService = (IEvaluationService) HandlerUtil
                        .getActiveWorkbenchWindowChecked(aEvent).getService(IEvaluationService.class);
                evService.requestEvaluation(R4EUIConstants.ALPHA_SORTER_COMMAND);
                evService.requestEvaluation(R4EUIConstants.REVIEW_TYPE_SORTER_COMMAND);
            } catch (ExecutionException e) {
                R4EUIPlugin.Ftracer.traceError("Exception: " + e.toString() + " (" + e.getMessage() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
            }
            //Refresh view if possible
            if (selection instanceof IStructuredSelection) {
                final Object element = ((IStructuredSelection) selection).getFirstElement();
                if (element instanceof IR4EUIModelElement) {
                    UIUtils.setNavigatorViewFocus((IR4EUIModelElement) element, 0);
                }
            }
            monitor.worked(1);
            monitor.done();
            return Status.OK_STATUS;
        }
    };
    job.setUser(true);
    job.schedule();
    return null;
}

From source file:org.eclipse.mylyn.reviews.r4e.ui.internal.commands.sorters.ReviewTypeSortHandler.java

License:Open Source License

/**
 * Method execute./*from   w w w .j  av  a  2 s  . co  m*/
 * 
 * @param aEvent
 *            ExecutionEvent
 * @return Object
 * @throws ExecutionException
 * @see org.eclipse.core.commands.IHandler#execute(ExecutionEvent)
 */
public Object execute(final ExecutionEvent aEvent) {

    final ISelection selection = R4EUIModelController.getNavigatorView().getTreeViewer().getSelection();

    final UIJob job = new UIJob(COMMAND_MESSAGE) {
        @Override
        public IStatus runInUIThread(IProgressMonitor monitor) {
            monitor.beginTask(COMMAND_MESSAGE, 1);

            //We need to preserve the expansion state and restore it afterwards
            final TreeViewer viewer = R4EUIModelController.getNavigatorView().getTreeViewer();
            final Object[] elements = viewer.getExpandedElements();

            //First check if there is already another sorter applied, if so, remove if
            ViewerComparator oldSorter = viewer.getComparator();
            if (null != oldSorter && oldSorter instanceof NavigatorElementComparator) {
                ((ReviewNavigatorActionGroup) R4EUIModelController.getNavigatorView().getActionSet())
                        .resetAlphaSorterCommand();
            }

            //Then apply the new Comparator

            final ViewerComparator sorter = ((ReviewNavigatorActionGroup) R4EUIModelController
                    .getNavigatorView().getActionSet()).getReviewTypeSorter();

            boolean oldValue;
            try {
                oldValue = HandlerUtil.toggleCommandState(aEvent.getCommand());
            } catch (ExecutionException e) {
                monitor.done();
                return Status.CANCEL_STATUS;
            }

            if (!oldValue) {
                R4EUIPlugin.Ftracer.traceInfo("Apply Review Type sorter to ReviewNavigator"); //$NON-NLS-1$
                viewer.setComparator(sorter);
            } else {
                R4EUIPlugin.Ftracer.traceInfo("Remove Review Type sorter from ReviewNavigator"); //$NON-NLS-1$
                viewer.setComparator(null);
            }
            R4EUIModelController.getNavigatorView().getTreeViewer().setExpandedElements(elements);

            try {
                final IEvaluationService evService = (IEvaluationService) HandlerUtil
                        .getActiveWorkbenchWindowChecked(aEvent).getService(IEvaluationService.class);
                evService.requestEvaluation(R4EUIConstants.ALPHA_SORTER_COMMAND);
                evService.requestEvaluation(R4EUIConstants.REVIEW_TYPE_SORTER_COMMAND);
            } catch (ExecutionException e) {
                R4EUIPlugin.Ftracer.traceError("Exception: " + e.toString() + " (" + e.getMessage() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
            }
            //Refresh view if possible
            if (selection instanceof IStructuredSelection) {
                final Object element = ((IStructuredSelection) selection).getFirstElement();
                if (element instanceof IR4EUIModelElement) {
                    UIUtils.setNavigatorViewFocus((IR4EUIModelElement) element, 0);
                }
            }
            monitor.worked(1);
            monitor.done();
            return Status.OK_STATUS;
        }
    };
    job.setUser(true);
    job.schedule();
    return null;
}

From source file:org.eclipse.oomph.setup.presentation.templates.GenericSetupTemplate.java

License:Open Source License

private void modelChanged(final VariableTask triggerVariable) {
    Scope copy = EcoreUtil.copy(setupScope);

    Set<PropertyField> originalDirtyPropertyFields = new HashSet<PropertyField>(dirtyFields);
    for (VariableTask variable : variables.values()) {
        PropertyField field = fields.get(variable);
        if (!dirtyFields.contains(field)) {
            String value = variable.getValue();
            if (!StringUtil.isEmpty(value)) {
                value = expandString(value, null);
                field.setValue(value, false);
            }//from w w  w  .j a va  2  s.  c  om

            dirtyFields.add(field);
        }
    }

    usages = new HashMap<VariableTask, Set<EStructuralFeature.Setting>>();
    Set<EObject> eObjectsToDelete = new HashSet<EObject>();
    Set<Annotation> featureSubstitutions = new LinkedHashSet<Annotation>();
    for (Iterator<EObject> it = EcoreUtil.getAllContents(Collections.singleton(copy)); it.hasNext();) {
        InternalEObject eObject = (InternalEObject) it.next();
        for (EAttribute eAttribute : eObject.eClass().getEAllAttributes()) {
            if (eAttribute.getEType().getInstanceClass() == String.class && !eAttribute.isDerived()) {
                if (!eAttribute.isMany()) {
                    String value = (String) eObject.eGet(eAttribute);
                    if (value != null) {
                        Set<VariableTask> usedVariables = new HashSet<VariableTask>();
                        String replacement = expandString(value, usedVariables);
                        CollectionUtil.addAll(usages, usedVariables, eObject.eSetting(eAttribute));
                        eObject.eSet(eAttribute, replacement);
                    }
                }
            }
        }

        if (eObject instanceof Annotation) {
            Annotation annotation = (Annotation) eObject;
            if (AnnotationConstants.ANNOTATION_FEATURE_SUBSTITUTION.equals(annotation.getSource())) {
                featureSubstitutions.add(annotation);
                eObjectsToDelete.add(annotation);
            }
        } else if (eObject instanceof CompoundTask) {
            CompoundTask compoundTask = (CompoundTask) eObject;
            if ("template.variables".equals(compoundTask.getID())) {
                eObjectsToDelete.add(compoundTask);
            }
        }
    }

    for (Annotation annotation : featureSubstitutions) {
        ModelElement modelElement = annotation.getModelElement();
        EClass eClass = modelElement.eClass();
        for (Map.Entry<String, String> detail : annotation.getDetails()) {
            EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(detail.getKey());
            if (eStructuralFeature instanceof EAttribute) {
                try {
                    modelElement.eSet(eStructuralFeature, EcoreUtil.createFromString(
                            ((EAttribute) eStructuralFeature).getEAttributeType(), detail.getValue()));
                    for (Map.Entry<VariableTask, Set<Setting>> entry : usages.entrySet()) {
                        Set<Setting> settings = entry.getValue();
                        for (Setting setting : settings) {
                            if (setting.getEObject() == detail && setting
                                    .getEStructuralFeature() == BasePackage.Literals.STRING_TO_STRING_MAP_ENTRY__VALUE) {
                                settings.add(((InternalEObject) modelElement).eSetting(eStructuralFeature));
                                break;
                            }
                        }
                    }
                } catch (RuntimeException ex) {
                    // Ignore.
                }
            }
        }
    }

    for (EObject eObject : eObjectsToDelete) {
        EcoreUtil.delete(eObject);
    }

    final Resource resource = getResource();

    final List<String> strings = new ArrayList<String>();
    final TreeViewer previewer = getContainer().getPreviewer();
    if (previewer != null) {
        for (Object object : previewer.getExpandedElements()) {
            if (object instanceof EObject) {
                EObject eObject = (EObject) object;
                strings.add(resource.getURIFragment(eObject));
            }
        }

        previewer.getControl().setRedraw(false);
        updateResource(copy);

        UIUtil.asyncExec(new Runnable() {
            public void run() {
                if (!previewer.getControl().isDisposed()) {
                    List<EObject> eObjects = new ArrayList<EObject>();
                    for (String fragment : strings) {
                        EObject eObject = resource.getEObject(fragment);
                        if (eObject != null) {
                            eObjects.add(eObject);
                        }
                    }

                    previewer.setExpandedElements(eObjects.toArray());
                    updateSelection(triggerVariable);

                    previewer.getControl().setRedraw(true);
                }
            }
        });
    } else {
        updateResource(copy);
    }

    dirtyFields = originalDirtyPropertyFields;

    getContainer().validate();
}