Search in sources :

Example 1 with HyperlinkLabel

use of org.controlsfx.control.HyperlinkLabel in project sparrow by sparrowwallet.

the class AppServices method showAlertDialog.

public static Optional<ButtonType> showAlertDialog(String title, String content, Alert.AlertType alertType, Node graphic, ButtonType... buttons) {
    Alert alert = new Alert(alertType, content, buttons);
    setStageIcon(alert.getDialogPane().getScene().getWindow());
    alert.getDialogPane().getScene().getStylesheets().add(AppServices.class.getResource("general.css").toExternalForm());
    alert.setTitle(title);
    alert.setHeaderText(title);
    if (graphic != null) {
        alert.setGraphic(graphic);
    }
    Pattern linkPattern = Pattern.compile("\\[(http.+)]");
    Matcher matcher = linkPattern.matcher(content);
    if (matcher.find()) {
        String link = matcher.group(1);
        HyperlinkLabel hyperlinkLabel = new HyperlinkLabel(content);
        hyperlinkLabel.setMaxWidth(Double.MAX_VALUE);
        hyperlinkLabel.setMaxHeight(Double.MAX_VALUE);
        hyperlinkLabel.getStyleClass().add("content");
        Label label = new Label();
        hyperlinkLabel.setPrefWidth(Math.max(360, TextUtils.computeTextWidth(label.getFont(), link, 0.0D) + 50));
        hyperlinkLabel.setOnAction(event -> {
            alert.close();
            get().getApplication().getHostServices().showDocument(link);
        });
        alert.getDialogPane().setContent(hyperlinkLabel);
    }
    String[] lines = content.split("\r\n|\r|\n");
    if (lines.length > 3 || org.controlsfx.tools.Platform.getCurrent() == org.controlsfx.tools.Platform.WINDOWS) {
        double numLines = Arrays.stream(lines).mapToDouble(line -> Math.ceil(TextUtils.computeTextWidth(Font.getDefault(), line, 0) / 300)).sum();
        alert.getDialogPane().setPrefHeight(200 + numLines * 20);
    }
    moveToActiveWindowScreen(alert);
    return alert.showAndWait();
}
Also used : Wallet(com.sparrowwallet.drongo.wallet.Wallet) javafx.scene.control(javafx.scene.control) LoggerFactory(org.slf4j.LoggerFactory) Parent(javafx.scene.Parent) Task(javafx.concurrent.Task) java.net(java.net) Matcher(java.util.regex.Matcher) SorobanServices(com.sparrowwallet.sparrow.soroban.SorobanServices) TrayManager(com.sparrowwallet.sparrow.control.TrayManager) com.sparrowwallet.sparrow.net(com.sparrowwallet.sparrow.net) ScheduledService(javafx.concurrent.ScheduledService) Font(javafx.scene.text.Font) Screen(javafx.stage.Screen) KeyEvent(java.awt.event.KeyEvent) Tor(org.berndpruenster.netlayer.tor.Tor) Collectors(java.util.stream.Collectors) KeystoreSource(com.sparrowwallet.drongo.wallet.KeystoreSource) ZoneId(java.time.ZoneId) BitcoinURI(com.sparrowwallet.drongo.uri.BitcoinURI) Platform(javafx.application.Platform) BooleanProperty(javafx.beans.property.BooleanProperty) Duration(javafx.util.Duration) List(java.util.List) Network(com.sparrowwallet.drongo.Network) Pattern(java.util.regex.Pattern) ScriptType(com.sparrowwallet.drongo.protocol.ScriptType) Address(com.sparrowwallet.drongo.address.Address) BlockHeader(com.sparrowwallet.drongo.protocol.BlockHeader) Worker(javafx.concurrent.Worker) Scene(javafx.scene.Scene) java.util(java.util) LocalDateTime(java.time.LocalDateTime) TextUtils(com.sparrowwallet.sparrow.control.TextUtils) FXMLLoader(javafx.fxml.FXMLLoader) HyperlinkLabel(org.controlsfx.control.HyperlinkLabel) Subscribe(com.google.common.eventbus.Subscribe) Transaction(com.sparrowwallet.drongo.protocol.Transaction) KeyCode(javafx.scene.input.KeyCode) PayNymService(com.sparrowwallet.sparrow.paynym.PayNymService) Dialog(javafx.scene.control.Dialog) Label(javafx.scene.control.Label) Logger(org.slf4j.Logger) PSBT(com.sparrowwallet.drongo.psbt.PSBT) BlockTransactionHashIndex(com.sparrowwallet.drongo.wallet.BlockTransactionHashIndex) OpenFilesHandler(java.awt.desktop.OpenFilesHandler) Node(javafx.scene.Node) com.sparrowwallet.sparrow.event(com.sparrowwallet.sparrow.event) IOException(java.io.IOException) WhirlpoolServices(com.sparrowwallet.sparrow.whirlpool.WhirlpoolServices) HostAndPort(com.google.common.net.HostAndPort) File(java.io.File) OpenURIHandler(java.awt.desktop.OpenURIHandler) java.awt(java.awt) SimpleBooleanProperty(javafx.beans.property.SimpleBooleanProperty) ChronoUnit(java.time.temporal.ChronoUnit) Stage(javafx.stage.Stage) com.sparrowwallet.sparrow.io(com.sparrowwallet.sparrow.io) ImageView(javafx.scene.image.ImageView) ObservableValue(javafx.beans.value.ObservableValue) Window(javafx.stage.Window) WalletTransaction(com.sparrowwallet.drongo.wallet.WalletTransaction) ChangeListener(javafx.beans.value.ChangeListener) Image(javafx.scene.image.Image) Pattern(java.util.regex.Pattern) Matcher(java.util.regex.Matcher) HyperlinkLabel(org.controlsfx.control.HyperlinkLabel) Label(javafx.scene.control.Label) HyperlinkLabel(org.controlsfx.control.HyperlinkLabel)

