/*
* 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.components.paymentmethods;
import io.bitsquare.common.util.Tuple2;
import io.bitsquare.gui.components.InputTextField;
import io.bitsquare.gui.util.BSFormatter;
import io.bitsquare.gui.util.validation.InputValidator;
import io.bitsquare.locale.BankUtil;
import io.bitsquare.payment.CountryBasedPaymentAccount;
import io.bitsquare.payment.PaymentAccount;
import io.bitsquare.payment.PaymentAccountContractData;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static io.bitsquare.gui.util.FormBuilder.addLabelInputTextField;
import static io.bitsquare.gui.util.FormBuilder.addLabelTextField;
public class SameBankForm extends BankForm {
private static final Logger log = LoggerFactory.getLogger(SameBankForm.class);
public static int addFormForBuyer(GridPane gridPane, int gridRow, PaymentAccountContractData paymentAccountContractData) {
return BankForm.addFormForBuyer(gridPane, gridRow, paymentAccountContractData);
}
public SameBankForm(PaymentAccount paymentAccount, InputValidator inputValidator,
GridPane gridPane, int gridRow, BSFormatter formatter, Runnable closeHandler) {
super(paymentAccount, inputValidator, gridPane, gridRow, formatter, closeHandler);
}
@Override
protected void addHolderNameAndId() {
Tuple2<Label, InputTextField> tuple = addLabelInputTextField(gridPane, ++gridRow, "Account holder name:");
holderNameInputTextField = tuple.second;
holderNameInputTextField.setValidator(inputValidator);
holderNameInputTextField.textProperty().addListener((ov, oldValue, newValue) -> {
bankAccountContractData.setHolderName(newValue);
updateFromInputs();
});
}
@Override
public void updateAllInputsValid() {
boolean result = isAccountNameValid()
&& inputValidator.validate(bankAccountContractData.getHolderName()).isValid
&& paymentAccount.getSingleTradeCurrency() != null
&& ((CountryBasedPaymentAccount) paymentAccount).getCountry() != null;
if (BankUtil.isBankNameRequired(bankAccountContractData.getCountryCode()))
result &= inputValidator.validate(bankAccountContractData.getBankName()).isValid;
if (BankUtil.isBankIdRequired(bankAccountContractData.getCountryCode()))
result &= inputValidator.validate(bankAccountContractData.getBankId()).isValid;
if (BankUtil.isBranchIdRequired(bankAccountContractData.getCountryCode()))
result &= inputValidator.validate(bankAccountContractData.getBranchId()).isValid;
if (BankUtil.isAccountNrRequired(bankAccountContractData.getCountryCode()))
result &= inputValidator.validate(bankAccountContractData.getAccountNr()).isValid;
allInputsValid.set(result);
}
@Override
protected void addHolderNameAndIdForDisplayAccount() {
Tuple2<Label, TextField> tuple = addLabelTextField(gridPane, ++gridRow, "Account holder name:");
TextField holderNameTextField = tuple.second;
holderNameTextField.setMinWidth(300);
holderNameTextField.setText(bankAccountContractData.getHolderName());
}
}