source: VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/border/AjaxToggleBorder.java @ 975

Last change on this file since 975 was 975, checked in by oschonef, 13 years ago
  • use WiQuery? plugin
  • clean up dependencies
  • Property svn:eol-style set to native
File size: 2.2 KB
Line 
1package eu.clarin.cmdi.virtualcollectionregistry.gui.border;
2
3import org.apache.wicket.behavior.AttributeAppender;
4import org.apache.wicket.markup.html.WebMarkupContainer;
5import org.apache.wicket.markup.html.basic.Label;
6import org.apache.wicket.markup.html.border.Border;
7import org.apache.wicket.model.IModel;
8import org.apache.wicket.model.Model;
9import org.odlabs.wiquery.core.effects.EffectSpeed;
10import org.odlabs.wiquery.core.effects.sliding.SlideToggle;
11import org.odlabs.wiquery.core.events.Event;
12import org.odlabs.wiquery.core.events.MouseEvent;
13import org.odlabs.wiquery.core.events.WiQueryEventBehavior;
14import org.odlabs.wiquery.core.javascript.JsScope;
15import org.odlabs.wiquery.core.javascript.JsStatement;
16
17@SuppressWarnings("serial")
18public class AjaxToggleBorder extends Border {
19    private final static String COLLAPSED_CLASS = "collapsed";
20   
21    public AjaxToggleBorder(String id, IModel<String> title,
22            final boolean expanded) {
23        super(id);
24        setRenderBodyOnly(true);
25
26        final WebMarkupContainer header = new WebMarkupContainer("header");
27        header.add(new Label("title", title));
28
29        final WebMarkupContainer content = new WebMarkupContainer("content");
30        content.setOutputMarkupId(true);
31        content.add(getBodyContainer());
32        add(header);
33        add(content);
34
35        header.add(new WiQueryEventBehavior(new Event(MouseEvent.CLICK) {
36            @Override
37            public JsScope callback() {
38                final JsScope cb = JsScope.quickScope(new JsStatement()
39                    .$(header).toggleClass(COLLAPSED_CLASS));
40                final SlideToggle effect = new SlideToggle(EffectSpeed.SLOW);
41                effect.setCallback(cb);
42                return JsScope.quickScope(new JsStatement()
43                    .$(content).chain(effect));
44            }
45        }));
46        if (!expanded) {
47            header.add(new AttributeAppender("class",
48                    new Model<String>(COLLAPSED_CLASS), " "));
49            content.add(new AttributeAppender("style",
50                    new Model<String>("display:none"), ";"));
51        }
52    }
53
54    public AjaxToggleBorder(String id, IModel<String> title) {
55        this(id, title, true);
56    }
57   
58} // class AjaxToggleBorder
Note: See TracBrowser for help on using the repository browser.