info.novatec.inspectit.rcp.util.SelectionProviderAdapter.java Source code

Java tutorial

Introduction

Here is the source code for info.novatec.inspectit.rcp.util.SelectionProviderAdapter.java

Source

package info.novatec.inspectit.rcp.util;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.runtime.SafeRunner;
import org.eclipse.jface.util.SafeRunnable;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;

/**
 * Simple class that can publish selection of the view to the site.
 * <p>
 * <b>IMPORTANT:</b> The class is licensed under the Eclipse Public License v1.0 as it includes the
 * code from the {@link org.eclipse.ui.internal.part.SelectionProviderAdapter} class belonging to
 * the Eclipse Rich Client Platform. EPL v1.0 license can be found <a
 * href="https://www.eclipse.org/legal/epl-v10.html">here</a>.
 * <p>
 * Please relate to the LICENSEEXCEPTIONS.txt file for more information about license exceptions
 * that apply regarding to InspectIT and Eclipse RCP and/or EPL Components.
 * 
 */
public class SelectionProviderAdapter implements ISelectionProvider {

    /**
     * List of listeners.
     */
    private List<ISelectionChangedListener> listeners = new ArrayList<ISelectionChangedListener>();

    /**
     * Current selection.
     */
    private ISelection theSelection = StructuredSelection.EMPTY;

    /**
     * {@inheritDoc}
     */
    public void addSelectionChangedListener(ISelectionChangedListener listener) {
        listeners.add(listener);
    }

    /**
     * {@inheritDoc}
     */
    public ISelection getSelection() {
        return theSelection;
    }

    /**
     * {@inheritDoc}
     */
    public void removeSelectionChangedListener(ISelectionChangedListener listener) {
        listeners.remove(listener);
    }

    /**
     * {@inheritDoc}
     */
    public void setSelection(ISelection selection) {
        theSelection = selection;
        final SelectionChangedEvent e = new SelectionChangedEvent(this, selection);
        for (final ISelectionChangedListener listener : listeners) {
            SafeRunner.run(new SafeRunnable() {
                public void run() {
                    listener.selectionChanged(e);
                }
            });
        }
    }

}