package org.limewire.ui.swing.properties;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import net.miginfocom.swing.MigLayout;
import org.jdesktop.application.Resource;
import org.limewire.bittorrent.Torrent;
import org.limewire.bittorrent.TorrentFileEntry;
import org.limewire.ui.swing.util.GuiUtils;
import org.limewire.ui.swing.util.I18n;
/**
* An overview panel when only a Torrent is available.
*/
class FileInfoBittorrentOverviewPanel implements FileInfoPanel {
@Resource private Font smallFont;
@Resource private Font smallBoldFont;
private final JPanel component;
private final Torrent torrent;
public FileInfoBittorrentOverviewPanel(Torrent torrent) {
this.torrent = torrent;
GuiUtils.assignResources(this);
component = new JPanel(new MigLayout("fillx, insets 10 3 10 10"));
init();
}
@Override
public JComponent getComponent() {
return component;
}
@Override
public boolean hasChanged() {
return false;
}
@Override
public void save() {
//component never changes state
}
@Override
public void unregisterListeners() {
//no listeners registered
}
private void init() {
component.setOpaque(false);
component.add(createLabelField(torrent.getName()), "growx, span, wrap");
long totalSize = 0;
for(TorrentFileEntry entry : torrent.getTorrentFileEntries()) {
totalSize += entry.getSize();
}
component.add(createLabel(I18n.tr("Size:")), "split 2");
component.add(createLabelField(GuiUtils.toUnitbytes(totalSize) + " (" + GuiUtils.toBytes(totalSize) + ")"), "growx, wrap");
component.add(createLabel(I18n.tr("# files:")), "split 2");
component.add(createLabelField(Integer.toString(torrent.getTorrentFileEntries().size())), "growx, wrap");
}
private JLabel createLabel(String text) {
JLabel label = new JLabel(text);
label.setFont(smallBoldFont);
return label;
}
private JTextField createLabelField(String text) {
JTextField field = new JTextField(text);
field.setCaretPosition(0);
field.setEditable(false);
field.setOpaque(false);
field.setFont(smallFont);
field.setBorder(BorderFactory.createEmptyBorder(0,1,0,1));
return field;
}
}