/******************************************************************************* * Copyright (c) 2007, 2008 Symbian Software Limited and others. * 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: * Bala Torati (Symbian) - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.ui.templateengine.uitree; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.eclipse.cdt.ui.templateengine.uitree.uiwidgets.UIComposite; /** * The GenericUIElementGroup extends UIElement, implements the default behavior * expected from UIElementGroup. This gives behavior expected for PAGES-ONLY * type. Any other type of UIElement groups can override the definitions given * to methods in this class. * * @since 4.0 */ public class GenericUIElementGroup extends UIElement { /** * @deprecated use {@value UIGroupTypeEnum#PAGES_ONLY} */ @Deprecated public static String PAGES_ONLY = UIGroupTypeEnum.PAGES_ONLY.getId(); /** * @deprecated use {@value UIGroupTypeEnum#PAGES_ONLY} */ @Deprecated public static String PAGES_TAB = UIGroupTypeEnum.PAGES_TAB.getId(); /** * @deprecated */ @Deprecated public static String LOGTYPE = "UIElement"; //$NON-NLS-1$ UIGroupTypeEnum type = null; /** * child list for this UIElement */ private List<UIElement> childList; /** * Call UIElement constructor by passing Attributes as parameter. * * @param attributes */ public GenericUIElementGroup(UIGroupTypeEnum type, UIAttributes attributes) { super(attributes); this.type = type; this.childList = new ArrayList<UIElement>(); } /* * @see org.eclipse.cdt.ui.templateengine.uitree.UIElement#setValues(java.util.Map) */ @Override public void setValues(Map<String,String> valueMap) { int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { getChild(i).setValues(valueMap); } } /* * @see org.eclipse.cdt.ui.templateengine.uitree.UIElement#getValues() */ @Override public Map<String, String> getValues() { HashMap<String, String> valueMap = new HashMap<String, String>(); int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { valueMap.putAll(getChild(i).getValues()); } return valueMap; } /* * @see org.eclipse.cdt.ui.templateengine.uitree.UIElement#createWidgets(org.eclipse.cdt.ui.templateengine.uitree.uiwidgets.UIComposite) */ @Override public void createWidgets(UIComposite uiComposite) { int childCount = getChildCount(); // call createWidgets on all the contained // UI widgets. if (uiComposite != null) { for (int i = 0; i < childCount; i++) { getChild(i).createWidgets(uiComposite); } uiComposite.setData(".uid", getAttributes().get(UIElement.ID)); //$NON-NLS-1$ } } /* * @see org.eclipse.cdt.ui.templateengine.uitree.UIElement#disposeWidget() */ @Override public void disposeWidget() { int childCount = getChildCount(); for (int i = 0; i < childCount; i++) getChild(i).disposeWidget(); } /** * getThe child UIElement at the given index. This method throws * SimpleElementException, if invoked on a InputUIElement. * * @see UIElement * @param index * @return child uiElement */ @Override public UIElement getChild(int index) { return childList.get(index); } /** * add the given UIElement to the childList. This method throws * SimpleElementException, if invoked on a InputUIElement. * * @see UIElement * @param aUIElement */ @Override public void addToChildList(UIElement aUIElement) { childList.add(aUIElement); } /** * returns the child count of UIElement. This method throws * SimpleElementException, if invoked on a InputUIElement. * * @see UIElement * @return the child count of UIElement */ @Override public int getChildCount() { return childList.size(); } /** * gets the type of this group. This is not used as of now. but can be used * during UIPage construction. */ public UIGroupTypeEnum getType() { return type; } /* * @see org.eclipse.cdt.ui.templateengine.uitree.UIElement#isValid() */ @Override public boolean isValid() { boolean retVal = true; int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { if (!getChild(i).isValid()) { retVal = false; break; } } return retVal; } }