Search in sources :

Example 1 with BusyAnimation

use of io.bitsquare.gui.components.BusyAnimation in project bitsquare by bitsquare.

the class MainView method createSplashScreen.

private VBox createSplashScreen() {
    VBox vBox = new VBox();
    vBox.setAlignment(Pos.CENTER);
    vBox.setSpacing(0);
    vBox.setId("splash");
    ImageView logo = new ImageView();
    logo.setId("image-splash-logo");
    // createBitcoinInfoBox
    btcSplashInfo = new Label();
    btcSplashInfo.textProperty().bind(model.btcInfo);
    walletServiceErrorMsgListener = (ov, oldValue, newValue) -> {
        btcSplashInfo.setId("splash-error-state-msg");
    };
    model.walletServiceErrorMsg.addListener(walletServiceErrorMsgListener);
    btcSyncIndicator = new ProgressBar();
    btcSyncIndicator.setPrefWidth(120);
    btcSyncIndicator.progressProperty().bind(model.btcSyncProgress);
    ImageView btcSyncIcon = new ImageView();
    btcSyncIcon.setVisible(false);
    btcSyncIcon.setManaged(false);
    btcSyncIconIdListener = (ov, oldValue, newValue) -> {
        btcSyncIcon.setId(newValue);
        btcSyncIcon.setVisible(true);
        btcSyncIcon.setManaged(true);
        btcSyncIndicator.setVisible(false);
        btcSyncIndicator.setManaged(false);
    };
    model.btcSplashSyncIconId.addListener(btcSyncIconIdListener);
    HBox blockchainSyncBox = new HBox();
    blockchainSyncBox.setSpacing(10);
    blockchainSyncBox.setAlignment(Pos.CENTER);
    blockchainSyncBox.setPadding(new Insets(40, 0, 0, 0));
    blockchainSyncBox.setPrefHeight(50);
    blockchainSyncBox.getChildren().addAll(btcSplashInfo, btcSyncIndicator, btcSyncIcon);
    // create P2PNetworkBox
    splashP2PNetworkLabel = new Label();
    splashP2PNetworkLabel.setWrapText(true);
    splashP2PNetworkLabel.setMaxWidth(500);
    splashP2PNetworkLabel.setTextAlignment(TextAlignment.CENTER);
    splashP2PNetworkLabel.textProperty().bind(model.p2PNetworkInfo);
    splashP2PNetworkBusyAnimation = new BusyAnimation();
    splashP2PNetworkErrorMsgListener = (ov, oldValue, newValue) -> {
        if (newValue != null) {
            splashP2PNetworkLabel.setId("splash-error-state-msg");
            splashP2PNetworkBusyAnimation.stop();
        } else if (model.splashP2PNetworkAnimationVisible.get()) {
            splashP2PNetworkBusyAnimation.play();
        }
    };
    model.p2pNetworkWarnMsg.addListener(splashP2PNetworkErrorMsgListener);
    ImageView splashP2PNetworkIcon = new ImageView();
    splashP2PNetworkIcon.setId("image-connection-tor");
    splashP2PNetworkIcon.setVisible(false);
    splashP2PNetworkIcon.setManaged(false);
    HBox.setMargin(splashP2PNetworkIcon, new Insets(0, 0, 5, 0));
    splashP2PNetworkIconIdListener = (ov, oldValue, newValue) -> {
        splashP2PNetworkIcon.setId(newValue);
        splashP2PNetworkIcon.setVisible(true);
        splashP2PNetworkIcon.setManaged(true);
    };
    model.p2PNetworkIconId.addListener(splashP2PNetworkIconIdListener);
    splashP2PNetworkVisibleListener = (ov, oldValue, newValue) -> splashP2PNetworkBusyAnimation.setIsRunning(newValue);
    model.splashP2PNetworkAnimationVisible.addListener(splashP2PNetworkVisibleListener);
    HBox splashP2PNetworkBox = new HBox();
    splashP2PNetworkBox.setSpacing(10);
    splashP2PNetworkBox.setAlignment(Pos.CENTER);
    splashP2PNetworkBox.setPrefHeight(50);
    splashP2PNetworkBox.getChildren().addAll(splashP2PNetworkLabel, splashP2PNetworkBusyAnimation, splashP2PNetworkIcon);
    vBox.getChildren().addAll(logo, blockchainSyncBox, splashP2PNetworkBox);
    return vBox;
}
Also used : Insets(javafx.geometry.Insets) BusyAnimation(io.bitsquare.gui.components.BusyAnimation) ImageView(javafx.scene.image.ImageView)

