1 | package eu.clarin.cmdi.virtualcollectionregistry.gui.table; |
---|
2 | |
---|
3 | import org.apache.wicket.Component; |
---|
4 | import org.apache.wicket.ResourceReference; |
---|
5 | import org.apache.wicket.behavior.AbstractBehavior; |
---|
6 | import org.apache.wicket.behavior.AttributeAppender; |
---|
7 | import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; |
---|
8 | import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn; |
---|
9 | import org.apache.wicket.markup.html.WebMarkupContainer; |
---|
10 | import org.apache.wicket.markup.html.basic.Label; |
---|
11 | import org.apache.wicket.markup.html.basic.MultiLineLabel; |
---|
12 | import org.apache.wicket.markup.html.panel.Panel; |
---|
13 | import org.apache.wicket.markup.repeater.Item; |
---|
14 | import org.apache.wicket.model.IModel; |
---|
15 | import org.apache.wicket.model.Model; |
---|
16 | import org.apache.wicket.model.ResourceModel; |
---|
17 | import org.odlabs.wiquery.core.commons.IWiQueryPlugin; |
---|
18 | import org.odlabs.wiquery.core.commons.WiQueryResourceManager; |
---|
19 | import org.odlabs.wiquery.core.javascript.JsStatement; |
---|
20 | |
---|
21 | import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection; |
---|
22 | |
---|
23 | @SuppressWarnings("serial") |
---|
24 | final 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 |
---|