source: VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/menu/AjaxPopupMenu.java @ 1015

Last change on this file since 1015 was 1015, checked in by oschonef, 13 years ago
  • CSS tweaks
  • hide popup-menu and details for deleted virtual collections
  • Property svn:eol-style set to native
File size: 2.9 KB
Line 
1package eu.clarin.cmdi.virtualcollectionregistry.gui.menu;
2
3import java.io.Serializable;
4import java.util.ArrayList;
5import java.util.List;
6
7import org.apache.wicket.ResourceReference;
8import org.apache.wicket.behavior.SimpleAttributeModifier;
9import org.apache.wicket.markup.html.WebMarkupContainer;
10import org.apache.wicket.markup.html.basic.Label;
11import org.apache.wicket.markup.html.link.AbstractLink;
12import org.apache.wicket.markup.html.list.ListItem;
13import org.apache.wicket.markup.html.list.ListView;
14import org.apache.wicket.markup.html.panel.Panel;
15import org.apache.wicket.model.IModel;
16import org.odlabs.wiquery.core.commons.IWiQueryPlugin;
17import org.odlabs.wiquery.core.commons.WiQueryResourceManager;
18import org.odlabs.wiquery.core.javascript.JsStatement;
19
20@SuppressWarnings("serial")
21public class AjaxPopupMenu extends Panel implements Serializable, IWiQueryPlugin {
22    private static final ResourceReference CSS_RESOURCE =
23        new ResourceReference(AjaxPopupMenu.class, "AjaxPopupMenu.css");
24    private static final ResourceReference JAVASCRIPT_RESOURCE =
25        new ResourceReference(AjaxPopupMenu.class, "AjaxPopupMenu.js");
26    private final WebMarkupContainer menu;
27    private List<MenuItem> items = new ArrayList<MenuItem>();
28
29    public AjaxPopupMenu(String id, IModel<String> title) {
30        super(id);
31        setRenderBodyOnly(true);
32
33        menu = new WebMarkupContainer("menu");
34        menu.setOutputMarkupId(true);
35        menu.add(new Label("title", title));
36        menu.add(new ListView<MenuItem>("items", items) {
37            @Override
38            protected void populateItem(ListItem<MenuItem> item) {
39                final MenuItem menuitem = item.getModelObject();
40                final AbstractLink link = menuitem.newLink("link");
41                link.add(new Label("label", menuitem.getLabel()));
42                String cssClass = menuitem.getCssClass();
43                if (cssClass != null) {
44                    link.add(new SimpleAttributeModifier("class", cssClass));
45                }
46                item.add(link);
47                item.setVisible(menuitem.isVisible());
48                item.setEnabled(menuitem.isEnabled());
49            }
50        });
51        add(menu);
52    }
53
54    public void add(MenuItem item) {
55        items.add(item);
56    }
57
58    @Override
59    public void contribute(WiQueryResourceManager manager) {
60        manager.addJavaScriptResource(JAVASCRIPT_RESOURCE);
61        manager.addCssResource(CSS_RESOURCE);
62    }
63
64    @Override
65    public JsStatement statement() {
66        return new JsStatement().$(menu).append(".ajaxPopupMenu()");
67    }
68
69    @Override
70    protected void onBeforeRender() {
71        super.onBeforeRender();
72        boolean anyVisible = false;
73        for (MenuItem item : items) {
74            if (item.isVisible()) {
75                anyVisible = true;
76                break;
77            }
78        }
79        if (!anyVisible) {
80            setVisible(false);
81        }
82    }
83
84} // class PopupMenu
Note: See TracBrowser for help on using the repository browser.