Example 2 with BusyAnimation

use of io.bitsquare.gui.components.BusyAnimation in project bitsquare by bitsquare.

the class OfferDetailsWindow method addConfirmAndCancelButtons.

private void addConfirmAndCancelButtons(boolean isPlaceOffer) {
    boolean isBuyOffer = offer.getDirection() == Offer.Direction.BUY;
    boolean isBuyerRole = isPlaceOffer ? isBuyOffer : !isBuyOffer;
    String placeOfferButtonText = isBuyerRole ? "Confirm offer to buy bitcoin" : "Confirm offer to sell bitcoin";
    String takeOfferButtonText = isBuyerRole ? "Confirm offer to buy bitcoin" : "Confirm offer to sell bitcoin";
    ImageView iconView = new ImageView();
    iconView.setId(isBuyerRole ? "image-buy-white" : "image-sell-white");
    Tuple3<Button, BusyAnimation, Label> placeOfferTuple = addButtonBusyAnimationLabelAfterGroup(gridPane, ++rowIndex, isPlaceOffer ? placeOfferButtonText : takeOfferButtonText);
    Button button = placeOfferTuple.first;
    button.setMinHeight(40);
    button.setPadding(new Insets(0, 20, 0, 20));
    button.setGraphic(iconView);
    button.setGraphicTextGap(10);
    button.setId(isBuyerRole ? "buy-button-big" : "sell-button-big");
    button.setText(isPlaceOffer ? placeOfferButtonText : takeOfferButtonText);
    busyAnimation = placeOfferTuple.second;
    Label spinnerInfoLabel = placeOfferTuple.third;
    Button cancelButton = addButton(gridPane, ++rowIndex, BSResources.get("shared.cancel"));
    cancelButton.setDefaultButton(false);
    cancelButton.setId("cancel-button");
    cancelButton.setOnAction(e -> {
        closeHandlerOptional.ifPresent(Runnable::run);
        hide();
    });
    button.setOnAction(e -> {
        if (user.getAcceptedArbitrators().size() > 0) {
            button.setDisable(true);
            cancelButton.setDisable(true);
            busyAnimation.play();
            if (isPlaceOffer) {
                spinnerInfoLabel.setText(BSResources.get("createOffer.fundsBox.placeOfferSpinnerInfo"));
                placeOfferHandlerOptional.get().run();
            } else {
                spinnerInfoLabel.setText(BSResources.get("takeOffer.fundsBox.takeOfferSpinnerInfo"));
                takeOfferHandlerOptional.get().run();
            }
        } else {
            new Popup().warning("You have no arbitrator selected.\n" + "Please select at least one arbitrator.").show();
            navigation.navigateTo(MainView.class, AccountView.class, AccountSettingsView.class, ArbitratorSelectionView.class);
        }
    });
}
Also used : BusyAnimation(io.bitsquare.gui.components.BusyAnimation) Insets(javafx.geometry.Insets) Button(javafx.scene.control.Button) Popup(io.bitsquare.gui.main.overlays.popups.Popup) Label(javafx.scene.control.Label) ImageView(javafx.scene.image.ImageView)

Example 3 with BusyAnimation

use of io.bitsquare.gui.components.BusyAnimation in project bitsquare by bitsquare.

the class PasswordView method initialize.

