]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - src/tim/prune/gui/TerrainDefinitionPanel.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / src / tim / prune / gui / TerrainDefinitionPanel.java
diff --git a/src/tim/prune/gui/TerrainDefinitionPanel.java b/src/tim/prune/gui/TerrainDefinitionPanel.java
new file mode 100644 (file)
index 0000000..ebb4b05
--- /dev/null
@@ -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());
+       }
+}