package org.openslx.dozmod.gui.activity; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import org.openslx.bwlp.thrift.iface.TransferState; import org.openslx.dozmod.filetransfer.DownloadTask; import org.openslx.dozmod.filetransfer.TransferEvent; import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.helper.I18n; import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.gui.helper.QuitNotification; import org.openslx.dozmod.util.DesktopEnvironment; public class DownloadPanel extends TransferPanel implements ActionListener, QuitNotification { /** * Version for serialization. */ private static final long serialVersionUID = 6268433650243063898L; private final DownloadPanel panel = this; private final DownloadTask download; private final JButton btnOpenFolder; public DownloadPanel(String displayName, String diskFile, DownloadTask download) { super(download, displayName, diskFile); btnOpenFolder = new JButton(I18n.ACTIVITY.getString("DownloadPanel.Button.openFolder.text")); btnOpenFolder.setEnabled(false); header.add(btnOpenFolder, 6); btnOpenFolder.addActionListener(this); btnClose.addActionListener(this); this.download = download; download.addListener(this); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == btnClose) { if (!download.isCanceled()) { if (!Gui.showMessageBox(panel, I18n.ACTIVITY.getString("DownloadPanel.Message.yesNo.cancelTransfer"), MessageType.QUESTION_YESNO, null, null)) return; download.cancel(); } download.removeListener(panel); close(); } else if (e.getSource() == btnOpenFolder) { DesktopEnvironment.openLocal(download.getFile().getAbsoluteFile().getParentFile()); } } @Override public void update(final TransferEvent event) { // NOTE: the update needs to be done in this order // first enable button than update super class, // else we will trap in a dead lock. if (event.state == TransferState.FINISHED) { btnOpenFolder.setEnabled(true); } super.update(event); } @Override public void onApplicationQuit() { download.cancel(); } @Override protected void releaseResources() { // NOOP } }