@Override
public void initialize() {
    headline = addTitledGroupBg(root, gridRow, 2, "");
    passwordField = addLabelPasswordTextField(root, gridRow, "Enter password:", Layout.FIRST_ROW_DISTANCE).second;
    passwordField.setValidator(passwordValidator);
    passwordFieldChangeListener = (observable, oldValue, newValue) -> validatePasswords();
    Tuple2<Label, PasswordTextField> tuple2 = addLabelPasswordTextField(root, ++gridRow, "Repeat password:");
    repeatedPasswordLabel = tuple2.first;
    repeatedPasswordField = tuple2.second;
    repeatedPasswordField.setValidator(passwordValidator);
    repeatedPasswordFieldChangeListener = (observable, oldValue, newValue) -> validatePasswords();
    Tuple3<Button, BusyAnimation, Label> tuple = addButtonBusyAnimationLabel(root, ++gridRow, "", 15);
    pwButton = tuple.first;
    BusyAnimation busyAnimation = tuple.second;
    Label deriveStatusLabel = tuple.third;
    pwButton.setDisable(true);
    setText();
    pwButton.setOnAction(e -> {
        String password = passwordField.getText();
        checkArgument(password.length() < 50, "Password must be less then 50 characters.");
        pwButton.setDisable(true);
        deriveStatusLabel.setText("Derive key from password");
        busyAnimation.play();
        KeyCrypterScrypt keyCrypterScrypt;
        Wallet wallet = walletService.getWallet();
        if (wallet.isEncrypted())
            keyCrypterScrypt = (KeyCrypterScrypt) wallet.getKeyCrypter();
        else
            keyCrypterScrypt = ScryptUtil.getKeyCrypterScrypt();
        ScryptUtil.deriveKeyWithScrypt(keyCrypterScrypt, password, aesKey -> {
            deriveStatusLabel.setText("");
            busyAnimation.stop();
            if (wallet.isEncrypted()) {
                if (wallet.checkAESKey(aesKey)) {
                    walletService.decryptWallet(aesKey);
                    tradeWalletService.setAesKey(null);
                    new Popup().feedback("Wallet successfully decrypted and password protection removed.").show();
                    passwordField.setText("");
                    repeatedPasswordField.setText("");
                    walletService.backupWallet();
                } else {
                    pwButton.setDisable(false);
                    new Popup().warning("You entered the wrong password.\n\n" + "Please try entering your password again, carefully checking for typos or spelling errors.").show();
                }
            } else {
                walletService.encryptWallet(keyCrypterScrypt, aesKey);
                tradeWalletService.setAesKey(aesKey);
                new Popup().feedback("Wallet successfully encrypted and password protection enabled.").show();
                passwordField.setText("");
                repeatedPasswordField.setText("");
                walletService.clearBackup();
                walletService.backupWallet();
            }
            setText();
        });
    });
    addTitledGroupBg(root, ++gridRow, 1, "Information", Layout.GROUP_DISTANCE);
    addMultilineLabel(root, gridRow, "With password protection you need to enter your password when" + " withdrawing bitcoin out of your wallet or " + "if you want to view or restore a wallet from seed words as well as at application startup.", Layout.FIRST_ROW_AND_GROUP_DISTANCE);
}
Also used : BusyAnimation(io.bitsquare.gui.components.BusyAnimation) Button(javafx.scene.control.Button) Wallet(org.bitcoinj.core.Wallet) Popup(io.bitsquare.gui.main.overlays.popups.Popup) Label(javafx.scene.control.Label) PasswordTextField(io.bitsquare.gui.components.PasswordTextField) KeyCrypterScrypt(org.bitcoinj.crypto.KeyCrypterScrypt)

Example 4 with BusyAnimation

use of io.bitsquare.gui.components.BusyAnimation in project bitsquare by bitsquare.

the class TraderDisputeView method onSelectDispute.

