/**
   * <span class="ja"> 新しいテンプレート方式を使用するか旧方式で実行するかを決定する為のコード
   *
   * @return true の場合には最新テンプレート方式 </span>
   */
  public boolean hastTemplateInComponent() {
    boolean result = false;

    WOElement content = _childTemplate();
    if (content instanceof WODynamicGroup) {
      WODynamicGroup group = (WODynamicGroup) content;
      for (Enumeration<WOElement> e = group.childrenElements().objectEnumerator();
          e.hasMoreElements() && !result; ) {
        WOElement current = e.nextElement();
        if (current instanceof ERXWOTemplate) {
          result = true;
        }
      }
    } else if (content instanceof ERXWOTemplate) {
      result = true;
    }
    return result;
  }
  /**
   * Looks through the child components to locate the AjaxTabbedPanelTabs that are controlled by
   * this panel. Tabs without an explicit id attributed are assigned a calculated one.
   *
   * @param template the graph of elements passed to the constructor.
   */
  private void findTabs(WODynamicGroup template) {
    if (template == null || template.childrenElements() == null) return;

    NSArray children = template.childrenElements();
    for (int i = 0; i < children.count(); i++) {
      WOElement child = (WOElement) children.objectAtIndex(i);
      if (child instanceof MTAjaxTabbedPanelTab) {
        MTAjaxTabbedPanelTab childTab = (MTAjaxTabbedPanelTab) child;

        // The tabs need to have an id attribute so we assign one if needed
        if (childTab.id() == null) {
          childTab.setId(
              new WOConstantValueAssociation(id.valueInComponent(null) + "_pane_" + tabs.count()));
        }

        tabs.addObject(childTab);
      } else if (child instanceof WODynamicGroup) {
        findTabs((WODynamicGroup) child);
      }
    }
  }