copy non-xpub value

This commit is contained in:
Craig Raw 2020-09-25 17:48:24 +02:00
parent d5a26fdf5d
commit dc8a8dd857

View file

@ -24,7 +24,8 @@ import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.Clipboard;
import javafx.scene.input.ClipboardContent;
import javafx.scene.layout.StackPane;
import org.controlsfx.glyphfont.Glyph;
import org.controlsfx.validation.ValidationResult;
@ -98,7 +99,7 @@ public class KeystoreController extends WalletFormController implements Initiali
if(keystore.getExtendedPublicKey() != null) {
xpub.setText(keystore.getExtendedPublicKey().toString());
setXpubTooltip(keystore.getExtendedPublicKey());
setXpubContext(keystore.getExtendedPublicKey());
}
if(keystore.getKeyDerivation() != null) {
@ -125,23 +126,47 @@ public class KeystoreController extends WalletFormController implements Initiali
xpub.textProperty().addListener((observable, oldValue, newValue) -> {
if(ExtendedKey.isValid(newValue)) {
ExtendedKey extendedKey = ExtendedKey.fromDescriptor(newValue);
setXpubTooltip(extendedKey);
setXpubContext(extendedKey);
keystore.setExtendedPublicKey(extendedKey);
EventManager.get().post(new SettingsChangedEvent(walletForm.getWallet(), SettingsChangedEvent.Type.KEYSTORE_XPUB));
} else {
xpub.setTooltip(null);
xpub.setContextMenu(null);
}
});
}
private void setXpubTooltip(ExtendedKey extendedKey) {
private void setXpubContext(ExtendedKey extendedKey) {
ContextMenu contextMenu = new ContextMenu();
MenuItem copyXPub = new MenuItem("Copy xPub");
copyXPub.setOnAction(AE -> {
contextMenu.hide();
ClipboardContent content = new ClipboardContent();
content.putString(extendedKey.toString());
Clipboard.getSystemClipboard().setContent(content);
});
contextMenu.getItems().add(copyXPub);
ExtendedKey.Header header = ExtendedKey.Header.fromScriptType(walletForm.getWallet().getScriptType(), false);
if(header != ExtendedKey.Header.xpub) {
Tooltip tooltip = new Tooltip(extendedKey.getExtendedKey(header));
String otherPub = extendedKey.getExtendedKey(header);
MenuItem copyOtherPub = new MenuItem("Copy " + header.getName().replace('p', 'P'));
copyOtherPub.setOnAction(AE -> {
contextMenu.hide();
ClipboardContent content = new ClipboardContent();
content.putString(otherPub);
Clipboard.getSystemClipboard().setContent(content);
});
contextMenu.getItems().add(copyOtherPub);
Tooltip tooltip = new Tooltip(otherPub);
xpub.setTooltip(tooltip);
} else {
xpub.setTooltip(null);
}
xpub.setContextMenu(contextMenu);
}
public void selectSource(ActionEvent event) {
@ -309,7 +334,7 @@ public class KeystoreController extends WalletFormController implements Initiali
derivation.setText(derivationPath);
}
if(keystore.getExtendedPublicKey() != null) {
setXpubTooltip(keystore.getExtendedPublicKey());
setXpubContext(keystore.getExtendedPublicKey());
}
}
}