package org.eclipse.papyrus.infra.gmfdiag.modelexplorer.handlers;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.papyrus.views.modelexplorer.NavigatorUtils;
import org.eclipse.papyrus.views.modelexplorer.handler.AbstractCommandHandler;
import org.eclipse.ui.PlatformUI;
public abstract class AbstractDiagramCommandHandler extends AbstractCommandHandler {
/**
* Returns the list of selected diagrams
*
* @return
* the list of selected diagrams
*/
protected List<Diagram> getSelectedDiagrams() {
List<Diagram> diagrams = new ArrayList<Diagram>();
ISelection selection = null;
// Get current selection
selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
// Get first element if the selection is an IStructuredSelection
if(selection instanceof IStructuredSelection) {
IStructuredSelection structuredSelection = (IStructuredSelection)selection;
Iterator<?> iter = structuredSelection.iterator();
while(iter.hasNext()) {
Object current = iter.next();
/**
* Get the diagram object.
* This getElement is used in order to use IAdaptabel mechanisme
* For example for Facet Elements
*/
EObject diag = NavigatorUtils.getElement(current, EObject.class);
if(diag instanceof Diagram) {
diagrams.add((Diagram)diag);
}
}
}
return diagrams;
}
}