package com.github.gwtbootstrap.client.ui;
import com.github.gwtbootstrap.client.ui.base.DivWidget;
import com.github.gwtbootstrap.client.ui.constants.Constants;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
/**
* Simple Accordion style widget.
* <p>
* It's a container of {@link AccordionGroup}.
* <p>
* <h3>UiBinder Usage:</h3>
* <p/>
* <pre>
* {@code
* <b:Accordion>
* <b:AccordionGroup heading="One">
* <b:Paragraph>one</b:Paragraph>
* <b:Paragraph>two</b:Paragraph>
* </b:AccordionGroup>
*
* <b:AccordionGroup heading="Defalut Open" defaultOpen="true">
* <b:Paragraph>The default opened Accordion</b:Paragraph>
* </b:AccordionGroup>
*
* <b:AccordionGroup defaultOpen="true" heading="With Icon" icon="GITHUB">
* <b:Paragraph>Icon style</b:Paragraph>
* </b:AccordionGroup>
*
* <b:AccordionGroup heading="With Custom Icon">
* <b:customTrigger>
* <b:Image addStyleNames="{style.icon}" resource="{res.logo}"/>
* </b:customTrigger>
* <b:Paragraph>Custom Icon Style</b:Paragraph>
* </b:AccordionGroup>
* </b:Accordion>
* }
* </pre>
*
* @since 2.2.1.0
* @author ohashi keisuke
* @see Accordion
* @see Collapse
* @see CollapseTrigger
* @see <a href="http://getbootstrap.com/2.3.2/javascript.html#collapse">Bootstrap document</a>
*
*/
public class Accordion extends DivWidget {
/**
* Create an empty widget.
*/
public Accordion() {
super(Constants.ACCORDION);
getElement().setId(DOM.createUniqueId());
}
/**
* {@inheritDoc}
*/
@Override
public void add(IsWidget child) {
if(child instanceof Collapse) {
Collapse collapse = (Collapse)child;
collapse.setParent("#" + getId());
}
super.add(child);
}
/**
* {@inheritDoc}
*/
@Override
public void add(Widget w) {
if(w instanceof AccordionGroup) {
AccordionGroup accordionGroup = (AccordionGroup)w;
accordionGroup.setParent("#" + getId());
}
super.add(w);
}
}