/* * * 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.dialogs; import com.intellij.uiDesigner.core.GridConstraints; import com.intellij.uiDesigner.core.GridLayoutManager; import com.intellij.uiDesigner.core.Spacer; import net.bither.Bither; import net.bither.BitherSetting; import net.bither.bitherj.core.Tx; import net.bither.bitherj.utils.UnitUtil; import net.bither.utils.DateUtils; import net.bither.utils.LocaliserUtils; import net.bither.utils.ViewUtil; import net.bither.viewsystem.base.Buttons; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URI; import java.net.URISyntaxException; import java.util.ResourceBundle; public class TxDetailsDialog extends BitherDialog { private static final Logger log = LoggerFactory.getLogger(TxDetailsDialog.class); private Tx tx; private JPanel contentPane; private JButton buttonOK; private JButton btnBlockChain; private JButton btnBlockMeta; private JLabel labStatusValue; private JLabel labTimeValue; private JLabel labAmtValue; private JLabel labTotal; public TxDetailsDialog(final Tx tx) { setContentPane(contentPane); setModal(true); Buttons.modifButton(buttonOK); Buttons.modifButton(btnBlockChain); Buttons.modifButton(btnBlockMeta); this.tx = tx; setValue(); initDialog(); setPreferredSize(new Dimension(600, 150)); setMaximumSize(new Dimension(600, 150)); setMinimumSize(new Dimension(600, 150)); buttonOK.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { onOK(); } }); btnBlockMeta.setText(LocaliserUtils.getString("transaction_details_dialog_view_at_blockexplorer")); btnBlockChain.setText(LocaliserUtils.getString("transaction_details_dialog_view_at_blockchaininfo")); btnBlockChain.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { try { String blockchainTransactionURL = BitherSetting.BLOCKCHAIN_INFO_PREFIX + tx.getHashAsString(); ViewUtil.openURI(new URI(blockchainTransactionURL)); } catch (URISyntaxException e) { log.debug(e.getMessage()); } } }); if (LocaliserUtils.isChina()) { btnBlockMeta.setVisible(true); } else { btnBlockMeta.setVisible(false); } btnBlockMeta.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { try { String blockMetaTransactionURL = BitherSetting.BLOCKMETA_TRANSACTION_PREFIX + tx.getHashAsString(); ViewUtil.openURI(new URI(blockMetaTransactionURL)); } catch (URISyntaxException e) { log.debug(e.getMessage()); } } }); } private void setValue() { long amount = tx.deltaAmountFrom(Bither.getActionAddress()); labAmtValue.setText(UnitUtil.formatValue(Math.abs(amount), UnitUtil.BitcoinUnit.BTC)); if (amount > 0) { labTotal.setText(LocaliserUtils.getString("transaction_details_dialog_total_debit")); } else { labTotal.setText(LocaliserUtils.getString("transaction_details_dialog_spending")); } labStatusValue.setText(Integer.toString(tx.getConfirmationCount())); labTimeValue.setText(DateUtils.getDateTimeString(tx.getTxDate())); } private void onOK() { // add your code here dispose(); } { // GUI initializer generated by IntelliJ IDEA GUI Designer // >>> IMPORTANT!! <<< // DO NOT EDIT OR ADD ANY CODE HERE! $$$setupUI$$$(); } /** * Method generated by IntelliJ IDEA GUI Designer * >>> IMPORTANT!! <<< * DO NOT edit this method OR call it in your code! * * @noinspection ALL */ private void $$$setupUI$$$() { contentPane = new JPanel(); contentPane.setLayout(new GridLayoutManager(2, 1, new Insets(10, 10, 10, 10), -1, -1)); contentPane.setBackground(new Color(-328966)); final JPanel panel1 = new JPanel(); panel1.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); panel1.setOpaque(false); contentPane.add(panel1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, 1, null, null, null, 0, false)); final JPanel panel2 = new JPanel(); panel2.setLayout(new GridLayoutManager(1, 6, new Insets(0, 0, 0, 0), -1, -1)); panel2.setOpaque(false); panel1.add(panel2, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); buttonOK = new JButton(); this.$$$loadButtonText$$$(buttonOK, ResourceBundle.getBundle("viewer").getString("ok")); panel2.add(buttonOK, new GridConstraints(0, 5, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final Spacer spacer1 = new Spacer(); panel2.add(spacer1, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); final Spacer spacer2 = new Spacer(); panel2.add(spacer2, new GridConstraints(0, 4, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); final Spacer spacer3 = new Spacer(); panel2.add(spacer3, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); btnBlockMeta = new JButton(); btnBlockMeta.setText("Button"); panel2.add(btnBlockMeta, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); btnBlockChain = new JButton(); btnBlockChain.setText("Button"); panel2.add(btnBlockChain, new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel3 = new JPanel(); panel3.setLayout(new GridLayoutManager(3, 2, new Insets(0, 0, 0, 0), -1, -1)); panel3.setOpaque(false); contentPane.add(panel3, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); final JLabel label1 = new JLabel(); this.$$$loadLabelText$$$(label1, ResourceBundle.getBundle("viewer").getString("tx_status_text")); panel3.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); labStatusValue = new JLabel(); labStatusValue.setText("Label"); panel3.add(labStatusValue, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JLabel label2 = new JLabel(); this.$$$loadLabelText$$$(label2, ResourceBundle.getBundle("viewer").getString("tx_date_text")); panel3.add(label2, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); labTimeValue = new JLabel(); labTimeValue.setText("Label"); panel3.add(labTimeValue, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); labTotal = new JLabel(); this.$$$loadLabelText$$$(labTotal, ResourceBundle.getBundle("viewer").getString("transaction_details_dialog_total_debit")); panel3.add(labTotal, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); labAmtValue = new JLabel(); labAmtValue.setText("Label"); panel3.add(labAmtValue, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); } /** * @noinspection ALL */ private void $$$loadLabelText$$$(JLabel component, String text) { StringBuffer result = new StringBuffer(); boolean haveMnemonic = false; char mnemonic = '\0'; int mnemonicIndex = -1; for (int i = 0; i < text.length(); i++) { if (text.charAt(i) == '&') { i++; if (i == text.length()) break; if (!haveMnemonic && text.charAt(i) != '&') { haveMnemonic = true; mnemonic = text.charAt(i); mnemonicIndex = result.length(); } } result.append(text.charAt(i)); } component.setText(result.toString()); if (haveMnemonic) { component.setDisplayedMnemonic(mnemonic); component.setDisplayedMnemonicIndex(mnemonicIndex); } } /** * @noinspection ALL */ private void $$$loadButtonText$$$(AbstractButton component, String text) { StringBuffer result = new StringBuffer(); boolean haveMnemonic = false; char mnemonic = '\0'; int mnemonicIndex = -1; for (int i = 0; i < text.length(); i++) { if (text.charAt(i) == '&') { i++; if (i == text.length()) break; if (!haveMnemonic && text.charAt(i) != '&') { haveMnemonic = true; mnemonic = text.charAt(i); mnemonicIndex = result.length(); } } result.append(text.charAt(i)); } component.setText(result.toString()); if (haveMnemonic) { component.setMnemonic(mnemonic); component.setDisplayedMnemonicIndex(mnemonicIndex); } } /** * @noinspection ALL */ public JComponent $$$getRootComponent$$$() { return contentPane; } }