package org.nocket.component.table;
import java.io.File;
import org.apache.wicket.Component;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.nocket.component.table.columns.DownloadActionIconColumn;
import org.nocket.gen.page.element.synchronizer.TableButtonCallback;
/**
* Column with file download link shown as image generated for method (not the
* property !!!) of the table entry with return type: {@link java.io.File}.
*
* @param <T>
* Model object type representing one line in
* {@link GenericDataTablePanel} .
*/
public class GeneratedDownloadByMethodIconColumn<T> extends DownloadActionIconColumn<T> {
private static final long serialVersionUID = 1L;
protected final TableButtonCallback buttonCallback;
public GeneratedDownloadByMethodIconColumn(IModel<String> header,
String enabledIconResource, String disabledIconResource, TableButtonCallback buttonCallback) {
super(header, enabledIconResource, disabledIconResource);
this.buttonCallback = buttonCallback;
}
@Override
protected IModel<File> fileModel(final IModel<T> rowModel) {
return new LoadableDetachableModel<File>() {
private static final long serialVersionUID = 1L;
@Override
protected File load() {
return buttonCallback.onDownloadMethod(rowModel);
}
};
}
@Override
protected boolean isEnabled(IModel<T> model) {
return buttonCallback.isEnabled(model.getObject());
}
@Override
protected String getTooltip(IModel<T> model) {
return buttonCallback.getTooltip(model.getObject());
}
@Override
protected String getIconResourceName(IModel<T> model, Component c) {
return buttonCallback.getIconResourceName(model.getObject());
}
};