Index: GeometryDynFieldComponent.java
===================================================================
--- GeometryDynFieldComponent.java	(revision 38606)
+++ GeometryDynFieldComponent.java	(revision 38607)
@@ -22,12 +22,19 @@
  */
 package org.gvsig.fmap.mapcontrol.swing.dynfield;
 
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.BoxLayout;
+import javax.swing.JCheckBox;
 import javax.swing.JComponent;
-import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import org.gvsig.fmap.geom.Geometry;
-import org.gvsig.fmap.geom.Geometry.SUBTYPES;
-import org.gvsig.fmap.geom.Geometry.TYPES;
 import org.gvsig.i18n.Messages;
 import org.gvsig.tools.dynobject.DynField;
 import org.gvsig.tools.service.ServiceException;
@@ -45,9 +52,14 @@
  *
  */
 public class GeometryDynFieldComponent extends
-AbstractJDynFieldComponent {
+AbstractJDynFieldComponent implements ActionListener {
     
-    private JLabel label = null; 
+    private static Logger logger =
+        LoggerFactory.getLogger(GeometryDynFieldComponent.class);
+    
+    private JCheckBox wktCheckBox = null; 
+    private JTextField txtField = null; 
+    private JPanel panel = null;
 
     public GeometryDynFieldComponent(
         DynField definition,
@@ -69,7 +81,7 @@
     }
 
     public JComponent asJComponent() {
-        return label;
+        return panel;
     }
 
     public Object getValue() {
@@ -84,17 +96,59 @@
 
     protected void initData() {
     }
-
-    protected void initUI() {
+    
+    private String getValueText(boolean wkt) {
         Object val = this.getFieldValue();
+        String txt = null;
+        
         if (val == null || (!(val instanceof Geometry))) {
-            label = new JLabel("[" + Messages.getText("_Null") + "]");
+            txt = "[" + Messages.getText("_Invalid_value") + "]";
         } else {
             Geometry geom = (Geometry) val;
-            label = new JLabel(geom.getGeometryType().getName());
+            if (wkt) {
+                try {
+                    txt = geom.convertToWKT();
+                } catch (Exception e) {
+                    logger.info("Error while getting WKT: " + e.getMessage(), e);
+                    txt = "[" + Messages.getText("_Unable_to_show_value") + "]";
+                }
+            } else {
+                txt = geom.getGeometryType().getName();
+            }
         }
+        return txt;
     }
 
+    protected void initUI() {
+        
+        wktCheckBox =
+            new JCheckBox(Messages.getText("_Show_as_text") + "  ");
+        wktCheckBox.setSelected(false);
+        wktCheckBox.addActionListener(this);
+        txtField = new JTextField();
+        // txtField.setEditable(false);
+        txtField.setText(this.getValueText(wktCheckBox.isSelected()));
+        txtField.setHorizontalAlignment(JTextField.LEFT);
+        
+        panel = new JPanel(); // new GridBagLayout());
+        panel.setLayout(new BoxLayout(panel, BoxLayout.LINE_AXIS));
+        
+        /*
+        GridBagConstraints constr = new GridBagConstraints();
+        constr.insets = new Insets(3, 3, 3, 3);
+        constr.gridx = 0;
+        constr.gridy = 0;
+        constr.fill = GridBagConstraints.NONE;
+        */
+        
+        panel.add(wktCheckBox); // , constr);
+        /*
+        constr.gridx = 1;
+        constr.fill = GridBagConstraints.HORIZONTAL;
+        */
+        panel.add(txtField); // , constr);
+    }
+
     protected void setNonNullValue(Object value) {
     }
 
@@ -104,4 +158,13 @@
     protected void setReadOnly() {
     }
 
+
+    public void actionPerformed(ActionEvent e) {
+        // update txt field when check box state changes
+        if (txtField != null && wktCheckBox != null) {
+            txtField.setText(this.getValueText(wktCheckBox.isSelected()));
+            txtField.setHorizontalAlignment(JTextField.LEFT);
+        }
+    }
+
 }
