package fr.lteconsulting.hexa.client.ui.containers; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; import fr.lteconsulting.hexa.client.ui.widget.ImageButton; public class AccordionHeader extends Composite implements ClickHandler { Accordion.Item item; ImageButton image; Label label = null; Widget widget = null; private static ImageResource _openRsrc = null; private static ImageResource _closeRsrc = null; public static void setImages( ImageResource open, ImageResource close ) { _openRsrc = open; _closeRsrc = close; } public AccordionHeader( Accordion.Item item, String text ) { this.item = item; label = new Label( "" ); HorizontalPanel p = new HorizontalPanel(); image = new ImageButton( _openRsrc, "" ); image.addClickHandler( this ); p.add( image ); p.add( label ); updateImage(); setText( text ); initWidget( p ); } public AccordionHeader( Accordion.Item item, Widget widget ) { this.item = item; this.widget = widget; HorizontalPanel p = new HorizontalPanel(); // FlowPanel p = new FlowPanel(); image = new ImageButton( _openRsrc, "" ); image.addClickHandler( this ); p.add( image ); p.add( widget ); updateImage(); p.setWidth( "100%" ); initWidget( p ); } public void setText( String text ) { if( label != null ) label.setText( text ); } @Override public void onClick( ClickEvent event ) { item.setExpanded( !item.getExpanded() ); updateImage(); } private void updateImage() { image.setResource( item.getExpanded() ? _openRsrc : _closeRsrc ); image.setTitle( item.getExpanded() ? "Reduire" : "Ouvrir" ); } }