/*******************************************************************************
* 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 extension for ISequenceContentProvider that allows the definition of
* groups for lifelines. Implementors must be careful to not introduce cycles into
* the groupings. Otherwise, memory leaks and infinite processes will occurr.
* @author Del Myers
*/
public interface ISequenceContentExtension {
/**
* Returns an object that represents the grouping for the given lifeline or
* group. Lifeline groups allow for horizontal compaction of the chart. When a
* lifeline can be "grouped", a small +/- button will be overlaid on it. Grouping
* a lifeline by selecting the the +/- button will cause all of that lifeline's
* activations to be displayed on its parent "group", and the lifeline will disappear from
* the main chart. The same is true for the parent groups.
* @param lifelineOrGroup the lifeline or group to query.
* @return the group that is the parent for lifelineOrGroup.
*/
public Object getContainingGroup(Object lifelineOrGroup);
/**
* Returns true iff the given lifeline or group is contained in a parent group.
* getContainingGroup() will only be called if this method returns true.
* @param lifelineOrGroup the lifeline or group to query
* @return true iff the given object is contained in a parent group.
*/
public boolean hasContainingGroup(Object lifelineOrGroup);
}