/* * This file is part of Bitsquare. * * Bitsquare is free software: you can redistribute it and/or modify it * under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at * your option) any later version. * * Bitsquare is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public * License for more details. * * You should have received a copy of the GNU Affero General Public License * along with Bitsquare. If not, see <http://www.gnu.org/licenses/>. */ package io.bitsquare.gui.main.debug; import io.bitsquare.common.taskrunner.Task; import io.bitsquare.gui.common.view.FxmlView; import io.bitsquare.gui.common.view.InitializableView; import io.bitsquare.trade.protocol.availability.OfferAvailabilityProtocol; import io.bitsquare.trade.protocol.availability.tasks.ProcessOfferAvailabilityResponse; import io.bitsquare.trade.protocol.availability.tasks.SendOfferAvailabilityRequest; import io.bitsquare.trade.protocol.placeoffer.PlaceOfferProtocol; import io.bitsquare.trade.protocol.placeoffer.tasks.AddOfferToRemoteOfferBook; import io.bitsquare.trade.protocol.placeoffer.tasks.BroadcastCreateOfferFeeTx; import io.bitsquare.trade.protocol.placeoffer.tasks.CreateOfferFeeTx; import io.bitsquare.trade.protocol.placeoffer.tasks.ValidateOffer; import io.bitsquare.trade.protocol.trade.BuyerAsOffererProtocol; import io.bitsquare.trade.protocol.trade.BuyerAsTakerProtocol; import io.bitsquare.trade.protocol.trade.SellerAsOffererProtocol; import io.bitsquare.trade.protocol.trade.SellerAsTakerProtocol; import io.bitsquare.trade.protocol.trade.tasks.buyer.*; import io.bitsquare.trade.protocol.trade.tasks.offerer.*; import io.bitsquare.trade.protocol.trade.tasks.seller.*; import io.bitsquare.trade.protocol.trade.tasks.shared.BroadcastAfterLockTime; import io.bitsquare.trade.protocol.trade.tasks.taker.*; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.control.ComboBox; import javafx.util.StringConverter; import javax.inject.Inject; import java.util.Arrays; @FxmlView public class DebugView extends InitializableView { @FXML ComboBox<Class> taskComboBox1, taskComboBox2; @Inject public DebugView() { } @Override public void initialize() { final ObservableList<Class> items1 = FXCollections.observableArrayList(Arrays.asList( /*---- Protocol ----*/ OfferAvailabilityProtocol.class, SendOfferAvailabilityRequest.class, ProcessOfferAvailabilityResponse.class, Boolean.class, /* used as separator*/ /*---- Protocol ----*/ PlaceOfferProtocol.class, ValidateOffer.class, CreateOfferFeeTx.class, AddOfferToRemoteOfferBook.class, BroadcastCreateOfferFeeTx.class, Boolean.class, /* used as separator*/ /*---- Protocol ----*/ BuyerAsOffererProtocol.class, ProcessPayDepositRequest.class, VerifyArbitrationSelection.class, VerifyTakerAccount.class, CreateAndSignContract.class, OffererCreatesAndSignsDepositTxAsBuyer.class, LoadTakeOfferFeeTx.class, SetupDepositBalanceListener.class, SendPublishDepositTxRequest.class, ProcessDepositTxPublishedMessage.class, VerifyTakeOfferFeePayment.class, SendFiatTransferStartedMessage.class, ProcessFinalizePayoutTxRequest.class, SignAndFinalizePayoutTx.class, SendPayoutTxFinalizedMessage.class, BroadcastAfterLockTime.class, Boolean.class, /* used as separator*/ /*---- Protocol ----*/ SellerAsTakerProtocol.class, SelectArbitrator.class, CreateTakeOfferFeeTx.class, BroadcastTakeOfferFeeTx.class, TakerCreatesDepositTxInputsAsSeller.class, SendPayDepositRequest.class, ProcessPublishDepositTxRequest.class, VerifyOffererAccount.class, VerifyAndSignContract.class, SignAndPublishDepositTxAsSeller.class, SendDepositTxPublishedMessage.class, ProcessFiatTransferStartedMessage.class, VerifyOfferFeePayment.class, SignPayoutTx.class, SendFinalizePayoutTxRequest.class, ProcessPayoutTxFinalizedMessage.class, BroadcastAfterLockTime.class, Boolean.class /* used as separator*/ ) ); final ObservableList<Class> items2 = FXCollections.observableArrayList(Arrays.asList( /*---- Protocol ----*/ BuyerAsTakerProtocol.class, SelectArbitrator.class, CreateTakeOfferFeeTx.class, BroadcastTakeOfferFeeTx.class, TakerCreatesDepositTxInputsAsSeller.class, SendPayDepositRequest.class, ProcessPublishDepositTxRequest.class, VerifyOffererAccount.class, VerifyAndSignContract.class, SignAndPublishDepositTxAsSeller.class, SendDepositTxPublishedMessage.class, VerifyOfferFeePayment.class, SignPayoutTx.class, SendFiatTransferStartedMessage.class, ProcessFinalizePayoutTxRequest.class, SignAndFinalizePayoutTx.class, SendPayoutTxFinalizedMessage.class, BroadcastAfterLockTime.class, Boolean.class, /* used as separator*/ /*---- Protocol ----*/ SellerAsOffererProtocol.class, ProcessPayDepositRequest.class, VerifyArbitrationSelection.class, VerifyTakerAccount.class, CreateAndSignContract.class, OffererCreatesAndSignsDepositTxAsBuyer.class, SetupDepositBalanceListener.class, SendPublishDepositTxRequest.class, ProcessDepositTxPublishedMessage.class, ProcessFiatTransferStartedMessage.class, VerifyTakeOfferFeePayment.class, SignPayoutTx.class, SendFinalizePayoutTxRequest.class, ProcessPayoutTxFinalizedMessage.class, BroadcastAfterLockTime.class, Boolean.class /* used as separator*/ ) ); taskComboBox1.setVisibleRowCount(items1.size()); taskComboBox1.setItems(items1); taskComboBox1.setConverter(new StringConverter<Class>() { @Override public String toString(Class item) { if (item.getSimpleName().contains("Protocol")) return "--- " + item.getSimpleName() + " ---"; else if (item.getSimpleName().contains("Boolean")) return ""; else return item.getSimpleName(); } @Override public Class fromString(String s) { return null; } }); taskComboBox2.setVisibleRowCount(items2.size()); taskComboBox2.setItems(items2); taskComboBox2.setConverter(new StringConverter<Class>() { @Override public String toString(Class item) { if (item.getSimpleName().contains("Protocol")) return "--- " + item.getSimpleName() + " ---"; else if (item.getSimpleName().contains("Boolean")) return ""; else return item.getSimpleName(); } @Override public Class fromString(String s) { return null; } }); } @FXML void onSelectTask1() { Class item = taskComboBox1.getSelectionModel().getSelectedItem(); if (!item.getSimpleName().contains("Protocol")) { Task.taskToIntercept = item; } } @FXML void onSelectTask2() { Class item = taskComboBox2.getSelectionModel().getSelectedItem(); if (!item.getSimpleName().contains("Protocol")) { Task.taskToIntercept = item; } } }