Example 2 with HyperlinkLabel

use of org.controlsfx.control.HyperlinkLabel in project controlsfx by controlsfx.

the class HelloHyperlinkLabel method getPanel.

@Override
public Node getPanel(Stage stage) {
    VBox root = new VBox(20);
    root.setPadding(new Insets(30, 30, 30, 30));
    final TextField textToShowField = new TextField();
    textToShowField.setMaxWidth(Double.MAX_VALUE);
    textToShowField.setPromptText("Type text in here to display - use [] to indicate a hyperlink - e.g. [hello]");
    root.getChildren().add(textToShowField);
    final TextField selectedLinkField = new TextField();
    selectedLinkField.setMaxWidth(Double.MAX_VALUE);
    selectedLinkField.setEditable(false);
    selectedLinkField.setPromptText("Click a link - I'll show you which one you clicked :-)");
    root.getChildren().add(selectedLinkField);
    label = new HyperlinkLabel();
    label.textProperty().bind(new StringBinding() {

        {
            bind(textToShowField.textProperty());
        }

        @Override
        protected String computeValue() {
            final String str = textToShowField.getText();
            if (str == null || str.isEmpty()) {
                return "Hello [world]! I [wonder] what hyperlink [you] [will] [click]";
            }
            return str;
        }
    });
    label.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
            Hyperlink link = (Hyperlink) event.getSource();
            final String str = link == null ? "" : "You clicked on '" + link.getText() + "'";
            selectedLinkField.setText(str);
        }
    });
    root.getChildren().add(label);
    return root;
}
Also used : Insets(javafx.geometry.Insets) StringBinding(javafx.beans.binding.StringBinding) ActionEvent(javafx.event.ActionEvent) TextField(javafx.scene.control.TextField) VBox(javafx.scene.layout.VBox) HyperlinkLabel(org.controlsfx.control.HyperlinkLabel) Hyperlink(javafx.scene.control.Hyperlink)

Aggregations

Subscribe (com.google.common.eventbus.Subscribe)1 HostAndPort (com.google.common.net.HostAndPort)1 Network (com.sparrowwallet.drongo.Network)1 Address (com.sparrowwallet.drongo.address.Address)1 BlockHeader (com.sparrowwallet.drongo.protocol.BlockHeader)1 ScriptType (com.sparrowwallet.drongo.protocol.ScriptType)1 Transaction (com.sparrowwallet.drongo.protocol.Transaction)1 PSBT (com.sparrowwallet.drongo.psbt.PSBT)1 BitcoinURI (com.sparrowwallet.drongo.uri.BitcoinURI)1 BlockTransactionHashIndex (com.sparrowwallet.drongo.wallet.BlockTransactionHashIndex)1 KeystoreSource (com.sparrowwallet.drongo.wallet.KeystoreSource)1 Wallet (com.sparrowwallet.drongo.wallet.Wallet)1 WalletTransaction (com.sparrowwallet.drongo.wallet.WalletTransaction)1 TextUtils (com.sparrowwallet.sparrow.control.TextUtils)1 TrayManager (com.sparrowwallet.sparrow.control.TrayManager)1 com.sparrowwallet.sparrow.event (com.sparrowwallet.sparrow.event)1 com.sparrowwallet.sparrow.io (com.sparrowwallet.sparrow.io)1 com.sparrowwallet.sparrow.net (com.sparrowwallet.sparrow.net)1 PayNymService (com.sparrowwallet.sparrow.paynym.PayNymService)1 SorobanServices (com.sparrowwallet.sparrow.soroban.SorobanServices)1