private void onSelectDispute(Dispute dispute) {
    removeListenersOnSelectDispute();
    if (dispute == null) {
        if (root.getChildren().size() > 2)
            root.getChildren().remove(2);
        selectedDispute = null;
    } else if (selectedDispute != dispute) {
        this.selectedDispute = dispute;
        boolean isTrader = disputeManager.isTrader(selectedDispute);
        tableGroupHeadline = new TableGroupHeadline();
        tableGroupHeadline.setText("Messages");
        AnchorPane.setTopAnchor(tableGroupHeadline, 10d);
        AnchorPane.setRightAnchor(tableGroupHeadline, 0d);
        AnchorPane.setBottomAnchor(tableGroupHeadline, 0d);
        AnchorPane.setLeftAnchor(tableGroupHeadline, 0d);
        disputeCommunicationMessages = selectedDispute.getDisputeCommunicationMessagesAsObservableList();
        SortedList<DisputeCommunicationMessage> sortedList = new SortedList<>(disputeCommunicationMessages);
        sortedList.setComparator((o1, o2) -> o1.getDate().compareTo(o2.getDate()));
        messageListView = new ListView<>(sortedList);
        messageListView.setId("message-list-view");
        messageListView.setMinHeight(150);
        AnchorPane.setTopAnchor(messageListView, 30d);
        AnchorPane.setRightAnchor(messageListView, 0d);
        AnchorPane.setLeftAnchor(messageListView, 0d);
        messagesAnchorPane = new AnchorPane();
        VBox.setVgrow(messagesAnchorPane, Priority.ALWAYS);
        inputTextArea = new TextArea();
        inputTextArea.setPrefHeight(70);
        inputTextArea.setWrapText(true);
        sendButton = new Button("Send");
        sendButton.setDefaultButton(true);
        sendButton.setOnAction(e -> {
            if (p2PService.isBootstrapped()) {
                String text = inputTextArea.getText();
                if (!text.isEmpty())
                    onSendMessage(text, selectedDispute);
            } else {
                new Popup().information("You need to wait until you are fully connected to the network.\n" + "That might take up to about 2 minutes at startup.").show();
            }
        });
        inputTextAreaTextSubscription = EasyBind.subscribe(inputTextArea.textProperty(), t -> sendButton.setDisable(t.isEmpty()));
        Button uploadButton = new Button("Add attachments");
        uploadButton.setOnAction(e -> onRequestUpload());
        sendMsgInfoLabel = new Label();
        sendMsgInfoLabel.setVisible(false);
        sendMsgInfoLabel.setManaged(false);
        sendMsgInfoLabel.setPadding(new Insets(5, 0, 0, 0));
        sendMsgBusyAnimation = new BusyAnimation(false);
        if (!selectedDispute.isClosed()) {
            HBox buttonBox = new HBox();
            buttonBox.setSpacing(10);
            buttonBox.getChildren().addAll(sendButton, uploadButton, sendMsgBusyAnimation, sendMsgInfoLabel);
            if (!isTrader) {
                Button closeDisputeButton = new Button("Close ticket");
                closeDisputeButton.setOnAction(e -> onCloseDispute(selectedDispute));
                closeDisputeButton.setDefaultButton(true);
                Pane spacer = new Pane();
                HBox.setHgrow(spacer, Priority.ALWAYS);
                buttonBox.getChildren().addAll(spacer, closeDisputeButton);
            }
            messagesInputBox = new VBox();
            messagesInputBox.setSpacing(10);
            messagesInputBox.getChildren().addAll(inputTextArea, buttonBox);
            VBox.setVgrow(buttonBox, Priority.ALWAYS);
            AnchorPane.setRightAnchor(messagesInputBox, 0d);
            AnchorPane.setBottomAnchor(messagesInputBox, 5d);
            AnchorPane.setLeftAnchor(messagesInputBox, 0d);
            AnchorPane.setBottomAnchor(messageListView, 120d);
            messagesAnchorPane.getChildren().addAll(tableGroupHeadline, messageListView, messagesInputBox);
        } else {
            AnchorPane.setBottomAnchor(messageListView, 0d);
            messagesAnchorPane.getChildren().addAll(tableGroupHeadline, messageListView);
        }
        messageListView.setCellFactory(new Callback<ListView<DisputeCommunicationMessage>, ListCell<DisputeCommunicationMessage>>() {

            @Override
            public ListCell<DisputeCommunicationMessage> call(ListView<DisputeCommunicationMessage> list) {
                return new ListCell<DisputeCommunicationMessage>() {

                    public ChangeListener<Boolean> sendMsgBusyAnimationListener;

                    final Pane bg = new Pane();

                    final ImageView arrow = new ImageView();

                    final Label headerLabel = new Label();

                    final Label messageLabel = new Label();

                    final Label copyIcon = new Label();

                    final HBox attachmentsBox = new HBox();

                    final AnchorPane messageAnchorPane = new AnchorPane();

                    final Label statusIcon = new Label();

                    final double arrowWidth = 15d;

                    final double attachmentsBoxHeight = 20d;

                    final double border = 10d;

                    final double bottomBorder = 25d;

                    final double padding = border + 10d;

                    final double msgLabelPaddingRight = padding + 20d;

                    {
                        bg.setMinHeight(30);
                        messageLabel.setWrapText(true);
                        headerLabel.setTextAlignment(TextAlignment.CENTER);
                        attachmentsBox.setSpacing(5);
                        statusIcon.setStyle("-fx-font-size: 10;");
                        Tooltip.install(copyIcon, new Tooltip("Copy to clipboard"));
                        messageAnchorPane.getChildren().addAll(bg, arrow, headerLabel, messageLabel, copyIcon, attachmentsBox, statusIcon);
                    }

                    @Override
                    public void updateItem(final DisputeCommunicationMessage item, boolean empty) {
                        super.updateItem(item, empty);
                        if (item != null && !empty) {
                            copyIcon.setOnMouseClicked(e -> Utilities.copyToClipboard(messageLabel.getText()));
                            /* messageAnchorPane.prefWidthProperty().bind(EasyBind.map(messageListView.widthProperty(),
                                        w -> (double) w - padding - GUIUtil.getScrollbarWidth(messageListView)));*/
                            if (!messageAnchorPane.prefWidthProperty().isBound())
                                messageAnchorPane.prefWidthProperty().bind(messageListView.widthProperty().subtract(padding + GUIUtil.getScrollbarWidth(messageListView)));
                            AnchorPane.setTopAnchor(bg, 15d);
                            AnchorPane.setBottomAnchor(bg, bottomBorder);
                            AnchorPane.setTopAnchor(headerLabel, 0d);
                            AnchorPane.setBottomAnchor(arrow, bottomBorder + 5d);
                            AnchorPane.setTopAnchor(messageLabel, 25d);
                            AnchorPane.setTopAnchor(copyIcon, 25d);
                            AnchorPane.setBottomAnchor(attachmentsBox, bottomBorder + 10);
                            boolean senderIsTrader = item.isSenderIsTrader();
                            boolean isMyMsg = isTrader ? senderIsTrader : !senderIsTrader;
                            arrow.setVisible(!item.isSystemMessage());
                            arrow.setManaged(!item.isSystemMessage());
                            statusIcon.setVisible(false);
                            if (item.isSystemMessage()) {
                                headerLabel.setStyle("-fx-text-fill: -bs-green; -fx-font-size: 11;");
                                bg.setId("message-bubble-green");
                                messageLabel.setStyle("-fx-text-fill: white;");
                                copyIcon.setStyle("-fx-text-fill: white;");
                            } else if (isMyMsg) {
                                headerLabel.setStyle("-fx-text-fill: -fx-accent; -fx-font-size: 11;");
                                bg.setId("message-bubble-blue");
                                messageLabel.setStyle("-fx-text-fill: white;");
                                copyIcon.setStyle("-fx-text-fill: white;");
                                if (isTrader)
                                    arrow.setId("bubble_arrow_blue_left");
                                else
                                    arrow.setId("bubble_arrow_blue_right");
                                if (sendMsgBusyAnimationListener != null)
                                    sendMsgBusyAnimation.isRunningProperty().removeListener(sendMsgBusyAnimationListener);
                                sendMsgBusyAnimationListener = (observable, oldValue, newValue) -> {
                                    if (!newValue) {
                                        if (item.arrivedProperty().get())
                                            showArrivedIcon();
                                        else if (item.storedInMailboxProperty().get())
                                            showMailboxIcon();
                                    }
                                };
                                sendMsgBusyAnimation.isRunningProperty().addListener(sendMsgBusyAnimationListener);
                                if (item.arrivedProperty().get())
                                    showArrivedIcon();
                                else if (item.storedInMailboxProperty().get())
                                    showMailboxIcon();
                            //TODO show that icon on error
                            /*else if (sendMsgProgressIndicator.getProgress() == 0)
                                        showNotArrivedIcon();*/
                            } else {
                                headerLabel.setStyle("-fx-text-fill: -bs-light-grey; -fx-font-size: 11;");
                                bg.setId("message-bubble-grey");
                                messageLabel.setStyle("-fx-text-fill: black;");
                                copyIcon.setStyle("-fx-text-fill: black;");
                                if (isTrader)
                                    arrow.setId("bubble_arrow_grey_right");
                                else
                                    arrow.setId("bubble_arrow_grey_left");
                            }
                            if (item.isSystemMessage()) {
                                AnchorPane.setLeftAnchor(headerLabel, padding);
                                AnchorPane.setRightAnchor(headerLabel, padding);
                                AnchorPane.setLeftAnchor(bg, border);
                                AnchorPane.setRightAnchor(bg, border);
                                AnchorPane.setLeftAnchor(messageLabel, padding);
                                AnchorPane.setRightAnchor(messageLabel, msgLabelPaddingRight);
                                AnchorPane.setRightAnchor(copyIcon, padding);
                                AnchorPane.setLeftAnchor(attachmentsBox, padding);
                                AnchorPane.setRightAnchor(attachmentsBox, padding);
                            } else if (senderIsTrader) {
                                AnchorPane.setLeftAnchor(headerLabel, padding + arrowWidth);
                                AnchorPane.setLeftAnchor(bg, border + arrowWidth);
                                AnchorPane.setRightAnchor(bg, border);
                                AnchorPane.setLeftAnchor(arrow, border);
                                AnchorPane.setLeftAnchor(messageLabel, padding + arrowWidth);
                                AnchorPane.setRightAnchor(messageLabel, msgLabelPaddingRight);
                                AnchorPane.setRightAnchor(copyIcon, padding);
                                AnchorPane.setLeftAnchor(attachmentsBox, padding + arrowWidth);
                                AnchorPane.setRightAnchor(attachmentsBox, padding);
                                AnchorPane.setRightAnchor(statusIcon, padding);
                            } else {
                                AnchorPane.setRightAnchor(headerLabel, padding + arrowWidth);
                                AnchorPane.setLeftAnchor(bg, border);
                                AnchorPane.setRightAnchor(bg, border + arrowWidth);
                                AnchorPane.setRightAnchor(arrow, border);
                                AnchorPane.setLeftAnchor(messageLabel, padding);
                                AnchorPane.setRightAnchor(messageLabel, msgLabelPaddingRight + arrowWidth);
                                AnchorPane.setRightAnchor(copyIcon, padding + arrowWidth);
                                AnchorPane.setLeftAnchor(attachmentsBox, padding);
                                AnchorPane.setRightAnchor(attachmentsBox, padding + arrowWidth);
                                AnchorPane.setLeftAnchor(statusIcon, padding);
                            }
                            AnchorPane.setBottomAnchor(statusIcon, 7d);
                            headerLabel.setText(formatter.formatDateTime(item.getDate()));
                            messageLabel.setText(item.getMessage());
                            attachmentsBox.getChildren().clear();
                            if (item.getAttachments().size() > 0) {
                                AnchorPane.setBottomAnchor(messageLabel, bottomBorder + attachmentsBoxHeight + 10);
                                attachmentsBox.getChildren().add(new Label("Attachments: ") {

                                    {
                                        setPadding(new Insets(0, 0, 3, 0));
                                        if (isMyMsg)
                                            setStyle("-fx-text-fill: white;");
                                        else
                                            setStyle("-fx-text-fill: black;");
                                    }
                                });
                                item.getAttachments().stream().forEach(attachment -> {
                                    final Label icon = new Label();
                                    setPadding(new Insets(0, 0, 3, 0));
                                    if (isMyMsg)
                                        icon.getStyleClass().add("attachment-icon");
                                    else
                                        icon.getStyleClass().add("attachment-icon-black");
                                    AwesomeDude.setIcon(icon, AwesomeIcon.FILE_TEXT);
                                    icon.setPadding(new Insets(-2, 0, 0, 0));
                                    icon.setTooltip(new Tooltip(attachment.getFileName()));
                                    icon.setOnMouseClicked(event -> onOpenAttachment(attachment));
                                    attachmentsBox.getChildren().add(icon);
                                });
                            } else {
                                AnchorPane.setBottomAnchor(messageLabel, bottomBorder + 10);
                            }
                            // Need to set it here otherwise style is not correct
                            AwesomeDude.setIcon(copyIcon, AwesomeIcon.COPY, "16.0");
                            copyIcon.getStyleClass().add("copy-icon-disputes");
                            // TODO There are still some cell rendering issues on updates
                            setGraphic(messageAnchorPane);
                        } else {
                            if (sendMsgBusyAnimation != null && sendMsgBusyAnimationListener != null)
                                sendMsgBusyAnimation.isRunningProperty().removeListener(sendMsgBusyAnimationListener);
                            messageAnchorPane.prefWidthProperty().unbind();
                            AnchorPane.clearConstraints(bg);
                            AnchorPane.clearConstraints(headerLabel);
                            AnchorPane.clearConstraints(arrow);
                            AnchorPane.clearConstraints(messageLabel);
                            AnchorPane.clearConstraints(copyIcon);
                            AnchorPane.clearConstraints(statusIcon);
                            AnchorPane.clearConstraints(attachmentsBox);
                            copyIcon.setOnMouseClicked(null);
                            setGraphic(null);
                        }
                    }

                    /*  private void showNotArrivedIcon() {
                            statusIcon.setVisible(true);
                            AwesomeDude.setIcon(statusIcon, AwesomeIcon.WARNING_SIGN, "14");
                            Tooltip.install(statusIcon, new Tooltip("Message did not arrive. Please try to send again."));
                            statusIcon.setTextFill(Paint.valueOf("#dd0000"));
                        }*/
                    private void showMailboxIcon() {
                        statusIcon.setVisible(true);
                        AwesomeDude.setIcon(statusIcon, AwesomeIcon.ENVELOPE_ALT, "14");
                        Tooltip.install(statusIcon, new Tooltip("Message saved in receiver's mailbox"));
                        statusIcon.setTextFill(Paint.valueOf("#0f87c3"));
                    }

                    private void showArrivedIcon() {
                        statusIcon.setVisible(true);
                        AwesomeDude.setIcon(statusIcon, AwesomeIcon.OK, "14");
                        Tooltip.install(statusIcon, new Tooltip("Message arrived at receiver"));
                        statusIcon.setTextFill(Paint.valueOf("#0f87c3"));
                    }
                };
            }
        });
        if (root.getChildren().size() > 2)
            root.getChildren().remove(2);
        root.getChildren().add(2, messagesAnchorPane);
        scrollToBottom();
    }
    addListenersOnSelectDispute();
}
Also used : EventHandler(javafx.event.EventHandler) PubKeyRing(io.bitsquare.common.crypto.PubKeyRing) Popup(io.bitsquare.gui.main.overlays.popups.Popup) javafx.scene.layout(javafx.scene.layout) javafx.scene.control(javafx.scene.control) URL(java.net.URL) ReadOnlyBooleanProperty(javafx.beans.property.ReadOnlyBooleanProperty) DisputeManager(io.bitsquare.arbitration.DisputeManager) Trade(io.bitsquare.trade.Trade) ActivatableView(io.bitsquare.gui.common.view.ActivatableView) DisputeCommunicationMessage(io.bitsquare.arbitration.messages.DisputeCommunicationMessage) GUIUtil(io.bitsquare.gui.util.GUIUtil) KeyCombination(javafx.scene.input.KeyCombination) ReadOnlyObjectWrapper(javafx.beans.property.ReadOnlyObjectWrapper) ListChangeListener(javafx.collections.ListChangeListener) KeyRing(io.bitsquare.common.crypto.KeyRing) DisputeSummaryWindow(io.bitsquare.gui.main.overlays.windows.DisputeSummaryWindow) ParseException(java.text.ParseException) DateFormat(java.text.DateFormat) SortedList(javafx.collections.transformation.SortedList) TableGroupHeadline(io.bitsquare.gui.components.TableGroupHeadline) Contract(io.bitsquare.trade.Contract) FilteredList(javafx.collections.transformation.FilteredList) KeyEvent(javafx.scene.input.KeyEvent) Subscription(org.fxmisc.easybind.Subscription) PrivateNotificationManager(io.bitsquare.alert.PrivateNotificationManager) Attachment(io.bitsquare.arbitration.payload.Attachment) Paint(javafx.scene.paint.Paint) ByteStreams(com.google.common.io.ByteStreams) Dispute(io.bitsquare.arbitration.Dispute) ObservableList(javafx.collections.ObservableList) AwesomeIcon(de.jensd.fx.fontawesome.AwesomeIcon) Version(io.bitsquare.app.Version) Scene(javafx.scene.Scene) java.util(java.util) P2PService(io.bitsquare.p2p.P2PService) SimpleDateFormat(java.text.SimpleDateFormat) Connection(io.bitsquare.p2p.network.Connection) Timer(io.bitsquare.common.Timer) Inject(javax.inject.Inject) TradeManager(io.bitsquare.trade.TradeManager) Lists(com.google.common.collect.Lists) Insets(javafx.geometry.Insets) TradeDetailsWindow(io.bitsquare.gui.main.overlays.windows.TradeDetailsWindow) TextAlignment(javafx.scene.text.TextAlignment) Callback(javafx.util.Callback) Nullable(javax.annotation.Nullable) BSFormatter(io.bitsquare.gui.util.BSFormatter) KeyCode(javafx.scene.input.KeyCode) InputTextField(io.bitsquare.gui.components.InputTextField) Utilities(io.bitsquare.common.util.Utilities) ContractWindow(io.bitsquare.gui.main.overlays.windows.ContractWindow) MalformedURLException(java.net.MalformedURLException) UserThread(io.bitsquare.common.UserThread) AwesomeDude(de.jensd.fx.fontawesome.AwesomeDude) NodeAddress(io.bitsquare.p2p.NodeAddress) FileOutputStream(java.io.FileOutputStream) IOException(java.io.IOException) File(java.io.File) KeyCodeCombination(javafx.scene.input.KeyCodeCombination) TimeUnit(java.util.concurrent.TimeUnit) FileChooser(javafx.stage.FileChooser) HyperlinkWithIcon(io.bitsquare.gui.components.HyperlinkWithIcon) Stage(javafx.stage.Stage) EasyBind(org.fxmisc.easybind.EasyBind) ImageView(javafx.scene.image.ImageView) BusyAnimation(io.bitsquare.gui.components.BusyAnimation) SendPrivateNotificationWindow(io.bitsquare.gui.main.overlays.windows.SendPrivateNotificationWindow) FxmlView(io.bitsquare.gui.common.view.FxmlView) ChangeListener(javafx.beans.value.ChangeListener) InputStream(java.io.InputStream) TableGroupHeadline(io.bitsquare.gui.components.TableGroupHeadline) Insets(javafx.geometry.Insets) BusyAnimation(io.bitsquare.gui.components.BusyAnimation) SortedList(javafx.collections.transformation.SortedList) Callback(javafx.util.Callback) Popup(io.bitsquare.gui.main.overlays.popups.Popup) ListChangeListener(javafx.collections.ListChangeListener) ChangeListener(javafx.beans.value.ChangeListener) ImageView(javafx.scene.image.ImageView) DisputeCommunicationMessage(io.bitsquare.arbitration.messages.DisputeCommunicationMessage)

