package org.xmind.ui.internal.comments;
import java.util.ArrayList;
import java.util.List;
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;
public class CommentsSelectionProvider implements ISelectionProvider {
private List<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
private ISelection selection;
//it to be used in commentsView -- findReplaceAction.
private ISelection oldSelection;
public void addSelectionChangedListener(
ISelectionChangedListener listener) {
selectionChangedListeners.add(listener);
}
public void removeSelectionChangedListener(
ISelectionChangedListener listener) {
selectionChangedListeners.remove(listener);
}
public void setSelection(ISelection selection) {
if (this.selection == selection
|| (this.selection != null && this.selection.equals(selection)))
return;
this.oldSelection = this.selection;
this.selection = selection;
fireSelectionChanged(new SelectionChangedEvent(this, getSelection()));
}
public ISelection getOldSelection() {
return oldSelection == null ? StructuredSelection.EMPTY : oldSelection;
}
public ISelection getSelection() {
return selection == null ? StructuredSelection.EMPTY : selection;
}
private void fireSelectionChanged(SelectionChangedEvent event) {
for (Object o : selectionChangedListeners.toArray()) {
((ISelectionChangedListener) o).selectionChanged(event);
}
}
}