Index: DefaultJFeaturesForm.java
===================================================================
--- DefaultJFeaturesForm.java	(revision 44530)
+++ DefaultJFeaturesForm.java	(revision 44531)
@@ -27,6 +27,7 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.ComponentAdapter;
 import java.awt.event.ComponentEvent;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -110,6 +111,7 @@
 
     private final String STARTEDITING_ACTION = "startEditing";
     private final String FINISHEDITING_ACTION = "finishEditing";
+    private final String REFRESHFORM_ACTION = "refreshForm";
 
 
     public class DefaultFeaturesFormContext implements FeaturesFormContext {
@@ -222,6 +224,17 @@
         });
     }
 
+public static void selfRegister() {
+        String[][] iconNames = new String[][]{
+            new String[]{"dalswing", "form-refresh-data"}
+        };
+        IconTheme theme = ToolsSwingLocator.getIconThemeManager().getCurrent();
+        for (String[] icon : iconNames) {
+            URL url = DefaultJFeaturesForm.class.getResource(icon[1] + ".png");
+            theme.registerDefault("DALSwing", icon[0], icon[1], null, url);
+        }
+        
+    }
     @Override
     public void setPreferredSize(Dimension dimension) {
 //        panel.setPreferredSize(dimension);
@@ -319,6 +332,7 @@
 
             this.formset.addAction(new StartEditingAction());
             this.formset.addAction(new FinishEditingAction());
+            this.formset.addAction(new RefreshAction());
             
             FormActionContext actionContext = new FormActionContext();
             Collection<DALActionFactory> factories = DALSwingLocator.getSwingManager().getStoreActions();
@@ -366,7 +380,34 @@
             return null;
         }
     }
+    
+    private class RefreshAction extends AbstractAction {
 
+        @SuppressWarnings({"OverridableMethodCallInConstructor", "LeakingThisInConstructor"})
+        public RefreshAction() {
+            I18nManager i18nManager = ToolsLocator.getI18nManager();
+            IconTheme iconTheme = ToolsSwingLocator.getIconThemeManager().getDefault();
+
+            this.putValue(NAME, null);
+            this.putValue(SHORT_DESCRIPTION, i18nManager.getTranslation("_Refresh"));
+            this.putValue(SMALL_ICON, iconTheme.get("form-refresh-data"));
+            this.putValue(ACTION_COMMAND_KEY, REFRESHFORM_ACTION);
+            this.setEnabled(!formset.isInNewState());
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent ae) {
+            try {
+                I18nManager i18n = ToolsLocator.getI18nManager();
+                formset.message(i18n.getTranslation("_Form_refreshed"));
+                updateForm();
+            } catch (Exception ex) {
+                LOGGER.warn("Can't refresh form", ex);
+            }
+        }
+    }
+
+       
     private class FinishEditingAction extends AbstractAction implements Observer {
 
         @SuppressWarnings({"OverridableMethodCallInConstructor", "LeakingThisInConstructor"})
@@ -411,7 +452,7 @@
             }
             updateButtonEnabledStatus();
         }
-
+    
         @Override
         public void update(Observable observable, Object notification) {
             if( store == null || formset==null ) {
@@ -550,7 +591,14 @@
                 feature = ((EditableFeature) feature).getNotEditableCopy();
             }
             features.delete(feature);
+            
             this.formset.message(i18n.getTranslation("_Record_removed"));
+            
+            this.formset.setValues(features.asListOfDynObjects());
+            if (features.getTotalSize()-1<index) {
+                index = index-1;
+            }
+            this.formset.setCurrentIndex(index);
 
         } catch (Exception ex) {
             theFormSet.message(i18n.getTranslation("error_removing_data_will_not_remove"));
@@ -591,6 +639,7 @@
             formset.setActionEnabled(ACTION_CANCEL_NEW,false);
             formset.setActionEnabled(ACTION_SAVE,false);
             formset.setActionEnabled(ACTION_SEARCH,false);
+            formset.setActionEnabled(REFRESHFORM_ACTION, true);
             return;
         }
         if( store.isEditing() ) {
@@ -605,6 +654,7 @@
                 formset.setActionEnabled(ACTION_NEW,false);
                 formset.setActionEnabled(ACTION_CANCEL_NEW,true);
                 formset.setActionEnabled(ACTION_SAVE,true);
+                formset.setActionEnabled(REFRESHFORM_ACTION, false);
                 
             } else if( this.features!=null && this.features.isEmpty() ) {
                 formset.setActionEnabled(ACTION_DELETE, false);
@@ -612,6 +662,7 @@
                 formset.setActionEnabled(ACTION_NEW,true);
                 formset.setActionEnabled(ACTION_CANCEL_NEW,true);
                 formset.setActionEnabled(ACTION_SAVE,false);
+                formset.setActionEnabled(REFRESHFORM_ACTION, true);
 
             } else if( formset.getForm().isModified() ) {
                 formset.setActionEnabled(ACTION_DELETE, true);
@@ -619,6 +670,7 @@
                 formset.setActionEnabled(ACTION_NEW,true);
                 formset.setActionEnabled(ACTION_CANCEL_NEW,false);
                 formset.setActionEnabled(ACTION_SAVE,true);
+                formset.setActionEnabled(REFRESHFORM_ACTION, true);
 
             } else {
                 formset.setActionEnabled(ACTION_DELETE, true);
@@ -626,6 +678,7 @@
                 formset.setActionEnabled(ACTION_NEW,true);
                 formset.setActionEnabled(ACTION_CANCEL_NEW,false);
                 formset.setActionEnabled(ACTION_SAVE,true); //false);
+                formset.setActionEnabled(REFRESHFORM_ACTION, true);
             }
 
             return;
@@ -640,6 +693,7 @@
         formset.setActionEnabled(ACTION_CANCEL_NEW,false);
         formset.setActionEnabled(ACTION_SAVE,false);
         formset.setActionEnabled(ACTION_SEARCH,true);
+        formset.setActionEnabled(REFRESHFORM_ACTION,true);
     }
         
     @Override
