Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/pickercontroller/DatePickerController.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/pickercontroller/DatePickerController.java	(revision 2165)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/pickercontroller/DatePickerController.java	(revision 2166)
@@ -1,6 +1,8 @@
 package org.gvsig.tools.swing.api.pickercontroller;
 
+import java.text.DateFormat;
 import java.util.Date;
+import javax.swing.text.MaskFormatter;
 
 /**
  *
@@ -8,4 +10,11 @@
  */
 public interface DatePickerController extends PickerController<Date> {
   public void uninstall();
+  
+  public DateFormat getDateFormat();
+  
+  public MaskFormatter getMask();
+  
+  public void setEmptyText(String emptyText);
+  
 }
Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/DatePickerControllerImpl.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/DatePickerControllerImpl.java	(revision 2165)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/pickercontroller/DatePickerControllerImpl.java	(revision 2166)
@@ -3,6 +3,7 @@
 import java.awt.Color;
 import static java.awt.Component.RIGHT_ALIGNMENT;
 import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.net.URL;
 import java.text.DateFormat;
 import java.text.ParseException;
@@ -27,8 +28,6 @@
 import org.gvsig.tools.swing.api.pickercontroller.DatePickerController;
 import org.gvsig.tools.swing.icontheme.IconTheme;
 import org.gvsig.tools.swing.icontheme.IconThemeManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  *
@@ -43,7 +42,6 @@
   private final JTextComponent txtDate;
   private JCalendar jcalendar;
   private DateFormat df;
-  private static final Logger LOG = LoggerFactory.getLogger(DatePickerControllerImpl.class);
 
   public static void selfRegister() {
     URL imageResource = DatePickerControllerImpl.class.getClassLoader().getResource("org/gvsig/tools/swing/picker/picker-date.png");
@@ -58,7 +56,9 @@
   private final DocumentListener documentListener;
   private final Color colorOk;
   private final Color colorErr;
-  private String emptyValue;
+  private String emptyText;
+  private MaskFormatter mask;
+  private final ActionListener buttonListener;
 
   public DatePickerControllerImpl(JTextComponent txtDate, JButton btnDate) {
     this.txtDate = txtDate;
@@ -97,9 +97,9 @@
           s = s.replace("y", "#");
           s = s.replace("d", "#");
           s = s.replace("M", "#");
-          MaskFormatter mask = new MaskFormatter(s);
+          this.mask = new MaskFormatter(s);
           mask.setPlaceholderCharacter('_');
-          this.emptyValue = s.replace("#","_");
+          this.emptyText = s.replace("#","_");
           mask.setAllowsInvalid(false);
           mask.install(ftf);
         } catch (Exception ex) {
@@ -136,26 +136,32 @@
       this.btnDate.setText("");
     }
 
-    this.btnDate.addActionListener((ActionEvent e) -> {
+    this.buttonListener = (ActionEvent e) -> {
       doShowCalendar();
-    });
+    };
+    this.btnDate.addActionListener(this.buttonListener);
   }
 
   @Override
   public void uninstall() {
-
+    this.document.removeDocumentListener(documentListener);
+    if( this.mask!=null ) {
+      this.mask.uninstall();
+    }
+    this.txtDate.setBackground(colorOk);
+    this.btnDate.removeActionListener(buttonListener);    
   }
   
-  private String getText() {
+  protected String getText() {
     String s = this.txtDate.getText();
-    if( this.emptyValue!=null && this.emptyValue.equals(s) ) {
+    if( this.emptyText!=null && this.emptyText.equals(s) ) {
       return "";
     }
     s = s.replace("_", "");
     return s;
   }
 
-  private void checkContents() {
+  protected void checkContents() {
     if( this.isValid() ) {
       this.txtDate.setBackground(colorOk);
     } else {
@@ -228,7 +234,10 @@
     }
     JPopupMenu menu = new JPopupMenu();
     menu.add(getJCalendar());
-    Date v = this.get();
+    Date v = new Date();
+    if( !isEmpty() ) {
+      v = this.get();
+    }
     if (v != null) {
       getJCalendar().setDate(v);
     }
@@ -251,4 +260,19 @@
     this.set((Date) this.coerce(DataTypes.DATE, value, new Date()));
   }
 
+  @Override
+  public DateFormat getDateFormat() {
+    return this.df;
+  }
+
+  @Override
+  public MaskFormatter  getMask() {
+      return this.mask;
+  }
+
+  @Override
+  public void setEmptyText(String emptyText) {
+    this.emptyText = emptyText;
+  }
+
 }
