package org.nocket.component.table;
import java.io.File;
import org.apache.commons.lang.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.nocket.component.table.columns.DownloadActionIconColumn;
import org.nocket.gen.page.element.synchronizer.TableDownloadCallback;
/**
* Column with file download link shown as image generated for read-only
* properties of the table entry with return type: java.io.File.
*
* @param <T>
* Model object type representing one line in
* {@link GenericDataTablePanel} .
*/
public class GeneratedDownloadByPropertyIconColumn<T> extends DownloadActionIconColumn<T> {
private static final long serialVersionUID = 1L;
protected final TableDownloadCallback downloadCallback;
public GeneratedDownloadByPropertyIconColumn(IModel<String> header, TableDownloadCallback downloadCallback,
String enabledIconResource, String disabledIconResource) {
super(header, enabledIconResource, disabledIconResource);
this.downloadCallback = downloadCallback;
}
@Override
protected IModel<File> fileModel(IModel<T> rowModel) {
return new PropertyModel<File>(rowModel.getObject(), StringUtils.uncapitalize(downloadCallback
.getPropertyName()));
}
@Override
protected boolean isEnabled(IModel<T> model) {
return downloadCallback.isEnabled(model.getObject());
}
@Override
protected String getTooltip(IModel<T> model) {
return downloadCallback.getTooltip(model.getObject());
}
@Override
protected String getIconResourceName(IModel<T> model, Component c) {
return downloadCallback.getIconResourceName(model.getObject(), c);
}
};