/* * * Copyright 2014 http://Bither.net * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * / */ package net.bither.viewsystem.froms; import net.bither.Bither; import net.bither.bitherj.core.AddressManager; import net.bither.bitherj.crypto.SecureCharSequence; import net.bither.bitherj.qrcode.QRCodeEnodeUtil; import net.bither.bitherj.qrcode.QRCodeTxTransport; import net.bither.bitherj.utils.PrivateKeyUtil; import net.bither.fonts.AwesomeIcon; import net.bither.languages.MessageKey; import net.bither.qrcode.DisplayBitherQRCodePanel; import net.bither.qrcode.IReadQRCode; import net.bither.qrcode.IScanQRCode; import net.bither.qrcode.SelectTransportQRCodePanel; import net.bither.utils.LocaliserUtils; import net.bither.viewsystem.base.*; import net.bither.viewsystem.dialogs.MessageDialog; import net.bither.viewsystem.dialogs.SignTxDialg; import net.bither.viewsystem.listener.IDialogPasswordListener; import net.miginfocom.swing.MigLayout; import javax.swing.*; import java.awt.event.ActionEvent; public class ColdDefaultPanel implements Viewable, IScanQRCode { private JPanel panelMain; private JButton btnSignTransaction; private JButton btnWatchOnlyQRCode; private JButton btnBitherColdWallet; private JButton btnAddress; private JButton btnHDMCold; public ColdDefaultPanel() { Action signActionListener = new AbstractAction() { @Override public void actionPerformed(ActionEvent actionEvent) { if (AddressManager.getInstance().getPrivKeyAddresses().size() == 0 && AddressManager.getInstance().getHdmKeychain() == null) { new MessageDialog(LocaliserUtils.getString("private_key_is_empty")).showMsg(); } else { toSignTx(); } } }; Action watchOnlyActionListener = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { if (AddressManager.getInstance().getPrivKeyAddresses().size() == 0) { new MessageDialog(LocaliserUtils.getString("private_key_is_empty")).showMsg(); } else { String content = QRCodeEnodeUtil.getPublicKeyStrOfPrivateKey(); DisplayBitherQRCodePanel displayBitherQRCodePanle = new DisplayBitherQRCodePanel(content); displayBitherQRCodePanle.showPanel(); } } }; Action bitherColdeActionListener = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { if (AddressManager.getInstance().getPrivKeyAddresses().size() == 0 && AddressManager.getInstance().getHdmKeychain() == null) { new MessageDialog(LocaliserUtils.getString("private_key_is_empty")).showMsg(); } else { PasswordPanel dialogPassword = new PasswordPanel(new IDialogPasswordListener() { @Override public void onPasswordEntered(SecureCharSequence password) { String content = PrivateKeyUtil.getEncryptPrivateKeyStringFromAllAddresses(); DisplayBitherQRCodePanel displayBitherQRCodePanle = new DisplayBitherQRCodePanel(content); displayBitherQRCodePanle.showPanel(); } }); dialogPassword.showPanel(); } } }; Action addressActionListener = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { AddressDetailPanel addressDetailPanel = new AddressDetailPanel(); addressDetailPanel.showPanel(); } }; Action hdmColdAction = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { HDMColdDetailPanel hdmColdDetailPanel = new HDMColdDetailPanel(); hdmColdDetailPanel.showPanel(); } }; btnSignTransaction = Buttons.addWizardButton(signActionListener, MessageKey.SIGN_TX, AwesomeIcon.PENCIL); btnWatchOnlyQRCode = Buttons.addWizardButton(watchOnlyActionListener, MessageKey.WATCH_ONLY_QRCODE, AwesomeIcon.FA_EYE); btnBitherColdWallet = Buttons.addWizardButton(bitherColdeActionListener, MessageKey.CLONE_QRCODE, AwesomeIcon.REPLY_ALL); btnAddress = Buttons.addWizardButton(addressActionListener, MessageKey.ADDRESS_DETAIL, AwesomeIcon.FA_SEARCH_PLUS); btnHDMCold = Buttons.addWizardButton(hdmColdAction, MessageKey.HDM_KEYCHAIN_ADD_COLD, AwesomeIcon.FA_RECYCLE); if (AddressManager.getInstance().getAllAddresses().size() == 0) { btnAddress.setVisible(false); } panelMain = Panels.newPanel(); } private void toSignTx() { SelectTransportQRCodePanel selectTransportQRCodePanel = new SelectTransportQRCodePanel(this); selectTransportQRCodePanel.showPanel(); } @Override public void handleResult(String result, IReadQRCode readQRCode) { QRCodeTxTransport qrCodeTransport = QRCodeTxTransport.formatQRCodeTransport(result); if (qrCodeTransport != null) { Panels.hideLightBoxIfPresent(); readQRCode.close(); SignTxDialg signTxDialg = new SignTxDialg(qrCodeTransport); signTxDialg.pack(); signTxDialg.setVisible(true); } else { readQRCode.reTry("qrcode error"); } } @Override public void displayView(DisplayHint displayHint) { // panelMain = Panels.newPanel(); panelMain.removeAll(); panelMain.setLayout(new MigLayout( Panels.migXYLayout(), "20[][][][][]10", // Column constraints "[][80][][30][30][20]" // Row constraints )); if (Bither.getActionAddress() == null) { if (AddressManager.getInstance().hasHDMKeychain()) { panelMain.add(btnHDMCold, "shrink"); } } else { panelMain.add(btnAddress, "shrink"); panelMain.add(btnWatchOnlyQRCode, "shrink"); } panelMain.add(btnBitherColdWallet, "shrink"); panelMain.add(btnSignTransaction, "shrink"); } @Override public ViewEnum getViewId() { return ViewEnum.COLD_WALLET_VIEW; } public JPanel getPanel() { return panelMain; } }