added clickable column

This commit is contained in:
fred-fri 2012-05-04 13:05:46 +09:00
parent d763e39a89
commit 6255f6b7bb
5 changed files with 82 additions and 5 deletions

@ -2,9 +2,7 @@ package se.su.dsv.scipro.admin.pages;
import org.apache.wicket.PageParameters;
import se.su.dsv.scipro.admin.panels.AdminListCheckListTemplatePanel;
import se.su.dsv.scipro.admin.panels.CheckListTemplateDataPanel;
import se.su.dsv.scipro.data.enums.CheckListRole;
import se.su.dsv.scipro.datatables.CheckListTemplateDataPanel;
import se.su.dsv.scipro.security.auth.Authorization;
import se.su.dsv.scipro.security.auth.roles.Roles;

@ -1,4 +1,4 @@
package se.su.dsv.scipro.admin.panels;
package se.su.dsv.scipro.datatables;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.markup.html.repeater.data.table.*;
@ -60,7 +60,16 @@ public class CheckListTemplateDataPanel extends Panel {
add(numberDropDown);
IColumn[] columns = new IColumn[4];
columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name");
// columns[0] = new PropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name");
columns[0] = new ClickablePropertyColumn<CheckListTemplate>(Model.of("Name"), "name", "name") {
@Override
protected void onClick(IModel<CheckListTemplate> clicked, AjaxRequestTarget target) {
System.out.println(clicked.getObject().getName());
}
};
columns[1] = new PropertyColumn<CheckListTemplate>(Model.of("Creator"), "creator", "creator");
columns[2] = new PropertyColumn<CheckListTemplate>(Model.of("Categories"), "categories", "categories");
columns[3] = new PropertyColumn<CheckListTemplate>(Model.of("Created"), "dateCreated", "dateCreated");

@ -0,0 +1,3 @@
<wicket:panel>
<a wicket:id="link"><span wicket:id="label"></span></a>
</wicket:panel>

@ -0,0 +1,67 @@
package se.su.dsv.scipro.datatables;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
/**
* Author: fred-fri
* Date: 5/4/12
*/
public abstract class ClickablePropertyColumn<T> extends AbstractColumn<T> {
private final String property;
public ClickablePropertyColumn(IModel<String> displayModel,
String property) {
this(displayModel, property, null);
}
public ClickablePropertyColumn(IModel<String> displayModel,
String property, String sort) {
super(displayModel, sort);
this.property = property;
}
public void populateItem(Item<ICellPopulator<T>> cellItem,
String componentId, IModel<T> rowModel) {
cellItem.add(new LinkPanel(componentId, rowModel,
new PropertyModel<Object>(rowModel, property)));
}
protected abstract void onClick(IModel<T> clicked, AjaxRequestTarget target);
private class LinkPanel extends Panel {
public LinkPanel(String id, IModel<T> rowModel, IModel<?>
labelModel) {
super(id);
// Link<T> link = new Link<T>("link", rowModel) {
// @Override
// public void onClick() {
// ClickablePropertyColumn.this.onClick(getModel());
// }
// };
// add(link);
// link.add(new Label("label", labelModel));
AjaxLink<T> link = new AjaxLink<T>("link", rowModel) {
@Override
public void onClick(AjaxRequestTarget target) {
ClickablePropertyColumn.this.onClick(getModel(), target);
}
};
add(link);
link.add(new Label("label", labelModel));
}
}
}