// Bart 20060831 -> i18n
// **********************************************************************
//
//<copyright>
//
//BBN Technologies, a Verizon Company
//10 Moulton Street
//Cambridge, MA 02138
//(617) 873-8000
//
//Copyright (C) BBNT Solutions LLC. All rights reserved.
//
//</copyright>
//**********************************************************************
//
//$Source:
///cvs/darwars/ambush/aar/src/com/bbn/ambush/mission/MissionHandler.java,v
//$
//$RCSfile: DimensionQueryPanel.java,v $
//$Revision: 1.6 $
//$Date: 2006-10-25 12:21:51 $
//$Author: jourquin $
//
//**********************************************************************
package com.bbn.openmap.gui;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.text.MessageFormat;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import com.bbn.openmap.Environment;
import com.bbn.openmap.I18n;
public class DimensionQueryPanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = 9129280747489252728L;
private JTextField hfield;
private JTextField vfield;
private JLabel htext;
private JLabel vtext;
private JLabel ptext1;
private JLabel ptext2;
public static final String HEIGHT_CMD = "DQP_HEIGHT_CMD";
public static final String WIDTH_CMD = "DQP_WIDTH_CMD";
// I18N mechanism
static I18n i18n = Environment.getI18n();
public DimensionQueryPanel() {
this(0, 0);
}
public DimensionQueryPanel(Dimension d) {
this((int)d.getWidth(), (int)d.getHeight());
}
public DimensionQueryPanel(int width, int height) {
htext = new JLabel(MessageFormat.format("{0}:",i18n.get(DimensionQueryPanel.class, "Width", "Width")));
htext.setHorizontalAlignment(SwingConstants.RIGHT);
vtext = new JLabel(MessageFormat.format("{0}:",i18n.get(DimensionQueryPanel.class, "Height", "Height")));
vtext.setHorizontalAlignment(SwingConstants.RIGHT);
hfield = new DimensionQueryField(Integer.toString(width), 5);
hfield.setActionCommand(WIDTH_CMD);
vfield = new DimensionQueryField(Integer.toString(height), 5);
vfield.setActionCommand(HEIGHT_CMD);
ptext1 = new JLabel(MessageFormat.format(" {0}", i18n.get(DimensionQueryPanel.class, "pixels", "pixels")));
ptext2 = new JLabel(MessageFormat.format(" {0}", i18n.get(DimensionQueryPanel.class, "pixels", "pixels")));
layoutPanel();
}
public void setFieldWidth(int width) {
hfield.setText(Integer.toString(width));
}
public int getFieldWidth() {
return Integer.parseInt(hfield.getText());
}
public void setFieldHeight(int height) {
vfield.setText(Integer.toString(height));
}
public int getFieldHeight() {
return Integer.parseInt(vfield.getText());
}
public void addActionListener(ActionListener al) {
hfield.addActionListener(al);
vfield.addActionListener(al);
}
public void removeActionListener(ActionListener al) {
hfield.removeActionListener(al);
vfield.removeActionListener(al);
}
public void layoutPanel() {
GridBagLayout gb = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
setLayout(gb);
c.insets = new Insets(3, 3, 3, 3);
c.gridx = 0;
c.gridy = 0;
c.fill = GridBagConstraints.NONE;
c.weightx = 0;
c.anchor = GridBagConstraints.EAST;
gb.setConstraints(htext, c);
add(htext);
c.gridx = 1;
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1f;
c.anchor = GridBagConstraints.WEST;
gb.setConstraints(hfield, c);
add(hfield);
c.gridx = 2;
c.fill = GridBagConstraints.NONE;
c.weightx = 0;
gb.setConstraints(ptext1, c);
add(ptext1);
// Next row
c.gridx = 0;
c.gridy = 1;
c.fill = GridBagConstraints.NONE;
c.weightx = 0;
c.anchor = GridBagConstraints.EAST;
gb.setConstraints(vtext, c);
add(vtext);
c.gridx = 1;
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1f;
c.anchor = GridBagConstraints.WEST;
gb.setConstraints(vfield, c);
add(vfield);
c.gridx = 2;
c.fill = GridBagConstraints.NONE;
c.weightx = 0;
gb.setConstraints(ptext2, c);
add(ptext2);
}
/**
* @param d
*/
public void setDimension(Dimension d) {
setFieldWidth((int)d.getWidth());
setFieldHeight((int)d.getHeight());
}
/**
* @return Dimension of panel.
*/
public Dimension getDimension() {
return new Dimension(getFieldWidth(), getFieldHeight());
}
/**
* Customized text field that sends an action event when focus is lost (in
* addition to when the user hits "enter"). Fixes situations where listeners
* were not getting dimension updates when user failed to hit enter (a
* common occurrence).
*/
private class DimensionQueryField extends JTextField implements FocusListener {
/**
*
*/
private static final long serialVersionUID = 1L;
private DimensionQueryField(String text, int columns) {
super(text, columns);
this.addFocusListener(this);
}
public void focusGained(FocusEvent e) {
}
public void focusLost(FocusEvent e) {
fireActionPerformed();
}
}
}