Index: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/AppTopologyServices.java
===================================================================
--- org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/AppTopologyServices.java	(revision 725)
+++ org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/AppTopologyServices.java	(revision 726)
@@ -155,6 +155,20 @@
     }
 
     @Override
+    public void refreshView() {
+        try {
+            ApplicationManager application = ApplicationLocator.getManager();
+            ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
+            if( viewdoc == null ) {
+                return;
+            }
+            viewdoc.getMapContext().invalidate();
+        } catch (Exception ex) {
+            LOGGER.warn("Cant refresh view", ex);
+        }
+    }
+    
+    @Override
     public void centerTo(Point point) {
         try {
             ApplicationManager application = ApplicationLocator.getManager();
Index: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/TopologyImplLibrary.java
===================================================================
--- org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/TopologyImplLibrary.java	(revision 725)
+++ org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/TopologyImplLibrary.java	(revision 726)
@@ -35,6 +35,7 @@
 import org.gvsig.topology.rule.ContainsPointRuleFactory;
 import org.gvsig.topology.rule.MustBeLargerThanToleranceLineRuleFactory;
 import org.gvsig.topology.rule.MustNotOverlapPolygonRuleFactory;
+import org.gvsig.topology.rule.PointMustBeProperlyInsidePolygonRuleFactory;
 
 /**
  *
@@ -63,6 +64,7 @@
         manager.addRuleFactories(new ContainsPointRuleFactory());
         manager.addRuleFactories(new MustBeLargerThanToleranceLineRuleFactory());
         manager.addRuleFactories(new MustNotOverlapPolygonRuleFactory());
+        manager.addRuleFactories(new PointMustBeProperlyInsidePolygonRuleFactory());
     }
 
 }
Index: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyDataSet.java
===================================================================
--- org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyDataSet.java	(revision 725)
+++ org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyDataSet.java	(revision 726)
@@ -95,6 +95,11 @@
         }
     }
 
+    public void restart() {
+        this.store  = null;
+        this.spatialIndex = null;
+    }
+    
     @Override
     public boolean equals(Object obj) {
         if( !(obj instanceof DefaultTopologyDataSet) ) {
Index: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyPlan.java
===================================================================
--- org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyPlan.java	(revision 725)
+++ org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyPlan.java	(revision 726)
@@ -132,6 +132,9 @@
             theTaskStatus.message("Preparing the execution of the plan");
             theTaskStatus.setAutoremove(true);
             theTaskStatus.setIndeterminate();
+            for (TopologyDataSet dataSet : this.dataSets.values()) {
+                dataSet.restart();
+            }
             this.getReport().removeAllLines();
             long steps = 0;
             for (TopologyRule rule : this.rules) {
Index: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsPointRule.java
===================================================================
--- org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsPointRule.java	(revision 725)
+++ org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsPointRule.java	(revision 726)
@@ -29,10 +29,12 @@
 import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
 import org.gvsig.fmap.dal.feature.EditableFeature;
 import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.fmap.dal.feature.FeatureReference;
 import org.gvsig.fmap.dal.feature.FeatureSet;
 import org.gvsig.fmap.dal.feature.FeatureStore;
 import org.gvsig.fmap.geom.Geometry;
 import org.gvsig.fmap.geom.primitive.Point;
+import org.gvsig.fmap.geom.primitive.Polygon;
 import org.gvsig.tools.dynobject.DynObject;
 import org.gvsig.tools.task.SimpleTaskStatus;
 import org.gvsig.topology.lib.spi.AbstractTopologyRule;
@@ -64,15 +66,19 @@
         }
 
         @Override
-        public void execute(TopologyRule rule, TopologyReportLine line, DynObject parameters)  {
+        public void execute(TopologyRule rule, TopologyReportLine line, DynObject parameters) {
             try {
-                Point point = line.getGeometry().centroid();
+                Geometry polygon = line.getGeometry();
+                Point point = polygon.centroid();
+                if( !polygon.contains(point) ) {
+                    point = polygon.getInteriorPoint();
+                }
                 TopologyDataSet dataSet = rule.getDataSet2();
 
                 EditableFeature feature = dataSet.createNewFeature();
                 feature.setDefaultGeometry(point);
                 dataSet.insert(feature);
-                
+
             } catch (Exception ex) {
                 throw new ExecuteTopologyRuleActionException(ex);
             }
@@ -83,7 +89,7 @@
     private String geomName;
     private Expression expression = null;
     private ExpressionBuilder expressionBuilder = null;
-    
+
     public ContainsPointRule(
             TopologyPlan plan,
             TopologyRuleFactory factory
@@ -91,7 +97,7 @@
         super(plan, factory);
         this.actions.add(new CreateFetureAction());
     }
-    
+
     public ContainsPointRule(
             TopologyPlan plan,
             TopologyRuleFactory factory,
@@ -100,7 +106,7 @@
             String dataSet2
     ) {
         super(plan, factory, tolerance, dataSet1, dataSet2);
-        
+
         this.addAction(new CreateFetureAction());
     }
 
@@ -109,39 +115,61 @@
         FeatureSet set = null;
         try {
             FeatureStore store2 = this.getDataSet2().getStore();
-            if( this.expression == null ) {
+            if (this.expression == null) {
                 ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
                 this.expression = manager.createExpression();
                 this.expressionBuilder = manager.createExpressionBuilder();
                 this.geomName = store2.getDefaultFeatureType().getDefaultGeometryAttributeName();
-             }
+            }
             Geometry polygon = feature1.getDefaultGeometry();
-            this.expression.setPhrase(
-                this.expressionBuilder.ifnull(
-                    this.expressionBuilder.column(this.geomName), 
-                    this.expressionBuilder.constant(false), 
-                    this.expressionBuilder.ST_Intersects(
-                        this.expressionBuilder.column(this.geomName),
-                        this.expressionBuilder.geometry(polygon)
-                    )
-                ).toString()
-            );
-            Feature f = store2.findFirst(this.expression);
-            if ( f==null ) {
-                report.addLine(this,
-                        this.getDataSet1(),
-                        this.getDataSet2(),
-                        polygon,
-                        feature1.getReference(),
-                        null,
-                        false,
-                        "The polygon is an error because it does not contain a point."
+            TopologyDataSet theDataSet = this.getDataSet2();
+            if (theDataSet.getSpatialIndex() != null) {
+                boolean ok = false;
+                for (FeatureReference featureReference : theDataSet.query(polygon)) {
+                    Feature feature2 = featureReference.getFeature();
+                    if( polygon.contains(feature2.getDefaultGeometry()) ) {
+                        ok = true;
+                        break;
+                    }
+                }
+                if( !ok ) {
+                    report.addLine(this,
+                            this.getDataSet1(),
+                            this.getDataSet2(),
+                            polygon,
+                            feature1.getReference(),
+                            null,
+                            false,
+                            "The polygon is an error because it does not contain a point."
+                    );
+                }
+            } else {
+                this.expression.setPhrase(
+                        this.expressionBuilder.ifnull(
+                                this.expressionBuilder.column(this.geomName),
+                                this.expressionBuilder.constant(false),
+                                this.expressionBuilder.ST_Contains(
+                                        this.expressionBuilder.geometry(polygon),
+                                        this.expressionBuilder.column(this.geomName)
+                                )
+                        ).toString()
                 );
+                if (theDataSet.findFirst(this.expression) == null) {
+                    report.addLine(this,
+                            this.getDataSet1(),
+                            this.getDataSet2(),
+                            polygon,
+                            feature1.getReference(),
+                            null,
+                            false,
+                            "The polygon is an error because it does not contain a point."
+                    );
+                }
             }
-        } catch(Exception ex) {
+        } catch (Exception ex) {
             LOGGER.warn("Can't check feature.", ex);
         } finally {
-            if( set!=null ) {
+            if (set != null) {
                 set.dispose();
             }
         }
Index: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/PointMustBeProperlyInsidePolygonRule.java
===================================================================
--- org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/PointMustBeProperlyInsidePolygonRule.java	(revision 0)
+++ org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/PointMustBeProperlyInsidePolygonRule.java	(revision 726)
@@ -0,0 +1,168 @@
+/**
+ * gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright (C) 2007-2013 gvSIG Association.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * For any additional information, do not hesitate to contact us
+ * at info AT gvsig.com, or visit our website www.gvsig.com.
+ */
+package org.gvsig.topology.rule;
+
+import org.gvsig.expressionevaluator.Expression;
+import org.gvsig.expressionevaluator.ExpressionBuilder;
+import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
+import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
+import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.fmap.dal.feature.FeatureReference;
+import org.gvsig.fmap.dal.feature.FeatureSet;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.tools.dynobject.DynObject;
+import org.gvsig.tools.task.SimpleTaskStatus;
+import org.gvsig.topology.lib.spi.AbstractTopologyRule;
+import org.gvsig.topology.lib.spi.AbstractTopologyRuleAction;
+import org.gvsig.topology.lib.api.ExecuteTopologyRuleActionException;
+import org.gvsig.topology.lib.api.TopologyDataSet;
+import org.gvsig.topology.lib.api.TopologyPlan;
+import org.gvsig.topology.lib.api.TopologyReport;
+import org.gvsig.topology.lib.api.TopologyReportLine;
+import org.gvsig.topology.lib.api.TopologyRule;
+import org.gvsig.topology.lib.api.TopologyRuleFactory;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+@SuppressWarnings("UseSpecificCatch")
+public class PointMustBeProperlyInsidePolygonRule extends AbstractTopologyRule {
+
+    private class DeleteAction extends AbstractTopologyRuleAction {
+
+        public DeleteAction() {
+            super(
+                    PointMustBeProperlyInsidePolygonRuleFactory.NAME,
+                    "Delete",
+                    "Delete",
+                    " The Delete fix removes point features that are not properly within polygon features. Note that you can use the Edit tool and move the point inside the polygon feature if you do not want to delete it. This fix can be applied to one or more Must Be Properly Inside errors."
+            );
+        }
+
+        @Override
+        public void execute(TopologyRule rule, TopologyReportLine line, DynObject parameters) {
+            try {
+                TopologyDataSet dataSet = rule.getDataSet1();
+
+                dataSet.delete(line.getFeature1());
+
+            } catch (Exception ex) {
+                throw new ExecuteTopologyRuleActionException(ex);
+            }
+        }
+
+    }
+
+    private String geomName;
+    private Expression expression = null;
+    private ExpressionBuilder expressionBuilder = null;
+
+    public PointMustBeProperlyInsidePolygonRule(
+            TopologyPlan plan,
+            TopologyRuleFactory factory
+    ) {
+        super(plan, factory);
+        this.actions.add(new DeleteAction());
+    }
+
+    public PointMustBeProperlyInsidePolygonRule(
+            TopologyPlan plan,
+            TopologyRuleFactory factory,
+            double tolerance,
+            String dataSet1,
+            String dataSet2
+    ) {
+        super(plan, factory, tolerance, dataSet1, dataSet2);
+
+        this.addAction(new DeleteAction());
+    }
+
+    @Override
+    protected void check(SimpleTaskStatus taskStatus, TopologyReport report, Feature feature1) throws Exception {
+        FeatureSet set = null;
+        try {
+            FeatureStore store2 = this.getDataSet2().getStore();
+            if (this.expression == null) {
+                ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
+                this.expression = manager.createExpression();
+                this.expressionBuilder = manager.createExpressionBuilder();
+                this.geomName = store2.getDefaultFeatureType().getDefaultGeometryAttributeName();
+            }
+            Geometry point = feature1.getDefaultGeometry();
+            TopologyDataSet theDataSet = this.getDataSet2();
+//            if (theDataSet.getSpatialIndex() != null) {
+//                boolean ok = false;
+//                for (FeatureReference featureReference : theDataSet.query(point)) {
+//                    Feature feature2 = featureReference.getFeature();
+//                    if( feature2.getDefaultGeometry().overlaps(point) ) {
+//                        ok = true;
+//                        break;
+//                    }
+//                }
+//                if( !ok ) {
+//                    report.addLine(this,
+//                            this.getDataSet1(),
+//                            this.getDataSet2(),
+//                            point,
+//                            feature1.getReference(),
+//                            null,
+//                            false,
+//                            "The point are error where are not inside a polygon."
+//                    );
+//                }
+//            } else {
+                this.expression.setPhrase(
+                        this.expressionBuilder.ifnull(
+                                this.expressionBuilder.column(this.geomName),
+                                this.expressionBuilder.constant(false),
+                                this.expressionBuilder.ST_Overlaps(
+                                        this.expressionBuilder.column(this.geomName),
+                                        this.expressionBuilder.geometry(point)
+                                )
+                        ).toString()
+                );
+                if (theDataSet.findFirst(this.expression) == null) {
+                    report.addLine(this,
+                            this.getDataSet1(),
+                            this.getDataSet2(),
+                            point,
+                            feature1.getReference(),
+                            null,
+                            false,
+                            "The point are error where are not inside a polygon."
+                    );
+                }
+//            }
+        } catch (Exception ex) {
+            LOGGER.warn("Can't check feature.", ex);
+        } finally {
+            if (set != null) {
+                set.dispose();
+            }
+        }
+    }
+
+}
Index: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/PointMustBeProperlyInsidePolygonRuleFactory.java
===================================================================
--- org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/PointMustBeProperlyInsidePolygonRuleFactory.java	(revision 0)
+++ org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/PointMustBeProperlyInsidePolygonRuleFactory.java	(revision 726)
@@ -0,0 +1,66 @@
+/**
+ * gvSIG. Desktop Geographic Information System.
+ *
+ * Copyright (C) 2007-2013 gvSIG Association.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * For any additional information, do not hesitate to contact us
+ * at info AT gvsig.com, or visit our website www.gvsig.com.
+ */
+package org.gvsig.topology.rule;
+
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.tools.util.ListBuilder;
+import org.gvsig.topology.lib.spi.AbstractTopologyRuleFactory;
+import org.gvsig.topology.lib.api.TopologyPlan;
+import org.gvsig.topology.lib.api.TopologyRule;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class PointMustBeProperlyInsidePolygonRuleFactory extends AbstractTopologyRuleFactory {
+    
+    public static final String NAME = "PointMustBeProperlyInsidePolygon";
+    
+    public PointMustBeProperlyInsidePolygonRuleFactory() {
+        super(
+                NAME, 
+                "Must Be Properly Inside", 
+                "Requires that points fall within area features. This is useful when the point features are related to polygons, such as wells and well pads or address points and parcels.", 
+                new ListBuilder<Integer>()
+                        .add(Geometry.TYPES.POINT)
+                        .asList(),
+                new ListBuilder<Integer>()
+                        .add(Geometry.TYPES.SURFACE)
+                        .add(Geometry.TYPES.MULTISURFACE)
+                        .asList()
+        );
+    }
+    
+    @Override
+    public TopologyRule createRule(TopologyPlan plan, String dataSet1, String dataSet2, double tolerance) {
+        TopologyRule rule = new PointMustBeProperlyInsidePolygonRule(plan, this, tolerance, dataSet1, dataSet2);
+        return rule;
+    }    
+
+    @Override
+    public TopologyRule createRule(TopologyPlan plan) {
+        TopologyRule rule = new PointMustBeProperlyInsidePolygonRule(plan, this);
+        return rule;
+    }
+}
Index: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyDataSet.java
===================================================================
--- org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyDataSet.java	(revision 725)
+++ org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyDataSet.java	(revision 726)
@@ -79,4 +79,5 @@
 
     public Feature findFirst(Expression expression);
 
+    public void restart();
 }
Index: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingServices.java
===================================================================
--- org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingServices.java	(revision 725)
+++ org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingServices.java	(revision 726)
@@ -33,22 +33,23 @@
  * @author jjdelcerro
  */
 public interface TopologySwingServices extends TopologyServices {
-    
+
     public interface WorkingAreaChangedListener {
-     
+
         public void workingAreaChanged(Envelope workingArea);
     }
-    
+
     public TreeModel getDataSetTreeModel();
-    
+
     public void zoomTo(Envelope envelope);
-    
+
     public void centerTo(Point point);
-    
+
     public Envelope getWorkingArea();
-    
+
     public void addWorkingAreaChangedListener(WorkingAreaChangedListener listener);
 
     public void removeWorkingAreaChangedListener(WorkingAreaChangedListener listener);
 
+    public void refreshView();
 }

Property changes on: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.api
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/view-tree-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/view-tree-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyReport.java
===================================================================
--- org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyReport.java	(revision 725)
+++ org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyReport.java	(revision 726)
@@ -417,10 +417,11 @@
             }
         }
         action.execute(rule, line, parameters);
-        tabData.setEnabledAt(0, true);
-        tabData.setEnabledAt(1, false);
-        tabData.setSelectedIndex(0);
-        pnlParameters.removeAll();
+        this.tabData.setEnabledAt(0, true);
+        this.tabData.setEnabledAt(1, false);
+        this.tabData.setSelectedIndex(0);
+        this.pnlParameters.removeAll();
+        this.services.refreshView();
     }
 
     private void doShowActionParametersPanel(
Index: org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyPlanProperties.java
===================================================================
--- org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyPlanProperties.java	(revision 725)
+++ org.gvsig.topology/trunk/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyPlanProperties.java	(revision 726)
@@ -227,9 +227,10 @@
         if( lstRules.isSelectionEmpty() ) {
             return;
         }
+        int index = lstRules.getSelectedIndex();
         TopologyRule rule = (TopologyRule) ListElement.getSelected(lstRules);
         this.plan.removeRule(rule);
-        lstRules.remove(lstRules.getSelectedIndex());
+        lstRules.remove(index);
     }
 
 }
