public class GraphitiEditor extends DiagramEditor implements ISelectionProvider {
private ListenerList listeners = new ListenerList();
/*
* Extend the editor to make it also an ISelectionProvider for properties.
* @see org.eclipse.graphiti.ui.editor.DiagramEditor#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
*/
@Override
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
super.init(site, input);
getSite().setSelectionProvider(this);
}
@Override
public void addSelectionChangedListener(ISelectionChangedListener listener) {
listeners.add(listener);
}
@Override
public ISelection getSelection() {
// Pass the EObject corresponding to the first selected PE
PictogramElement[] peArray = getSelectedPictogramElements();
if (peArray != null && peArray.length > 0) {
EObject element = (EObject)Graphiti.getLinkService()
.getBusinessObjectForLinkedPictogramElement(getSelectedPictogramElements()[0]);
if (element != null)
return new StructuredSelection(element);
}
return StructuredSelection.EMPTY;
}
@Override
public void removeSelectionChangedListener(ISelectionChangedListener listener) {
listeners.remove(listener);
}
@Override
public void setSelection(ISelection selection) {
Object[] list = listeners.getListeners();
for (int i = 0; i < list.length; i++)
((ISelectionChangedListener)list[i]).selectionChanged(new SelectionChangedEvent(this, selection));
}