package eu.jucy.gui.texteditor.hub;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.viewers.IPostSelectionProvider;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
public class ItemSelectionProvider implements IPostSelectionProvider {
private IStructuredSelection o;
private final List<ISelectionChangedListener> listeners =
new ArrayList<ISelectionChangedListener>();
public ItemSelectionProvider() {}
public ItemSelectionProvider(Object o) {
this.o = new StructuredSelection(o);
}
public ItemSelectionProvider(List<Object> o) {
this.o = new StructuredSelection(o);
}
public void addPostSelectionChangedListener(
ISelectionChangedListener listener) {
listeners.add(listener);
}
public void removePostSelectionChangedListener(
ISelectionChangedListener listener) {
listeners.remove(listener);
}
public void addSelectionChangedListener(ISelectionChangedListener listener) {
addPostSelectionChangedListener(listener);
}
public IStructuredSelection getSelection() {
return o;
}
public void removeSelectionChangedListener(
ISelectionChangedListener listener) {
removePostSelectionChangedListener(listener);
}
public void setSelection(ISelection selection) {
if (selection != null && selection instanceof IStructuredSelection) {
this.o = (IStructuredSelection)selection;
}
for (ISelectionChangedListener scl: listeners) {
scl.selectionChanged(new SelectionChangedEvent(this,o));
}
}
public void setSelection(Object o) {
setSelection(new StructuredSelection(o));
}
}