package de.uni_mannheim.informatik.swt.models.plm.diagram.custom.menucontributions; import java.util.LinkedList; import java.util.List; import java.util.Map.Entry; import org.eclipse.core.runtime.CoreException; import org.eclipse.emf.ecore.EObject; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.CompoundContributionItem; import org.eclipse.ui.menus.CommandContributionItem; import org.eclipse.ui.menus.CommandContributionItemParameter; import de.uni_mannheim.informatik.swt.mlm.workbench.ExtensionPointService; import de.uni_mannheim.informatik.swt.mlm.workbench.interfaces.IEmendationService; import de.uni_mannheim.informatik.swt.models.plm.diagram.part.PLMDiagramEditor; public class RefactorContributionItem extends CompoundContributionItem { @Override protected IContributionItem[] getContributionItems() { IEmendationService refactorer = null; try { refactorer = ExtensionPointService.Instance().getActiveEmendationService(); } catch (CoreException e) { e.printStackTrace(); } //No refactoring service found -> return no refactoring options if (refactorer == null) return new IContributionItem[0]; IEditorPart editPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); //Check if PLM diagram editor is opened if (! (editPart instanceof PLMDiagramEditor)) return new IContributionItem[0]; //Check if we have a IStructeredSeclection if (! (((PLMDiagramEditor)editPart).getSite().getSelectionProvider().getSelection() instanceof IStructuredSelection)) return new IContributionItem[0]; IStructuredSelection selection = (IStructuredSelection)((PLMDiagramEditor)editPart).getSite().getSelectionProvider().getSelection(); //Check if exactly one element is selected and the first one is a IGraphicalEditPart if (selection.size() != 1 && !(selection.getFirstElement() instanceof IGraphicalEditPart)) return new IContributionItem[0]; Object[] parts = selection.toArray(); EObject[] modelElements = new EObject[parts.length]; for (int i = 0; i < parts.length; i++) if (parts[i] instanceof IGraphicalEditPart) modelElements[i] = ((IGraphicalEditPart)parts[i]).resolveSemanticElement(); return null;//refactorer.getAvailableRefactoringCommands(modelElements).toArray(new IContributionItem[] {}); } }