/*******************************************************************************
* Copyright (c) 2009 the CHISEL group and contributors.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Del Myers -- initial API and implementation
*******************************************************************************/
package org.eclipse.zest.custom.uml.viewers;
/**
* An interface that can be used in Sequence Viewers to generate named groups
* for messages on activations. Groups can represent things like loops or alternate paths
* of execution.
* @author Del Myers
*/
public interface IMessageGrouper {
/**
* Calculates the groups on the given activation element. Groups may be contained within
* other groups, but they may not overlap. That is, a group may not have its starting location
* within another group unless its end is also contained within that other group. Behaviour is
* undefined for such cases.
*
* Groups are calculated on the <i>filtered</i> elements of a sequence chart. That is, elements
* have to pass the viewers filters before they are passed to this method for calculation.
*
* @param viewer the viewer in which the grouping is being performed.
* @param activationElement the
* @param children the children of activationElement that are visible in the chart.
* These children should be used when calculating the regions.
* @return the groups.
*/
public IMessageGrouping[] calculateGroups(UMLSequenceViewer viewer, Object activationElement, Object[] children);
/**
* Called do dispose of any colors or fonts that had to be created
* for the grouping.
*/
public void dispose();
}