source: VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/table/ColumnName.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: 3.5 KB
Line 
1package eu.clarin.cmdi.virtualcollectionregistry.gui.table;
2
3import org.apache.wicket.Component;
4import org.apache.wicket.ResourceReference;
5import org.apache.wicket.behavior.AbstractBehavior;
6import org.apache.wicket.behavior.AttributeAppender;
7import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
8import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
9import org.apache.wicket.markup.html.WebMarkupContainer;
10import org.apache.wicket.markup.html.basic.Label;
11import org.apache.wicket.markup.html.basic.MultiLineLabel;
12import org.apache.wicket.markup.html.panel.Panel;
13import org.apache.wicket.markup.repeater.Item;
14import org.apache.wicket.model.IModel;
15import org.apache.wicket.model.Model;
16import org.apache.wicket.model.ResourceModel;
17import org.odlabs.wiquery.core.commons.IWiQueryPlugin;
18import org.odlabs.wiquery.core.commons.WiQueryResourceManager;
19import org.odlabs.wiquery.core.javascript.JsStatement;
20
21import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
22
23@SuppressWarnings("serial")
24final class ColumnName extends AbstractColumn<VirtualCollection> {
25    private static final ResourceReference JAVASCRIPT_RESOURCE = 
26        new ResourceReference(ColumnName.class, "ColumnName.js");
27    private final VirtualCollectionTable table;
28   
29    private final class ItemCell extends Panel implements IWiQueryPlugin {
30        private final WebMarkupContainer nameColumn;
31       
32        public ItemCell(String id, IModel<VirtualCollection> model) {
33            super(id);
34            setRenderBodyOnly(true);
35           
36            nameColumn = new WebMarkupContainer("nameColumn");
37            nameColumn.setOutputMarkupId(true);
38            final VirtualCollection vc = model.getObject();
39            nameColumn.add(new Label("name", vc.getName()));
40
41            final WebMarkupContainer details =
42                new WebMarkupContainer("details");
43            final String desc = vc.getDescription();
44            final MultiLineLabel descLabel = new MultiLineLabel("desc", desc);
45            if (desc == null) {
46                descLabel.setVisible(false);
47            }
48            details.add(descLabel);
49            final Panel actionsPanel =
50                table.createActionPanel("actionsPanel", model);
51            details.add(actionsPanel);
52            details.add(new AbstractBehavior() {
53
54                @Override
55                public void bind(Component component) {
56                    component.setVisible(actionsPanel.isVisible());
57                }
58            });
59
60            // move to css?
61            details.add(new AttributeAppender("style",
62                    new Model<String>("display:none"), ";"));
63            nameColumn.add(details);
64            add(nameColumn);
65        }
66       
67        @Override
68        public void contribute(WiQueryResourceManager manager) {
69            manager.addJavaScriptResource(JAVASCRIPT_RESOURCE);
70        }
71
72        @Override
73        public JsStatement statement() {
74            return new JsStatement().$(nameColumn).append(".detailsToggle()");
75        }
76
77    } // class ColumnName.ItemCell
78
79    ColumnName(VirtualCollectionTable table) {
80        super(new ResourceModel("column.name", "Name"), "name");
81        this.table = table;
82    }
83
84    @Override
85    public void populateItem(Item<ICellPopulator<VirtualCollection>> item,
86            String componentId, IModel<VirtualCollection> model) {
87        item.add(new ItemCell(componentId, model));
88    }
89
90    @Override
91    public String getCssClass() {
92        return "name";
93    }
94
95} // class ColumnName
Note: See TracBrowser for help on using the repository browser.