package org.limewire.ui.swing.downloads.table.renderer;
import java.awt.Font;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
import org.limewire.core.api.download.DownloadItem;
import org.limewire.core.api.download.DownloadState;
import org.limewire.core.api.download.DownloadItem.DownloadItemType;
import org.limewire.ui.swing.components.HyperlinkButton;
import org.limewire.ui.swing.downloads.table.DownloadActionHandler;
import org.limewire.ui.swing.transfer.TransferRendererResources;
import org.limewire.ui.swing.util.GuiUtils;
import org.limewire.ui.swing.util.I18n;
/**
* Used by DownloadButtonRendererEditor.
*/
public class DownloadButtonPanel extends JPanel {
private final JButton pauseButton;
private final JButton resumeButton;
private final JButton tryAgainButton;
private final JButton searchAgainButton;
public DownloadButtonPanel() {
this(null);
}
/**
* Create the panel.
*/
public DownloadButtonPanel(ActionListener actionListener) {
super(new MigLayout("insets 0 0 0 0, gap 0, novisualpadding, fill, aligny center"));
GuiUtils.assignResources(this);
setOpaque(false);
Font font = new TransferRendererResources().getFont();
pauseButton = new HyperlinkButton(I18n.tr("Pause"));
pauseButton.setActionCommand(DownloadActionHandler.PAUSE_COMMAND);
pauseButton.addActionListener(actionListener);
pauseButton.setToolTipText(I18n.tr("Pause download"));
pauseButton.setFont(font);
tryAgainButton = new HyperlinkButton(I18n.tr("Try again"));
tryAgainButton.setActionCommand(DownloadActionHandler.TRY_AGAIN_COMMAND);
tryAgainButton.addActionListener(actionListener);
tryAgainButton.setToolTipText(I18n.tr("Try again"));
tryAgainButton.setFont(font);
resumeButton = new HyperlinkButton(I18n.tr("Resume"));;
resumeButton.setActionCommand(DownloadActionHandler.RESUME_COMMAND);
resumeButton.addActionListener(actionListener);
resumeButton.setVisible(false);
resumeButton.setToolTipText(I18n.tr("Resume download"));
resumeButton.setFont(font);
searchAgainButton = new HyperlinkButton(I18n.tr("Search Again"));;
searchAgainButton.setActionCommand(DownloadActionHandler.SEARCH_AGAIN_COMMAND);
searchAgainButton.addActionListener(actionListener);
resumeButton.setVisible(false);
searchAgainButton.setToolTipText(I18n.tr("Search Again"));
searchAgainButton.setFont(font);
add(resumeButton, "hidemode 3");
add(pauseButton, "hidemode 3");
add(tryAgainButton, "hidemode 3");
add(searchAgainButton, "hidemode 3");
}
public void addActionListener(ActionListener actionListener){
pauseButton.addActionListener(actionListener);
resumeButton.addActionListener(actionListener);
tryAgainButton.addActionListener(actionListener);
searchAgainButton.addActionListener(actionListener);
}
public void updateButtons(DownloadItem item) {
if (item.getDownloadItemType() != DownloadItemType.ANTIVIRUS) {
DownloadState state = item.getState();
boolean canTryAgain = item.isTryAgainEnabled();
pauseButton.setVisible(state == DownloadState.DOWNLOADING); //used to be connecting also. keeping consistent with tray
resumeButton.setVisible(state.isResumable());
tryAgainButton.setVisible(state == DownloadState.STALLED && canTryAgain);
searchAgainButton.setVisible(state == DownloadState.STALLED && !canTryAgain);
} else {
// Hide all buttons for anti-virus updates.
pauseButton.setVisible(false);
resumeButton.setVisible(false);
tryAgainButton.setVisible(false);
searchAgainButton.setVisible(false);
}
}
}