/** * 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.controller.Controller; import org.multibit.controller.bitcoin.BitcoinController; import org.multibit.viewsystem.swing.MultiBitFrame; import org.multibit.viewsystem.swing.view.components.FontSizer; import org.multibit.viewsystem.swing.view.components.MultiBitDialog; import org.multibit.viewsystem.swing.view.panels.CreateNewReceivingAddressPanel; import org.multibit.viewsystem.swing.view.panels.ReceiveBitcoinPanel; import javax.swing.*; import java.awt.*; /** * The dialog for creating new receiving addresses. */ public class CreateNewReceivingAddressDialog extends MultiBitDialog { private static final long serialVersionUID = 191439652345057705L; private static final int HEIGHT_DELTA = 40; private static final int WIDTH_DELTA = 160; private ReceiveBitcoinPanel receiveBitcoinPanel; private final Controller controller; private final BitcoinController bitcoinController; private CreateNewReceivingAddressPanel createNewReceivingAddressPanel; /** * Creates a new {@link CreateNewReceivingAddressDialog}. */ public CreateNewReceivingAddressDialog(BitcoinController bitcoinController, MultiBitFrame mainFrame, ReceiveBitcoinPanel receiveBitcoinPanel) { super(mainFrame, bitcoinController.getLocaliser().getString("createNewReceivingAddressDialog.title")); this.bitcoinController = bitcoinController; this.controller = this.bitcoinController; this.receiveBitcoinPanel = receiveBitcoinPanel; initUI(); createNewReceivingAddressPanel.getCancelButton().requestFocusInWindow(); applyComponentOrientation(ComponentOrientation.getOrientation(controller.getLocaliser().getLocale())); } /** * Initialise dialog. */ public void initUI() { try { FontMetrics fontMetrics = getFontMetrics(FontSizer.INSTANCE.getAdjustedDefaultFont()); int minimumHeight = fontMetrics.getHeight() * 8 + HEIGHT_DELTA; int minimumWidth = Math.max( fontMetrics.stringWidth( controller.getLocaliser().getString("createNewReceivingAddressDialog.message")), fontMetrics.stringWidth( controller.getLocaliser().getString("createNewReceivingAddressSubmitAction.createdSuccessfullyShort", new Object[] {100}))) + WIDTH_DELTA; setMinimumSize(new Dimension(minimumWidth, minimumHeight)); positionDialogRelativeToParent(this, 0.5D, 0.47D); } catch (NullPointerException npe) { // FontSizer fail - probably headless in test - carry on. } createNewReceivingAddressPanel = new CreateNewReceivingAddressPanel(this.bitcoinController, receiveBitcoinPanel, this); setLayout(new BorderLayout()); add(createNewReceivingAddressPanel, BorderLayout.CENTER); } public ReceiveBitcoinPanel getReceiveBitcoinPanel() { return receiveBitcoinPanel; } public int getNumberOfAddressesToCreate() { return createNewReceivingAddressPanel.getNumberOfAddressesToCreate(); } public JComboBox getNumberOfAddresses() { return createNewReceivingAddressPanel.getNumberOfAddresses(); } }