package org.limewire.ui.swing.upload;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import net.miginfocom.swing.MigLayout;
import org.jdesktop.swingx.JXButton;
import org.jdesktop.swingx.JXLabel;
import org.jdesktop.swingx.JXPanel;
import org.limewire.core.api.upload.UploadListManager;
import org.limewire.lifecycle.ServiceRegistry;
import org.limewire.ui.swing.components.HeaderBar;
import org.limewire.ui.swing.components.decorators.ButtonDecorator;
import org.limewire.ui.swing.components.decorators.HeaderBarDecorator;
import org.limewire.ui.swing.painter.TextShadowPainter;
import org.limewire.ui.swing.upload.table.UploadTable;
import org.limewire.ui.swing.util.I18n;
import com.google.inject.Inject;
public class UploadPanel extends JXPanel{
private JXButton clearAllButton;
private HeaderBar header;
private HeaderBarDecorator headerBarDecorator;
private final Action clearAction = new AbstractAction(I18n.tr("Clear Finished")) {
@Override
public void actionPerformed(ActionEvent e) {
clearFinished();
}
};
private final ButtonDecorator buttonDecorator;
private final UploadListManager listManager;
@Inject
public UploadPanel(UploadTable uploadTable, HeaderBarDecorator headerBarFactory,
ButtonDecorator buttonDecorator, UploadListManager uploadListManager){
super(new BorderLayout());
this.listManager = uploadListManager;
this.buttonDecorator = buttonDecorator;
this.headerBarDecorator = headerBarFactory;
uploadTable.setTableHeader(null);
initHeader();
JScrollPane scrollPane = new JScrollPane(uploadTable);
scrollPane.setBorder(BorderFactory.createEmptyBorder());
add(header, BorderLayout.NORTH);
add(scrollPane, BorderLayout.CENTER);
}
/**
* Start the (polling) upload monitor.
* <p>
* Note: this only make sense if this panel is created on demand.
*/
@Inject
public void register(ServiceRegistry serviceRegister) {
serviceRegister.start(listManager);
}
private void clearFinished() {
listManager.clearFinished();
}
private void initHeader() {
JPanel headerTitlePanel = new JPanel(new MigLayout("insets 0, gap 0, fill, aligny center"));
headerTitlePanel.setOpaque(false);
JXLabel titleTextLabel = new JXLabel(I18n.tr("Uploads"));
titleTextLabel.setForegroundPainter(new TextShadowPainter());
headerTitlePanel.add(titleTextLabel, "gapbottom 2");
header = new HeaderBar(headerTitlePanel);
header.linkTextComponent(titleTextLabel);
headerBarDecorator.decorateBasic(header);
clearAllButton = new JXButton(clearAction);
buttonDecorator.decorateDarkFullButton(clearAllButton);
header.setLayout(new MigLayout("insets 0, fillx, filly","push[][]"));
header.add(clearAllButton, "gapafter 10");
}
}