Search in sources :

Example 1 with ReceiveToEvent

use of com.sparrowwallet.sparrow.event.ReceiveToEvent in project sparrow by sparrowwallet.

the class AddressTreeTable method initialize.

public void initialize(NodeEntry rootEntry) {
    getStyleClass().add("address-treetable");
    setBitcoinUnit(rootEntry.getWallet());
    String address = rootEntry.getAddress().toString();
    updateAll(rootEntry);
    setShowRoot(false);
    TreeTableColumn<Entry, Entry> addressCol = new TreeTableColumn<>("Address / Outpoints");
    addressCol.setCellValueFactory((TreeTableColumn.CellDataFeatures<Entry, Entry> param) -> {
        return new ReadOnlyObjectWrapper<>(param.getValue().getValue());
    });
    addressCol.setCellFactory(p -> new EntryCell());
    addressCol.setSortable(false);
    getColumns().add(addressCol);
    if (address != null && !rootEntry.getWallet().isWhirlpoolChildWallet()) {
        addressCol.setMinWidth(TextUtils.computeTextWidth(AppServices.getMonospaceFont(), address, 0.0));
    }
    TreeTableColumn<Entry, String> labelCol = new TreeTableColumn<>("Label");
    labelCol.setCellValueFactory((TreeTableColumn.CellDataFeatures<Entry, String> param) -> {
        return param.getValue().getValue().labelProperty();
    });
    labelCol.setCellFactory(p -> new LabelCell());
    labelCol.setSortable(false);
    getColumns().add(labelCol);
    TreeTableColumn<Entry, Number> amountCol = new TreeTableColumn<>("Value");
    amountCol.setCellValueFactory((TreeTableColumn.CellDataFeatures<Entry, Number> param) -> {
        return new ReadOnlyObjectWrapper<>(param.getValue().getValue().getValue());
    });
    amountCol.setCellFactory(p -> new CoinCell());
    amountCol.setSortable(false);
    getColumns().add(amountCol);
    setEditable(true);
    setColumnResizePolicy(TreeTableView.CONSTRAINED_RESIZE_POLICY);
    addressCol.setSortType(TreeTableColumn.SortType.ASCENDING);
    getSortOrder().add(addressCol);
    Integer highestUsedIndex = rootEntry.getNode().getHighestUsedIndex();
    if (highestUsedIndex != null) {
        OptionalInt tableIndex = rootEntry.getChildren().stream().filter(childEntry -> ((NodeEntry) childEntry).getNode().getIndex() == highestUsedIndex + 1).mapToInt(childEntry -> rootEntry.getChildren().indexOf(childEntry)).findFirst();
        if (tableIndex.isPresent() && tableIndex.getAsInt() > 5) {
            scrollTo(tableIndex.getAsInt());
        }
    }
    if (!rootEntry.getWallet().isWhirlpoolChildWallet()) {
        setOnMouseClicked(mouseEvent -> {
            if (mouseEvent.getButton().equals(MouseButton.PRIMARY)) {
                if (mouseEvent.getClickCount() == 2) {
                    TreeItem<Entry> treeItem = getSelectionModel().getSelectedItem();
                    if (treeItem != null && treeItem.getChildren().isEmpty()) {
                        Entry entry = getSelectionModel().getSelectedItem().getValue();
                        if (entry instanceof NodeEntry) {
                            NodeEntry nodeEntry = (NodeEntry) entry;
                            EventManager.get().post(new ReceiveActionEvent(nodeEntry));
                            Platform.runLater(() -> EventManager.get().post(new ReceiveToEvent(nodeEntry)));
                        }
                    }
                }
            }
        });
    }
    rootEntry.getChildren().addListener((ListChangeListener<Entry>) c -> {
        this.refresh();
    });
}
Also used : MouseButton(javafx.scene.input.MouseButton) javafx.scene.control(javafx.scene.control) NodeEntry(com.sparrowwallet.sparrow.wallet.NodeEntry) OptionalInt(java.util.OptionalInt) Entry(com.sparrowwallet.sparrow.wallet.Entry) Platform(javafx.application.Platform) ReceiveActionEvent(com.sparrowwallet.sparrow.event.ReceiveActionEvent) List(java.util.List) AppServices(com.sparrowwallet.sparrow.AppServices) ReadOnlyObjectWrapper(javafx.beans.property.ReadOnlyObjectWrapper) ListChangeListener(javafx.collections.ListChangeListener) ReceiveToEvent(com.sparrowwallet.sparrow.event.ReceiveToEvent) EventManager(com.sparrowwallet.sparrow.EventManager) Optional(java.util.Optional) WalletNode(com.sparrowwallet.drongo.wallet.WalletNode) OptionalInt(java.util.OptionalInt) ReceiveActionEvent(com.sparrowwallet.sparrow.event.ReceiveActionEvent) NodeEntry(com.sparrowwallet.sparrow.wallet.NodeEntry) Entry(com.sparrowwallet.sparrow.wallet.Entry) NodeEntry(com.sparrowwallet.sparrow.wallet.NodeEntry) ReadOnlyObjectWrapper(javafx.beans.property.ReadOnlyObjectWrapper) ReceiveToEvent(com.sparrowwallet.sparrow.event.ReceiveToEvent)

Aggregations

WalletNode (com.sparrowwallet.drongo.wallet.WalletNode)1 AppServices (com.sparrowwallet.sparrow.AppServices)1 EventManager (com.sparrowwallet.sparrow.EventManager)1 ReceiveActionEvent (com.sparrowwallet.sparrow.event.ReceiveActionEvent)1 ReceiveToEvent (com.sparrowwallet.sparrow.event.ReceiveToEvent)1 Entry (com.sparrowwallet.sparrow.wallet.Entry)1 NodeEntry (com.sparrowwallet.sparrow.wallet.NodeEntry)1 List (java.util.List)1 Optional (java.util.Optional)1 OptionalInt (java.util.OptionalInt)1 Platform (javafx.application.Platform)1 ReadOnlyObjectWrapper (javafx.beans.property.ReadOnlyObjectWrapper)1 ListChangeListener (javafx.collections.ListChangeListener)1 javafx.scene.control (javafx.scene.control)1 MouseButton (javafx.scene.input.MouseButton)1