@SuppressWarnings("unchecked") private Set<EObject> getTargetsFromSelection(IStructuredSelection iStructuredSelection) { Set<EObject> targets = new HashSet<EObject>(); for (Iterator<Object> iterator = iStructuredSelection.iterator(); iterator.hasNext(); /**/ ) { Object element = iterator.next(); DSemanticDecorator decorator = null; if (element instanceof DSemanticDecorator) { decorator = (DSemanticDecorator) element; } else if (element instanceof IAdaptable) { decorator = ((IAdaptable) element).getAdapter(DSemanticDecorator.class); } if (decorator != null) { // If the selection is the representation, we want to select the // representation descriptor node and not its semantic element. if (decorator instanceof DRepresentation) { targets.add( new DRepresentationQuery((DRepresentation) decorator).getRepresentationDescriptor()); } else { targets.add(decorator.getTarget()); } } } return targets; }
/** * Builds the command which will execute the user-specified operations with a selection tool. * * @param tool the selection tool. * @param dContainer the clicked diagram element. * @param selectedElement the selected elements * @param endBefore the event end graphically preceding the position * @param location the clicked location. * @return a command to execute the tool. */ public static Command buildSequenceSelectionWizardCommandFromTool( SelectionWizardDescription tool, DSemanticDecorator dContainer, Collection<EObject> selectedElement, EventEnd endBefore, Point location) { CommandBuilder builder = new SequenceSelectionWizardCommandBuilder( tool, dContainer, selectedElement, endBefore, location); Session session = SessionManager.INSTANCE.getSession(dContainer.getTarget()); return getCommand(builder, session); }