X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=src%2Ftim%2Fprune%2Fgui%2FTerrainDefinitionPanel.java;fp=src%2Ftim%2Fprune%2Fgui%2FTerrainDefinitionPanel.java;h=ebb4b05283599b4c8d19f437986549a722ea5edf;hp=0000000000000000000000000000000000000000;hb=ce6f2161b8596f7018d6a76bff79bc9e571f35fd;hpb=2d8cb72e84d5cc1089ce77baf1e34ea3ea2f8465 diff --git a/src/tim/prune/gui/TerrainDefinitionPanel.java b/src/tim/prune/gui/TerrainDefinitionPanel.java new file mode 100644 index 0000000..ebb4b05 --- /dev/null +++ b/src/tim/prune/gui/TerrainDefinitionPanel.java @@ -0,0 +1,86 @@ +package tim.prune.gui; + +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JCheckBox; +import javax.swing.JLabel; +import javax.swing.JPanel; + +import tim.prune.I18nManager; +import tim.prune.config.Config; +import tim.prune.threedee.TerrainDefinition; + +/** + * Gui component for defining the 3d terrain, + * including whether to use one or not, and if so + * what resolution to use for the grid + */ +public class TerrainDefinitionPanel extends JPanel +{ + /** Checkbox to use a terrain or not */ + private JCheckBox _useCheckbox = null; + /** Field for entering the grid size */ + private WholeNumberField _gridSizeField = null; + + + /** + * Constructor + */ + public TerrainDefinitionPanel() + { + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + // Components + _useCheckbox = new JCheckBox(I18nManager.getText("dialog.3d.useterrain")); + _useCheckbox.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent arg0) { + activateGridField(); + } + }); + add(_useCheckbox); + add(Box.createHorizontalGlue()); + JLabel label = new JLabel(I18nManager.getText("dialog.3d.terraingridsize") + ": "); + add(label); + _gridSizeField = new WholeNumberField(4); + _gridSizeField.setValue(Config.getConfigInt(Config.KEY_TERRAIN_GRID_SIZE)); // default grid size + _gridSizeField.setMaximumSize(new Dimension(100, 50)); + _gridSizeField.setEnabled(false); + add(_gridSizeField); + } + + /** + * @param inDefinition terrain parameters to set + */ + public void initTerrainParameters(TerrainDefinition inDefinition) + { + _useCheckbox.setSelected(inDefinition != null && inDefinition.getUseTerrain()); + if (inDefinition != null && inDefinition.getGridSize() > 0) { + _gridSizeField.setValue(inDefinition.getGridSize()); + } + activateGridField(); + } + + /** + * @return true if the terrain is selected + */ + public boolean getUseTerrain() { + return _useCheckbox.isSelected() && getGridSize() > 2; + } + + /** + * @return number of nodes along each side of the grid + */ + public int getGridSize() { + return _gridSizeField.getValue(); + } + + /** + * Set the grid field to be enabled or not based on the checkbox + */ + private void activateGridField() { + _gridSizeField.setEnabled(_useCheckbox.isSelected()); + } +}