<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>pojos::TemplateGroup</title>
<link href="../../../../css/ea.css" rel="stylesheet" type="text/css" />
<script>
function initPage(src) {	
	if(parent==this&&(this.location+"").indexOf('EARoot')!=-1)
		document.location=(this.location+"").substring(0,(this.location+"").indexOf('EARoot'))+"index"+(this.location+"").substring((this.location+"").lastIndexOf('.'))+"?goto="+((this.location+"").substring((this.location+"").indexOf('EARoot')+7,(this.location+"").lastIndexOf('.')).replace(/\//g,':').replace(/EA/g,""));
	else
		parent.initPage(src);
}

function nameClassifier(name, separator)
{
  var str = name;
  var classifierName;
  var node = document.getElementById('name_classifier');
  if(node != null)
  {
    classifierName = node.innerHTML;
  }
  if(classifierName != "")
  {
   str += separator + classifierName;
  }
  
  return str;
}
</script>
</head>
<body onload="initPage(this);" class="Content">
<div class="pageHeader"></div>
<div class="PageBody">
	<div id="name_classifier" style="display: none;"></div>
	<span class="ObjectTitle"><script type="text/javascript">document.write(nameClassifier("TemplateGroup", " : "))</script>  : Public   Class</span>
	<table border="0" cellpadding="0" cellspacing="0" class="ObjectDetails">
		<tr>
			<td width="15%" class="ObjectDetailsTopic">Created:</td>
			<td width="85%" class="ObjectDetailsValue">09.10.2015 11:26:17</td>
		</tr>
		<tr>
			<td class="ObjectDetailsTopic">Modified:</td>
			<td class="ObjectDetailsValue">12.10.2015 15:39:56</td>
		</tr>
		<tr style="height: 10px"><td colspan="2"></td></tr>
		<tr>
			<td class="ObjectDetailsTopic"><img src="../../../../images/plus03.gif" align="absmiddle" id="proj" onclick="parent.toggleData(this.id)" />Project:</td>
			<td class="ObjectDetailsValue"></td>
		</tr>
		<tr id="proj00" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Author:</td>
			<td class="ObjectDetailsValue">dirss</td>
		</tr>
		<tr id="proj01" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Version:</td>
			<td class="ObjectDetailsValue">1.0</td>
		</tr>
		<tr id="proj02" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Phase:</td>
			<td class="ObjectDetailsValue">1.0</td>
		</tr>
		<tr id="proj03" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Status:</td>
			<td class="ObjectDetailsValue">Proposed</td>
		</tr>
		<tr id="proj04" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Complexity:</td>
			<td class="ObjectDetailsValue">Easy</td>
		</tr>
		<tr id="proj05" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Difficulty:</td>
			<td class="ObjectDetailsValue"></td>
		</tr>
		<tr id="proj06" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Priority:</td>
			<td class="ObjectDetailsValue"></td>
		</tr>
		<tr id="proj05" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Multiplicity:</td>
			<td class="ObjectDetailsValue"></td>
		</tr>
		<tr>
			<td class="ObjectDetailsTopic"><img src="../../../../images/plus03.gif" align="absmiddle" id="adv" onclick="parent.toggleData(this.id)" />Advanced:</td>
			<td class="ObjectDetailsValue"></td>
		</tr>
		<tr id="adv00" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">UUID:</td>
			<td class="ObjectDetailsValue">{5D27991B-2F79-4374-889F-0A482A87244C}</td>
		</tr>
		<tr id="adv01" style="display: none;">
			<td class="ObjectDetailsTopic" style="padding-left: 18px;">Appears In:</td>
			<td class="ObjectDetailsValue"><a href="EA144.html">TemplateGroup</a></td>
		</tr>
	</table>
	
	<div class="TableGroup" id="TableGroup">
		<ul class="ItemTitle">
			<li onClick="parent.toggleItem('Operations');" id="OperationsTitle">Operations</li>
			<li onClick="parent.toggleItem('Links');" id="LinksTitle">Other Links</li>
		</ul>
<div class="ItemBody" id="OperationsTable">
	<table border="0" cellspacing="0" cellpadding="0" class="Table">
		<tr>
			<td width="100%" class="TableHeading">Operation</td>
		</tr>
						<tr>
				<td width="100%" class="TableRow">
					<i>Public</i><br />
					<strong>getChildGroups</strong>():List&lt;TemplateGroup&gt;
				</td>
			</tr>
			<tr>
				<td class="TableRowBottomDashed"  colspan="1">
					<div class="DetailsDivParent"><img src="../../../../images/minus03.gif" align="absmiddle" id="DetailsImageOperations370" onclick="parent.toggleDiv('detailsDIVOperations370','DetailsImageOperations370')" />Details:
						<div id="detailsDIVOperations370" class="DetailsDiv" >
					<i>Sequential  </i>
					<table>
						<tr>
							<td valign = "top"><i></i><span style="margin-left: .7cm;"> </span></td>
							<td></td>
						</tr>
					</table>
					
					
					
						</div>
					</div>
				</td>
			</tr>
			<tr>
				<td width="100%" class="TableRow">
					<i>Public</i><br />
					<strong>getTemplates</strong>():&lt;T extend Groupable&gt; List&lt;T&gt;
				</td>
			</tr>
			<tr>
				<td class="TableRowBottomDashed"  colspan="1">
					<div class="DetailsDivParent"><img src="../../../../images/minus03.gif" align="absmiddle" id="DetailsImageOperations371" onclick="parent.toggleDiv('detailsDIVOperations371','DetailsImageOperations371')" />Details:
						<div id="detailsDIVOperations371" class="DetailsDiv" >
					<i>Sequential  </i>
					<table>
						<tr>
							<td valign = "top"><i></i><span style="margin-left: .7cm;"> </span></td>
							<td></td>
						</tr>
					</table>
					
					
					
						</div>
					</div>
				</td>
			</tr>

		</table>
</div>		<div class="ItemBody" id="LinksTable">
			<table align="center" border="0" cellspacing="0" cellpadding="0" class="Table">
				<tr>
					<td width="30%" class="TableHeading">Object</td>
					<td width="10%" class="TableHeading">Type</td>
					<td width="10%" class="TableHeading">Connection</td>
					<td width="10%" class="TableHeading">Direction</td>
					<td width="40%" class="TableHeading">Notes</td>
				</tr>
				<tr>
					<td width="30%" class="TableRow" valign="top"><a href="../../EA3/EA2/EA108.html">AbstractDataItem</a></td>
					<td width="10%" class="TableRow" valign="top">Class</td>
					<td width="10%" class="TableRow" valign="top">Realization</td>
					<td width="10%" class="TableRow" valign="top">To</td>
					<td width="40%" class="TableRow" valign="top">&nbsp;</td>
				</tr>
				<tr>
					<td width="30%" class="TableRow" valign="top"><a href="../../EA3/EA1/EA66.html">Deletable</a></td>
					<td width="10%" class="TableRow" valign="top">Interface</td>
					<td width="10%" class="TableRow" valign="top">Realization</td>
					<td width="10%" class="TableRow" valign="top">To</td>
					<td width="40%" class="TableRow" valign="top">&nbsp;</td>
				</tr>

			</table>
		</div>
	</div>
<div class="pageFooter"></div>
 
</body>
</html>