package net.sf.freecol.client.gui.panel; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import net.sf.freecol.client.FreeColClient; import net.sf.freecol.client.gui.GUI; import net.sf.freecol.client.gui.i18n.Messages; import net.sf.freecol.common.model.Map; public class ScaleMapSizeDialog extends FreeColDialog<Dimension> { public static final String COPYRIGHT = "Copyright (C) 2003-2012 The FreeCol Team"; public static final String LICENSE = "http://www.gnu.org/licenses/gpl.html"; public static final String REVISION = "$Revision$"; private static final int COLUMNS = 5; private Map oldMap; final JTextField inputWidth = new JTextField(Integer.toString(oldMap.getWidth()), COLUMNS); final JTextField inputHeight = new JTextField(Integer.toString(oldMap.getHeight()), COLUMNS); public ScaleMapSizeDialog(FreeColClient freeColClient, final GUI gui) { super(freeColClient, gui); oldMap = freeColClient.getGame().getMap(); /* * TODO: Extend this dialog. It should be possible to specify the sizes * using percentages. * * Add a panel containing information about the scaling (old size, new * size etc). */ setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); JPanel buttons = new JPanel(); buttons.setOpaque(false); final ActionListener al = new ActionListener() { public void actionPerformed(ActionEvent event) { try { int width = Integer.parseInt(inputWidth.getText()); int height = Integer.parseInt(inputHeight.getText()); if (width <= 0 || height <= 0) { throw new NumberFormatException(); } setResponse(new Dimension(width, height)); } catch (NumberFormatException nfe) { gui.errorMessage("integerAboveZero"); } } }; JButton okButton = new JButton(Messages.message("ok")); buttons.add(okButton); JButton cancelButton = new JButton(Messages.message("cancel")); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { setResponse(null); } }); buttons.add(cancelButton); setCancelComponent(cancelButton); okButton.addActionListener(al); inputWidth.addActionListener(al); inputHeight.addActionListener(al); JLabel widthLabel = new JLabel(Messages.message("width")); widthLabel.setLabelFor(inputWidth); JLabel heightLabel = new JLabel(Messages.message("height")); heightLabel.setLabelFor(inputHeight); JPanel widthPanel = new JPanel(new FlowLayout()); widthPanel.setOpaque(false); widthPanel.add(widthLabel); widthPanel.add(inputWidth); JPanel heightPanel = new JPanel(new FlowLayout()); heightPanel.setOpaque(false); heightPanel.add(heightLabel); heightPanel.add(inputHeight); add(widthPanel); add(heightPanel); add(buttons); setSize(getPreferredSize()); } @Override public void requestFocus() { inputWidth.requestFocus(); } }