// Update the number of peers and the peers window. void update(int peers) { if (window != null && this.peers != peers) { this.peers = peers; peersLabel.setText(String.valueOf(peers)); } peersWindow.update(); }
// Creates and returns the top level Widget private Widget create() { // Name of the file we are sharing HBox nameBox = new HBox(false, 6); Label name = new Label("Name:"); name.setJustification(Justification.RIGHT); name.setAlignment(0d, 0.5d); Label file = new Label(Snark.meta.getName()); file.setJustification(Justification.LEFT); file.setAlignment(0d, 0.5d); nameBox.packStart(name); nameBox.packEnd(file); // Torrent that we are sharing HBox torrentBox = new HBox(false, 6); Label torrent = new Label("Torrent:"); torrent.setJustification(Justification.RIGHT); torrent.setAlignment(0d, 0.5d); Label torrentName = new Label(Snark.torrent); torrentName.setJustification(Justification.LEFT); torrentName.setAlignment(0d, 0.5d); torrentBox.packStart(torrent); torrentBox.packEnd(torrentName); // Tracker that we are using HBox trackerBox = new HBox(false, 6); Label tracker = new Label("Tracker:"); tracker.setJustification(Justification.RIGHT); tracker.setAlignment(0d, 0.5d); Label trackerName = new Label(Snark.meta.getAnnounce()); trackerName.setJustification(Justification.LEFT); trackerName.setAlignment(0d, 0.5d); trackerBox.packStart(tracker); trackerBox.packEnd(trackerName); // Pieces HBox piecesBox = new HBox(false, 6); Label pieces = new Label("Pieces:"); pieces.setJustification(Justification.RIGHT); pieces.setAlignment(0d, 0.5d); Label piecesTotal = new Label(String.valueOf(Snark.meta.getPieces())); piecesTotal.setJustification(Justification.LEFT); piecesTotal.setAlignment(0d, 0.5d); piecesBox.packStart(pieces); piecesBox.packEnd(piecesTotal); // Piece size HBox sizeBox = new HBox(false, 6); Label size = new Label("Piece size:"); size.setJustification(Justification.RIGHT); size.setAlignment(0d, 0.5d); String sizeString = Snark.meta.getPieceLength(0) / 1024 + " KB"; Label psize = new Label(sizeString); psize.setJustification(Justification.LEFT); psize.setAlignment(0d, 0.5d); sizeBox.packStart(size); sizeBox.packEnd(psize); // Total length HBox totalBox = new HBox(false, 6); Label length = new Label("Total size:"); length.setJustification(Justification.RIGHT); length.setAlignment(0d, 0.5d); String totalString = Snark.meta.getTotalLength() / (1024 * 1024) + " MB"; Label total = new Label(totalString); total.setJustification(Justification.LEFT); total.setAlignment(0d, 0.5d); totalBox.packStart(length); totalBox.packEnd(total); // Peers HBox peersBox = new HBox(false, 6); Label peers = new Label("Peers:"); peers.setJustification(Justification.RIGHT); peers.setAlignment(0d, 0.5d); peersLabel = new Label(""); peersLabel.setJustification(Justification.LEFT); peersLabel.setAlignment(0d, 0.5d); peersBox.packStart(peers); peersBox.packEnd(peersLabel); // Buttons HBox buttonBox = new HBox(false, 6); closeButton = new Button(GtkStockItem.CLOSE); closeButton.addListener((ButtonListener) this); buttonBox.packEnd(closeButton, false, false, 0); peersButton = new Button("Peers...", false); peersButton.addListener((ButtonListener) this); buttonBox.packStart(peersButton, false, false, 0); // Group labels to get the same sizes. SizeGroup labelGroup = new SizeGroup(SizeGroupMode.HORIZONTAL); labelGroup.addWidget(name); labelGroup.addWidget(torrent); labelGroup.addWidget(tracker); labelGroup.addWidget(pieces); labelGroup.addWidget(size); labelGroup.addWidget(length); labelGroup.addWidget(peers); // Group values to get the same sizes. SizeGroup valueGroup = new SizeGroup(SizeGroupMode.HORIZONTAL); valueGroup.addWidget(file); valueGroup.addWidget(torrentName); valueGroup.addWidget(trackerName); valueGroup.addWidget(psize); valueGroup.addWidget(total); valueGroup.addWidget(piecesTotal); valueGroup.addWidget(peersLabel); // Put it all together VBox infoBox = new VBox(true, 6); infoBox.setBorderWidth(12); infoBox.packStart(nameBox, false, false, 0); infoBox.packStart(torrentBox, false, false, 0); infoBox.packStart(trackerBox, false, false, 0); infoBox.packStart(piecesBox, false, false, 0); infoBox.packStart(sizeBox, false, false, 0); infoBox.packStart(totalBox, false, false, 0); infoBox.packStart(peersBox, false, false, 0); infoBox.packStart(buttonBox, false, false, 0); return infoBox; }