package lighthouse.subwindows;
import javafx.application.*;
import javafx.event.*;
import javafx.fxml.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import lighthouse.*;
import lighthouse.protocol.*;
import org.bitcoinj.core.*;
import org.bitcoinj.script.*;
import java.net.*;
import java.time.*;
import java.time.format.*;
import static lighthouse.utils.I18nUtil.*;
/**
* Window that shows protobuf fields like auth key, target addresses etc. Useful when the crowdfund is going to a well
* known address, as users can check the project file is legit, and also for project author signing messages.
*/
public class ProjectTechDetailsWindow {
@FXML VBox targetAddressVBox;
@FXML TextField serverURL;
@FXML TextField minPledgeSize;
@FXML TextField authKey;
@FXML TextField netParams;
@FXML TextField creationTime;
public Main.OverlayUI<ProjectTechDetailsWindow> overlayUI;
private void initFromProject(Project project) {
for (TransactionOutput output : project.getOutputs()) {
Script script = output.getScriptPubKey();
String text;
if (script.isSentToAddress() || script.isPayToScriptHash())
text = script.getToAddress(project.getParams()).toString();
else if (script.isSentToMultiSig())
text = "Raw multi-sig";
else
text = "Unrecognised project output type";
TextField tf = new TextField(text);
tf.setEditable(false);
targetAddressVBox.getChildren().add(tf);
}
URI url = project.getPaymentURL();
if (url != null) serverURL.setText(url.toString());
minPledgeSize.setText(project.getMinPledgeAmount().toPlainString());
authKey.setText(ECKey.fromPublicOnly(project.getAuthKey()).toAddress(project.getParams()).toString());
netParams.setText(project.getProtoDetails().getNetwork());
creationTime.setText(Instant.ofEpochSecond(project.getProtoDetails().getTime()).atZone(ZoneId.of("UTC")).format(DateTimeFormatter.RFC_1123_DATE_TIME));
}
public static void open(Project project) {
Main.OverlayUI<ProjectTechDetailsWindow> ui = Main.instance.overlayUI("subwindows/project_tech_details.fxml", tr("Project details"));
ui.controller.initFromProject(project);
}
@FXML
public void closeClicked(ActionEvent event) {
Platform.runLater(overlayUI::done);
}
}