package com.dgex.offspring.application.ui.peers; import nxt.peer.Peer; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.swt.graphics.Image; import com.dgex.offspring.config.Formatter; import com.dgex.offspring.config.Images; public class PeerLabelProvider extends ColumnLabelProvider { private static final String EMPTY_STRING = ""; private final int peerType; private static final Image CONNECTED = Images.getImage("connected.png"); private static final Image WELLKNOWN_PEER = Images.getImage("user_suit.png"); private static final Image ANNOUNCED_PEER = Images.getImage("user.png"); private static final Image HALLMARK = Images.getImage("shield.png"); private static final Image NO_HALLMARK = Images.getImage("shield_delete.png"); public PeerLabelProvider(int peerType) { this.peerType = peerType; } @Override public void update(ViewerCell cell) { super.update(cell); Peer p = (Peer) cell.getElement(); switch (PeerTable.getColumns(peerType)[cell.getColumnIndex()]) { case PeerTable.COLUMN_HALLMARK_BUTTON: if (p.getHallmark() == null) { cell.setImage(NO_HALLMARK); } else { cell.setImage(HALLMARK); } cell.setText(EMPTY_STRING); break; case PeerTable.COLUMN_DISCONNECTED: if (p.getState() != Peer.State.DISCONNECTED && p.getState() != Peer.State.NON_CONNECTED) { cell.setImage(CONNECTED); } cell.setText(EMPTY_STRING); break; case PeerTable.COLUMN_WELLKNOWN: if (p.isWellKnown()) { cell.setImage(WELLKNOWN_PEER); } else { cell.setImage(ANNOUNCED_PEER); } cell.setText(EMPTY_STRING); break; case PeerTable.COLUMN_ANNOUNCED_ADDRESS: if (p.isWellKnown()) { cell.setImage(WELLKNOWN_PEER); } else { cell.setImage(ANNOUNCED_PEER); } cell.setText(p.getAnnouncedAddress()); break; case PeerTable.COLUMN_ADDRESS: if (p.isWellKnown()) { cell.setImage(WELLKNOWN_PEER); } else { cell.setImage(ANNOUNCED_PEER); } cell.setText(p.getPeerAddress()); break; case PeerTable.COLUMN_WEIGHT: cell.setText(Integer.toString(p.getWeight())); break; case PeerTable.COLUMN_SOFTWARE: cell.setText(p.getSoftware()); break; case PeerTable.COLUMN_DOWNLOADED: cell.setText(Formatter.readableFileSize(p.getDownloadedVolume())); break; case PeerTable.COLUMN_UPLOADED: cell.setText(Formatter.readableFileSize(p.getUploadedVolume())); break; default: cell.setText("UNKNOWN " + PeerTable.getColumns(peerType)[cell.getColumnIndex()]); } } }