001package com.github.gwtbootstrap.client.ui; 002 003import com.github.gwtbootstrap.client.ui.base.DivWidget; 004import com.github.gwtbootstrap.client.ui.constants.Constants; 005import com.google.gwt.user.client.DOM; 006import com.google.gwt.user.client.ui.IsWidget; 007import com.google.gwt.user.client.ui.Widget; 008 009/** 010 * Simple Accordion style widget. 011 * <p> 012 * It's a container of {@link AccordionGroup}. 013 * <p> 014 * <h3>UiBinder Usage:</h3> 015 * <p/> 016 * <pre> 017 * {@code 018 * <b:Accordion> 019 * <b:AccordionGroup heading="One"> 020 * <b:Paragraph>one</b:Paragraph> 021 * <b:Paragraph>two</b:Paragraph> 022 * </b:AccordionGroup> 023 * 024 * <b:AccordionGroup heading="Defalut Open" defaultOpen="true"> 025 * <b:Paragraph>The default opened Accordion</b:Paragraph> 026 * </b:AccordionGroup> 027 * 028 * <b:AccordionGroup defaultOpen="true" heading="With Icon" icon="GITHUB"> 029 * <b:Paragraph>Icon style</b:Paragraph> 030 * </b:AccordionGroup> 031 * 032 * <b:AccordionGroup heading="With Custom Icon"> 033 * <b:customTrigger> 034 * <b:Image addStyleNames="{style.icon}" resource="{res.logo}"/> 035 * </b:customTrigger> 036 * <b:Paragraph>Custom Icon Style</b:Paragraph> 037 * </b:AccordionGroup> 038 * </b:Accordion> 039 * } 040 * </pre> 041 * 042 * @since 2.2.1.0 043 * @author ohashi keisuke 044 * @see Accordion 045 * @see Collapse 046 * @see CollapseTrigger 047 * @see <a href="http://twitter.github.com/bootstrap/javascript.html#collapse">Twitter Bootstrap document</a> 048 * 049 */ 050public class Accordion extends DivWidget { 051 052 /** 053 * Create an empty widget. 054 */ 055 public Accordion() { 056 super(Constants.ACCORDION); 057 getElement().setId(DOM.createUniqueId()); 058 } 059 060 /** 061 * {@inheritDoc} 062 */ 063 @Override 064 public void add(IsWidget child) { 065 if(child instanceof Collapse) { 066 Collapse collapse = (Collapse)child; 067 068 collapse.setParent("#" + getId()); 069 } 070 super.add(child); 071 } 072 073 /** 074 * {@inheritDoc} 075 */ 076 @Override 077 public void add(Widget w) { 078 079 if(w instanceof AccordionGroup) { 080 AccordionGroup accordionGroup = (AccordionGroup)w; 081 082 accordionGroup.setParent("#" + getId()); 083 } 084 085 super.add(w); 086 } 087}