/** * Copyright 2011 multibit.org * * Licensed under the MIT license (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://opensource.org/licenses/mit-license.php * * 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 org.multibit.viewsystem.swing.view.dialogs; import org.multibit.viewsystem.swing.view.panels.SendBitcoinPanel; import java.awt.BorderLayout; import java.awt.ComponentOrientation; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; import org.multibit.controller.Controller; import org.multibit.controller.bitcoin.BitcoinController; import org.multibit.utils.ImageLoader; import org.multibit.viewsystem.swing.ColorAndFontConstants; import org.multibit.viewsystem.swing.MultiBitFrame; import org.multibit.viewsystem.swing.action.CancelBackToParentAction; import org.multibit.viewsystem.swing.action.DeleteSendingAddressSubmitAction; import org.multibit.viewsystem.swing.view.components.FontSizer; import org.multibit.viewsystem.swing.view.components.MultiBitButton; import org.multibit.viewsystem.swing.view.components.MultiBitDialog; import org.multibit.viewsystem.swing.view.components.MultiBitLabel; /** * The delete sending address confirm dialog. */ public class DeleteSendingAddressConfirmDialog extends MultiBitDialog { private static final long serialVersionUID = 191435699945057705L; private static final int HEIGHT_DELTA = 100; private static final int WIDTH_DELTA = 200; private final Controller controller; private final BitcoinController bitcoinController; private MultiBitLabel labelText; private MultiBitLabel addressLabelText; private MultiBitLabel explainLabel; private MultiBitButton deleteSendingAddressButton; private MultiBitButton cancelButton; private SendBitcoinPanel sendBitcoinPanel; /** * Creates a new {@link DeleteWalletConfirmDialog}. */ public DeleteSendingAddressConfirmDialog(BitcoinController bitcoinController, MultiBitFrame mainFrame, SendBitcoinPanel sendBitcoinPanel) { super(mainFrame, bitcoinController.getLocaliser().getString("deleteSendingAddressConfirmDialog.title")); this.bitcoinController = bitcoinController; this.controller = this.bitcoinController; this.sendBitcoinPanel = sendBitcoinPanel; ImageIcon imageIcon = ImageLoader.createImageIcon(ImageLoader.MULTIBIT_ICON_FILE); if (imageIcon != null) { setIconImage(imageIcon.getImage()); } initUI(); cancelButton.requestFocusInWindow(); applyComponentOrientation(ComponentOrientation.getOrientation(controller.getLocaliser().getLocale())); } /** * Initialise dialog. */ public void initUI() { FontMetrics fontMetrics = getFontMetrics(FontSizer.INSTANCE.getAdjustedDefaultFont()); int minimumHeight = fontMetrics.getHeight() * 5 + HEIGHT_DELTA; int minimumWidth = Math.max(fontMetrics.stringWidth(this.bitcoinController.getModel().getActiveWalletFilename()), fontMetrics.stringWidth(controller.getLocaliser().getString("deleteSendingAddressConfirmDialog.message"))) + WIDTH_DELTA; setMinimumSize(new Dimension(minimumWidth, minimumHeight)); positionDialogRelativeToParent(this, 0.5D, 0.47D); JPanel mainPanel = new JPanel(); mainPanel.setOpaque(false); setLayout(new BorderLayout()); add(mainPanel, BorderLayout.CENTER); mainPanel.setLayout(new GridBagLayout()); GridBagConstraints constraints = new GridBagConstraints(); JLabel filler00 = new JLabel(); constraints.fill = GridBagConstraints.BOTH; constraints.gridx = 0; constraints.gridy = 0; constraints.weightx = 0.3; constraints.weighty = 0.2; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.anchor = GridBagConstraints.LINE_START; mainPanel.add(filler00, constraints); JLabel filler01 = new JLabel(); constraints.fill = GridBagConstraints.BOTH; constraints.gridx = 5; constraints.gridy = 1; constraints.weightx = 0.3; constraints.weighty = 0.2; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.anchor = GridBagConstraints.LINE_START; mainPanel.add(filler01, constraints); ImageIcon bigIcon = ImageLoader.createImageIcon(ImageLoader.EXCLAMATION_MARK_ICON_FILE); constraints.fill = GridBagConstraints.BOTH; constraints.gridx = 0; constraints.gridy = 2; constraints.weightx = 0.5; constraints.weighty = 0.2; constraints.gridwidth = 1; constraints.gridheight = 5; constraints.anchor = GridBagConstraints.CENTER; JLabel bigIconLabel = new JLabel(bigIcon); mainPanel.add(bigIconLabel, constraints); explainLabel = new MultiBitLabel(""); explainLabel.setText(controller.getLocaliser().getString("deleteSendingAddressConfirmDialog.message")); constraints.fill = GridBagConstraints.NONE; constraints.gridx = 1; constraints.gridy = 1; constraints.weightx = 0.8; constraints.weighty = 0.3; constraints.gridwidth = 5; constraints.gridheight = 1; constraints.anchor = GridBagConstraints.LINE_START; mainPanel.add(explainLabel, constraints); JPanel detailPanel = new JPanel(new GridBagLayout()); detailPanel.setBackground(ColorAndFontConstants.VERY_LIGHT_BACKGROUND_COLOR); constraints.fill = GridBagConstraints.BOTH; constraints.gridx = 1; constraints.gridy = 2; constraints.weightx = 0.6; constraints.weighty = 0.6; constraints.gridwidth = 3; constraints.gridheight = 5; constraints.anchor = GridBagConstraints.CENTER; mainPanel.add(detailPanel, constraints); GridBagConstraints constraints2 = new GridBagConstraints(); JLabel filler0 = new JLabel(); constraints2.fill = GridBagConstraints.BOTH; constraints2.gridx = 1; constraints2.gridy = 0; constraints2.weightx = 0.05; constraints2.weighty = 0.05; constraints2.gridwidth = 1; constraints2.gridheight = 1; constraints2.anchor = GridBagConstraints.LINE_START; detailPanel.add(filler0, constraints2); MultiBitLabel addressLabel = new MultiBitLabel(controller.getLocaliser().getString("sendBitcoinPanel.addressLabel")); constraints2.fill = GridBagConstraints.NONE; constraints2.gridx = 0; constraints2.gridy = 1; constraints2.weightx = 0.3; constraints2.weighty = 0.2; constraints2.gridwidth = 1; constraints2.anchor = GridBagConstraints.LINE_END; detailPanel.add(addressLabel, constraints2); addressLabelText = new MultiBitLabel(sendBitcoinPanel.getAddress()); constraints2.fill = GridBagConstraints.NONE; constraints2.gridx = 2; constraints2.gridy = 1; constraints2.weightx = 0.3; constraints2.weighty = 0.2; constraints2.gridwidth = 1; constraints2.anchor = GridBagConstraints.LINE_START; detailPanel.add(addressLabelText, constraints2); JLabel filler1 = new JLabel(); constraints2.fill = GridBagConstraints.BOTH; constraints2.gridx = 1; constraints2.gridy = 2; constraints2.weightx = 0.1; constraints2.weighty = 0.05; constraints2.gridwidth = 1; constraints2.gridheight = 1; constraints2.anchor = GridBagConstraints.LINE_START; detailPanel.add(filler1, constraints2); MultiBitLabel labelLabel = new MultiBitLabel(""); labelLabel.setText(controller.getLocaliser().getString("sendBitcoinPanel.labelLabel")); constraints2.fill = GridBagConstraints.NONE; constraints2.gridx = 0; constraints2.gridy = 3; constraints2.weightx = 0.3; constraints2.weighty = 0.2; constraints2.gridwidth = 1; constraints2.anchor = GridBagConstraints.LINE_END; detailPanel.add(labelLabel, constraints2); labelText = new MultiBitLabel(sendBitcoinPanel.getLabel()); constraints2.fill = GridBagConstraints.NONE; constraints2.gridx = 2; constraints2.gridy = 3; constraints2.weightx = 0.3; constraints2.weighty = 0.2; constraints2.gridwidth = 1; constraints2.anchor = GridBagConstraints.LINE_START; detailPanel.add(labelText, constraints2); JLabel filler2 = new JLabel(); constraints2.fill = GridBagConstraints.BOTH; constraints2.gridx = 1; constraints2.gridy = 4; constraints2.weightx = 0.05; constraints2.weighty = 0.05; constraints2.gridwidth = 1; constraints2.gridheight = 1; constraints2.anchor = GridBagConstraints.LINE_START; detailPanel.add(filler2, constraints2); JPanel buttonPanel = new JPanel(); buttonPanel.setOpaque(false); constraints.fill = GridBagConstraints.NONE; constraints.gridx = 1; constraints.gridy = 7; constraints.weightx = 0.8; constraints.weighty = 0.1; constraints.gridwidth = 4; constraints.gridheight = 1; constraints.anchor = GridBagConstraints.LINE_END; mainPanel.add(buttonPanel, constraints); CancelBackToParentAction cancelAction = new CancelBackToParentAction(controller, null, this); cancelButton = new MultiBitButton(cancelAction, controller); buttonPanel.add(cancelButton); DeleteSendingAddressSubmitAction deleteSendingAddressSubmitAction = new DeleteSendingAddressSubmitAction(this.bitcoinController, sendBitcoinPanel, this); deleteSendingAddressButton = new MultiBitButton(deleteSendingAddressSubmitAction, controller); buttonPanel.add(deleteSendingAddressButton); JLabel filler4 = new JLabel(); constraints.fill = GridBagConstraints.HORIZONTAL; constraints.gridx = 5; constraints.gridy = 9; constraints.weightx = 0.05; constraints.weighty = 0.1; constraints.gridwidth = 1; constraints.anchor = GridBagConstraints.LINE_START; mainPanel.add(filler4, constraints); } }