package org.limewire.ui.swing.downloads.table.renderer;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.EventObject;
import javax.swing.JTable;
import org.limewire.core.api.download.DownloadItem;
import org.limewire.ui.swing.downloads.table.DownloadActionHandler;
import org.limewire.ui.swing.table.TableRendererEditor;
import com.google.inject.Inject;
public class DownloadButtonRendererEditor extends TableRendererEditor{
private DownloadButtonPanel buttonPanel;
private DownloadItem item;
@Inject
public DownloadButtonRendererEditor(){
buttonPanel = new DownloadButtonPanel();
setLayout(new BorderLayout());
add(buttonPanel);
}
@Inject
public void setActionHandler(final DownloadActionHandler actionHandler) {
buttonPanel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
actionHandler.performAction(e.getActionCommand(), item);
cancelCellEditing();
}
});
}
@Override
protected Component doTableCellEditorComponent(JTable table, Object value, boolean isSelected,
int row, int column) {
if(value instanceof DownloadItem) {
item =(DownloadItem)value;
buttonPanel.updateButtons(item);
return this;
} else {
return emptyPanel;
}
}
@Override
protected Component doTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if(value instanceof DownloadItem) {
buttonPanel.updateButtons(((DownloadItem)value));
return this;
} else {
return emptyPanel;
}
}
@Override
public final boolean shouldSelectCell(EventObject e) {
return true;
}
}