Example 5 with BusyAnimation

use of io.bitsquare.gui.components.BusyAnimation in project bitsquare by bitsquare.

the class Overlay method addBusyAnimation.

protected void addBusyAnimation() {
    busyAnimation = new BusyAnimation();
    GridPane.setHalignment(busyAnimation, HPos.CENTER);
    GridPane.setRowIndex(busyAnimation, ++rowIndex);
    GridPane.setColumnSpan(busyAnimation, 2);
    gridPane.getChildren().add(busyAnimation);
}
Also used : BusyAnimation(io.bitsquare.gui.components.BusyAnimation)

Aggregations

BusyAnimation (io.bitsquare.gui.components.BusyAnimation)8 Popup (io.bitsquare.gui.main.overlays.popups.Popup)4 Button (javafx.scene.control.Button)4 Label (javafx.scene.control.Label)4 TextFieldWithCopyIcon (io.bitsquare.gui.components.TextFieldWithCopyIcon)2 TitledGroupBg (io.bitsquare.gui.components.TitledGroupBg)2 Contract (io.bitsquare.trade.Contract)2 Insets (javafx.geometry.Insets)2 ImageView (javafx.scene.image.ImageView)2 Wallet (org.bitcoinj.core.Wallet)2 KeyCrypterScrypt (org.bitcoinj.crypto.KeyCrypterScrypt)2 Lists (com.google.common.collect.Lists)1 ByteStreams (com.google.common.io.ByteStreams)1 AwesomeDude (de.jensd.fx.fontawesome.AwesomeDude)1 AwesomeIcon (de.jensd.fx.fontawesome.AwesomeIcon)1 PrivateNotificationManager (io.bitsquare.alert.PrivateNotificationManager)1 Version (io.bitsquare.app.Version)1 Dispute (io.bitsquare.arbitration.Dispute)1 DisputeManager (io.bitsquare.arbitration.DisputeManager)1 DisputeCommunicationMessage (io.bitsquare.arbitration.messages.DisputeCommunicationMessage)1