3 import java.awt.Dimension;
4 import java.awt.event.ActionEvent;
5 import java.awt.event.ActionListener;
7 import javax.swing.Box;
8 import javax.swing.BoxLayout;
9 import javax.swing.JCheckBox;
10 import javax.swing.JLabel;
11 import javax.swing.JPanel;
13 import tim.prune.I18nManager;
14 import tim.prune.threedee.TerrainDefinition;
17 * Gui component for defining the 3d terrain,
18 * including whether to use one or not, and if so
19 * what resolution to use for the grid
21 public class TerrainDefinitionPanel extends JPanel
23 /** Checkbox to use a terrain or not */
24 private JCheckBox _useCheckbox = null;
25 /** Field for entering the grid size */
26 private WholeNumberField _gridSizeField = null;
32 public TerrainDefinitionPanel()
34 setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
36 _useCheckbox = new JCheckBox(I18nManager.getText("dialog.3d.useterrain"));
37 _useCheckbox.addActionListener(new ActionListener() {
38 public void actionPerformed(ActionEvent arg0) {
43 add(Box.createHorizontalGlue());
44 JLabel label = new JLabel(I18nManager.getText("dialog.3d.terraingridsize") + ": ");
46 _gridSizeField = new WholeNumberField(4);
47 _gridSizeField.setValue(50); // default grid size
48 _gridSizeField.setMaximumSize(new Dimension(100, 50));
49 _gridSizeField.setEnabled(false);
54 * @param inDefinition terrain parameters to set
56 public void initTerrainParameters(TerrainDefinition inDefinition)
58 _useCheckbox.setSelected(inDefinition != null && inDefinition.getUseTerrain());
59 if (inDefinition != null && inDefinition.getGridSize() > 0) {
60 _gridSizeField.setValue(inDefinition.getGridSize());
66 * @return true if the terrain is selected
68 public boolean getUseTerrain() {
69 return _useCheckbox.isSelected() && getGridSize() > 2;
73 * @return number of nodes along each side of the grid
75 public int getGridSize() {
76 return _gridSizeField.getValue();
80 * Set the grid field to be enabled or not based on the checkbox
82 private void activateGridField() {
83 _gridSizeField.setEnabled(_useCheckbox.isSelected());