mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-06-25 07:10:48 -04:00
Add btc peers to list in UI
This commit is contained in:
parent
67fb7aa825
commit
16baa3ec8d
7 changed files with 69 additions and 40 deletions
|
@ -28,6 +28,7 @@ import io.bitsquare.gui.util.Layout;
|
|||
import io.bitsquare.locale.LanguageUtil;
|
||||
import javafx.beans.property.ReadOnlyObjectWrapper;
|
||||
import javafx.collections.ListChangeListener;
|
||||
import javafx.geometry.HPos;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.geometry.VPos;
|
||||
import javafx.scene.control.*;
|
||||
|
@ -187,6 +188,8 @@ public class ArbitratorSelectionView extends ActivatableViewAndModel<GridPane, A
|
|||
root.getChildren().add(table);
|
||||
|
||||
autoSelectAllMatchingCheckBox = addCheckBox(root, ++gridRow, "Auto select all with matching language");
|
||||
GridPane.setColumnSpan(autoSelectAllMatchingCheckBox, 2);
|
||||
GridPane.setHalignment(autoSelectAllMatchingCheckBox, HPos.LEFT);
|
||||
GridPane.setColumnIndex(autoSelectAllMatchingCheckBox, 0);
|
||||
GridPane.setMargin(autoSelectAllMatchingCheckBox, new Insets(0, -10, 0, -10));
|
||||
autoSelectAllMatchingCheckBox.setOnAction(event -> model.setAutoSelectArbitrators(autoSelectAllMatchingCheckBox.isSelected()));
|
||||
|
|
|
@ -33,24 +33,13 @@
|
|||
|
||||
<TitledGroupBg text="Bitcoin network" GridPane.rowSpan="3"/>
|
||||
|
||||
<Label text="Bitcoin network type:" GridPane.rowIndex="0">
|
||||
<GridPane.margin>
|
||||
<Insets top="10"/>
|
||||
</GridPane.margin>
|
||||
</Label>
|
||||
<TextField fx:id="bitcoinNetwork" GridPane.rowIndex="0" GridPane.columnIndex="1"
|
||||
mouseTransparent="true" focusTraversable="false">
|
||||
<GridPane.margin>
|
||||
<Insets top="10"/>
|
||||
</GridPane.margin>
|
||||
</TextField>
|
||||
<Label text="Select Network:" GridPane.rowIndex="0"/>
|
||||
<ComboBox fx:id="netWorkComboBox" GridPane.rowIndex="0" GridPane.columnIndex="1"/>
|
||||
|
||||
<Label text="Select Network:" GridPane.rowIndex="1"/>
|
||||
<ComboBox fx:id="netWorkComboBox" GridPane.rowIndex="1" GridPane.columnIndex="1"/>
|
||||
<Label fx:id="bitcoinPeersLabel" text="Connected peers:" GridPane.rowIndex="1"/>
|
||||
<TextArea fx:id="bitcoinPeersTextArea" GridPane.rowIndex="1" GridPane.columnIndex="1"
|
||||
editable="false" focusTraversable="false"/>
|
||||
|
||||
<Label text="Bitcoin network connected peers:" GridPane.rowIndex="2"/>
|
||||
<TextField fx:id="connectedPeersBTC" GridPane.rowIndex="2" GridPane.columnIndex="1"
|
||||
mouseTransparent="true" focusTraversable="false"/>
|
||||
|
||||
<TitledGroupBg text="P2P network" GridPane.rowIndex="3" GridPane.rowSpan="5">
|
||||
<padding>
|
||||
|
|
|
@ -42,57 +42,69 @@ import javafx.scene.control.Label;
|
|||
import javafx.scene.control.TextArea;
|
||||
import javafx.scene.control.TextField;
|
||||
import javafx.scene.layout.GridPane;
|
||||
import javafx.util.StringConverter;
|
||||
import org.bitcoinj.core.Peer;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static javafx.beans.binding.Bindings.createStringBinding;
|
||||
|
||||
@FxmlView
|
||||
public class NetworkSettingsView extends ActivatableViewAndModel<GridPane, Activatable> {
|
||||
|
||||
private final String bitcoinNetworkString;
|
||||
private final WalletService walletService;
|
||||
private final Preferences preferences;
|
||||
private BSFormatter formatter;
|
||||
private final P2PService p2PService;
|
||||
|
||||
|
||||
@FXML
|
||||
TextField bitcoinNetwork, onionAddress, connectedPeersBTC;
|
||||
TextField onionAddress;
|
||||
@FXML
|
||||
ComboBox<BitcoinNetwork> netWorkComboBox;
|
||||
@FXML
|
||||
TextArea authenticatedPeersTextArea;
|
||||
TextArea bitcoinPeersTextArea, authenticatedPeersTextArea;
|
||||
@FXML
|
||||
Label authenticatedPeersLabel;
|
||||
Label bitcoinPeersLabel, authenticatedPeersLabel;
|
||||
|
||||
private P2PServiceListener p2PServiceListener;
|
||||
private ChangeListener<Number> numAuthenticatedPeersChangeListener;
|
||||
private ChangeListener<List<Peer>> bitcoinPeersChangeListener;
|
||||
private Set<Address> seedNodeAddresses;
|
||||
|
||||
@Inject
|
||||
public NetworkSettingsView(WalletService walletService, P2PService p2PService, SeedNodesRepository seedNodesRepository, Preferences preferences, BSFormatter
|
||||
formatter) {
|
||||
public NetworkSettingsView(WalletService walletService, P2PService p2PService, Preferences preferences,
|
||||
SeedNodesRepository seedNodesRepository, BSFormatter formatter) {
|
||||
this.walletService = walletService;
|
||||
this.preferences = preferences;
|
||||
BitcoinNetwork bitcoinNetwork = preferences.getBitcoinNetwork();
|
||||
this.bitcoinNetworkString = formatter.formatBitcoinNetwork(bitcoinNetwork);
|
||||
this.p2PService = p2PService;
|
||||
this.preferences = preferences;
|
||||
this.formatter = formatter;
|
||||
BitcoinNetwork bitcoinNetwork = preferences.getBitcoinNetwork();
|
||||
|
||||
boolean useLocalhost = p2PService.getNetworkNode() instanceof LocalhostNetworkNode;
|
||||
this.seedNodeAddresses = seedNodesRepository.geSeedNodeAddresses(useLocalhost, bitcoinNetwork.ordinal());
|
||||
}
|
||||
|
||||
public void initialize() {
|
||||
GridPane.setMargin(bitcoinPeersLabel, new Insets(4, 0, 0, 0));
|
||||
GridPane.setValignment(bitcoinPeersLabel, VPos.TOP);
|
||||
GridPane.setMargin(authenticatedPeersLabel, new Insets(4, 0, 0, 0));
|
||||
GridPane.setValignment(authenticatedPeersLabel, VPos.TOP);
|
||||
bitcoinNetwork.setText(bitcoinNetworkString);
|
||||
connectedPeersBTC.textProperty().bind(createStringBinding(() -> String.valueOf(walletService.numPeersProperty().get()), walletService
|
||||
.numPeersProperty()));
|
||||
|
||||
bitcoinPeersTextArea.setPrefRowCount(12);
|
||||
netWorkComboBox.setItems(FXCollections.observableArrayList(BitcoinNetwork.values()));
|
||||
netWorkComboBox.getSelectionModel().select(preferences.getBitcoinNetwork());
|
||||
netWorkComboBox.setOnAction(e -> onSelectNetwork());
|
||||
netWorkComboBox.setConverter(new StringConverter<BitcoinNetwork>() {
|
||||
@Override
|
||||
public String toString(BitcoinNetwork bitcoinNetwork) {
|
||||
return formatter.formatBitcoinNetwork(bitcoinNetwork);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BitcoinNetwork fromString(String string) {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -131,6 +143,10 @@ public class NetworkSettingsView extends ActivatableViewAndModel<GridPane, Activ
|
|||
onionAddress.setText(address.getFullAddress());
|
||||
}
|
||||
|
||||
bitcoinPeersChangeListener = (observable, oldValue, newValue) -> updateBitcoinPeersTextArea();
|
||||
walletService.connectedPeersProperty().addListener(bitcoinPeersChangeListener);
|
||||
updateBitcoinPeersTextArea();
|
||||
|
||||
numAuthenticatedPeersChangeListener = (observable, oldValue, newValue) -> updateAuthenticatedPeersTextArea();
|
||||
p2PService.getNumAuthenticatedPeers().addListener(numAuthenticatedPeersChangeListener);
|
||||
updateAuthenticatedPeersTextArea();
|
||||
|
@ -140,6 +156,10 @@ public class NetworkSettingsView extends ActivatableViewAndModel<GridPane, Activ
|
|||
public void deactivate() {
|
||||
if (p2PServiceListener != null)
|
||||
p2PService.removeP2PServiceListener(p2PServiceListener);
|
||||
|
||||
if (bitcoinPeersChangeListener != null)
|
||||
walletService.connectedPeersProperty().removeListener(bitcoinPeersChangeListener);
|
||||
|
||||
if (numAuthenticatedPeersChangeListener != null)
|
||||
p2PService.getNumAuthenticatedPeers().removeListener(numAuthenticatedPeersChangeListener);
|
||||
}
|
||||
|
@ -155,6 +175,18 @@ public class NetworkSettingsView extends ActivatableViewAndModel<GridPane, Activ
|
|||
});
|
||||
}
|
||||
|
||||
private void updateBitcoinPeersTextArea() {
|
||||
bitcoinPeersTextArea.clear();
|
||||
List<Peer> peerList = walletService.connectedPeersProperty().get();
|
||||
if (peerList != null) {
|
||||
peerList.stream().forEach(e -> {
|
||||
if (bitcoinPeersTextArea.getText().length() > 0)
|
||||
bitcoinPeersTextArea.appendText("\n");
|
||||
bitcoinPeersTextArea.appendText(e.getAddress().getSocketAddress().toString());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void onSelectNetwork() {
|
||||
if (netWorkComboBox.getSelectionModel().getSelectedItem() != preferences.getBitcoinNetwork()) {
|
||||
if (netWorkComboBox.getSelectionModel().getSelectedItem() == BitcoinNetwork.MAINNET) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue