Index: trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/featuretype/FeatureTypePanel.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/featuretype/FeatureTypePanel.java	(revision 44477)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/featuretype/FeatureTypePanel.java	(revision 44478)
@@ -2,13 +2,14 @@
 
 import org.gvsig.fmap.dal.feature.EditableFeatureType;
 import org.gvsig.fmap.dal.feature.FeatureType;
+import org.gvsig.tools.swing.api.ChangeListenerSupport;
 import org.gvsig.tools.swing.api.Component;
 
 /**
  *
  * @author jjdelcerro
  */
-public interface FeatureTypePanel extends Component {
+public interface FeatureTypePanel extends Component, ChangeListenerSupport {
     
     public EditableFeatureType fetch(EditableFeatureType type);
     
@@ -16,4 +17,5 @@
     
     public void setEditable(boolean editable);
 
+    public boolean isModifyingAField();
 }
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretype/DefaultFeatureTypePanel.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretype/DefaultFeatureTypePanel.java	(revision 44477)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretype/DefaultFeatureTypePanel.java	(revision 44478)
@@ -9,6 +9,7 @@
 import java.util.Objects;
 import javax.swing.JComponent;
 import javax.swing.JOptionPane;
+import javax.swing.event.ChangeListener;
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 import javax.swing.event.TableModelEvent;
@@ -23,6 +24,7 @@
 import org.gvsig.tools.dataTypes.DataTypes;
 import org.gvsig.tools.dynobject.DynStruct_v2;
 import org.gvsig.tools.i18n.I18nManager;
+import org.gvsig.tools.swing.api.ChangeListenerHelper;
 import org.gvsig.tools.swing.api.ToolsSwingLocator;
 import org.gvsig.tools.swing.api.ToolsSwingManager;
 import org.slf4j.Logger;
@@ -38,7 +40,7 @@
     {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(DefaultFeatureTypePanel.class);
-    
+
     private class FeatureTypeTableModel extends AbstractTableModel {
 
         private final FeatureType featureType;
@@ -145,6 +147,7 @@
     private int currentRow;
     private boolean fieldSelectionAllowed;
     private TagsController tagsController;
+    private ChangeListenerHelper changeListenerHelper;
         
     public DefaultFeatureTypePanel() {
         this.editable = true;
@@ -157,6 +160,8 @@
     private void initComponents() {
         ToolsSwingManager swingManager = ToolsSwingLocator.getToolsSwingManager();
 
+        this.changeListenerHelper = swingManager.createChangeListenerHelper();
+        
         swingManager.translate(this.btnDelete);
         swingManager.translate(this.btnFormFieldAccept);
         swingManager.translate(this.btnFormFieldDiscard);
@@ -225,7 +230,7 @@
         );
 
         
-        this.setPreferredSize(new Dimension(700, 400));
+        this.setPreferredSize(new Dimension(700, 500));
         if( this.tblFields.getRowCount()>0 ) {
             this.tblFields.getSelectionModel().setSelectionInterval(0, 0);
             doFormFieldPut();
@@ -292,8 +297,14 @@
             this.descriptorPanel.setEditable(false);
         }
         this.fieldSelectionAllowed = false;
+        this.changeListenerHelper.fireEvent();
     }
     
+    @Override
+    public boolean isModifyingAField() {
+        return btnFormFieldAccept.isEnabled();
+    }
+    
     private void doFormFieldAccept() {
         int row = this.tblFields.getSelectedRow();
         if( row<0 ) {
@@ -305,12 +316,14 @@
             this.tblFields.scrollRectToVisible(this.tblFields.getCellRect(row, 0, true));
             this.fieldSelectionAllowed = true;
         }
+        this.changeListenerHelper.fireEvent();
     }
     
     private void doFormFieldDiscard() {
         doFormFieldPut();
         this.updateButtonState();
         this.fieldSelectionAllowed = true;
+        this.changeListenerHelper.fireEvent();
     }
 
     private void doChangeFieldSelection() {
@@ -403,7 +416,8 @@
         this.tblFields.getSelectionModel().addSelectionInterval(row,row);
         this.tblFields.scrollRectToVisible(this.tblFields.getCellRect(row, 0, true));
         updateButtonState();
-        doFormFieldModify();       
+        doFormFieldModify();    
+        this.changeListenerHelper.fireEvent();
     }
     
     private void doDeleteField() {
@@ -420,6 +434,7 @@
         this.tblFields.getSelectionModel().addSelectionInterval(row,row);
         updateButtonState();
         doFormFieldPut();       
+        this.changeListenerHelper.fireEvent();
     }
             
     public static String getNewFieldName(FeatureType featureType) {
@@ -436,4 +451,29 @@
         return fieldName;
     }
 
+    @Override
+    public void addChangeListener(ChangeListener listener) {
+        this.changeListenerHelper.addChangeListener(listener);
+    }
+
+    @Override
+    public ChangeListener[] getChangeListeners() {
+        return this.changeListenerHelper.getChangeListeners();
+    }
+
+    @Override
+    public void removeChangeListener(ChangeListener listener) {
+        this.changeListenerHelper.removeChangeListener(listener);
+    }
+
+    @Override
+    public void removeAllChangeListener() {
+        this.changeListenerHelper.removeAllChangeListener();
+    }
+
+    @Override
+    public boolean hasChangeListeners() {
+        return this.changeListenerHelper.hasChangeListeners();
+    }
+    
 }
Index: trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/extension/TableEditAttributes.java
===================================================================
--- trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/extension/TableEditAttributes.java	(revision 44477)
+++ trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app.document.table.app/org.gvsig.app.document.table.app.mainplugin/src/main/java/org/gvsig/app/extension/TableEditAttributes.java	(revision 44478)
@@ -25,22 +25,18 @@
 
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import org.apache.commons.lang3.StringUtils;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
 import org.gvsig.andami.IconThemeHelper;
 import org.gvsig.andami.plugins.Extension;
 import org.gvsig.app.ApplicationLocator;
 import org.gvsig.app.ApplicationManager;
 import org.gvsig.app.project.Project;
 import org.gvsig.app.project.ProjectManager;
-import org.gvsig.app.project.documents.Document;
 import org.gvsig.app.project.documents.table.TableDocument;
 import org.gvsig.app.project.documents.table.TableManager;
 import org.gvsig.app.project.documents.table.gui.FeatureTableDocumentPanel;
-import org.gvsig.fmap.dal.DALLocator;
-import org.gvsig.fmap.dal.DataManager;
-import org.gvsig.fmap.dal.DataStore;
 import org.gvsig.fmap.dal.DataTypes;
-import org.gvsig.fmap.dal.StoresRepository;
 import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
 import org.gvsig.fmap.dal.feature.EditableFeatureType;
 import org.gvsig.fmap.dal.feature.FeatureStore;
@@ -64,6 +60,7 @@
 @SuppressWarnings("UseSpecificCatch")
 public class TableEditAttributes extends Extension {
 
+    @Override
     public void initialize() {
         IconThemeHelper.registerIcon("action", "table-column-manager", this);
         IconThemeHelper.registerIcon("action", "table-add-column", this);
@@ -74,6 +71,7 @@
         return true;
     }
 
+    @Override
     public void execute(String s) {
         final I18nManager i18n = ToolsLocator.getI18nManager();
         final WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
@@ -108,6 +106,18 @@
                             WindowManager_v2.BUTTON_APPLY, 
                             i18n.getTranslation("_Show_as_table")
                     );
+                    panel.addChangeListener(new ChangeListener() {
+                        @Override
+                        public void stateChanged(ChangeEvent e) {
+                            if( panel.isModifyingAField() ) {
+                                dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);
+                                dialog.setButtonEnabled(WindowManager_v2.BUTTON_APPLY, false);
+                            } else {
+                                dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, true);
+                                dialog.setButtonEnabled(WindowManager_v2.BUTTON_APPLY, true);
+                            }
+                        }
+                    });
                 } else {
                     dialog.setButtonLabel(
                             WindowManager_v2.BUTTON_CANCEL, 
@@ -208,6 +218,7 @@
     }
     
 
+    @Override
     public boolean isEnabled() {
         ApplicationManager application = ApplicationLocator.getManager();
 
@@ -218,6 +229,7 @@
         return tabledoc.getStore().isEditing();
     }
 
+    @Override
     public boolean isVisible() {
         ApplicationManager application = ApplicationLocator.getManager();
 
