package org.eclipse.papyrus.uml.diagram.sequence.apex.part; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPartViewer; import org.eclipse.gmf.runtime.notation.Diagram; import org.eclipse.gmf.runtime.notation.View; import org.eclipse.papyrus.uml.diagram.sequence.apex.part.tweaks.TweakStructuredContentProvider; import org.eclipse.papyrus.uml.diagram.sequence.edit.parts.LifelineEditPart; public class SequenceTweakContentProvider extends TweakStructuredContentProvider { private EditPartViewer fEditPartViewer; public SequenceTweakContentProvider(EditPartViewer editPartViewer) { super(); fEditPartViewer = editPartViewer; } @Override public Object[] getElements(Object inputElement) { if (inputElement instanceof EditPart) { return getLifelineEditParts(fEditPartViewer); } if (inputElement instanceof Diagram) { return getLifelines(fEditPartViewer); } return super.getElements(inputElement); } private Object[] getLifelineEditParts(EditPartViewer editPartViewer) { Set<LifelineEditPart> editParts = new HashSet<LifelineEditPart>(); Map registry = editPartViewer.getEditPartRegistry(); for (Iterator iterator = registry.keySet().iterator(); iterator.hasNext(); ) { Object key = iterator.next(); Object value = registry.get(key); if (value instanceof LifelineEditPart) { editParts.add((LifelineEditPart) value); } } return editParts.toArray(); } private Object[] getLifelines(EditPartViewer editPartViewer) { Set<View> views = new HashSet<View>(); Map registry = editPartViewer.getEditPartRegistry(); for (Iterator iterator = registry.keySet().iterator(); iterator.hasNext(); ) { Object key = iterator.next(); Object value = registry.get(key); if (value instanceof LifelineEditPart) { views.add(((LifelineEditPart)value).getNotationView()); } } return views.toArray(); } }