Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/pom.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/pom.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/pom.xml	(revision 808)
@@ -0,0 +1,108 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.desktop</artifactId>
+        <version>2.0.235</version>
+    </parent>
+    <artifactId>org.gvsig.topology</artifactId>
+    <version>1.0.3</version>
+    <packaging>pom</packaging>
+    <name>${project.artifactId}</name>
+
+    <url>https://devel.gvsig.org/svn/gvsig-projects-pool/${project.artifactId}/trunk/${project.artifactId}</url>
+  
+    <distributionManagement>
+        <site>
+            <id>gvsig-repository</id>
+            <url>dav:https://devel.gvsig.org/sites/${project.artifactId}/${project.version}</url>
+        </site>
+    </distributionManagement>
+  
+    <scm>
+        <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-projects-pool/org.gvsig.topology/tags/org.gvsig.topology-1.0.3</connection>
+        <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-projects-pool/org.gvsig.topology/tags/org.gvsig.topology-1.0.3</developerConnection>
+        <url>https://devel.gvsig.org/svn/gvsig-projects-pool/org.gvsig.topology/tags/org.gvsig.topology-1.0.3</url>
+    </scm>
+
+    <developers>
+        <developer>
+            <id>jjdelcerro</id>
+            <name>Joaquin Jose del Cerro</name>
+            <email>jjdelcerro@gvsig.com</email>
+            <roles>
+                <role>Architect</role>
+                <role>Developer</role>
+            </roles>
+        </developer>
+    </developers>
+
+    <repositories>
+        <repository>
+            <id>gvsig-public-http-repository</id>
+            <name>gvSIG maven public HTTP repository</name>
+            <url>http://devel.gvsig.org/m2repo/j2se</url>
+            <releases>
+                <enabled>true</enabled>
+                <updatePolicy>daily</updatePolicy>
+                <checksumPolicy>warn</checksumPolicy>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+                <updatePolicy>daily</updatePolicy>
+                <checksumPolicy>warn</checksumPolicy>
+            </snapshots>
+        </repository>
+    </repositories>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-release-plugin</artifactId>
+                <configuration>
+                    <tagBase>https://devel.gvsig.org/svn/gvsig-projects-pool/${project.artifactId}/tags</tagBase>
+                    <goal>deploy</goal>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.topology.app.mainplugin</artifactId>
+                <version>1.0.3</version>
+            </dependency>
+            <dependency>
+                <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.topology.lib.api</artifactId>
+                <version>1.0.3</version>
+            </dependency>
+            <dependency>
+                <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.topology.lib.impl</artifactId>
+                <version>1.0.3</version>
+            </dependency>
+            <dependency>
+                <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.topology.swing.api</artifactId>
+                <version>1.0.3</version>
+            </dependency>
+            <dependency>
+                <groupId>org.gvsig</groupId>
+                <artifactId>org.gvsig.topology.swing.impl</artifactId>
+                <version>1.0.3</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <modules>
+        <module>org.gvsig.topology.lib</module>
+        <module>org.gvsig.topology.swing</module>
+        <module>org.gvsig.topology.app</module>
+    </modules>
+
+</project>
\ No newline at end of file
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/buildNumber.properties
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/buildNumber.properties	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/buildNumber.properties	(revision 808)
@@ -0,0 +1,2 @@
+#Tue Feb 12 15:14:05 CET 2019
+buildNumber=6
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/i18n/text.properties
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/i18n/text.properties	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/i18n/text.properties	(revision 808)
@@ -0,0 +1,42 @@
+#Translations for language [es]
+#Thu Nov 20 10:10:09 CET 2014
+_Topology=Topologia
+_Create_or_edit_plan=Crear o modificar plan
+_Execute_plan=Ejecutar plan
+_Topology_plan_error_inspector=Inspector de errores del Plan de topologia
+_Topology_plan=Plan de topologia
+_Show=Mostrar
+_Show_errors=Mostrar errores
+_Show_exceptions=Mostrar excepciones
+_Show_only_in_visible_extent=Mostrar solo en el area visible
+_Show_form_when_modify_geometry=Mostrar formulario al modificar la geometria
+_Zoom=Zoom
+Center_geometry=Centrar geometria
+_Center_error=Centrar error
+_Actions=Acciones
+_Action=Acci\u00f3n
+_Update=Actualizar
+_Name=Nombre
+_Tolerance=Tolerancia
+_DataSets=Conjuntos de datos
+_Dataset1=Conjunto de datos1
+_Dataset2=Conjunto de datos2
+_Rules=Reglas
+_Remove_dataset=Eliminar conjunto de datos
+_Add_dataset=A\u00f1adir conjunto de datos
+_Remove_rule=Eliminar regla
+_Add_rule=A\u00f1adir regla
+_Edit_rule=Modificar regla
+_Contains_Point=Contiene punto
+_Primary_dataset=Conjunto de datos primario
+_Secondary_dataset=Conjunto de datos secundario
+_Rule=Regla
+_Add_new_rule=A\u00f1adir nueva regla
+_Exception=Excepcion
+_Errors=Errores
+_Parameters=Parametros
+_Accept=Aceptar
+_Execute=Ejecutar
+_Any_rule=Cualquier regla
+_Erase_error_marks=Eliminar marcas de errores
+_Select_a_dataset=Seleccione un conjunto de datos
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties	(revision 808)
@@ -0,0 +1,41 @@
+#Translations for language [en]
+#Thu Nov 20 10:10:15 CET 2014
+_Topology=Topology
+_Create_or_edit_plan=Create or edit plan
+_Execute_plan=Execute plan
+_Topology_plan_error_inspector=Topology plan error inspector
+_Topology_plan=Topology plan
+_Show=Show
+_Show_errors=Show errors
+_Show_exceptions=Show exceptions
+_Show_only_in_visible_extent=Show only in visible extent
+_Show_form_when_modify_geometry=Show form when modify geometry
+_Zoom=Zoom
+_Center_geometry=Center geometry
+_Center_error=Center error
+_Actions=Actions
+_Action=Action
+_Update=Update
+_Name=Name
+_Tolerance=Tolerance
+_DataSets=Datasets
+_Dataset1=Dataset1
+_Dataset2=Dataset2
+_Rules=Rules
+_Remove_dataset=Remove dataset
+_Add_dataset=Add dataset
+_Remove_rule=Remove rule
+_Add_rule=Add rule
+_Edit_rule=Edit rule
+_Primary_dataset=Primary dataset
+_Secondary_dataset=Secondary dataset
+_Rule=Rule
+_Add_new_rule=Add new rule
+_Exception=Exception
+_Errors=Errors
+_Parameters=Parameters
+_Accept=Accept
+_Execute=Execute
+_Any_rule=Any rule
+_Erase_error_marks=Erase error marks
+_Select_a_dataset=Select a dataset
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/config.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/config.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/config.xml	(revision 808)
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- gvSIG. Desktop Geographic Information System. Copyright (C) 2007-2014 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. -->
+<plugin-config>
+  <depends plugin-name="org.gvsig.app.mainplugin" />
+  <resourceBundle name="text" />
+  <libraries library-dir="lib" />
+  <extensions>
+
+
+    <extension class-name="org.gvsig.topology.app.mainplugin.TopologyExtension"
+      description="" active="true" priority="1">
+            <action 
+                name="tools-topology-create-or-modify"
+                label="_Show_create_or_edit_topology_plan" 
+                position="908300100"  
+                tooltip="_Show_create_or_edit_topology_plan" 
+                action-command="tools-topology-create-or-modify"
+                icon="tools-topology-create-or-modify"
+                accelerator=""
+            />
+            <action 
+                name="tools-topology-execute"
+                label="_Execute_topology_plan" 
+                position="908300200"  
+                tooltip="_Execute_topology_plan" 
+                action-command="tools-topology-execute"
+                icon="tools-topology-execute"
+                accelerator=""
+            />
+
+            <menu text="tools/_Topology"
+                              position="908300000" 
+                              is_separator="true"/>
+            <menu text="tools/_Topology/_Create_or_edit_plan" 
+                              name="tools-topology-create-or-modify"/>
+            <menu text="tools/_Topology/_Execute_plan" 
+                              name="tools-topology-execute"/>
+				
+            <!--
+            <tool-bar name="topology" position="2000">
+                <action-tool name="tools-topology-create-or-modify"/>				
+                <action-tool name="tools-topology-execute"/>				
+            </tool-bar>                    
+            -->
+    </extension>
+
+
+  </extensions>
+</plugin-config>
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/images/topology/topology-tree-project.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/images/topology/topology-tree-project.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/images/topology/topology-tree-folder.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/images/topology/topology-tree-folder.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/images/document/document-view-tree-icon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/images/document/document-view-tree-icon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/symbols/topology-error-line.gvssym
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/symbols/topology-error-line.gvssym
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/symbols/topology-error-polygon.gvssym
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/symbols/topology-error-polygon.gvssym
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/symbols/topology-error-point.gvssym
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/resources-plugin/symbols/topology-error-point.gvssym
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml	(revision 808)
@@ -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.
+
+-->
+<assembly>
+    <id>gvsig-plugin-package</id>
+    <formats>
+        <format>zip</format>
+    </formats>
+    <baseDirectory>${project.artifactId}</baseDirectory>
+    <includeBaseDirectory>true</includeBaseDirectory>
+    <files>
+        <file>
+            <source>target/${project.artifactId}-${project.version}.jar</source>
+            <outputDirectory>lib</outputDirectory>
+        </file>
+        <file>
+            <source>target/package.info</source>
+        </file>
+    </files>
+
+    <fileSets>
+        <fileSet>
+            <directory>src/main/resources-plugin</directory>
+            <outputDirectory>.</outputDirectory>
+        </fileSet>
+    </fileSets>
+
+
+    <dependencySets>
+        <dependencySet>
+            <useProjectArtifact>false</useProjectArtifact>
+            <useTransitiveDependencies>false</useTransitiveDependencies>
+            <outputDirectory>lib</outputDirectory>
+            <includes>
+                <include>org.gvsig:org.gvsig.topology.lib.api</include>
+                <include>org.gvsig:org.gvsig.topology.lib.impl</include>
+                <include>org.gvsig:org.gvsig.topology.swing.api</include>
+                <include>org.gvsig:org.gvsig.topology.swing.impl</include>
+            </includes>
+        </dependencySet>
+    </dependencySets>
+
+</assembly>
+
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/AppTopologyServices.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/AppTopologyServices.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/AppTopologyServices.java	(revision 808)
@@ -0,0 +1,356 @@
+/**
+ * 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.app.mainplugin;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.swing.ImageIcon;
+import javax.swing.tree.TreeModel;
+import org.apache.commons.lang3.mutable.Mutable;
+import org.apache.commons.lang3.mutable.MutableObject;
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.andami.PluginsLocator;
+import org.gvsig.app.ApplicationLocator;
+import org.gvsig.app.ApplicationManager;
+import org.gvsig.app.project.Project;
+import org.gvsig.app.project.documents.Document;
+import org.gvsig.app.project.documents.view.ViewDocument;
+import org.gvsig.app.project.documents.view.ViewManager;
+import org.gvsig.fmap.dal.EditingNotification;
+import org.gvsig.fmap.dal.EditingNotificationManager;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.dal.swing.DALSwingLocator;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.aggregate.MultiCurve;
+import org.gvsig.fmap.geom.aggregate.MultiPoint;
+import org.gvsig.fmap.geom.aggregate.MultiSurface;
+import org.gvsig.fmap.geom.primitive.Curve;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.fmap.geom.primitive.Point;
+import org.gvsig.fmap.geom.primitive.Surface;
+import org.gvsig.fmap.mapcontext.MapContext;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.ViewPort;
+import org.gvsig.fmap.mapcontext.events.ColorEvent;
+import org.gvsig.fmap.mapcontext.events.ExtentEvent;
+import org.gvsig.fmap.mapcontext.events.ProjectionEvent;
+import org.gvsig.fmap.mapcontext.events.listeners.ViewPortListener;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontext.layers.FLayers;
+import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
+import org.gvsig.fmap.mapcontext.layers.vectorial.GraphicLayer;
+import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
+import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol_v2;
+import org.gvsig.fmap.mapcontrol.MapControlLocator;
+import org.gvsig.fmap.mapcontrol.swing.dynobject.DynObjectEditor;
+import org.gvsig.tools.dynobject.DynObject;
+import org.gvsig.tools.exception.BaseException;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.observer.Observer;
+import org.gvsig.tools.swing.api.ListElement;
+import org.gvsig.tools.visitor.VisitCanceledException;
+import org.gvsig.tools.visitor.Visitor;
+import org.gvsig.topology.lib.api.TopologyDataSet;
+import org.gvsig.topology.swing.api.TopologySwingServices;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+@SuppressWarnings("UseSpecificCatch")
+public class AppTopologyServices implements TopologySwingServices {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(AppTopologyServices.class);
+
+    private class WorkingAreaViewPortListener implements ViewPortListener {
+
+        private WorkingAreaChangedListener workingAreaChangedListener;
+        private ViewPort viewPort;
+
+        public WorkingAreaViewPortListener(ViewPort viewPort, WorkingAreaChangedListener workingAreaChangedListener) {
+            this.workingAreaChangedListener = workingAreaChangedListener;
+            this.viewPort = viewPort;
+        }
+
+        public ViewPort getViewPort() {
+            return this.viewPort;
+        }
+
+        @Override
+        public void extentChanged(ExtentEvent e) {
+            this.workingAreaChangedListener.workingAreaChanged(e.getNewExtent());
+        }
+
+        @Override
+        public void backColorChanged(ColorEvent e) {
+        }
+
+        @Override
+        public void projectionChanged(ProjectionEvent e) {
+        }
+    }
+
+    private class EditingNotificationObserver implements Observer {
+
+        public EditingNotificationObserver() {
+
+        }
+
+        @Override
+        public void update(Observable o, Object notification) {
+            EditingNotification n = (EditingNotification) notification;
+            if (n.isCancelable() && n.getFeature() != null) {
+                try {
+                    DynObject data = n.getFeature().getAsDynObject();
+                    DynObjectEditor editor = new DynObjectEditor(data);
+                    editor.setTitle("Topology - " + n.getFeature().getType().getName());
+                    editor.editObject(true);
+                    if (editor.isCanceled()) {
+                        n.cancel();
+                    } else {
+                        editor.getData(data);
+                    }
+                } catch (Exception ex) {
+                    LOGGER.warn("Problems showing the feature in a form.", ex);
+                }
+            }
+        }
+    }
+
+    private Map<WorkingAreaChangedListener, WorkingAreaViewPortListener> workingAreaListener;
+    private ISymbol errorPolygonSymbol = null;
+    private ISymbol errorPointSymbol = null;
+    private ISymbol errorLineSymbol = null;
+    private EditingNotificationObserver editingNotificationObserver = null;
+
+    public AppTopologyServices() {
+        this.workingAreaListener = new HashMap<>();
+    }
+
+    @Override
+    public TreeModel getDataSetTreeModel() {
+        ApplicationManager application = ApplicationLocator.getManager();
+        ViewDocument view = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
+        return new DataSetsTreeModel(this, view);
+    }
+
+    @Override
+    public FeatureStore getFeatureStore(final TopologyDataSet dataSet) {
+        final Mutable<FeatureStore> store = new MutableObject<>();
+        store.setValue(null);
+
+        ApplicationManager application = ApplicationLocator.getManager();
+        Project project = application.getCurrentProject();
+
+        List<Document> views = new ArrayList<>();
+        views.add(project.getActiveDocument(ViewManager.TYPENAME));
+//        views.addAll(project.getDocuments(ViewManager.TYPENAME));
+
+        for (Document view : views) {
+            if (view == null) {
+                continue;
+            }
+            FLayers layers = ((ViewDocument) view).getMapContext().getLayers();
+            try {
+                layers.accept(new Visitor() {
+                    @Override
+                    public void visit(Object o) throws VisitCanceledException, BaseException {
+                        if (o instanceof FLyrVect) {
+                            FLyrVect layer = (FLyrVect) o;
+                            if (dataSet.isThisStore(layer.getFeatureStore())) {
+                                store.setValue(layer.getFeatureStore());
+                                throw new VisitCanceledException();
+                            }
+                        }
+                    }
+                });
+            } catch (VisitCanceledException ex) {
+                break;
+            } catch (Exception ex) {
+                throw new RuntimeException(ex);
+            }
+        }
+        return store.getValue();
+    }
+
+    @Override
+    public void zoomTo(Envelope envelope) {
+        ApplicationManager application = ApplicationLocator.getManager();
+        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
+        if (viewdoc == null) {
+            return;
+        }
+        ViewPort viewPort = viewdoc.getMapContext().getViewPort();
+        viewPort.setEnvelope(envelope);
+    }
+
+    @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();
+            ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
+            if (viewdoc == null) {
+                return;
+            }
+            ViewPort viewPort = viewdoc.getMapContext().getViewPort();
+            Envelope envelope = (Envelope) viewPort.getEnvelope().clone();
+            envelope.centerTo(point);
+            viewPort.setEnvelope(envelope);
+        } catch (Exception ex) {
+            LOGGER.warn("Cant center view", ex);
+        }
+    }
+
+    @Override
+    public Envelope getWorkingArea() {
+        ApplicationManager application = ApplicationLocator.getManager();
+        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
+        if (viewdoc == null) {
+            return null;
+        }
+        ViewPort viewPort = viewdoc.getMapContext().getViewPort();
+        return viewPort.getEnvelope();
+    }
+
+    @Override
+    public void addWorkingAreaChangedListener(WorkingAreaChangedListener listener) {
+        ApplicationManager application = ApplicationLocator.getManager();
+        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
+        if (viewdoc == null) {
+            return;
+        }
+        ViewPort viewPort = viewdoc.getMapContext().getViewPort();
+        WorkingAreaViewPortListener viewPortListener = this.workingAreaListener.get(listener);
+        if (viewPortListener == null) {
+            viewPortListener = new WorkingAreaViewPortListener(viewPort, listener);
+            this.workingAreaListener.put(listener, viewPortListener);
+        } else {
+            if (viewPort != viewPortListener.getViewPort()) {
+                viewPortListener.getViewPort().removeViewPortListener(viewPortListener);
+                viewPortListener = new WorkingAreaViewPortListener(viewPort, listener);
+                this.workingAreaListener.put(listener, viewPortListener);
+            }
+        }
+        viewPortListener.getViewPort().addViewPortListener(viewPortListener);
+    }
+
+    @Override
+    public void removeWorkingAreaChangedListener(WorkingAreaChangedListener listener) {
+        WorkingAreaViewPortListener viewPortListener = this.workingAreaListener.get(listener);
+        if (viewPortListener == null) {
+            return;
+        }
+        viewPortListener.getViewPort().removeViewPortListener(viewPortListener);
+    }
+
+    @Override
+    public void addError(Geometry geom) {
+        if (this.errorPointSymbol == null) {
+            try {
+                File pluginfolder = PluginsLocator.getManager().getPlugin(this).getPluginDirectory();
+                File folder = new File(pluginfolder, "symbols");
+                ISymbol[] symbols = MapContextLocator.getSymbolManager().loadSymbols(folder);
+                for (ISymbol symbol : symbols) {
+                    if (symbol instanceof ISymbol_v2) {
+                        String symbolid = ((ISymbol_v2) symbol).getID();
+                        switch(symbolid) {
+                            case "topology-error-polygon":
+                                this.errorPolygonSymbol = symbol;
+                                break;
+                            case "topology-error-line":
+                                this.errorLineSymbol = symbol;
+                                break;
+                            case "topology-error-point":
+                                this.errorPointSymbol = symbol;
+                                break;
+                        }
+                    }
+                }
+            } catch (Exception ex) {
+            }
+        }
+        ApplicationManager application = ApplicationLocator.getManager();
+        ViewDocument viewdoc = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
+        MapContext mapContext = viewdoc.getMapContext();
+        GraphicLayer gl = mapContext.getGraphicsLayer();
+        gl.removeGraphics("topology-errors");
+        if ( geom!=null ) {
+            ISymbol symbol = null;
+            if( geom instanceof Point || geom instanceof MultiPoint) {
+                symbol = this.errorPointSymbol;
+            } else if( geom instanceof Curve || geom instanceof MultiCurve ) {
+                symbol = this.errorLineSymbol;
+            } else if( geom instanceof Surface || geom instanceof MultiSurface ) {
+                symbol = this.errorPolygonSymbol;
+            }
+            if (symbol != null) {
+                int symbolid = gl.getSymbolId(symbol);
+                if (symbolid < 0) {
+                    gl.addSymbol(symbol);
+                    symbolid = gl.getSymbolId(symbol);
+                }
+                gl.addGraphic("topology-errors", geom, symbolid);
+            }
+        }
+        mapContext.invalidate();
+    }
+
+    @Override
+    public void setShowFormWhenEdit(boolean showFormWhenEdit) {
+        if (this.editingNotificationObserver == null) {
+            this.editingNotificationObserver = new EditingNotificationObserver();
+        }
+        EditingNotificationManager editingNotificationManager = DALSwingLocator.getEditingNotificationManager();
+        if (showFormWhenEdit) {
+            editingNotificationManager.addObserver(this.editingNotificationObserver);
+        } else {
+            editingNotificationManager.deleteObserver(this.editingNotificationObserver);
+        }
+    }
+
+    @Override
+    public ImageIcon getTreeIcon(TreeModel model, Object item) {
+        return ((DataSetsTreeModel)model).getTreeIcon(item);
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/DataSetsTreeModel.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/DataSetsTreeModel.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/DataSetsTreeModel.java	(revision 808)
@@ -0,0 +1,146 @@
+/**
+ * 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.app.mainplugin;
+
+import javax.swing.ImageIcon;
+import javax.swing.event.TreeModelListener;
+import javax.swing.tree.TreeModel;
+import javax.swing.tree.TreePath;
+import org.gvsig.andami.IconThemeHelper;
+import org.gvsig.app.project.documents.view.ViewDocument;
+import org.gvsig.fmap.dal.DataStore;
+import org.gvsig.fmap.mapcontext.MapContextLocator;
+import org.gvsig.fmap.mapcontext.layers.FLayer;
+import org.gvsig.fmap.mapcontext.layers.operations.SingleLayer;
+import org.gvsig.fmap.mapcontrol.CompoundLayersTreeModel;
+import org.gvsig.fmap.mapcontrol.MapControlLocator;
+import org.gvsig.tools.swing.api.ListElement;
+import org.gvsig.topology.lib.api.TopologyDataSet;
+import org.gvsig.topology.lib.api.TopologyLocator;
+import org.gvsig.topology.swing.api.TopologySwingServices;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class DataSetsTreeModel implements TreeModel {
+
+    private final ViewDocument view;
+    private final CompoundLayersTreeModel deletaged;
+    private final TopologySwingServices services;
+    private final ListElement<Object> root;
+    
+    public DataSetsTreeModel(TopologySwingServices services, ViewDocument view) {
+        this.services = services;
+        this.view = view;
+        CompoundLayersTreeModel model = (CompoundLayersTreeModel) MapControlLocator.getMapControlManager().createCompoundLayersTreeModel();
+        model.addLayers(view.getMapContext().getLayers());
+        this.deletaged = model;
+        this.root = new ListElement<>("Project", this.deletaged.getRoot());
+                
+    }
+    
+    private Object getNode(Object value) {
+        if( value instanceof ListElement ) {
+            return ((ListElement) value).getValue();
+        }
+        return value;
+    }
+    
+    @Override
+    public Object getRoot() {
+        return this.root;
+    }
+
+    @Override
+    public Object getChild(Object parent, int index) {
+        parent = this.getNode(parent);
+        Object x = this.deletaged.getChild(parent, index);
+        if( x instanceof SingleLayer ) {
+            SingleLayer layer = (SingleLayer)x;
+            DataStore store = layer.getDataStore();
+            x = TopologyLocator.getTopologyManager().createDataSet(
+                    layer.getName(),
+                    store
+            );
+        }
+        return x;
+    }
+
+    @Override
+    public int getChildCount(Object parent) {
+        parent = this.getNode(parent);
+        return this.deletaged.getChildCount(parent);
+    }
+
+    @Override
+    public boolean isLeaf(Object node) {
+        node = this.getNode(node);
+        return this.deletaged.isLeaf(node);
+    }
+
+    @Override
+    public void valueForPathChanged(TreePath path, Object newValue) {
+        this.deletaged.valueForPathChanged(path, newValue);
+    }
+
+    @Override
+    public int getIndexOfChild(Object parent, Object child) {
+        parent = this.getNode(parent);
+        return this.deletaged.getIndexOfChild(parent, child);
+    }
+
+    @Override
+    public void addTreeModelListener(TreeModelListener l) {
+        this.deletaged.addTreeModelListener(l);
+    }
+
+    @Override
+    public void removeTreeModelListener(TreeModelListener l) {
+        this.deletaged.removeTreeModelListener(l);
+    }
+
+    public ImageIcon getTreeIcon(Object item) {
+        if( this.getRoot()==item ) {
+            return IconThemeHelper.getImageIcon("topology-tree-project");
+        }
+        if (item instanceof ListElement) {
+            item = ((ListElement) item).getValue();
+        }
+        if( this.view.getMapContext().getLayers()==item ) {
+            return IconThemeHelper.getImageIcon("document-view-tree-icon");
+        }
+        if (item instanceof TopologyDataSet) {
+            DataStore store = ((TopologyDataSet)item).getStore();
+            String iconName = MapContextLocator.getMapContextManager().getIconLayer(store);
+            return IconThemeHelper.getImageIcon(iconName);
+        }
+        if (item instanceof FLayer) {
+            String iconName = ((FLayer) item).getTocImageIcon();
+            return IconThemeHelper.getImageIcon(iconName);
+        }
+        return IconThemeHelper.getImageIcon("topology-tree-folder");
+    }
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/TopologyExtension.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/TopologyExtension.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/src/main/java/org/gvsig/topology/app/mainplugin/TopologyExtension.java	(revision 808)
@@ -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.app.mainplugin;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import org.apache.commons.lang.StringUtils;
+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.documents.Document;
+import org.gvsig.app.project.documents.view.ViewDocument;
+import org.gvsig.app.project.documents.view.ViewManager;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.i18n.I18nManager;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.tools.swing.api.windowmanager.Dialog;
+import org.gvsig.tools.swing.api.windowmanager.WindowManager;
+import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
+import org.gvsig.topology.lib.api.TopologyLocator;
+import org.gvsig.topology.lib.api.TopologyManager;
+import org.gvsig.topology.lib.api.TopologyPlan;
+import org.gvsig.topology.swing.api.JTopologyPlanProperties;
+import org.gvsig.topology.swing.api.JTopologyReport;
+import org.gvsig.topology.swing.api.TopologySwingLocator;
+import org.gvsig.topology.swing.api.TopologySwingManager;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class TopologyExtension extends Extension {
+
+    @Override
+    public void initialize() {
+        
+    }
+
+    @Override
+    public void postInitialize() {
+        AppTopologyServices services = new AppTopologyServices();
+        
+        TopologyManager manager = TopologyLocator.getTopologyManager();
+        manager.setDefaultServices(services);
+        
+        TopologySwingManager swingManager = TopologySwingLocator.getTopologySwingManager();
+        swingManager.setDefaultServices(services);
+  
+        IconThemeHelper.registerIcon("document", "document-view-tree-icon", this);
+        IconThemeHelper.registerIcon("topology", "topology-tree-folder", this);
+        IconThemeHelper.registerIcon("topology", "topology-tree-project", this);
+    }
+
+    
+    @Override
+    public void execute(String action) {
+        if( StringUtils.equalsIgnoreCase("tools-topology-create-or-modify", action) ) {
+            I18nManager i18n = ToolsLocator.getI18nManager();
+            ApplicationManager application = ApplicationLocator.getManager();
+            final ViewDocument view = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
+            if( view==null ) {
+                // TODO: Mensaje de se necesita una vista 
+                return;
+            }
+            TopologyManager manager = TopologyLocator.getTopologyManager();
+            TopologySwingManager swingManager = TopologySwingLocator.getTopologySwingManager();
+            WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
+            
+            final JTopologyPlanProperties panel = swingManager.createJTopologyPlan();
+
+            TopologyPlan plan = manager.createTopologyPlan();
+            String jsonPlan = (String) view.getProperty("TopologyPlan");
+            if( !StringUtils.isEmpty(jsonPlan) ) {
+                plan.fromJSON(jsonPlan);
+            } 
+            panel.put(plan);
+            
+            final Dialog dlg = winManager.createDialog(
+                    panel.asJComponent(),
+                    i18n.getTranslation("_Topology_plan"),
+                    null, 
+                    WindowManager_v2.BUTTONS_OK_CANCEL
+            );
+            dlg.addActionListener(new ActionListener() {
+                @Override
+                public void actionPerformed(ActionEvent e) {
+                    if( dlg.getAction()==WindowManager_v2.BUTTON_OK ) {
+                        TopologyPlan plan = panel.fetch(null);
+                        view.setProperty("TopologyPlan", plan.toJSON().toString());
+                    }
+                }
+            });
+            dlg.show(WindowManager.MODE.WINDOW);
+
+        } else if( StringUtils.equalsIgnoreCase("tools-topology-execute", action) ) {
+            I18nManager i18n = ToolsLocator.getI18nManager();
+            ApplicationManager application = ApplicationLocator.getManager();
+            final ViewDocument view = (ViewDocument) application.getActiveDocument(ViewManager.TYPENAME);
+            if( view==null ) {
+                // TODO: Mensaje de se necesita una vista 
+                return;
+            }
+            TopologyManager manager = TopologyLocator.getTopologyManager();
+            final TopologySwingManager swingManager = TopologySwingLocator.getTopologySwingManager();
+            final WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
+            
+
+            String jsonPlan = (String) view.getProperty("TopologyPlan");
+            if( StringUtils.isEmpty(jsonPlan) ) {
+                // TODO: Mensaje de crear plan
+                return;
+            }
+           
+            final TopologyPlan plan = manager.createTopologyPlan();
+            plan.fromJSON(jsonPlan);
+            JTopologyReport panel = swingManager.createJTopologyReport(plan);
+            panel.put(plan);
+            winManager.showWindow(
+                    panel.asJComponent(), 
+                    i18n.getTranslation("_Topology_plan_error_inspector") + " ("+plan.getName()+")",
+                    WindowManager.MODE.TOOL
+            );
+
+            Thread th = new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    plan.execute();
+                }
+            }, "TopologyPlan-"+ plan.getName());
+            th.start();
+        }
+    }
+
+    @Override
+    public boolean isEnabled() {
+        ApplicationManager application = ApplicationLocator.getManager();
+        Document view = application.getActiveDocument(ViewManager.TYPENAME);
+        return view!=null;
+    }
+
+    @Override
+    public boolean isVisible() {
+        return true;
+    }
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/pom.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/pom.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin/pom.xml	(revision 808)
@@ -0,0 +1,51 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.gvsig</groupId>
+    <artifactId>org.gvsig.topology.app</artifactId>
+    <version>1.0.3</version>
+  </parent>
+  <artifactId>org.gvsig.topology.app.mainplugin</artifactId>
+  <name>${project.artifactId}</name>
+  <dependencies>
+    <dependency>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.app.mainplugin</artifactId>
+        <scope>compile</scope>
+    </dependency>
+    <dependency>
+    	<groupId>org.gvsig</groupId>
+    	<artifactId>org.gvsig.topology.lib.api</artifactId>
+        <scope>compile</scope>
+    </dependency>
+    <dependency>
+    	<groupId>org.gvsig</groupId>
+    	<artifactId>org.gvsig.topology.lib.impl</artifactId>
+        <scope>runtime</scope>
+    </dependency>
+    <dependency>
+    	<groupId>org.gvsig</groupId>
+    	<artifactId>org.gvsig.topology.swing.api</artifactId>
+        <scope>compile</scope>
+    </dependency>
+    <dependency>
+    	<groupId>org.gvsig</groupId>
+    	<artifactId>org.gvsig.topology.swing.impl</artifactId>
+        <scope>runtime</scope>
+    </dependency>
+  </dependencies>
+
+  <properties>
+    <gvsig.package.info.state>testing</gvsig.package.info.state>
+    <gvsig.package.info.official>true</gvsig.package.info.official>
+    <gvsig.package.info.dependencies>required: org.gvsig.app -ge 2.2.0</gvsig.package.info.dependencies>
+    <gvsig.package.info.categories />
+    <gvsig.package.info.name>Topology framework</gvsig.package.info.name>
+    <gvsig.package.info.description>Topology framework and basic rules</gvsig.package.info.description>
+    <gvsig.package.info.owner>gvSIG Association</gvsig.package.info.owner>
+    <gvsig.package.info.javaVM>j1_8</gvsig.package.info.javaVM>
+    <gvsig.package.info.sourcesURL>${project.scm.url}</gvsig.package.info.sourcesURL>
+    <gvsig.package.info.poolURL>https://devel.gvsig.org/download/projects/gvsig-topology/pool</gvsig.package.info.poolURL>
+  </properties>
+
+</project>
\ No newline at end of file

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/org.gvsig.topology.app.mainplugin
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/pom.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/pom.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.app/pom.xml	(revision 808)
@@ -0,0 +1,14 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.gvsig</groupId>
+    <artifactId>org.gvsig.topology</artifactId>
+    <version>1.0.3</version>
+  </parent>
+  <artifactId>org.gvsig.topology.app</artifactId>
+  <packaging>pom</packaging>
+  <name>${project.artifactId}</name>
+  <modules>
+  	<module>org.gvsig.topology.app.mainplugin</module>
+  </modules>
+</project>
\ No newline at end of file
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/pom.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/pom.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/pom.xml	(revision 808)
@@ -0,0 +1,37 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.topology.lib</artifactId>
+        <version>1.0.3</version>
+    </parent>
+    <artifactId>org.gvsig.topology.lib.impl</artifactId>
+    <name>${project.artifactId}</name>
+    <dependencies>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.topology.lib.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.tools.lib</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.dal.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.fmap.dal.swing.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.json</groupId>
+            <artifactId>json</artifactId>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/ContainsPoint.json
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/ContainsPoint.json	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/ContainsPoint.json	(revision 808)
@@ -0,0 +1,24 @@
+{
+    "id": "ContainsPoint",
+    "name": "Contains Point",
+    "description": [ 
+        "<img src=\"@@@.d/contains_point2.png\">\n",
+        "The top polygon is an error because it does not contain a point.\n\n",
+        "Requires that a polygon in the primary dataset contain at least one",
+        "point from the secondary dataset.\n",
+        "Points must be within the polygon, not on the boundary.\n",
+        "This is useful when every polygon should have at least one associated",
+        "point, such as when parcels must have an address point.
+    ],
+    "actions" : {
+        "CreateFeature": {
+            "name" : "Create feature",
+            "description": [ 
+                "The Create Feature fix creates a new point feature at the centroid",
+                "of the polygon feature that is causing the error.\n",
+                "The point feature that is created is guaranteed to be within the polygon feature."
+            ],
+        }
+    }
+}
+
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/ContainsPoint.json.d/contains_point.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/ContainsPoint.json.d/contains_point.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/ContainsPoint.json.d/contains_point2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/ContainsPoint.json.d/contains_point2.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/MustNotOverlapPolygon.json
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/MustNotOverlapPolygon.json	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/MustNotOverlapPolygon.json	(revision 808)
@@ -0,0 +1,50 @@
+{
+    "id": "MustNotOverlapPolygon",
+    "name": "Must Not Overlap",
+    "description": [ 
+        "<img src=\"@@@.d/must_not_overlap.png\">\n",
+        "Requires that the interior of polygons in the dataset not overlap.",
+        "The polygons can share edges or vertices.",
+        "This rule is used when an area cannot belong to two or more polygons.",
+        "The polygons overlaps when the geometries have some points in common;",
+        "but not all points in common (so if one geometry is inside the other",
+        "overlaps would be false).",
+        "The overlapping section must be the same kind of shape as the two geometries;",
+        "so two polygons that touch on a point are not considered to be overlapping.",
+        "It is useful for modeling administrative boundaries, such as ZIP Codes",
+        "or voting districts, and mutually exclusive area classifications,",
+        "such as land cover or landform type."
+    ],
+    "actions" : {
+        "CreateFeature": {
+            "name" : "Create feature",
+            "description": [ 
+                "The Create Feature fix creates a new polygon feature out of",
+                "the error shape and removes the portion of overlap from each",
+                "of the features, causing the error to create a planar",
+                "representation of the feature geometry.\n",
+                "This fix can be applied to one or more selected Must Not Overlap errors."
+            ]
+        },
+        "Subtract": {
+            "name" : "Subtract",
+            "description": [ 
+                "The Subtract fix removes the overlapping portion of geometry",
+                "from each feature that is causing the error and leaves a gap",
+                "or void in its place. This fix can be applied to one or more",
+                "selected Must Not Overlap errors."
+            ]
+        },
+        "Merge": {
+            "name" : "Merge",
+            "description": [ 
+                "The Merge fix adds the portion of overlap from one feature",
+                "and subtracts it from the others that are violating the rule.",
+                "You need to pick the feature that receives the portion of",
+                "overlap using the Merge dialog box.",
+                "This fix can be applied to one Must Not Overlap error only."
+            ]
+        }
+    }
+}
+
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/MustBeLargerThanToleranceLine.json
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/MustBeLargerThanToleranceLine.json	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/MustBeLargerThanToleranceLine.json	(revision 808)
@@ -0,0 +1,20 @@
+{
+    "id": "MustBeLargerThanToleranceLine",
+    "name": "Must Be Larger Than Tolerance",
+    "description": [ 
+        "<img src=\"@@@.d/MustBeLargerThanToleranceLine.png\">\n",
+        "Requires that a feature does not collapse during a validate process.\n",
+        "This rule is mandatory for a topology and applies to all line feature classes.\n",
+        "In instances where this rule is violated, the original geometry is left unchanged.\n"
+    ],
+    "actions" : {
+        "delete": {
+            "name" : "Delete",
+            "description": [ 
+                "Removes line features that would collapse during the validate",
+                "process based on the topology's tolerance."
+            ],
+        }
+    }
+}
+
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/MustNotOverlapPolygon.json.d/must_not_overlap.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/MustNotOverlapPolygon.json.d/must_not_overlap.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/MustBeLargerThanToleranceLine.json.d/MustBeLargerThanToleranceLine.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en/MustBeLargerThanToleranceLine.json.d/MustBeLargerThanToleranceLine.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream


Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/en
___________________________________________________________________
Added: svn:ignore
   + .directory


Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/es/ContainsPoint.json
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/es/ContainsPoint.json	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/es/ContainsPoint.json	(revision 808)
@@ -0,0 +1,21 @@
+{
+    "id": "ContainsPoint",
+    "name": "Contiene un punto",
+    "description": [ 
+        "<img src=\"@@@.d/contains_point2.png\">\n",
+        "El poligono superior es un error porque no contiene ningun punto.\n\n",
+        "Requiere que cada poligono del conjunto de datos contenga al menos un punto del otro conjunto de datos.\n",
+        "Los puntos deben estar contenidos en el poligono, no en su perimetro,\n"
+    ],
+    "actions" : {
+        "CreateFeature": {
+            "name" : "Crear feature",
+            "description": [ 
+                "<i>Crear feature</i> realiza la correccion creando un nuevo punto en",
+                "la feature, en el centroide del poligono que ha causado el error.\n",
+                "El punto creado en la feature se garantiza que estara dentro del polygono de la feature."
+            ],
+        }
+    }
+}
+
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/es/ContainsPoint.json.d/contains_point.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/es/ContainsPoint.json.d/contains_point.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/es/ContainsPoint.json.d/contains_point2.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/es/ContainsPoint.json.d/contains_point2.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/es/MustBeLargerThanToleranceLine.json
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/es/MustBeLargerThanToleranceLine.json	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/es/MustBeLargerThanToleranceLine.json	(revision 808)
@@ -0,0 +1,20 @@
+{
+    "id": "MustBeLargerThanToleranceLine",
+    "name": "Debe ser mayor que la tolerancia",
+    "description": [ 
+        "<img src=\"@@@.d/MustBeLargerThanToleranceLine.png\">\n",
+        "Requiere que una feature no colapse durante el proceso de validacion.\n",
+        "Esta regla es obligatoria para una topologia y aplica a todas las features de typo linea.\n",
+        "En instancias donde esta regla es violada, la geometria original permanece sin cambios.\n"
+    ],
+    "actions" : {
+        "delete": {
+            "name" : "Eliminar",
+            "description": [ 
+                "Elimina las  Removes features que colapsaran durante el proceso",
+                "de validacion basado en la tolerancia topologica."
+            ],
+        }
+    }
+}
+
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/es/MustBeLargerThanToleranceLine.json.d/MustBeLargerThanToleranceLine.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/org/gvsig/topology/rules/es/MustBeLargerThanToleranceLine.json.d/MustBeLargerThanToleranceLine.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 808)
@@ -0,0 +1 @@
+org.gvsig.topology.lib.impl.TopologyImplLibrary
\ No newline at end of file
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyManager.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyManager.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyManager.java	(revision 808)
@@ -0,0 +1,104 @@
+/**
+ * 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.lib.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+import org.gvsig.fmap.dal.DataStore;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.topology.lib.api.TopologyDataSet;
+import org.gvsig.topology.lib.api.TopologyManager;
+import org.gvsig.topology.lib.api.TopologyPlan;
+import org.gvsig.topology.lib.api.TopologyRuleFactory;
+import org.gvsig.topology.lib.api.TopologyServices;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class DefaultTopologyManager implements TopologyManager {
+
+    private final List<TopologyRuleFactory> factories;
+    private TopologyServices services;
+    
+    public DefaultTopologyManager() {
+        this.factories = new ArrayList<>();
+    }
+    
+    @Override
+    public TopologyPlan createTopologyPlan() {
+        TopologyPlan plan = new DefaultTopologyPlan(this, this.services);
+        return plan;
+    }
+
+    @Override
+    public List<TopologyRuleFactory> getRuleFactories() {
+        return Collections.unmodifiableList(this.factories);
+    }
+
+    @Override
+    public List<TopologyRuleFactory> getRuleFactories(TopologyDataSet dataSet) {
+        List<TopologyRuleFactory>  f = new ArrayList<>();
+        for (TopologyRuleFactory factory : this.factories) {
+            if( factory.canApplyToDataSet(dataSet) ) {
+                f.add(factory);
+            }
+        }
+        return f;
+    }
+
+    @Override
+    public TopologyRuleFactory getRulefactory(String id) {
+        for (TopologyRuleFactory factory : this.factories) {
+            if( StringUtils.equalsIgnoreCase(id, factory.getId()) ) {
+                return factory;
+            }
+        }
+        return null;
+    }
+    
+    @Override
+    public void addRuleFactories(TopologyRuleFactory factory) {
+        this.factories.add(factory);
+    }
+
+    @Override
+    public TopologyDataSet createDataSet(String name, DataStore store) {
+        TopologyDataSet dataSet = new DefaultTopologyDataSet(this.services, name, store);
+        return dataSet;
+    }
+    
+    @Override
+    public void setDefaultServices(TopologyServices services) {
+        this.services = services;
+    }
+
+    @Override
+    public TopologyServices getDefaultServices() {
+        return this.services;
+    }
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyPlan.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyPlan.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyPlan.java	(revision 808)
@@ -0,0 +1,334 @@
+/**
+ * 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.lib.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.gvsig.fmap.dal.DataStore;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.fmap.geom.type.GeometryType;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.task.SimpleTaskStatus;
+import org.gvsig.topology.lib.api.TopologyDataSet;
+import org.gvsig.topology.lib.api.TopologyManager;
+import org.gvsig.topology.lib.api.TopologyPlan;
+import org.gvsig.topology.lib.api.TopologyRule;
+import org.gvsig.topology.lib.api.TopologyRuleFactory;
+import org.gvsig.topology.lib.api.TopologyServices;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+@SuppressWarnings("UseSpecificCatch")
+public class DefaultTopologyPlan implements TopologyPlan {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultTopologyPlan.class);
+    
+    private final TopologyManager manager;
+    private final Map<String,TopologyDataSet> dataSets;
+    private final List<TopologyRule> rules;
+
+    private String name;
+    private DefaultTopologyReport report;
+    private TopologyServices services;
+    private double tolerance;
+    private SimpleTaskStatus taskStatus;
+    
+    public DefaultTopologyPlan(TopologyManager manager, TopologyServices services) {
+        this.manager = manager;
+        this.services = services;
+        this.dataSets = new HashMap<>();
+        this.rules = new ArrayList<>();
+        this.report = null;
+        this.name = "TopologyPlan-" + String.format("%08X", new Date().getTime());
+        this.tolerance = 0.001;
+    }
+
+    @Override
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String getName() {
+        return this.name;
+    }
+
+    @Override
+    public void clear() {
+        this.name = "";
+        this.tolerance = 0;
+        this.services = null;
+        this.report = null;
+        this.dataSets.clear();
+        this.rules.clear();
+    }
+
+    @Override
+    public double getTolerance() {
+        return tolerance;
+    }
+
+    @Override
+    public void setTolerance(double tolerance) {
+        this.tolerance = tolerance;
+    }
+
+    @Override
+    public void setTopologyServices(TopologyServices services) {
+        this.services = services;
+    }
+    
+    @Override
+    public TopologyServices getTopologyServices() {
+        return this.services;
+    }
+    
+    public SimpleTaskStatus getTaskStatus() {
+        if( this.taskStatus == null ) {
+            this.taskStatus = ToolsLocator.getTaskStatusManager()
+                    .createDefaultSimpleTaskStatus(this.getName());
+        }
+        return this.taskStatus;
+    }
+    
+    @Override
+    public void execute() {
+        SimpleTaskStatus theTaskStatus = this.getTaskStatus();
+        try {
+            theTaskStatus.restart();
+            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) {
+                steps += rule.getSteps();
+                steps++;
+            }
+
+            theTaskStatus.setRangeOfValues(0, steps);
+            theTaskStatus.setCurValue(0);
+            for (TopologyRule rule : this.rules) {
+                if( theTaskStatus.isCancellationRequested() ) {
+                    theTaskStatus.cancel();
+                    break;
+                }
+                theTaskStatus.message(rule.getName());
+                rule.execute(theTaskStatus, this.getReport());
+                theTaskStatus.incrementCurrentValue();
+            }
+        } catch(Exception ex) {
+            LOGGER.warn("Problems executing topology plan '"+this.getName()+"'.", ex);
+            theTaskStatus.abort();
+        } finally {
+            if( theTaskStatus.isRunning() ) {
+                theTaskStatus.terminate();
+            }
+            this.getReport().setCompleted(true);
+        }
+    }
+
+    @Override
+    public TopologyDataSet addDataSet(String name, DataStore store) {
+        TopologyDataSet dataSet = manager.createDataSet(name, store);
+        return this.addDataSet(dataSet);
+    }
+
+    @Override
+    public TopologyDataSet addDataSet(TopologyDataSet dataSet) {
+        if( this.dataSets.containsKey(dataSet.getName()) ) {
+            throw new IllegalArgumentException("Already exists a dataSet with this name ("+dataSet.getName()+").");
+        }
+        this.dataSets.put(dataSet.getName(), dataSet);
+        return dataSet;
+    }
+
+    @Override
+    public TopologyDataSet getDataSet(String name) {
+        return this.dataSets.get(name);
+    }
+
+    @Override
+    public boolean containsDataSet(String name) {
+        return this.dataSets.containsKey(name);
+    }
+
+    @Override
+    public Collection<TopologyDataSet> getDataSets() {
+        Collection<TopologyDataSet> x = dataSets.values();
+        return Collections.unmodifiableCollection(x);
+    }
+
+    @Override
+    public Collection<TopologyDataSet> getSecondaryDataSets(TopologyRuleFactory ruleFactory) {
+        List<TopologyDataSet> secondaryDataSets = new ArrayList<>();
+        for (TopologyDataSet dataSet : dataSets.values()) {
+            if( ruleFactory.canApplyToSecondaryDataSet(dataSet) ) {
+                secondaryDataSets.add(dataSet);
+            }
+        }
+        return secondaryDataSets;
+    }
+    
+    @Override
+    public TopologyRule addRule(String id, String dataSet1, String dataSet2, double tolerance) {
+        TopologyRuleFactory factory = this.manager.getRulefactory(id);
+        if( factory == null ) {
+            throw new IllegalArgumentException("Can't locate factory for rule '"+id+"'.");
+        }
+        if( ! this.canApplyRule(factory, dataSet1, dataSet2) ) {
+            throw new IllegalArgumentException(
+                    "Can't apply rule '"+factory.getName()+"' to the datasets '"+dataSet1+"/"+dataSet2+"'."
+            );
+        }
+        TopologyRule rule = factory.createRule(this, dataSet1, dataSet2, tolerance);
+        return this.addRule(rule);
+    }
+
+    @Override
+    public TopologyRule addRule(TopologyRule rule) {
+        this.rules.add(rule);
+        return rule;
+    }
+
+    private boolean canApplyRule(TopologyRuleFactory factory, String dataSet1, String dataSet2) {
+        try {
+            GeometryManager geomManager = GeometryLocator.getGeometryManager();
+            TopologyDataSet dataset = this.getDataSet(dataSet1);
+            FeatureStore store = (FeatureStore) dataset.getStore();
+            GeometryType gt = store.getDefaultFeatureType().getDefaultGeometryAttribute().getGeomType();
+            for (Integer geometryType1 : factory.getGeometryTypeDataSet1()) {
+                if( gt.isTypeOf(geometryType1) ) {
+                    if( factory.getGeometryTypeDataSet2()==null ) {
+                        return true;
+                    }
+                    dataset = this.getDataSet(dataSet2);
+                    store = (FeatureStore) dataset.getStore();
+                    gt = store.getDefaultFeatureType().getDefaultGeometryAttribute().getGeomType();
+                    for (Integer geometryType2 : factory.getGeometryTypeDataSet2()) {
+                        if( gt.isTypeOf(geometryType2) ) {
+                            return true;
+                        }
+                    }
+                }
+            }
+            return false;
+        } catch(Exception ex) {
+            return false;
+        }
+    }    
+
+    @Override
+    public Collection<TopologyRule> getRules() {
+        return Collections.unmodifiableList(rules);
+    }
+
+    @Override
+    public DefaultTopologyReport getReport() {
+        if( this.report == null ) {
+            this.report = new DefaultTopologyReport(this);
+        }
+        return this.report;
+    }
+
+    @Override
+    public JSONObject toJSON() {
+        JSONObject me = new JSONObject();
+
+        me.put("name", this.name);
+        me.put("tolerance", this.tolerance);
+        
+        JSONArray jsonDataSets=  new JSONArray();
+        for (TopologyDataSet dataSet : this.dataSets.values()) {
+            jsonDataSets.put(((DefaultTopologyDataSet)dataSet).toJSON());
+        }
+        me.put("dataSets", jsonDataSets);
+        
+        JSONArray jsonRules = new JSONArray();
+        for (TopologyRule rule : this.rules) {
+            JSONObject jsonRule = rule.toJSON();
+            jsonRule.put("__factoryId", rule.getFactory().getId());
+            jsonRules.put(jsonRule);
+        }
+        me.put("rules", jsonRules);
+        
+        return me;
+    }
+
+    @Override
+    public void fromJSON(String json) {
+        this.fromJSON(new JSONObject(json));
+    }
+
+    @Override
+    public void fromJSON(JSONObject jsonPlan) {
+        
+        this.name = jsonPlan.getString("name");
+        this.tolerance = jsonPlan.getDouble("tolerance");
+        
+        JSONArray jsonDataSets = jsonPlan.getJSONArray("dataSets");
+        for (Object o : jsonDataSets) {
+            TopologyDataSet dataSet = new DefaultTopologyDataSet();
+            dataSet.fromJSON((JSONObject) o);
+            this.dataSets.put(dataSet.getName(),dataSet);
+        }
+        
+        JSONArray jsonRules = jsonPlan.getJSONArray("rules");
+        for (Object o : jsonRules) {
+            JSONObject jsonRule = (JSONObject) o;
+            TopologyRuleFactory factory = this.manager.getRulefactory(jsonRule.getString("__factoryId"));
+            TopologyRule rule = factory.createRule(this,null, null, -1);
+            rule.fromJSON(jsonRule);
+            this.addRule(rule);
+        }        
+    }
+
+    @Override
+    public void removeDataSet(TopologyDataSet dataSet) {
+        this.dataSets.remove(dataSet.getName());
+    }
+
+    @Override
+    public void removeRule(TopologyRule rule) {
+        this.rules.remove(rule);
+    }
+
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyReport.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyReport.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyReport.java	(revision 808)
@@ -0,0 +1,179 @@
+/**
+ * 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.lib.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import org.gvsig.expressionevaluator.Code;
+import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
+import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
+import org.gvsig.expressionevaluator.MutableSymbolTable;
+import org.gvsig.fmap.dal.feature.FeatureReference;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.tools.task.SimpleTaskStatus;
+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.TopologyReportLineSet;
+import org.gvsig.topology.lib.api.TopologyRule;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+@SuppressWarnings("UseSpecificCatch")
+public class DefaultTopologyReport 
+        extends AbstractTopologyReportLineSet
+        implements TopologyReport 
+    {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultTopologyReport.class);
+
+    private class DefaultTopologyReportLineSet extends AbstractTopologyReportLineSet {
+
+        public DefaultTopologyReportLineSet() {
+            super();
+        }
+
+        public void polulate(List<TopologyReportLine> allLines, String filter) {
+            this.lines.clear();
+            if (filter == null) {
+                this.lines.addAll(allLines);
+                this.completed = true;
+                return;
+            }
+            SimpleTaskStatus theTaskStatus = plan.getTaskStatus();
+            try {
+                theTaskStatus.push();
+                theTaskStatus.restart();
+                theTaskStatus.message("Preparing filter");
+                theTaskStatus.setAutoremove(true);
+                theTaskStatus.setIndeterminate();
+
+                ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
+
+                TopologyReportLineSymbolTable lineSymbolTable = new TopologyReportLineSymbolTable();
+                MutableSymbolTable symbolTable = manager.createSymbolTable();
+                symbolTable.addSymbolTable(lineSymbolTable);
+
+                Code code = manager.compile(filter);
+                code = manager.optimize(symbolTable, code);
+
+                theTaskStatus.setRangeOfValues(0, allLines.size());
+                theTaskStatus.setCurValue(0);
+                for (TopologyReportLine line : allLines) {
+                    lineSymbolTable.setLine(line);
+                    Object value = manager.evaluate(symbolTable, code);
+                    if (value instanceof Boolean && ((Boolean) value)) {
+                        this.lines.add(line);
+                        this.changeListenerHelper.fireEvent();
+                    }
+                    theTaskStatus.incrementCurrentValue();
+                }
+
+            } catch (Exception ex) {
+                LOGGER.warn("Problems filtering.", ex);
+                theTaskStatus.abort();
+            } finally {
+                if (theTaskStatus.isRunning()) {
+                    theTaskStatus.terminate();
+                }
+                theTaskStatus.pop();
+                this.completed = true;
+            }
+        }
+
+
+    }
+
+    // TODO: Habria que meter las lineas del report en disco
+    private final TopologyPlan plan;
+
+    public DefaultTopologyReport(TopologyPlan plan) {
+        this.plan = plan;
+    }
+
+    @Override
+    public TopologyReportLine addLine(TopologyRule rule, TopologyDataSet dataSet1,
+            TopologyDataSet dataSet2, Geometry geometry, Geometry error,
+            FeatureReference feature1, FeatureReference feature2,
+            boolean exception, String description
+    ) {
+        TopologyReportLine line = new DefaultTopologyReportLine(
+                this, rule, dataSet1, dataSet2, geometry, error, feature1, 
+                feature2, exception, description
+        );
+        this.lines.add(line);
+        this.fireChangeEvent();
+        return line;
+    }
+
+    @Override
+    public void removeAllLines() {
+        this.lines.clear();
+        this.fireChangeEvent();
+    }
+
+    @Override
+    public TopologyReportLineSet getLineSet(final String filter) {
+        final DefaultTopologyReportLineSet set = new DefaultTopologyReportLineSet();
+        Thread th = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                set.polulate(lines, filter);
+            }
+        });
+        th.start();
+        return set;
+    }
+
+    @Override
+    public List<TopologyReportLine> getLines(String filter) {
+        if (filter == null) {
+            return Collections.unmodifiableList(this.lines);
+        }
+        List<TopologyReportLine> ll = new ArrayList<>();
+        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
+
+        TopologyReportLineSymbolTable lineSymbolTable = new TopologyReportLineSymbolTable();
+        MutableSymbolTable symbolTable = manager.createSymbolTable();
+        symbolTable.addSymbolTable(lineSymbolTable);
+
+        Code code = manager.compile(filter);
+        code = manager.optimize(symbolTable, code);
+
+        for (TopologyReportLine line : this.lines) {
+            lineSymbolTable.setLine(line);
+            Object value = manager.evaluate(symbolTable, code);
+            if (value instanceof Boolean && ((Boolean) value)) {
+                ll.add(line);
+            }
+        }
+        return Collections.unmodifiableList(ll);
+    }
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/TopologyReportLineSymbolTable.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/TopologyReportLineSymbolTable.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/TopologyReportLineSymbolTable.java	(revision 808)
@@ -0,0 +1,54 @@
+package org.gvsig.topology.lib.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.gvsig.expressionevaluator.spi.AbstractSymbolTable;
+import org.gvsig.topology.lib.api.TopologyReport;
+import org.gvsig.topology.lib.api.TopologyReportLine;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+class TopologyReportLineSymbolTable extends AbstractSymbolTable {
+    
+    private TopologyReportLine line = null;
+    private final List<String> fieldNames;
+
+    public TopologyReportLineSymbolTable() {
+        this.fieldNames = new ArrayList<>();
+        this.fieldNames.add(TopologyReport.RULE_ID);
+        this.fieldNames.add(TopologyReport.IS_ERROR);
+        this.fieldNames.add(TopologyReport.IS_EXCEPTION);
+        this.fieldNames.add(TopologyReport.GEOMETRY);
+    }
+
+    public void setLine(TopologyReportLine line) {
+        this.line = line;
+    }
+
+    @Override
+    public boolean exists(String name) {
+        if (name == null) {
+            return false;
+        }
+        return this.fieldNames.contains(name.toUpperCase());
+    }
+
+    @Override
+    public Object value(String name) {
+        switch (name.toUpperCase()) {
+            case TopologyReport.RULE_ID:
+                return this.line.getRule().getId();
+            case TopologyReport.IS_ERROR:
+                return !this.line.isException();
+            case TopologyReport.IS_EXCEPTION:
+                return this.line.isException();
+            case TopologyReport.GEOMETRY:
+                return this.line.getGeometry();
+            default:
+                return null;
+        }
+    }
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/AbstractTopologyReportLineSet.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/AbstractTopologyReportLineSet.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/AbstractTopologyReportLineSet.java	(revision 808)
@@ -0,0 +1,79 @@
+package org.gvsig.topology.lib.impl;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import javax.swing.event.ChangeListener;
+import org.gvsig.tools.swing.api.ChangeListenerHelper;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.topology.lib.api.TopologyReportLine;
+import org.gvsig.topology.lib.api.TopologyReportLineSet;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public abstract class AbstractTopologyReportLineSet implements TopologyReportLineSet {
+
+    protected final List<TopologyReportLine> lines;
+    protected final ChangeListenerHelper changeListenerHelper;
+    protected boolean completed = false;
+
+    public AbstractTopologyReportLineSet() {
+        this.lines = new ArrayList<>();
+        this.changeListenerHelper = ToolsSwingLocator.getToolsSwingManager().createChangeListenerHelper();
+    }
+
+    @Override
+    public List<TopologyReportLine> getLines() {
+        return Collections.unmodifiableList(this.lines);
+    }
+
+    @Override
+    public void addChangeListener(ChangeListener cl) {
+        this.changeListenerHelper.addChangeListener(cl);
+    }
+
+    @Override
+    public ChangeListener[] getChangeListeners() {
+        return this.changeListenerHelper.getChangeListeners();
+    }
+
+    @Override
+    public void removeChangeListener(ChangeListener cl) {
+        this.changeListenerHelper.removeChangeListener(cl);
+    }
+
+    @Override
+    public void removeAllChangeListener() {
+        this.changeListenerHelper.removeAllChangeListener();
+    }
+
+    @Override
+    public boolean hasChangeListeners() {
+        return this.changeListenerHelper.hasChangeListeners();
+    }
+
+    protected void fireChangeEvent() {
+        this.changeListenerHelper.fireEvent();        
+    }
+    
+    @Override
+    public boolean isComplete() {
+        return this.completed;
+    }
+
+    @Override
+    public int size() {
+        return this.lines.size();
+    }
+
+    @Override
+    public TopologyReportLine get(int index) {
+        return this.lines.get(index);
+    }
+
+    public void setCompleted(boolean completed) {
+        this.completed = completed;
+    }    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/TopologyImplLibrary.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/TopologyImplLibrary.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/TopologyImplLibrary.java	(revision 808)
@@ -0,0 +1,70 @@
+/**
+ * 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.lib.impl;
+
+import org.gvsig.fmap.dal.DALLibrary;
+import org.gvsig.fmap.geom.GeometryLibrary;
+import org.gvsig.tools.ToolsLibrary;
+import org.gvsig.tools.library.AbstractLibrary;
+import org.gvsig.tools.library.LibraryException;
+import org.gvsig.topology.lib.api.TopologyLibrary;
+import org.gvsig.topology.lib.api.TopologyLocator;
+import org.gvsig.topology.lib.api.TopologyManager;
+import org.gvsig.topology.rule.ContainsNullRuleFactory;
+import org.gvsig.topology.rule.ContainsPointRuleFactory;
+import org.gvsig.topology.rule.MustBeLargerThanToleranceLineRuleFactory;
+import org.gvsig.topology.rule.MustNotOverlapPolygonRuleFactory;
+import org.gvsig.topology.rule.PointMustBeProperlyInsidePolygonRuleFactory;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class TopologyImplLibrary extends AbstractLibrary {
+
+    @Override
+    public void doRegistration() {
+        super.doRegistration();
+        registerAsImplementationOf(TopologyLibrary.class);
+        this.require(ToolsLibrary.class);
+        this.require(DALLibrary.class);
+        this.require(GeometryLibrary.class);
+    }
+
+    @Override
+    protected void doInitialize() throws LibraryException {
+        TopologyLocator.registerDefaultTopologyManager(DefaultTopologyManager.class);
+    }
+
+    @Override
+    protected void doPostInitialize() throws LibraryException {
+        TopologyManager manager = TopologyLocator.getTopologyManager();
+        manager.addRuleFactories(new ContainsNullRuleFactory());
+        manager.addRuleFactories(new ContainsPointRuleFactory());
+        manager.addRuleFactories(new MustBeLargerThanToleranceLineRuleFactory());
+        manager.addRuleFactories(new MustNotOverlapPolygonRuleFactory());
+        manager.addRuleFactories(new PointMustBeProperlyInsidePolygonRuleFactory());
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyReportLine.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyReportLine.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyReportLine.java	(revision 808)
@@ -0,0 +1,121 @@
+/**
+ * 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.lib.impl;
+
+import org.gvsig.fmap.dal.feature.FeatureReference;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.topology.lib.api.TopologyDataSet;
+import org.gvsig.topology.lib.api.TopologyReport;
+import org.gvsig.topology.lib.api.TopologyReportLine;
+import org.gvsig.topology.lib.api.TopologyRule;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class DefaultTopologyReportLine implements TopologyReportLine {
+    
+    private final TopologyReport report;
+    private final TopologyRule rule;
+    private final TopologyDataSet dataSet1;
+    private final TopologyDataSet dataSet2;
+    private final Geometry geometry;
+    private final FeatureReference feature1;
+    private final FeatureReference feature2;
+    private boolean exception;
+    private final String description;
+    private Geometry errorGeometry;
+    
+    DefaultTopologyReportLine(DefaultTopologyReport report, 
+            TopologyRule rule, 
+            TopologyDataSet dataSet1, 
+            TopologyDataSet dataSet2, 
+            Geometry geometry,
+            Geometry error,
+            FeatureReference feature1, 
+            FeatureReference feature2, 
+            boolean exception,
+            String description
+        ) {
+        this.report = report;
+        this.rule = rule;
+        this.dataSet1 = dataSet1;
+        this.dataSet2 = dataSet2;
+        this.geometry = geometry;
+        this.feature1 = feature1;
+        this.feature2 = feature2;
+        this.exception = exception;
+        this.description = description;
+        this.errorGeometry = error;
+    }
+
+    @Override
+    public TopologyRule getRule() {
+        return this.rule;
+    }
+
+    @Override
+    public TopologyDataSet getDataSet1() {
+        return this.dataSet1;
+    }
+
+    @Override
+    public TopologyDataSet getDataSet2() {
+        return this.dataSet2;
+    }
+
+    @Override
+    public Geometry getGeometry() {
+        return this.geometry;
+    }
+
+    @Override
+    public FeatureReference getFeature1() {
+        return this.feature1;
+    }
+
+    @Override
+    public FeatureReference getFeature2() {
+        return this.feature2;
+    }
+
+    @Override
+    public boolean isException() {
+        return this.exception;
+    }
+    
+    public void setException(boolean exception) {
+        this.exception = exception;
+    }
+
+    @Override
+    public String getDescription() {
+        return description;
+    }
+
+    @Override
+    public Geometry getError() {
+        return this.errorGeometry;
+    }
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyDataSet.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyDataSet.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/lib/impl/DefaultTopologyDataSet.java	(revision 808)
@@ -0,0 +1,414 @@
+/**
+ * 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.lib.impl;
+
+import java.util.Iterator;
+import java.util.Map;
+import org.apache.commons.collections.IteratorUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.mutable.MutableObject;
+import org.gvsig.expressionevaluator.Expression;
+import org.gvsig.fmap.dal.DataStore;
+import org.gvsig.fmap.dal.EditingNotification;
+import org.gvsig.fmap.dal.EditingNotificationManager;
+import org.gvsig.fmap.dal.exception.DataException;
+import org.gvsig.fmap.dal.feature.EditableFeature;
+import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
+import org.gvsig.fmap.dal.feature.FeatureReference;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.dal.feature.FeatureStoreProviderFactory;
+import org.gvsig.fmap.dal.feature.FeatureType;
+import org.gvsig.fmap.dal.swing.DALSwingLocator;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.fmap.geom.SpatialIndex;
+import org.gvsig.fmap.geom.type.GeometryType;
+import org.gvsig.tools.exception.BaseException;
+import org.gvsig.tools.util.PropertiesSupportHelper;
+import org.gvsig.tools.visitor.VisitCanceledException;
+import org.gvsig.tools.visitor.Visitor;
+import org.gvsig.topology.lib.api.CancelOperationException;
+import org.gvsig.topology.lib.api.PerformOperationException;
+import org.gvsig.topology.lib.api.TopologyDataSet;
+import org.gvsig.topology.lib.api.TopologyLocator;
+import org.gvsig.topology.lib.api.TopologyManager;
+import org.json.JSONObject;
+import org.gvsig.topology.lib.api.TopologyServices;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+@SuppressWarnings({"EqualsAndHashcode","UseSpecificCatch"})
+public class DefaultTopologyDataSet implements TopologyDataSet {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(DefaultTopologyDataSet.class);
+    
+    private TopologyServices services;
+    private String name;
+    private DataStore store;
+    private boolean needFinishEditing;
+    private String fullName;
+    private PropertiesSupportHelper propertiesHelper;
+    private MutableObject<SpatialIndex> spatialIndex = null;
+    
+    public DefaultTopologyDataSet() {
+        this.services = null;
+        this.name = null;
+        this.store = null;
+        this.needFinishEditing = false;
+        this.fullName = null;
+        this.propertiesHelper = new PropertiesSupportHelper();
+    }
+
+    public DefaultTopologyDataSet(TopologyServices services, String name, DataStore store) {
+        this.services = services;
+        this.name = name;
+        this.store = store;
+        this.needFinishEditing = false;
+        if( store!=null ) {
+            this.fullName = store.getFullName();
+        }
+    }
+
+    public void restart() {
+        this.store  = null;
+        this.spatialIndex = null;
+    }
+    
+    @Override
+    public boolean equals(Object obj) {
+        if( !(obj instanceof DefaultTopologyDataSet) ) {
+            return false;
+        }
+        DefaultTopologyDataSet other = (DefaultTopologyDataSet)obj;
+        if( this.store != other.store ) {
+            return false;
+        }
+        if( !StringUtils.equals(this.getName(), other.getName()) ) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public String getName() {
+        return this.name;
+    }
+
+    @Override
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String toString() {
+        try {
+            FeatureAttributeDescriptor attr = this.getFeatureStore().getDefaultFeatureType().getDefaultGeometryAttribute();
+            String geomType = attr.getGeomType().getName();
+            return this.name + " ("+ geomType + ")";
+        } catch(Exception ex) {
+            return this.name ;
+        }
+    }
+
+    @Override
+    public DataStore getStore() {
+        if (this.store == null) {
+            this.store = this.services.getFeatureStore(this);
+        }
+        return this.store;
+    }
+
+    @Override
+    public FeatureStore getFeatureStore() {
+        if (this.store == null) {
+            this.store = this.services.getFeatureStore(this);
+        }
+        return (FeatureStore) this.store;
+    }
+
+    @Override
+    public long getSize() {
+        try {
+            long size = this.getFeatureStore().getFeatureCount();
+            return size;
+        } catch (DataException ex) {
+            // TODO: mensage al log
+            return 0;
+        }
+    }
+
+    @Override
+    public boolean isThisStore(FeatureStore store) {
+        if( store == null ) {
+            return false;
+        }
+        return StringUtils.equals(this.fullName, store.getFullName());
+    }
+    
+    @Override
+    public int getGeometryType() {
+        try {
+            FeatureStore theStore = this.getFeatureStore();
+            FeatureType featureType = theStore.getDefaultFeatureType();
+            FeatureAttributeDescriptor attr = featureType.getDefaultGeometryAttribute();
+            GeometryType geomType = attr.getGeomType();
+            return geomType.getType();
+        } catch (Exception ex) {
+            return Geometry.TYPES.GEOMETRY;
+        }
+    }
+
+    @Override
+    public void accept(Visitor visitor) throws VisitCanceledException {
+        FeatureStore st = this.getFeatureStore();
+        try {
+            st.accept(visitor);
+        } catch(VisitCanceledException ex) {
+            throw ex;
+        } catch(BaseException ex) {
+            throw new RuntimeException(ex);
+        }
+    }
+
+    @Override
+    public void edit() throws DataException {
+        FeatureStore theStore = this.getFeatureStore();
+        if (!theStore.isEditing()) {
+            theStore.edit();
+            this.needFinishEditing = true;
+        }
+    }
+
+    @Override
+    public void finishEditing() throws DataException {
+        if (this.needFinishEditing) {
+            this.getFeatureStore().finishEditing();
+        }
+    }
+
+    @Override
+    public EditableFeature createNewFeature() throws DataException {
+        EditableFeature f = this.getFeatureStore().createNewFeature();
+        return f;
+    }
+
+    public void perform(
+            String operation,
+            Feature feature
+    ) throws DataException {
+        this.edit();
+
+        EditingNotificationManager editingNotificationManager
+                = DALSwingLocator.getEditingNotificationManager();
+        FeatureStore theStore = this.getFeatureStore();
+        
+        EditingNotification notification
+                = editingNotificationManager.notifyObservers(this, // source
+                        operation, // type
+                        null,// document
+                        null,// layer
+                        theStore,// store
+                        feature// feature
+                );
+
+        if (notification.isCanceled()) {
+            String msg = String.format(
+                    "Can't insert feature into %1$s, canceled by some observer.",
+                    this.getName());
+            throw new CancelOperationException(msg);
+        }
+        
+        String after = null;
+        if( operation.equalsIgnoreCase(EditingNotification.BEFORE_REMOVE_FEATURE) ) {
+            theStore.delete(feature);
+            after = EditingNotification.AFTER_REMOVE_FEATURE;
+            
+        } else {
+            if (notification.shouldValidateTheFeature()) {
+                if (!editingNotificationManager.validateFeature(feature)) {
+                    String msg = String.format("%1$s is not valid", feature.toString());
+                    throw new PerformOperationException(msg);
+                }
+            }
+            switch(operation) {
+                case EditingNotification.BEFORE_UPDATE_FEATURE:
+                    theStore.update((EditableFeature) feature);
+                    after = EditingNotification.AFTER_UPDATE_FEATURE;
+                    break;
+
+                case EditingNotification.BEFORE_INSERT_FEATURE:
+                    theStore.insert((EditableFeature) feature);
+                    after = EditingNotification.AFTER_INSERT_FEATURE;
+                    break;
+            }
+        }
+
+        editingNotificationManager.notifyObservers(this,
+                after, null, null,
+                theStore, feature);
+
+    }
+
+    @Override
+    public void insert(final EditableFeature feature) throws DataException {
+        perform(
+            EditingNotification.BEFORE_INSERT_FEATURE,
+            feature
+        );
+    }
+
+    @Override
+    public void update(final EditableFeature feature) throws DataException {
+        perform(
+            EditingNotification.BEFORE_UPDATE_FEATURE,
+            feature
+        );
+    }
+
+    @Override
+    public void delete(final Feature feature) throws DataException {
+        perform(
+            EditingNotification.BEFORE_REMOVE_FEATURE,
+            feature
+        );
+    }
+
+    @Override
+    public void delete(final FeatureReference feature) throws DataException {
+        perform(
+            EditingNotification.BEFORE_REMOVE_FEATURE,
+            feature.getFeature()
+        );
+    }
+
+    @Override
+    public JSONObject toJSON() {
+        JSONObject jsonDataSet = new JSONObject();
+        jsonDataSet.put("name", this.name);
+        jsonDataSet.put("fullName", this.fullName);
+
+        return jsonDataSet;
+    }
+
+    @Override
+    public void fromJSON(String json) {
+        this.fromJSON(new JSONObject(json));
+    }
+
+    @Override
+    public void fromJSON(JSONObject json) {
+        TopologyManager manager = TopologyLocator.getTopologyManager();
+        this.name = json.getString("name");
+        this.fullName = null;
+        if( json.has("fullName") ) {
+            this.fullName = json.getString("fullName");
+        }
+        this.store = null;
+        this.needFinishEditing = false;
+        this.services = manager.getDefaultServices();
+    }
+
+    @Override
+    public Object getProperty(String string) {
+        return this.propertiesHelper.getProperty(name);
+    }
+
+    @Override
+    public void setProperty(String string, Object o) {
+        this.propertiesHelper.setProperty(name, o);
+    }
+
+    @Override
+    public Map<String, Object> getProperties() {
+        return this.propertiesHelper.getProperties();
+    }
+
+    public SpatialIndex getSpatialIndex() {
+        if( this.spatialIndex == null ) {
+            this.spatialIndex = new MutableObject<>();
+            FeatureStore theStore = this.getFeatureStore();
+            FeatureStoreProviderFactory storeFactory = (FeatureStoreProviderFactory) theStore.getProviderFactory();
+            if( storeFactory.useLocalIndexesCanImprovePerformance()==FeatureStoreProviderFactory.YES ) {
+                try {
+                    GeometryManager geomManager = GeometryLocator.getGeometryManager();
+                    final SpatialIndex geomIndex = geomManager.createSpatialIndex(
+                            GeometryManager.SPATIALINDEX_DEFAULT_QUADTREE,
+                            null
+                    );
+                    final SpatialIndex dataIndex = theStore.wrapSpatialIndex(geomIndex);
+                    try {
+                        store.accept(new Visitor() {
+                            @Override
+                            public void visit(Object o) throws VisitCanceledException, BaseException {
+                                Feature f = (Feature) o;
+                                Geometry geom = f.getDefaultGeometry();
+                                if (geom != null) {
+                                    dataIndex.insert(geom, f);
+                                }
+                            }
+                        });
+                    } catch (VisitCanceledException ex) {
+                    }
+                    this.spatialIndex.setValue(dataIndex);
+                } catch (Exception ex) {
+                    LOGGER.warn("Can't create spatial index", ex);
+                }
+            }
+        }
+        return this.spatialIndex.getValue();
+    }
+
+    public Iterable<FeatureReference> query(Geometry geom) {
+        SpatialIndex index = this.getSpatialIndex();
+        if( index == null ) {
+            return (Iterable<FeatureReference>) IteratorUtils.EMPTY_ITERATOR;
+        }
+        final Iterator it = index.query(geom);
+        if( it == null ) {
+            return (Iterable<FeatureReference>) IteratorUtils.EMPTY_ITERATOR;
+        }
+        return new Iterable<FeatureReference>() {
+            @Override
+            public Iterator<FeatureReference> iterator() {
+                return it;
+            }
+        };
+    }
+
+    @Override
+    public Feature findFirst(Expression filter) {
+        try {
+            return this.getFeatureStore().findFirst(filter);
+        } catch (Exception ex) {
+            return null;
+        }
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsNullRuleFactory.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsNullRuleFactory.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsNullRuleFactory.java	(revision 808)
@@ -0,0 +1,58 @@
+/**
+ * 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 ContainsNullRuleFactory extends AbstractTopologyRuleFactory {
+    
+    public static final String NAME = "ContainsNull";
+    
+    public ContainsNullRuleFactory() {
+        super(
+                NAME, 
+                "Contains Null", 
+                "Requires that no geometry has a null value", 
+                new ListBuilder<Integer>()
+                        .add(Geometry.TYPES.GEOMETRY)
+                        .asList(),
+                null
+        );
+    }
+    
+    @Override
+    public TopologyRule createRule(TopologyPlan plan, String dataSet1, String dataSet2, double tolerance) {
+        TopologyRule rule = new ContainsNullRule(plan, this, tolerance, dataSet1, dataSet2);
+        return rule;
+    }    
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/MustNotOverlapPolygonRuleFactory.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/MustNotOverlapPolygonRuleFactory.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/MustNotOverlapPolygonRuleFactory.java	(revision 808)
@@ -0,0 +1,59 @@
+/**
+ * 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 MustNotOverlapPolygonRuleFactory extends AbstractTopologyRuleFactory {
+
+    public static final String NAME = "MustNotOverlapPolygon";
+    
+    public MustNotOverlapPolygonRuleFactory() {
+        super(
+                NAME, 
+                "Must Not Overlap", 
+                "Requires that the interior of polygons in the dataset not overlap. The polygons can share edges or vertices. This rule is used when an area cannot belong to two or more polygons. It is useful for modeling administrative boundaries, such as ZIP Codes or voting districts, and mutually exclusive area classifications, such as land cover or landform type.", 
+                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 MustNotOverlapPolygonRule(plan, this, tolerance, dataSet1);
+        return rule;
+    }    
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/PointMustBeProperlyInsidePolygonRuleFactory.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/PointMustBeProperlyInsidePolygonRuleFactory.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/PointMustBeProperlyInsidePolygonRuleFactory.java	(revision 808)
@@ -0,0 +1,61 @@
+/**
+ * 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;
+    }    
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/MustBeLargerThanToleranceLineRuleFactory.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/MustBeLargerThanToleranceLineRuleFactory.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/MustBeLargerThanToleranceLineRuleFactory.java	(revision 808)
@@ -0,0 +1,57 @@
+/**
+ * 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 MustBeLargerThanToleranceLineRuleFactory extends AbstractTopologyRuleFactory {
+
+    public static final String NAME = "MustBeLargerThanToleranceLine";
+    
+    public MustBeLargerThanToleranceLineRuleFactory() {
+        super(
+                NAME, 
+                "Must Be Larger Than Tolerance", 
+                "Requires that a feature does not collapse during a validate process. This rule is mandatory for a topology and applies to all line feature classes. In instances where this rule is violated, the original geometry is left unchanged", 
+                new ListBuilder<Integer>()
+                        .add(Geometry.TYPES.CURVE)
+                        .asList()
+        );
+    }
+    
+    @Override
+    public TopologyRule createRule(TopologyPlan plan, String dataSet1, String dataSet2, double tolerance) {
+        TopologyRule rule = new MustBeLargerThanToleranceLineRule(plan, this, tolerance, dataSet1, dataSet2);
+        return rule;
+    }
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsPointRule.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsPointRule.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsPointRule.java	(revision 808)
@@ -0,0 +1,172 @@
+/**
+ * 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.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.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 ContainsPointRule extends AbstractTopologyRule {
+
+    private class CreateFetureAction extends AbstractTopologyRuleAction {
+
+        public CreateFetureAction() {
+            super(
+                    ContainsPointRuleFactory.NAME,
+                    "CreateFeature",
+                    "Create Feature",
+                    "The Create Feature fix creates a new point feature at the centroid of the polygon feature that is causing the error. The point feature that is created is guaranteed to be within the polygon feature."
+            );
+        }
+
+        @Override
+        public void execute(TopologyRule rule, TopologyReportLine line, DynObject parameters) {
+            try {
+                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);
+            }
+        }
+
+    }
+
+    private String geomName;
+    private Expression expression = null;
+    private ExpressionBuilder expressionBuilder = null;
+
+    public ContainsPointRule(
+            TopologyPlan plan,
+            TopologyRuleFactory factory,
+            double tolerance,
+            String dataSet1,
+            String dataSet2
+    ) {
+        super(plan, factory, tolerance, dataSet1, dataSet2);
+
+        this.addAction(new CreateFetureAction());
+    }
+
+    @Override
+    protected void check(SimpleTaskStatus taskStatus, TopologyReport report, Feature feature1) throws Exception {
+        FeatureSet set = null;
+        try {
+            FeatureStore store2 = this.getDataSet2().getFeatureStore();
+            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();
+            TopologyDataSet theDataSet = this.getDataSet2();
+            if (theDataSet.getSpatialIndex() != null) {
+                boolean contains = false;
+                for (FeatureReference featureReference : theDataSet.query(polygon)) {
+                    Feature feature2 = featureReference.getFeature();
+                    Geometry otherPoint = feature2.getDefaultGeometry();
+                    if( otherPoint!=null && polygon.contains(otherPoint) ) {
+                        contains = true;
+                        break;
+                    }
+                }
+                if( !contains ) {
+                    report.addLine(this,
+                            this.getDataSet1(),
+                            this.getDataSet2(),
+                            polygon,
+                            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,
+                            polygon,
+                            feature1.getReference(),
+                            null,
+                            false,
+                            "The polygon is an error because it does not contain a point."
+                    );
+                }
+            }
+        } catch (Exception ex) {
+            LOGGER.warn("Can't check feature.", ex);
+        } finally {
+            if (set != null) {
+                set.dispose();
+            }
+        }
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsNullRule.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsNullRule.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsNullRule.java	(revision 808)
@@ -0,0 +1,76 @@
+/**
+ * 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.dal.feature.Feature;
+import org.gvsig.fmap.dal.feature.FeatureSet;
+import org.gvsig.tools.task.SimpleTaskStatus;
+import org.gvsig.topology.lib.spi.AbstractTopologyRule;
+import org.gvsig.topology.lib.api.TopologyPlan;
+import org.gvsig.topology.lib.api.TopologyReport;
+import org.gvsig.topology.lib.api.TopologyRuleFactory;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+@SuppressWarnings("UseSpecificCatch")
+public class ContainsNullRule extends AbstractTopologyRule {
+
+    public ContainsNullRule(
+            TopologyPlan plan,
+            TopologyRuleFactory factory,
+            double tolerance,
+            String dataSet1,
+            String dataSet2
+    ) {
+        super(plan, factory, tolerance, dataSet1, dataSet2);
+    }
+
+    @Override
+    protected void check(SimpleTaskStatus taskStatus, TopologyReport report, Feature feature1) throws Exception {
+        FeatureSet set = null;
+        try {
+            if ( feature1.getDefaultGeometry()==null ) {
+                report.addLine(this,
+                        this.getDataSet1(),
+                        this.getDataSet2(),
+                        feature1.getDefaultGeometry(),
+                        null,
+                        feature1.getReference(),
+                        null,
+                        false,
+                        "The geometry is null."
+                );
+            }
+        } catch(Exception ex) {
+            LOGGER.warn("Can't check feature.", ex);
+        } finally {
+            if( set!=null ) {
+                set.dispose();
+            }
+        }
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/MustNotOverlapPolygonRule.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/MustNotOverlapPolygonRule.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/MustNotOverlapPolygonRule.java	(revision 808)
@@ -0,0 +1,219 @@
+/**
+ * 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.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 MustNotOverlapPolygonRule extends AbstractTopologyRule {
+
+    private class CreateFetureAction extends AbstractTopologyRuleAction {
+
+        public CreateFetureAction() {
+            super(
+                    MustNotOverlapPolygonRuleFactory.NAME,
+                    "CreateFeature",
+                    "Create Feature",
+                    "The Create Feature fix creates a new polygon feature out "
+                    + "of the error shape and removes the portion of "
+                    + "overlap from each of the features, causing the "
+                    + "error to create a planar representation of the "
+                    + "feature geometry. This fix can be applied to "
+                    + "one or more selected Must Not Overlap errors."
+            );
+        }
+
+        @Override
+        public void execute(TopologyRule rule, TopologyReportLine line, DynObject parameters) {
+            try {
+                // TODO
+            } catch (Exception ex) {
+                throw new ExecuteTopologyRuleActionException(ex);
+            }
+        }
+
+    }
+
+    private class SubtractAction extends AbstractTopologyRuleAction {
+
+        public SubtractAction() {
+            super(
+                    MustNotOverlapPolygonRuleFactory.NAME,
+                    "Subtract",
+                    "Subtract",
+                    "The Subtract fix removes the overlapping portion of "
+                    + "geometry from each feature that is causing the "
+                    + "error and leaves a gap or void in its place. "
+                    + "This fix can be applied to one or more selected "
+                    + "Must Not Overlap errors."
+            );
+        }
+
+        @Override
+        public void execute(TopologyRule rule, TopologyReportLine line, DynObject parameters) {
+            try {
+                // TODO
+            } catch (Exception ex) {
+                throw new ExecuteTopologyRuleActionException(ex);
+            }
+        }
+
+    }
+
+    private class MergeAction extends AbstractTopologyRuleAction {
+
+        public MergeAction() {
+            super(
+                    MustNotOverlapPolygonRuleFactory.NAME,
+                    "Merge",
+                    "Merge",
+                    "The Merge fix adds the portion of overlap from one feature "
+                    + "and subtracts it from the others that are "
+                    + "violating the rule. You need to pick the feature "
+                    + "that receives the portion of overlap using the "
+                    + "Merge dialog box. This fix can be applied to one "
+                    + "Must Not Overlap error only."
+            );
+        }
+
+        @Override
+        public void execute(TopologyRule rule, TopologyReportLine line, DynObject parameters) {
+            try {
+                // TODO
+            } catch (Exception ex) {
+                throw new ExecuteTopologyRuleActionException(ex);
+            }
+        }
+    }
+
+    private String geomName;
+    private Expression expression = null;
+    private ExpressionBuilder expressionBuilder = null;
+
+    public MustNotOverlapPolygonRule(
+            TopologyPlan plan,
+            TopologyRuleFactory factory,
+            double tolerance,
+            String dataSet1
+    ) {
+        super(plan, factory, tolerance, dataSet1);
+        this.addAction(new CreateFetureAction());
+        this.addAction(new MergeAction());
+        this.addAction(new SubtractAction());
+    }
+
+    @Override
+    protected void check(SimpleTaskStatus taskStatus, TopologyReport report, Feature feature1) throws Exception {
+        try {
+            if (this.expression == null) {
+                ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
+                this.expression = manager.createExpression();
+                this.expressionBuilder = manager.createExpressionBuilder();
+                this.geomName = feature1.getType().getDefaultGeometryAttributeName();
+            }
+            Geometry polygon = feature1.getDefaultGeometry();
+            if( polygon==null ) {
+                return;
+            }
+            TopologyDataSet theDataSet = this.getDataSet1();
+            if (theDataSet.getSpatialIndex() != null) {
+                for (FeatureReference reference : theDataSet.query(polygon)) {
+                    if (reference.equals(feature1.getReference())) {
+                        continue;
+                    }
+                    Feature feature = reference.getFeature();
+                    Geometry otherPolygon = feature.getDefaultGeometry();
+                    if (otherPolygon!=null && polygon.overlaps(otherPolygon)) {;
+                        Geometry error = polygon.intersection(otherPolygon);
+                        report.addLine(this,
+                                theDataSet,
+                                null,
+                                polygon,
+                                error,
+                                feature1.getReference(),
+                                null,
+                                false,
+                                "The polygon overlay with others."
+                        );
+                        break;
+                    }
+                }
+            } 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(polygon)
+                                )
+                        ).toString()
+                );
+                Feature feature = theDataSet.findFirst(this.expression);
+                if ( feature != null) {
+                    Geometry otherPolygon = feature.getDefaultGeometry();
+                    Geometry error = null;
+                    if( otherPolygon!=null ) {
+                        error = polygon.difference(otherPolygon);
+                    }
+                    report.addLine(this,
+                            theDataSet,
+                            null,
+                            polygon,
+                            error,
+                            feature1.getReference(),
+                            null,
+                            false,
+                            "The polygon overlay with others."
+                    );
+                }
+            }
+        } catch (Exception ex) {
+            LOGGER.warn("Can't check feature.", ex);
+        } finally {
+        }
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/PointMustBeProperlyInsidePolygonRule.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/PointMustBeProperlyInsidePolygonRule.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/PointMustBeProperlyInsidePolygonRule.java	(revision 808)
@@ -0,0 +1,163 @@
+/**
+ * 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,
+            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().getFeatureStore();
+            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 contained = false;
+                for (FeatureReference featureReference : theDataSet.query(point)) {
+                    Feature feature2 = featureReference.getFeature();
+                    Geometry otherPolygon = feature2.getDefaultGeometry();
+                    if( otherPolygon!=null && otherPolygon.contains(point) ) {
+                        contained = true;
+                        break;
+                    }
+                }
+                if( !contained ) {
+                    report.addLine(this,
+                            this.getDataSet1(),
+                            this.getDataSet2(),
+                            point,
+                            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_Contains(
+                                        this.expressionBuilder.column(this.geomName),
+                                        this.expressionBuilder.geometry(point)
+                                )
+                        ).toString()
+                );
+                if (theDataSet.findFirst(this.expression) == null) {
+                    report.addLine(this,
+                            this.getDataSet1(),
+                            this.getDataSet2(),
+                            point,
+                            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/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/MustBeLargerThanToleranceLineRule.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/MustBeLargerThanToleranceLineRule.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/MustBeLargerThanToleranceLineRule.java	(revision 808)
@@ -0,0 +1,94 @@
+/**
+ * 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.dal.feature.Feature;
+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 MustBeLargerThanToleranceLineRule extends AbstractTopologyRule {
+
+    private class DeleteAction extends AbstractTopologyRuleAction {
+
+        public DeleteAction() {
+            super(
+                MustBeLargerThanToleranceLineRuleFactory.NAME, 
+                "delete", 
+                "Delete", 
+                "Removes line features that would collapse during the validate process based on the topology's tolerance."
+            );
+        }
+        
+        @Override
+        public void execute(TopologyRule rule, TopologyReportLine line, DynObject parameters) {
+            try {
+                TopologyDataSet dataset = line.getDataSet1();
+                dataset.delete(line.getFeature1());
+            } catch (Exception ex) {
+                throw new ExecuteTopologyRuleActionException(ex);
+            }
+        }
+        
+    } 
+    
+    public MustBeLargerThanToleranceLineRule( 
+            TopologyPlan plan,
+            TopologyRuleFactory factory,
+            double tolerance,
+            String dataSet1,
+            String dataSet2
+
+    ) {
+        super(plan, factory, tolerance, dataSet1, dataSet2);
+        this.addAction(new DeleteAction());
+    }
+    
+    @Override
+    public void check(SimpleTaskStatus taskStatus, TopologyReport report, Feature feature) throws Exception {
+        Geometry geom = feature.getDefaultGeometry();
+        if( geom.perimeter()<this.getTolerance() ) {
+            report.addLine(this, this.getDataSet1(), null,
+                    geom, null, feature.getReference(), null, false, 
+                    "The length of the line is less than the specified tolerance"
+            );
+        }
+    }
+
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsPointRuleFactory.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsPointRuleFactory.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl/src/main/java/org/gvsig/topology/rule/ContainsPointRuleFactory.java	(revision 808)
@@ -0,0 +1,61 @@
+/**
+ * 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 ContainsPointRuleFactory extends AbstractTopologyRuleFactory {
+    
+    public static final String NAME = "ContainsPoint";
+    
+    public ContainsPointRuleFactory() {
+        super(
+                NAME, 
+                "Contains Point", 
+                "Requires that a polygon in one dataset contain at least one point from another dataset. Points must be within the polygon, not on the boundary. ", 
+                new ListBuilder<Integer>()
+                        .add(Geometry.TYPES.SURFACE)
+                        .add(Geometry.TYPES.MULTISURFACE)
+                        .asList(),
+                new ListBuilder<Integer>()
+                        .add(Geometry.TYPES.POINT)
+                        .asList()
+        );
+    }
+    
+    @Override
+    public TopologyRule createRule(TopologyPlan plan, String dataSet1, String dataSet2, double tolerance) {
+        TopologyRule rule = new ContainsPointRule(plan, this, tolerance, dataSet1, dataSet2);
+        return rule;
+    }    
+
+}

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.impl
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/pom.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/pom.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/pom.xml	(revision 808)
@@ -0,0 +1,15 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.gvsig</groupId>
+    <artifactId>org.gvsig.topology</artifactId>
+    <version>1.0.3</version>
+  </parent>
+  <artifactId>org.gvsig.topology.lib</artifactId>
+  <packaging>pom</packaging>
+  <name>${project.artifactId}</name>
+  <modules>
+  	<module>org.gvsig.topology.lib.api</module>
+  	<module>org.gvsig.topology.lib.impl</module>
+  </modules>
+</project>
\ No newline at end of file
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyReportLineSet.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyReportLineSet.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyReportLineSet.java	(revision 808)
@@ -0,0 +1,20 @@
+package org.gvsig.topology.lib.api;
+
+import java.util.List;
+import org.gvsig.tools.swing.api.ChangeListenerSupport;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface TopologyReportLineSet extends ChangeListenerSupport {
+
+    public List<TopologyReportLine> getLines();
+
+    public boolean isComplete();
+
+    public int size();
+
+    public TopologyReportLine get(int index);
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyRuleFactory.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyRuleFactory.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyRuleFactory.java	(revision 808)
@@ -0,0 +1,54 @@
+/**
+ * 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.lib.api;
+
+import java.awt.Image;
+import java.util.List;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface TopologyRuleFactory {
+    
+    public String getId();
+    
+    public String getName();
+    
+    public String getDescription();
+    
+    public List<Integer> getGeometryTypeDataSet1();
+    
+    public List<Integer> getGeometryTypeDataSet2();
+    
+    public TopologyRule createRule(TopologyPlan plan, String dataSet1, String dataSet2, double tolerance);
+
+    public boolean hasSecondaryDataSet();
+
+    public boolean canApplyToDataSet(TopologyDataSet dataSet);
+    
+    public boolean canApplyToSecondaryDataSet(TopologyDataSet dataSet);
+
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/SerializableJSON.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/SerializableJSON.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/SerializableJSON.java	(revision 808)
@@ -0,0 +1,16 @@
+package org.gvsig.topology.lib.api;
+
+import org.json.JSONObject;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface SerializableJSON {
+    public JSONObject toJSON();
+    
+    public void fromJSON(JSONObject json);
+    
+    public void fromJSON(String json);
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyLocator.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyLocator.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyLocator.java	(revision 808)
@@ -0,0 +1,92 @@
+/**
+ * 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.lib.api;
+
+import org.gvsig.tools.locator.AbstractLocator;
+import org.gvsig.tools.locator.Locator;
+import org.gvsig.tools.locator.LocatorException;
+
+@SuppressWarnings("rawtypes")
+public class TopologyLocator extends AbstractLocator {
+
+	private static final String LOCATOR_NAME = "TopologyLocator";
+	
+	public static final String TOPOLOGY_MANAGER_NAME =
+			"org.gvsig.topology.manager";
+
+	private static final String TOPOLOGY_MANAGER_DESCRIPTION =
+			"Topology Manager of gvSIG";
+	
+	private static final TopologyLocator instance = new TopologyLocator();
+
+	private TopologyLocator() {
+
+	}
+
+	/**
+	 * Return the singleton instance.
+	 * 
+	 * @return the singleton instance
+	 */
+	public static TopologyLocator getInstance() {
+		return instance;
+	}
+
+        @Override
+	public String getLocatorName() {
+		return LOCATOR_NAME;
+	}
+
+	/**
+	 * Return a reference to TopologyManager.
+	 * 
+	 * @return a reference to TopologyManager
+	 * @throws LocatorException
+	 *             if there is no access to the class or the class cannot be
+	 *             instantiated
+	 * @see Locator#get(String)
+	 */
+	public static TopologyManager getTopologyManager()
+			throws LocatorException {
+		return (TopologyManager) getInstance().get(TOPOLOGY_MANAGER_NAME);
+	}
+
+	/**
+	 * Registers the Class implementing the TopologyManager interface.
+	 * 
+	 * @param clazz
+	 *            implementing the TopologyManager interface
+	 */
+	public static void registerTopologyManager(Class clazz) {
+		getInstance().register(TOPOLOGY_MANAGER_NAME,
+				TOPOLOGY_MANAGER_DESCRIPTION, clazz);
+	}
+
+	public static void registerDefaultTopologyManager(Class clazz) {
+		getInstance().registerDefault(TOPOLOGY_MANAGER_NAME,
+				TOPOLOGY_MANAGER_DESCRIPTION, clazz);
+	}
+
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyLibrary.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyLibrary.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyLibrary.java	(revision 808)
@@ -0,0 +1,55 @@
+/**
+ * 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.lib.api;
+
+import org.gvsig.fmap.dal.DALLibrary;
+import org.gvsig.fmap.geom.GeometryLibrary;
+import org.gvsig.tools.ToolsLibrary;
+import org.gvsig.tools.library.AbstractLibrary;
+import org.gvsig.tools.library.LibraryException;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class TopologyLibrary extends AbstractLibrary {
+
+    @Override
+    public void doRegistration() {
+        super.doRegistration();
+        registerAsAPI(TopologyLibrary.class);
+        this.require(ToolsLibrary.class);
+        this.require(DALLibrary.class);
+        this.require(GeometryLibrary.class);
+    }
+
+    @Override
+    protected void doInitialize() throws LibraryException {
+    }
+
+    @Override
+    protected void doPostInitialize() throws LibraryException {
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyRuleAction.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyRuleAction.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyRuleAction.java	(revision 808)
@@ -0,0 +1,52 @@
+/**
+ * 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.lib.api;
+
+import org.gvsig.tools.dynobject.DynObject;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface TopologyRuleAction {
+    
+    public String getId();
+    
+    public String getName();
+    
+    public String getShortDescription();
+    
+    public TopologyRuleFactory getRuleFactory();
+    
+    public boolean hasParameters();
+    
+    public DynObject createParameters();
+    
+    public void execute(
+            TopologyRule rule,
+            TopologyReportLine line, 
+            DynObject parameters
+        ) throws ExecuteTopologyRuleActionException;
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/ExecuteTopologyRuleActionException.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/ExecuteTopologyRuleActionException.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/ExecuteTopologyRuleActionException.java	(revision 808)
@@ -0,0 +1,33 @@
+/**
+ * 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.lib.api;
+
+
+public class ExecuteTopologyRuleActionException extends RuntimeException {
+
+    public ExecuteTopologyRuleActionException(Exception ex) {
+        this.initCause(ex);
+    }
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyRule.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyRule.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyRule.java	(revision 808)
@@ -0,0 +1,55 @@
+/**
+ * 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.lib.api;
+
+import java.util.List;
+import org.gvsig.tools.task.SimpleTaskStatus;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface TopologyRule extends SerializableJSON {
+    
+    public void execute(SimpleTaskStatus taskStatus, TopologyReport report) throws ExecuteTopologyRuleException;
+    
+    public String getName();
+    
+    public String getId();
+    
+    public TopologyRuleFactory getFactory();
+    
+    public TopologyDataSet getDataSet1();
+    
+    public TopologyDataSet getDataSet2();
+    
+    public double getTolerance();
+    
+    public List<TopologyRuleAction> getActions();
+    
+    public TopologyRuleAction getAction(String name);
+    
+    public long getSteps();
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/ExecuteTopologyRuleException.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/ExecuteTopologyRuleException.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/ExecuteTopologyRuleException.java	(revision 808)
@@ -0,0 +1,17 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.gvsig.topology.lib.api;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class ExecuteTopologyRuleException extends RuntimeException {
+    public ExecuteTopologyRuleException(Exception ex) {
+        this.initCause(ex);
+    }
+        
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyManager.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyManager.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyManager.java	(revision 808)
@@ -0,0 +1,50 @@
+/**
+ * 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.lib.api;
+
+import java.util.List;
+import org.gvsig.fmap.dal.DataStore;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface TopologyManager {
+    
+    public TopologyPlan createTopologyPlan();
+    
+    public List<TopologyRuleFactory> getRuleFactories();
+
+    public TopologyRuleFactory getRulefactory(String id);
+    
+    public List<TopologyRuleFactory> getRuleFactories(TopologyDataSet dataSet);
+
+    public void addRuleFactories(TopologyRuleFactory factory);
+
+    public TopologyDataSet createDataSet(String name, DataStore store);
+    
+    public void setDefaultServices(TopologyServices services);
+
+    public TopologyServices getDefaultServices();
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyReport.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyReport.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyReport.java	(revision 808)
@@ -0,0 +1,62 @@
+/**
+ * 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.lib.api;
+
+import java.util.List;
+import org.gvsig.fmap.dal.feature.FeatureReference;
+import org.gvsig.fmap.geom.Geometry;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface TopologyReport extends TopologyReportLineSet {
+
+    public static String RULE_ID = "RULE_ID";
+    public static String IS_ERROR = "IS_ERROR";
+    public static String IS_EXCEPTION = "IS_EXCEPTION";
+    public static String GEOMETRY = "GEOMETRY";
+
+    
+    public TopologyReportLine addLine(
+            TopologyRule rule,
+            TopologyDataSet dataSet1,
+            TopologyDataSet dataSet2,
+            Geometry geometry,
+            Geometry error,
+            FeatureReference feature1,
+            FeatureReference feature2,
+            boolean exception,
+            String description
+        );
+    
+    public void removeAllLines();
+    
+    public List<TopologyReportLine> getLines();
+
+    public List<TopologyReportLine> getLines(String filter);
+    
+    public TopologyReportLineSet getLineSet(String filter);
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/PerformOperationException.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/PerformOperationException.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/PerformOperationException.java	(revision 808)
@@ -0,0 +1,15 @@
+package org.gvsig.topology.lib.api;
+
+import org.gvsig.fmap.dal.exception.DataException;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class PerformOperationException extends DataException {
+
+    public PerformOperationException(String msg) {
+        super("_CancelOperationException", msg, 0);
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyServices.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyServices.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyServices.java	(revision 808)
@@ -0,0 +1,36 @@
+/**
+ * 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.lib.api;
+
+import org.gvsig.fmap.dal.feature.FeatureStore;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface TopologyServices {
+
+    public FeatureStore getFeatureStore(TopologyDataSet dataSet);
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyReportLine.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyReportLine.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyReportLine.java	(revision 808)
@@ -0,0 +1,53 @@
+/**
+ * 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.lib.api;
+
+import org.gvsig.fmap.dal.feature.FeatureReference;
+import org.gvsig.fmap.geom.Geometry;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface TopologyReportLine {
+    
+    public TopologyRule getRule();
+    
+    public TopologyDataSet getDataSet1();
+    
+    public TopologyDataSet getDataSet2();
+    
+    public Geometry getGeometry();
+    
+    public Geometry getError();
+    
+    public FeatureReference getFeature1();
+
+    public FeatureReference getFeature2();
+    
+    public boolean isException();
+    
+    public String getDescription();
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyDataSet.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyDataSet.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyDataSet.java	(revision 808)
@@ -0,0 +1,86 @@
+/**
+ * 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.lib.api;
+
+import org.gvsig.expressionevaluator.Expression;
+import org.gvsig.fmap.dal.DataStore;
+import org.gvsig.fmap.dal.exception.DataException;
+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.FeatureStore;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.SpatialIndex;
+import org.gvsig.tools.util.PropertiesSupport;
+import org.gvsig.tools.visitor.VisitCanceledException;
+import org.gvsig.tools.visitor.Visitor;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface TopologyDataSet extends PropertiesSupport, SerializableJSON {
+
+    public static interface Operation {
+        public void run() throws DataException;
+    }
+    
+    public void setName(String name);
+
+    public String getName();
+    
+    public DataStore getStore();
+
+    public FeatureStore getFeatureStore();
+
+    public boolean isThisStore(FeatureStore featureStore);
+
+    public int getGeometryType() ;
+
+    public void accept(Visitor visitor) throws VisitCanceledException;
+
+    public void edit() throws DataException;
+
+    public void finishEditing() throws DataException;
+    
+    public EditableFeature createNewFeature() throws DataException;
+
+    public void delete(FeatureReference feature) throws DataException;
+
+    public void delete(Feature feature) throws DataException;
+
+    public void insert(EditableFeature feature) throws DataException;
+
+    public void update(EditableFeature feature) throws DataException;
+
+    public long getSize();
+    
+    public SpatialIndex getSpatialIndex();
+    
+    public Iterable<FeatureReference> query(Geometry geom);
+
+    public Feature findFirst(Expression expression);
+
+    public void restart();
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/CancelOperationException.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/CancelOperationException.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/CancelOperationException.java	(revision 808)
@@ -0,0 +1,14 @@
+package org.gvsig.topology.lib.api;
+
+import org.gvsig.fmap.dal.exception.DataException;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class CancelOperationException extends DataException {
+
+    public CancelOperationException(String msg) {
+        super("_CancelOperationException", msg, 0);
+    }
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyPlan.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyPlan.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/api/TopologyPlan.java	(revision 808)
@@ -0,0 +1,80 @@
+/**
+ * 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.lib.api;
+
+import java.util.Collection;
+import org.gvsig.fmap.dal.DataStore;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.tools.task.SimpleTaskStatus;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface TopologyPlan extends SerializableJSON {
+
+    
+    public String getName();
+    
+    public void setName(String name);
+    
+    public double getTolerance();
+    
+    public void setTolerance(double tolerance);
+
+    public void clear();
+
+    public void setTopologyServices(TopologyServices services);
+
+    public TopologyServices getTopologyServices();
+
+    public SimpleTaskStatus getTaskStatus();
+    
+    public void execute();
+    
+    public TopologyDataSet addDataSet(String name, DataStore store);
+
+    public TopologyDataSet addDataSet(TopologyDataSet dataSet);
+    
+    public void removeDataSet(TopologyDataSet dataSet);
+    
+    public boolean containsDataSet(String name);
+ 
+    public TopologyDataSet getDataSet(String name);
+    
+    public Collection<TopologyDataSet> getDataSets();
+    
+    public Collection<TopologyDataSet> getSecondaryDataSets(TopologyRuleFactory ruleFactory);
+    
+    public TopologyRule addRule(String id, String dataSet1, String dataSet2, double tolerance);
+    
+    public TopologyRule addRule(TopologyRule rule);
+    
+    public void removeRule(TopologyRule rule);
+ 
+    public Collection<TopologyRule> getRules();
+    
+    public TopologyReport getReport();
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/spi/AbstractTopologyRuleAction.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/spi/AbstractTopologyRuleAction.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/spi/AbstractTopologyRuleAction.java	(revision 808)
@@ -0,0 +1,101 @@
+/**
+ * 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.lib.spi;
+
+import org.gvsig.tools.dynobject.DynObject;
+import org.gvsig.topology.lib.api.TopologyLocator;
+import org.gvsig.topology.lib.api.TopologyRuleAction;
+import org.gvsig.topology.lib.api.TopologyRuleFactory;
+import org.json.JSONObject;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public abstract class AbstractTopologyRuleAction implements TopologyRuleAction {
+
+    private final String idAction;
+    private final String idRule;
+    private String name;
+    private String shortDescription;
+
+    protected AbstractTopologyRuleAction(
+            String idRule,
+            String idAction,
+            String name,
+            String shortDescription
+        ) {
+        this.idRule = idRule;
+        this.idAction = idAction;
+        this.name = name;
+        this.shortDescription = shortDescription;
+        this.load_from_resource();
+    }
+    
+    @Override
+    public String getId() {
+        return this.idAction;
+    }
+
+    @Override
+    public String getName() {
+        return this.name;
+    }
+
+    @Override
+    public String getShortDescription() {
+        return this.shortDescription;
+    }
+
+    @Override
+    public TopologyRuleFactory getRuleFactory() {
+        TopologyRuleFactory f = TopologyLocator.getTopologyManager().getRulefactory(this.idRule);
+        return f;
+    }
+
+    @Override
+    public boolean hasParameters() {
+        return false;
+    }
+
+    @Override
+    public DynObject createParameters() {
+        return null;
+    }
+    
+    private void load_from_resource() {
+        JSONObject rule = RuleResourceLoaderUtils.getRule(this.idRule);
+        if( rule == null ) {
+            return;
+        }
+        JSONObject action = RuleResourceLoaderUtils.getAction(rule, this.idAction);
+        if( action.has("name") ) {
+            this.name = action.getString("name");
+        }
+        if( action.has("description") ) {
+            this.shortDescription = RuleResourceLoaderUtils.getDescription(this.idRule, action);
+        }
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/spi/RuleResourceLoaderUtils.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/spi/RuleResourceLoaderUtils.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/spi/RuleResourceLoaderUtils.java	(revision 808)
@@ -0,0 +1,131 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.gvsig.topology.lib.spi;
+
+import java.io.File;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+import java.util.Locale;
+import java.util.logging.Level;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+@SuppressWarnings("UseSpecificCatch")
+public class RuleResourceLoaderUtils {
+    
+    private static Logger LOGGER = LoggerFactory.getLogger(RuleResourceLoaderUtils.class);
+    
+    public static URL getRuleURL(String idRule) {
+        String lang = Locale.getDefault().getLanguage();
+        URL url = RuleResourceLoaderUtils.class.getResource("/org/gvsig/topology/rules/"+lang+"/"+idRule+".json");
+        if( url == null ) {
+            url = RuleResourceLoaderUtils.class.getResource("/org/gvsig/topology/rules/en/"+idRule+".json");
+            if( url == null ) {
+                return null;
+            }
+        }
+        return url;
+    }
+    
+    public static JSONObject getRule(URL url) {
+        if( url == null ) {
+            return null;
+        }
+        InputStream is = null;
+        JSONObject json;
+        try {
+            is = url.openStream();
+            List<String> lines = IOUtils.readLines(is);
+            json = new JSONObject(StringUtils.join(lines,  "\n"));
+        } catch (Exception ex) {
+            LOGGER.warn("Can't load resource from json file '"+url.toString()+"'.", ex);
+            return null;
+        } finally {
+            IOUtils.closeQuietly(is);
+        }
+        return json;
+    }
+
+    public static JSONObject getRule(String idRuleOrPathname) {
+        if( idRuleOrPathname==null ) {
+            return null;
+        }
+        if( idRuleOrPathname.endsWith(".json") ) {
+            // Asumimos que es una ruta al fichero json.
+            return getRule(new File(idRuleOrPathname));
+        }
+        // Asumimos que es un ID de regla
+        URL url = getRuleURL(idRuleOrPathname);
+        if( url == null ) {
+            return null;
+        }
+        return getRule(url);
+    }
+    
+    public static JSONObject getRule(File jsonfile) {
+        if( jsonfile == null || !jsonfile.exists() ) {
+            return null;
+        }
+        try {
+            return getRule(jsonfile.toURI().toURL());
+        } catch (MalformedURLException ex) {
+            LOGGER.warn("Can't load resource from json file '"+jsonfile.toString()+"'.", ex);
+            return null;
+        }
+    }
+
+    public static String getDescription(String idRule, JSONObject json) {
+        String description = null;
+        
+        if( json.has("description") ) {
+            Object x = json.get("description");
+            if( x instanceof String ) {
+                description = (String) x;
+            } else if( x instanceof JSONArray ) {
+                StringBuilder builder = new StringBuilder();
+                for (int i = 0; i < ((JSONArray)x).length(); i++) {
+                    if( i>0 ) {
+                        builder.append(" ");
+                    }
+                    builder.append(((JSONArray)x).getString(i));
+                }
+                description = builder.toString();
+            } else {
+                description = x.toString();
+            }
+            if( description.contains("@@@") ) {
+                description = StringUtils.replace(
+                        description, 
+                        "@@@", 
+                        getRuleURL(idRule).toString()
+                );
+            }
+        }
+        return description;
+    }
+    
+    public static JSONObject getAction(JSONObject rule, String idAction) {
+        if( !rule.has("actions") ) {
+            return null;
+        }
+        if( !rule.getJSONObject("actions").has(idAction) ) {
+            return null;
+        }
+        JSONObject action = rule.getJSONObject("actions").getJSONObject(idAction);
+        return action;
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/spi/AbstractTopologyRule.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/spi/AbstractTopologyRule.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/spi/AbstractTopologyRule.java	(revision 808)
@@ -0,0 +1,226 @@
+/**
+ * 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.lib.spi;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+import org.gvsig.fmap.dal.feature.Feature;
+import org.gvsig.tools.exception.BaseException;
+import org.gvsig.tools.task.SimpleTaskStatus;
+import org.gvsig.tools.visitor.VisitCanceledException;
+import org.gvsig.tools.visitor.Visitor;
+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.TopologyRule;
+import org.gvsig.topology.lib.api.TopologyRuleAction;
+import org.gvsig.topology.lib.api.TopologyRuleFactory;
+import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public abstract class AbstractTopologyRule implements TopologyRule {
+
+    protected static final Logger LOGGER = LoggerFactory.getLogger(AbstractTopologyRule.class);
+    
+    private final TopologyPlan plan;
+    private final TopologyRuleFactory factory;
+    private double tolerance;
+    private String dataSet1;
+    private String dataSet2;
+
+    protected List<TopologyRuleAction> actions;
+
+    protected AbstractTopologyRule(
+            TopologyPlan plan,
+            TopologyRuleFactory factory,
+            double tolerance,
+            String dataSet1,
+            String dataSet2
+    ) {
+        this.plan = plan;
+        this.factory = factory;
+        this.tolerance = tolerance;
+        this.dataSet1 = dataSet1;
+        this.dataSet2 = dataSet2;
+        this.actions = new ArrayList<>();
+    }
+
+    protected AbstractTopologyRule(
+            TopologyPlan plan,
+            TopologyRuleFactory factory,
+            double tolerance,
+            String dataSet1
+    ) {
+        this(plan, factory, tolerance, dataSet1, null);
+    }
+
+    protected TopologyPlan getPlan() {
+        return this.plan;
+    }
+
+    @Override
+    public TopologyRuleFactory getFactory() {
+        return this.factory;
+    }
+
+    @Override
+    public String getName() {
+        return this.getFactory().getName();
+    }
+
+    @Override
+    public String getId() {
+        return this.getFactory().getId();
+    }
+
+    protected final void addAction(TopologyRuleAction action) {
+        this.actions.add(action);
+    }
+    
+    @Override
+    public boolean equals(Object obj) {
+        if( !(obj instanceof TopologyRule) ) {
+            return false;
+        }
+        AbstractTopologyRule other = (AbstractTopologyRule)obj;
+        if( !StringUtils.equals(this.getName(), other.getName()) ) {
+            return false;
+        }
+        if( !StringUtils.equals(this.dataSet1, other.dataSet1) ) {
+            return false;
+        }
+        if( !StringUtils.equals(this.dataSet2, other.dataSet2) ) {
+            return false;
+        }
+        // Ojo con la comparacion de doubles
+//        if( this.tolerance != other.tolerance ) {
+//            return false;
+//        }
+        return true;
+    }
+    
+    @Override
+    public String toString() {
+        return this.getName();
+    }
+
+    @Override
+    public TopologyDataSet getDataSet1() {
+        return this.getPlan().getDataSet(dataSet1);
+    }
+
+    @Override
+    public TopologyDataSet getDataSet2() {
+        return this.getPlan().getDataSet(dataSet2);
+    }
+
+    @Override
+    public double getTolerance() {
+        return this.tolerance;
+    }
+
+    @Override
+    public List<TopologyRuleAction> getActions() {
+        return Collections.unmodifiableList(actions);
+    }
+
+    @Override
+    public TopologyRuleAction getAction(String id) {
+        for (TopologyRuleAction action : actions) {
+            if (StringUtils.equalsIgnoreCase(id, action.getId())) {
+                return action;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public long getSteps() {
+        return this.getDataSet1().getSize();
+    }
+
+    @Override
+    public void execute(final SimpleTaskStatus taskStatus, final TopologyReport report) {
+        try {
+            this.getDataSet1().accept(new Visitor() {
+                @Override
+                public void visit(final Object o1) throws VisitCanceledException, BaseException {
+                    if( taskStatus.isCancellationRequested() ) {
+                        throw new VisitCanceledException();
+                    }
+                    taskStatus.incrementCurrentValue();
+                    try {
+                        check(taskStatus, report, (Feature) o1);
+                    } catch (Exception ex) {
+                        throw new RuntimeException(ex);
+                    }
+                }
+            });
+        } catch(VisitCanceledException ex) {
+            // return;
+        }
+    }
+
+    protected void check(SimpleTaskStatus taskStatus, TopologyReport report, Feature feature) throws Exception {
+        
+    }
+
+    @Override
+    public JSONObject toJSON() {
+        JSONObject me = new JSONObject();
+        me.put("tolerance", this.tolerance);
+        me.put("dataSet1", this.dataSet1);
+        me.put("dataSet2", this.dataSet2);
+        
+        return me;
+    }
+
+    @Override
+    public void fromJSON(String json) {
+        this.fromJSON(new JSONObject(json));
+    }
+    
+    @Override
+    public void fromJSON(JSONObject json) {
+//        this.report = null;
+
+        if( json.has("tolerance") ) {
+            this.tolerance = json.getDouble("tolerance");
+        }
+        if( json.has("dataSet1") ) {
+            this.dataSet1 = json.getString("dataSet1");
+        }
+        if( json.has("dataSet2") ) {
+            this.dataSet2 = json.getString("dataSet2");
+        }
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/spi/AbstractTopologyRuleFactory.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/spi/AbstractTopologyRuleFactory.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/java/org/gvsig/topology/lib/spi/AbstractTopologyRuleFactory.java	(revision 808)
@@ -0,0 +1,144 @@
+/**
+ * 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.lib.spi;
+
+import java.util.List;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.GeometryLocator;
+import org.gvsig.fmap.geom.GeometryManager;
+import org.gvsig.tools.util.ListBuilder;
+import org.gvsig.topology.lib.api.TopologyDataSet;
+import org.gvsig.topology.lib.api.TopologyRuleFactory;
+import org.json.JSONObject;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public abstract class AbstractTopologyRuleFactory implements TopologyRuleFactory {
+    private final String id;
+    private String name;
+    private String description;
+    private final List<Integer> geometryTypeDataSet1;
+    private final List<Integer> geometryTypeDataSet2;
+
+    protected AbstractTopologyRuleFactory(
+            String id,
+            String name,
+            String description,
+            List<Integer> geometryTypeDataSet1,
+            List<Integer> geometryTypeDataSet2
+        ) {
+        this.id = id;
+        this.name = name;
+        this.description = description;
+        this.geometryTypeDataSet1 = geometryTypeDataSet1;
+        this.geometryTypeDataSet2 = geometryTypeDataSet2;
+        this.load_from_resource();
+    }
+
+    protected AbstractTopologyRuleFactory(
+            String id,
+            String name,
+            String description,
+            List<Integer> geometryTypeDataSet1
+        ) {
+        this(id, name, description, geometryTypeDataSet1, null);
+    }
+
+    @Override
+    public String toString() {
+        return this.name;
+    }
+    
+    @Override
+    public String getId() {
+        return this.id;
+    }
+
+    @Override
+    public String getName() {
+        return this.name;
+    }
+
+    @Override
+    public String getDescription() {
+        return this.description;
+    }
+
+    @Override
+    public List<Integer> getGeometryTypeDataSet1() {
+        return this.geometryTypeDataSet1;
+    }
+
+    @Override
+    public List<Integer> getGeometryTypeDataSet2() {
+        return this.geometryTypeDataSet2;
+    }
+
+    @Override
+    public boolean hasSecondaryDataSet() {
+        return this.geometryTypeDataSet2 != null && !this.geometryTypeDataSet2.isEmpty();
+    }
+
+    @Override
+    public boolean canApplyToDataSet(TopologyDataSet dataSet) {
+        GeometryManager geomManager = GeometryLocator.getGeometryManager();
+        for (Integer geometryType : geometryTypeDataSet1) {
+            boolean canApply = geomManager.isSubtype(geometryType, dataSet.getGeometryType());
+            if( canApply ) {
+                return true;
+            }
+        }        
+        return false;
+    }
+
+    @Override
+    public boolean canApplyToSecondaryDataSet(TopologyDataSet dataSet) {
+        if( !this.hasSecondaryDataSet() ) {
+            return false;
+        }
+        GeometryManager geomManager = GeometryLocator.getGeometryManager();
+        for (Integer geometryType : geometryTypeDataSet2) {
+            boolean canApply = geomManager.isSubtype(geometryType, dataSet.getGeometryType() );
+            if( canApply ) {
+                return true;
+            }
+        }        
+        return false;
+    }
+   
+    private void load_from_resource() {
+        JSONObject json = RuleResourceLoaderUtils.getRule(this.id);
+        if( json == null ) {
+            return;
+        }
+        if( json.has("name") ) {
+            this.name = json.getString("name");
+        }
+        if( json.has("description") ) {
+            this.description = RuleResourceLoaderUtils.getDescription(this.id, json);
+        }
+    }
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 808)
@@ -0,0 +1 @@
+org.gvsig.topology.lib.api.TopologyLibrary
\ No newline at end of file
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/pom.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/pom.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api/pom.xml	(revision 808)
@@ -0,0 +1,23 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.gvsig</groupId>
+    <artifactId>org.gvsig.topology.lib</artifactId>
+    <version>1.0.3</version>
+  </parent>
+  <artifactId>org.gvsig.topology.lib.api</artifactId>
+  <name>${project.artifactId}</name>
+  <dependencies>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.tools.lib</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.fmap.dal.api</artifactId>
+      <scope>compile</scope>
+    </dependency>
+  </dependencies>
+
+</project>
\ No newline at end of file

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.lib/org.gvsig.topology.lib.api
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingLocator.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingLocator.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingLocator.java	(revision 808)
@@ -0,0 +1,92 @@
+/**
+ * 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.swing.api;
+
+import org.gvsig.tools.locator.AbstractLocator;
+import org.gvsig.tools.locator.Locator;
+import org.gvsig.tools.locator.LocatorException;
+
+@SuppressWarnings("rawtypes")
+public class TopologySwingLocator extends AbstractLocator {
+
+	private static final String LOCATOR_NAME = "TopologySwingLocator";
+	
+	public static final String TOPOLOGY_SWING_MANAGER_NAME =
+			"org.gvsig.topology.swing.manager";
+
+	private static final String TOPOLOGY_SWING_MANAGER_DESCRIPTION =
+			"Topology Swing Manager of gvSIG";
+	
+	private static final TopologySwingLocator instance = new TopologySwingLocator();
+
+	private TopologySwingLocator() {
+
+	}
+
+	/**
+	 * Return the singleton instance.
+	 * 
+	 * @return the singleton instance
+	 */
+	public static TopologySwingLocator getInstance() {
+		return instance;
+	}
+
+        @Override
+	public String getLocatorName() {
+		return LOCATOR_NAME;
+	}
+
+	/**
+	 * Return a reference to TopologyManager.
+	 * 
+	 * @return a reference to TopologyManager
+	 * @throws LocatorException
+	 *             if there is no access to the class or the class cannot be
+	 *             instantiated
+	 * @see Locator#get(String)
+	 */
+	public static TopologySwingManager getTopologySwingManager()
+			throws LocatorException {
+		return (TopologySwingManager) getInstance().get(TOPOLOGY_SWING_MANAGER_NAME);
+	}
+
+	/**
+	 * Registers the Class implementing the TopologyManager interface.
+	 * 
+	 * @param clazz
+	 *            implementing the TopologyManager interface
+	 */
+	public static void registerTopologySwingManager(Class clazz) {
+		getInstance().register(TOPOLOGY_SWING_MANAGER_NAME,
+				TOPOLOGY_SWING_MANAGER_DESCRIPTION, clazz);
+	}
+
+	public static void registerDefaultTopologySwingManager(Class clazz) {
+		getInstance().registerDefault(TOPOLOGY_SWING_MANAGER_NAME,
+				TOPOLOGY_SWING_MANAGER_DESCRIPTION, clazz);
+	}
+
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingServices.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingServices.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingServices.java	(revision 808)
@@ -0,0 +1,64 @@
+/**
+ * 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.swing.api;
+
+import javax.swing.ImageIcon;
+import javax.swing.tree.TreeModel;
+import javax.swing.tree.TreePath;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.fmap.geom.primitive.Point;
+import org.gvsig.topology.lib.api.TopologyServices;
+
+/**
+ *
+ * @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();
+    
+    public void addError(Geometry geom);
+    
+    public void setShowFormWhenEdit(boolean showFormWhenEdit);
+    
+    public ImageIcon getTreeIcon(TreeModel model, Object item);
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingLibrary.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingLibrary.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingLibrary.java	(revision 808)
@@ -0,0 +1,53 @@
+/**
+ * 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.swing.api;
+
+import org.gvsig.tools.ToolsLibrary;
+import org.gvsig.tools.library.AbstractLibrary;
+import org.gvsig.tools.library.LibraryException;
+import org.gvsig.topology.lib.api.TopologyLibrary;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class TopologySwingLibrary extends AbstractLibrary {
+
+    @Override
+    public void doRegistration() {
+        super.doRegistration();
+        registerAsAPI(TopologySwingLibrary.class);
+        this.require(ToolsLibrary.class);
+        this.require(TopologyLibrary.class);
+    }
+
+    @Override
+    protected void doInitialize() throws LibraryException {
+    }
+
+    @Override
+    protected void doPostInitialize() throws LibraryException {
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/JTopologyPlanProperties.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/JTopologyPlanProperties.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/JTopologyPlanProperties.java	(revision 808)
@@ -0,0 +1,39 @@
+/**
+ * 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.swing.api;
+
+import org.gvsig.tools.swing.api.Component;
+import org.gvsig.topology.lib.api.TopologyPlan;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface JTopologyPlanProperties extends Component {
+    
+    public void put(TopologyPlan plan);
+    
+    public TopologyPlan fetch(TopologyPlan plan);
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingManager.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingManager.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/TopologySwingManager.java	(revision 808)
@@ -0,0 +1,42 @@
+/**
+ * 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.swing.api;
+
+import org.gvsig.topology.lib.api.TopologyPlan;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface TopologySwingManager {
+    
+    public void setDefaultServices(TopologySwingServices services);
+
+    public TopologySwingServices getDefaultServices();
+    
+    public JTopologyPlanProperties createJTopologyPlan();
+    
+    public JTopologyReport createJTopologyReport(TopologyPlan plan);
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/JTopologyReport.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/JTopologyReport.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/java/org/gvsig/topology/swing/api/JTopologyReport.java	(revision 808)
@@ -0,0 +1,38 @@
+/**
+ * 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.swing.api;
+
+import org.gvsig.tools.swing.api.Component;
+import org.gvsig.topology.lib.api.TopologyPlan;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public interface JTopologyReport extends Component {
+
+    public void put(TopologyPlan plan);
+    
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 808)
@@ -0,0 +1 @@
+org.gvsig.topology.swing.api.TopologySwingLibrary
\ No newline at end of file
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/pom.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/pom.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.api/pom.xml	(revision 808)
@@ -0,0 +1,20 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.gvsig</groupId>
+    <artifactId>org.gvsig.topology.swing</artifactId>
+    <version>1.0.3</version>
+  </parent>
+  <artifactId>org.gvsig.topology.swing.api</artifactId>
+  <name>${project.artifactId}</name>
+  <dependencies>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.topology.lib.api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.gvsig</groupId>
+      <artifactId>org.gvsig.tools.swing.api</artifactId>
+    </dependency>
+  </dependencies>
+</project>
\ No newline at end of file

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


Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-plan-rule-edit.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-plan-rule-edit.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-center-geometry.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-center-geometry.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-erase-errors.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-erase-errors.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-zoom-error.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-zoom-error.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/.directory
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/.directory	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/.directory	(revision 808)
@@ -0,0 +1,4 @@
+[Dolphin]
+PreviewsShown=true
+Timestamp=2019,1,14,12,10,24
+Version=4
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-plan-rule-add.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-plan-rule-add.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-zoom-geometry.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-zoom-geometry.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-plan-rule-remove.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-plan-rule-remove.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-show-form.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-show-form.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-filter-visible-extent.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-filter-visible-extent.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-plan-dataset-add.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-plan-dataset-add.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-mix-sel.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-mix-sel.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-multiline-sel.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-multiline-sel.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-multipolygon-sel.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-multipolygon-sel.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-multipoint-sel.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-multipoint-sel.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-line.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-line.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-polygon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-polygon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-point.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-point.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-wrong.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-wrong.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-mix.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-mix.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-raster.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-raster.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-multiline.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-multiline.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-multipolygon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-multipolygon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-multipoint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-multipoint.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-line-sel.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-line-sel.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-polygon-sel.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-polygon-sel.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-point-sel.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes/layer-type-point-sel.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream


Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/layertypes
___________________________________________________________________
Added: svn:ignore
   + .directory


Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-refresh.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-refresh.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-plan-dataset-remove.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-plan-dataset-remove.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-filter-errors.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-filter-errors.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-actions.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-actions.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-filter-exceptions.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-filter-exceptions.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-center-error.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/org/gvsig/topology/swing/impl/images/topology-report-center-error.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/topology.jfpr
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/topology.jfpr
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library	(revision 808)
@@ -0,0 +1 @@
+org.gvsig.topology.swing.impl.TopologySwingImplLibrary
\ No newline at end of file
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyPlanPropertiesView.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyPlanPropertiesView.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyPlanPropertiesView.java	(revision 808)
@@ -0,0 +1,261 @@
+package org.gvsig.topology.swing.impl;
+
+import com.jeta.open.i18n.I18NUtils;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import java.awt.BorderLayout;
+import java.awt.ComponentOrientation;
+import java.awt.Container;
+import java.awt.Dimension;
+import javax.swing.Box;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JTextField;
+import javax.swing.border.EmptyBorder;
+
+
+public class DefaultJTopologyPlanPropertiesView extends JPanel
+{
+   JLabel lblName = new JLabel();
+   JTextField txtName = new JTextField();
+   JTabbedPane tabPanel = new JTabbedPane();
+   JList lstDataSets = new JList();
+   JButton btnAddDataSet = new JButton();
+   JButton btnRemoveDataSet = new JButton();
+   JList lstRules = new JList();
+   JButton btnAddRule = new JButton();
+   JButton btnRemoveRule = new JButton();
+   JButton btnEditRule = new JButton();
+   JLabel lblTolerance = new JLabel();
+   JTextField txtTolerance = new JTextField();
+
+   /**
+    * Default constructor
+    */
+   public DefaultJTopologyPlanPropertiesView()
+   {
+      initializePanel();
+   }
+
+   /**
+    * Adds fill components to empty cells in the first row and first column of the grid.
+    * This ensures that the grid spacing will be the same as shown in the designer.
+    * @param cols an array of column indices in the first row where fill components should be added.
+    * @param rows an array of row indices in the first column where fill components should be added.
+    */
+   void addFillComponents( Container panel, int[] cols, int[] rows )
+   {
+      Dimension filler = new Dimension(10,10);
+
+      boolean filled_cell_11 = false;
+      CellConstraints cc = new CellConstraints();
+      if ( cols.length > 0 && rows.length > 0 )
+      {
+         if ( cols[0] == 1 && rows[0] == 1 )
+         {
+            /** add a rigid area  */
+            panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
+            filled_cell_11 = true;
+         }
+      }
+
+      for( int index = 0; index < cols.length; index++ )
+      {
+         if ( cols[index] == 1 && filled_cell_11 )
+         {
+            continue;
+         }
+         panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
+      }
+
+      for( int index = 0; index < rows.length; index++ )
+      {
+         if ( rows[index] == 1 && filled_cell_11 )
+         {
+            continue;
+         }
+         panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
+      }
+
+   }
+
+   /**
+    * Helper method to load an image file from the CLASSPATH
+    * @param imageName the package and name of the file to load relative to the CLASSPATH
+    * @return an ImageIcon instance with the specified image file
+    * @throws IllegalArgumentException if the image resource cannot be loaded.
+    */
+   public ImageIcon loadImage( String imageName )
+   {
+      try
+      {
+         ClassLoader classloader = getClass().getClassLoader();
+         java.net.URL url = classloader.getResource( imageName );
+         if ( url != null )
+         {
+            ImageIcon icon = new ImageIcon( url );
+            return icon;
+         }
+      }
+      catch( Exception e )
+      {
+         e.printStackTrace();
+      }
+      throw new IllegalArgumentException( "Unable to load image: " + imageName );
+   }
+
+   /**
+    * Method for recalculating the component orientation for 
+    * right-to-left Locales.
+    * @param orientation the component orientation to be applied
+    */
+   public void applyComponentOrientation( ComponentOrientation orientation )
+   {
+      // Not yet implemented...
+      // I18NUtils.applyComponentOrientation(this, orientation);
+      super.applyComponentOrientation(orientation);
+   }
+
+   public JPanel createPanel()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE","CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      lblName.setName("lblName");
+      lblName.setText("_Name");
+      jpanel1.add(lblName,cc.xy(2,2));
+
+      txtName.setName("txtName");
+      jpanel1.add(txtName,cc.xy(4,2));
+
+      tabPanel.setName("tabPanel");
+      tabPanel.addTab("_DataSets",null,createPanel1());
+      tabPanel.addTab("_Rules",null,createPanel3());
+      jpanel1.add(tabPanel,cc.xywh(2,6,3,1));
+
+      lblTolerance.setName("lblTolerance");
+      lblTolerance.setText("_Tolerance");
+      jpanel1.add(lblTolerance,cc.xy(2,4));
+
+      txtTolerance.setName("txtTolerance");
+      txtTolerance.setHorizontalAlignment(JTextField.RIGHT);
+      jpanel1.add(txtTolerance,cc.xy(4,4));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5 },new int[]{ 1,2,3,4,5,6,7 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel1()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE","CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      lstDataSets.setName("lstDataSets");
+      JScrollPane jscrollpane1 = new JScrollPane();
+      jscrollpane1.setViewportView(lstDataSets);
+      jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+      jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+      jpanel1.add(jscrollpane1,cc.xy(2,2));
+
+      jpanel1.add(createPanel2(),cc.xy(2,4));
+      addFillComponents(jpanel1,new int[]{ 1,2,3 },new int[]{ 1,2,3,4,5 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel2()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:8DLU:GROW(1.0),FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE","CENTER:DEFAULT:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      btnAddDataSet.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-plan-dataset-add.png"));
+      btnAddDataSet.setName("btnAddDataSet");
+      btnAddDataSet.setToolTipText("_Add_dataset");
+      EmptyBorder emptyborder1 = new EmptyBorder(2,2,2,2);
+      btnAddDataSet.setBorder(emptyborder1);
+      jpanel1.add(btnAddDataSet,cc.xy(6,1));
+
+      btnRemoveDataSet.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-plan-dataset-remove.png"));
+      btnRemoveDataSet.setName("btnRemoveDataSet");
+      btnRemoveDataSet.setToolTipText("_Remove_dataset");
+      EmptyBorder emptyborder2 = new EmptyBorder(2,2,2,2);
+      btnRemoveDataSet.setBorder(emptyborder2);
+      jpanel1.add(btnRemoveDataSet,cc.xy(4,1));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,3,5 },new int[]{ 1 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel3()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE","CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      lstRules.setName("lstRules");
+      JScrollPane jscrollpane1 = new JScrollPane();
+      jscrollpane1.setViewportView(lstRules);
+      jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+      jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+      jpanel1.add(jscrollpane1,cc.xy(2,2));
+
+      jpanel1.add(createPanel4(),cc.xy(2,4));
+      addFillComponents(jpanel1,new int[]{ 1,2,3 },new int[]{ 1,2,3,4,5 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel4()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:DEFAULT:GROW(1.0),FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE","CENTER:DEFAULT:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      btnAddRule.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-plan-rule-add.png"));
+      btnAddRule.setName("btnAddRule");
+      btnAddRule.setToolTipText("_Add_rule");
+      EmptyBorder emptyborder1 = new EmptyBorder(2,2,2,2);
+      btnAddRule.setBorder(emptyborder1);
+      jpanel1.add(btnAddRule,cc.xy(7,1));
+
+      btnRemoveRule.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-plan-rule-remove.png"));
+      btnRemoveRule.setName("btnRemoveRule");
+      btnRemoveRule.setToolTipText("_Remove_rule");
+      EmptyBorder emptyborder2 = new EmptyBorder(2,2,2,2);
+      btnRemoveRule.setBorder(emptyborder2);
+      jpanel1.add(btnRemoveRule,cc.xy(3,1));
+
+      btnEditRule.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-plan-rule-edit.png"));
+      btnEditRule.setName("btnEditRule");
+      btnEditRule.setToolTipText("_Edit_rule");
+      EmptyBorder emptyborder3 = new EmptyBorder(2,2,2,2);
+      btnEditRule.setBorder(emptyborder3);
+      jpanel1.add(btnEditRule,cc.xy(5,1));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,4,6 },new int[]{ 1 });
+      return jpanel1;
+   }
+
+   /**
+    * Initializer
+    */
+   protected void initializePanel()
+   {
+      setLayout(new BorderLayout());
+      add(createPanel(), BorderLayout.CENTER);
+   }
+
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/SelectDataSetDialogView.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/SelectDataSetDialogView.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/SelectDataSetDialogView.xml	(revision 808)
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<object classname="com.jeta.forms.store.memento.FormPackage">
+ <at name="fileversion">
+  <object classname="com.jeta.forms.store.memento.FormsVersion2">
+   <at name="major">2</at>
+   <at name="minor">0</at>
+   <at name="sub">0</at>
+  </object>
+ </at>
+ <at name="form">
+  <object classname="com.jeta.forms.store.memento.FormMemento">
+   <super classname="com.jeta.forms.store.memento.ComponentMemento">
+    <at name="cellconstraints">
+     <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+      <at name="column">1</at>
+      <at name="row">1</at>
+      <at name="colspan">1</at>
+      <at name="rowspan">1</at>
+      <at name="halign">default</at>
+      <at name="valign">default</at>
+      <at name="insets" object="insets">0,0,0,0</at>
+     </object>
+    </at>
+    <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+   </super>
+   <at name="id">/home/jjdelcerro/datos/devel/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/SelectDataSetDialogView.xml</at>
+   <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE</at>
+   <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
+   <at name="components">
+    <object classname="java.util.LinkedList">
+     <item >
+      <at name="value">
+       <object classname="com.jeta.forms.store.memento.BeanMemento">
+        <super classname="com.jeta.forms.store.memento.ComponentMemento">
+         <at name="cellconstraints">
+          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+           <at name="column">2</at>
+           <at name="row">2</at>
+           <at name="colspan">1</at>
+           <at name="rowspan">1</at>
+           <at name="halign">default</at>
+           <at name="valign">default</at>
+           <at name="insets" object="insets">0,0,0,0</at>
+          </object>
+         </at>
+         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+        </super>
+        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+        <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
+          <at name="properties">
+           <object classname="com.jeta.forms.store.support.PropertyMap">
+            <at name="border">
+             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+              <super classname="com.jeta.forms.store.properties.BorderProperty">
+               <at name="name">border</at>
+              </super>
+              <at name="borders">
+               <object classname="java.util.LinkedList">
+                <item >
+                 <at name="value">
+                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                  </object>
+                 </at>
+                </item>
+               </object>
+              </at>
+             </object>
+            </at>
+            <at name="name">lblName</at>
+            <at name="width">39</at>
+            <at name="text">_Name</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">14</at>
+           </object>
+          </at>
+         </object>
+        </at>
+       </object>
+      </at>
+     </item>
+     <item >
+      <at name="value">
+       <object classname="com.jeta.forms.store.memento.BeanMemento">
+        <super classname="com.jeta.forms.store.memento.ComponentMemento">
+         <at name="cellconstraints">
+          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+           <at name="column">4</at>
+           <at name="row">2</at>
+           <at name="colspan">1</at>
+           <at name="rowspan">1</at>
+           <at name="halign">default</at>
+           <at name="valign">default</at>
+           <at name="insets" object="insets">0,0,0,0</at>
+          </object>
+         </at>
+         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+        </super>
+        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+        <at name="beanclass">javax.swing.JTextField</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">javax.swing.JTextField</at>
+          <at name="properties">
+           <object classname="com.jeta.forms.store.support.PropertyMap">
+            <at name="border">
+             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+              <super classname="com.jeta.forms.store.properties.BorderProperty">
+               <at name="name">border</at>
+              </super>
+              <at name="borders">
+               <object classname="java.util.LinkedList">
+                <item >
+                 <at name="value">
+                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                  </object>
+                 </at>
+                </item>
+               </object>
+              </at>
+             </object>
+            </at>
+            <at name="name">txtName</at>
+            <at name="width">894</at>
+            <at name="height">20</at>
+           </object>
+          </at>
+         </object>
+        </at>
+       </object>
+      </at>
+     </item>
+     <item >
+      <at name="value">
+       <object classname="com.jeta.forms.store.memento.BeanMemento">
+        <super classname="com.jeta.forms.store.memento.ComponentMemento">
+         <at name="cellconstraints">
+          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+           <at name="column">2</at>
+           <at name="row">4</at>
+           <at name="colspan">3</at>
+           <at name="rowspan">1</at>
+           <at name="halign">default</at>
+           <at name="valign">default</at>
+           <at name="insets" object="insets">0,0,0,0</at>
+          </object>
+         </at>
+         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+        </super>
+        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+        <at name="beanclass">javax.swing.JTree</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">javax.swing.JTree</at>
+          <at name="properties">
+           <object classname="com.jeta.forms.store.support.PropertyMap">
+            <at name="border">
+             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+              <super classname="com.jeta.forms.store.properties.BorderProperty">
+               <at name="name">border</at>
+              </super>
+              <at name="borders">
+               <object classname="java.util.LinkedList">
+                <item >
+                 <at name="value">
+                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                  </object>
+                 </at>
+                </item>
+               </object>
+              </at>
+             </object>
+            </at>
+            <at name="scrollableTracksViewportHeight">true</at>
+            <at name="scrollableTracksViewportWidth">true</at>
+            <at name="name">treeDataSets</at>
+            <at name="showsRootHandles">true</at>
+            <at name="width">951</at>
+            <at name="scollBars">
+             <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+              <at name="name">scollBars</at>
+              <at name="verticalpolicy">20</at>
+              <at name="horizontalpolicy">30</at>
+              <at name="border">
+               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                 <at name="name">border</at>
+                </super>
+                <at name="borders">
+                 <object classname="java.util.LinkedList">
+                  <item >
+                   <at name="value">
+                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                      <at name="name">border</at>
+                     </super>
+                    </object>
+                   </at>
+                  </item>
+                 </object>
+                </at>
+               </object>
+              </at>
+             </object>
+            </at>
+            <at name="height">509</at>
+           </object>
+          </at>
+         </object>
+        </at>
+       </object>
+      </at>
+     </item>
+    </object>
+   </at>
+   <at name="properties">
+    <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+     <at name="classname">com.jeta.forms.gui.form.GridView</at>
+     <at name="properties">
+      <object classname="com.jeta.forms.store.support.PropertyMap">
+       <at name="border">
+        <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+         <super classname="com.jeta.forms.store.properties.BorderProperty">
+          <at name="name">border</at>
+         </super>
+         <at name="borders">
+          <object classname="java.util.LinkedList"/>
+         </at>
+        </object>
+       </at>
+       <at name="name"/>
+       <at name="fill">
+        <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+         <at name="name">fill</at>
+        </object>
+       </at>
+       <at name="scollBars">
+        <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+         <at name="name">scollBars</at>
+         <at name="verticalpolicy">21</at>
+         <at name="horizontalpolicy">31</at>
+         <at name="border">
+          <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+           <super classname="com.jeta.forms.store.properties.BorderProperty">
+            <at name="name">border</at>
+           </super>
+           <at name="borders">
+            <object classname="java.util.LinkedList">
+             <item >
+              <at name="value">
+               <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                 <at name="name">border</at>
+                </super>
+               </object>
+              </at>
+             </item>
+            </object>
+           </at>
+          </object>
+         </at>
+        </object>
+       </at>
+      </object>
+     </at>
+    </object>
+   </at>
+   <at name="cellpainters">
+    <object classname="com.jeta.forms.store.support.Matrix">
+     <at name="rows">
+      <object classname="[Ljava.lang.Object;" size="5">
+       <at name="item" index="0">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="1">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="2">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="3">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="4">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+      </object>
+     </at>
+    </object>
+   </at>
+   <at name="rowgroups">
+    <object classname="com.jeta.forms.store.memento.FormGroupSet">
+     <at name="groups">
+      <object classname="java.util.HashMap"/>
+     </at>
+    </object>
+   </at>
+   <at name="colgroups">
+    <object classname="com.jeta.forms.store.memento.FormGroupSet">
+     <at name="groups">
+      <object classname="java.util.HashMap"/>
+     </at>
+    </object>
+   </at>
+  </object>
+ </at>
+</object>
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/SelectDataSetDialogView.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/SelectDataSetDialogView.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/SelectDataSetDialogView.java	(revision 808)
@@ -0,0 +1,148 @@
+package org.gvsig.topology.swing.impl;
+
+import com.jeta.open.i18n.I18NUtils;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import java.awt.BorderLayout;
+import java.awt.ComponentOrientation;
+import java.awt.Container;
+import java.awt.Dimension;
+import javax.swing.Box;
+import javax.swing.ImageIcon;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextField;
+import javax.swing.JTree;
+
+
+public class SelectDataSetDialogView extends JPanel
+{
+   JLabel lblName = new JLabel();
+   JTextField txtName = new JTextField();
+   JTree treeDataSets = new JTree();
+
+   /**
+    * Default constructor
+    */
+   public SelectDataSetDialogView()
+   {
+      initializePanel();
+   }
+
+   /**
+    * Adds fill components to empty cells in the first row and first column of the grid.
+    * This ensures that the grid spacing will be the same as shown in the designer.
+    * @param cols an array of column indices in the first row where fill components should be added.
+    * @param rows an array of row indices in the first column where fill components should be added.
+    */
+   void addFillComponents( Container panel, int[] cols, int[] rows )
+   {
+      Dimension filler = new Dimension(10,10);
+
+      boolean filled_cell_11 = false;
+      CellConstraints cc = new CellConstraints();
+      if ( cols.length > 0 && rows.length > 0 )
+      {
+         if ( cols[0] == 1 && rows[0] == 1 )
+         {
+            /** add a rigid area  */
+            panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
+            filled_cell_11 = true;
+         }
+      }
+
+      for( int index = 0; index < cols.length; index++ )
+      {
+         if ( cols[index] == 1 && filled_cell_11 )
+         {
+            continue;
+         }
+         panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
+      }
+
+      for( int index = 0; index < rows.length; index++ )
+      {
+         if ( rows[index] == 1 && filled_cell_11 )
+         {
+            continue;
+         }
+         panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
+      }
+
+   }
+
+   /**
+    * Helper method to load an image file from the CLASSPATH
+    * @param imageName the package and name of the file to load relative to the CLASSPATH
+    * @return an ImageIcon instance with the specified image file
+    * @throws IllegalArgumentException if the image resource cannot be loaded.
+    */
+   public ImageIcon loadImage( String imageName )
+   {
+      try
+      {
+         ClassLoader classloader = getClass().getClassLoader();
+         java.net.URL url = classloader.getResource( imageName );
+         if ( url != null )
+         {
+            ImageIcon icon = new ImageIcon( url );
+            return icon;
+         }
+      }
+      catch( Exception e )
+      {
+         e.printStackTrace();
+      }
+      throw new IllegalArgumentException( "Unable to load image: " + imageName );
+   }
+
+   /**
+    * Method for recalculating the component orientation for 
+    * right-to-left Locales.
+    * @param orientation the component orientation to be applied
+    */
+   public void applyComponentOrientation( ComponentOrientation orientation )
+   {
+      // Not yet implemented...
+      // I18NUtils.applyComponentOrientation(this, orientation);
+      super.applyComponentOrientation(orientation);
+   }
+
+   public JPanel createPanel()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE","CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      lblName.setName("lblName");
+      lblName.setText("_Name");
+      jpanel1.add(lblName,cc.xy(2,2));
+
+      txtName.setName("txtName");
+      jpanel1.add(txtName,cc.xy(4,2));
+
+      treeDataSets.setName("treeDataSets");
+      JScrollPane jscrollpane1 = new JScrollPane();
+      jscrollpane1.setViewportView(treeDataSets);
+      jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+      jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+      jpanel1.add(jscrollpane1,cc.xywh(2,4,3,1));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5 },new int[]{ 1,2,3,4,5 });
+      return jpanel1;
+   }
+
+   /**
+    * Initializer
+    */
+   protected void initializePanel()
+   {
+      setLayout(new BorderLayout());
+      add(createPanel(), BorderLayout.CENTER);
+   }
+
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyReportView.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyReportView.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyReportView.xml	(revision 808)
@@ -0,0 +1,2219 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<object classname="com.jeta.forms.store.memento.FormPackage">
+ <at name="fileversion">
+  <object classname="com.jeta.forms.store.memento.FormsVersion2">
+   <at name="major">2</at>
+   <at name="minor">0</at>
+   <at name="sub">0</at>
+  </object>
+ </at>
+ <at name="form">
+  <object classname="com.jeta.forms.store.memento.FormMemento">
+   <super classname="com.jeta.forms.store.memento.ComponentMemento">
+    <at name="cellconstraints">
+     <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+      <at name="column">1</at>
+      <at name="row">1</at>
+      <at name="colspan">1</at>
+      <at name="rowspan">1</at>
+      <at name="halign">default</at>
+      <at name="valign">default</at>
+      <at name="insets" object="insets">0,0,0,0</at>
+     </object>
+    </at>
+    <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+   </super>
+   <at name="id">/home/jjdelcerro/datos/devel/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyReportView.xml</at>
+   <at name="rowspecs">CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE,CENTER:DEFAULT:NONE</at>
+   <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
+   <at name="components">
+    <object classname="java.util.LinkedList">
+     <item >
+      <at name="value">
+       <object classname="com.jeta.forms.store.memento.BeanMemento">
+        <super classname="com.jeta.forms.store.memento.ComponentMemento">
+         <at name="cellconstraints">
+          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+           <at name="column">2</at>
+           <at name="row">2</at>
+           <at name="colspan">1</at>
+           <at name="rowspan">1</at>
+           <at name="halign">default</at>
+           <at name="valign">default</at>
+           <at name="insets" object="insets">0,0,0,0</at>
+          </object>
+         </at>
+         <at name="componentclass">com.jeta.forms.gui.form.FormContainerComponent</at>
+        </super>
+        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+        <at name="beanclass">javax.swing.JTabbedPane</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">javax.swing.JTabbedPane</at>
+          <at name="properties">
+           <object classname="com.jeta.forms.store.support.PropertyMap">
+            <at name="border">
+             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+              <super classname="com.jeta.forms.store.properties.BorderProperty">
+               <at name="name">border</at>
+              </super>
+              <at name="borders">
+               <object classname="java.util.LinkedList">
+                <item >
+                 <at name="value">
+                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                  </object>
+                 </at>
+                </item>
+               </object>
+              </at>
+             </object>
+            </at>
+            <at name="componentCount">2</at>
+            <at name="name">tabData</at>
+            <at name="tabs">
+             <object classname="com.jeta.forms.store.properties.TabbedPaneProperties">
+              <at name="name">tabs</at>
+              <at name="items">
+               <object classname="java.util.LinkedList">
+                <item >
+                 <at name="value">
+                  <object classname="com.jeta.forms.store.properties.TabProperty">
+                   <at name="name">tab</at>
+                   <at name="title">_Errors</at>
+                   <at name="icon">
+                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                     <at name="embedded">false</at>
+                     <at name="width">0</at>
+                     <at name="height">0</at>
+                    </object>
+                   </at>
+                   <at name="form">
+                    <object classname="com.jeta.forms.store.memento.FormMemento">
+                     <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                      <at name="cellconstraints">
+                       <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                        <at name="column">1</at>
+                        <at name="row">1</at>
+                        <at name="colspan">1</at>
+                        <at name="rowspan">1</at>
+                        <at name="halign">default</at>
+                        <at name="valign">default</at>
+                        <at name="insets" object="insets">0,0,0,0</at>
+                       </object>
+                      </at>
+                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+                     </super>
+                     <at name="id">embedded.1967681505</at>
+                     <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE</at>
+                     <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
+                     <at name="components">
+                      <object classname="java.util.LinkedList">
+                       <item >
+                        <at name="value">
+                         <object classname="com.jeta.forms.store.memento.BeanMemento">
+                          <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                           <at name="cellconstraints">
+                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                             <at name="column">2</at>
+                             <at name="row">5</at>
+                             <at name="colspan">1</at>
+                             <at name="rowspan">1</at>
+                             <at name="halign">default</at>
+                             <at name="valign">default</at>
+                             <at name="insets" object="insets">0,0,0,0</at>
+                            </object>
+                           </at>
+                           <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                          </super>
+                          <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                          <at name="beanclass">javax.swing.JTable</at>
+                          <at name="beanproperties">
+                           <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                            <at name="classname">javax.swing.JTable</at>
+                            <at name="properties">
+                             <object classname="com.jeta.forms.store.support.PropertyMap">
+                              <at name="border">
+                               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                 <at name="name">border</at>
+                                </super>
+                                <at name="borders">
+                                 <object classname="java.util.LinkedList">
+                                  <item >
+                                   <at name="value">
+                                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                    </object>
+                                   </at>
+                                  </item>
+                                 </object>
+                                </at>
+                               </object>
+                              </at>
+                              <at name="name">tblErrors</at>
+                              <at name="width">906</at>
+                              <at name="scollBars">
+                               <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+                                <at name="name">scollBars</at>
+                                <at name="verticalpolicy">20</at>
+                                <at name="horizontalpolicy">30</at>
+                                <at name="border">
+                                 <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                  <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                   <at name="name">border</at>
+                                  </super>
+                                  <at name="borders">
+                                   <object classname="java.util.LinkedList">
+                                    <item >
+                                     <at name="value">
+                                      <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                       <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                        <at name="name">border</at>
+                                       </super>
+                                      </object>
+                                     </at>
+                                    </item>
+                                   </object>
+                                  </at>
+                                 </object>
+                                </at>
+                               </object>
+                              </at>
+                              <at name="height">32</at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                         </object>
+                        </at>
+                       </item>
+                       <item >
+                        <at name="value">
+                         <object classname="com.jeta.forms.store.memento.FormMemento">
+                          <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                           <at name="cellconstraints">
+                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                             <at name="column">2</at>
+                             <at name="row">2</at>
+                             <at name="colspan">1</at>
+                             <at name="rowspan">1</at>
+                             <at name="halign">default</at>
+                             <at name="valign">default</at>
+                             <at name="insets" object="insets">0,0,0,0</at>
+                            </object>
+                           </at>
+                           <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+                          </super>
+                          <at name="id">embedded.1447955211</at>
+                          <at name="rowspecs">CENTER:DEFAULT:NONE</at>
+                          <at name="colspecs">FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:8DLU:NONE,FILL:DEFAULT:NONE,FILL:8DLU:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE</at>
+                          <at name="components">
+                           <object classname="java.util.LinkedList">
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">1</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">com.jeta.forms.components.label.JETALabel</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="name">lblShow</at>
+                                   <at name="width">37</at>
+                                   <at name="text">_Show</at>
+                                   <at name="fill">
+                                    <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                                     <at name="name">fill</at>
+                                    </object>
+                                   </at>
+                                   <at name="height">14</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">3</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JComboBox</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JComboBox</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="name">cboRules</at>
+                                   <at name="width">464</at>
+                                   <at name="items">
+                                    <object classname="com.jeta.forms.store.properties.ItemsProperty">
+                                     <at name="name">items</at>
+                                    </object>
+                                   </at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">9</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JToggleButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JToggleButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-report-filter-visible-extent.png</at>
+                                     <at name="description">topology-report-filter-visible-extent.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnVisibleExtentOnly</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Show_only_in_visible_extent</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">13</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-report-zoom-geometry.png</at>
+                                     <at name="description">topology-report-zoom-geometry.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnZoomGeometry</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Zoom</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">23</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-report-actions.png</at>
+                                     <at name="description">topology-report-actions.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnActions</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Actions</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">25</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-report-refresh.png</at>
+                                     <at name="description">topology-report-refresh.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnRefresh</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Update</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">5</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JToggleButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JToggleButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-report-filter-errors.png</at>
+                                     <at name="description">topology-report-filter-errors.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnShowErrors</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Show_errors</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">7</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JToggleButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JToggleButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-report-filter-exceptions.png</at>
+                                     <at name="description">topology-report-filter-exceptions.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnShowExceptions</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Show_exceptions</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">11</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JToggleButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JToggleButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-report-show-form.png</at>
+                                     <at name="description">topology-report-show-form.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnShowForm</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Show_form_when_modify_geometry</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">19</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-report-center-error.png</at>
+                                     <at name="description">topology-report-center-error.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnCenterError</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Center_error</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">15</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-report-center-geometry.png</at>
+                                     <at name="description">topology-report-center-geometry.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnCenterGeometry</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Center_geometry</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">17</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-report-zoom-error.png</at>
+                                     <at name="description">topology-report-zoom-error.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnZoomError</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Zoom</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">21</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-report-erase-errors.png</at>
+                                     <at name="description">topology-report-erase-errors.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnEraseErrorMarks</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Erase_error_marks</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                           </object>
+                          </at>
+                          <at name="properties">
+                           <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                            <at name="classname">com.jeta.forms.gui.form.GridView</at>
+                            <at name="properties">
+                             <object classname="com.jeta.forms.store.support.PropertyMap">
+                              <at name="border">
+                               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                 <at name="name">border</at>
+                                </super>
+                                <at name="borders">
+                                 <object classname="java.util.LinkedList"/>
+                                </at>
+                               </object>
+                              </at>
+                              <at name="name"/>
+                              <at name="fill">
+                               <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                                <at name="name">fill</at>
+                               </object>
+                              </at>
+                              <at name="scollBars">
+                               <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+                                <at name="name">scollBars</at>
+                                <at name="verticalpolicy">21</at>
+                                <at name="horizontalpolicy">31</at>
+                                <at name="border">
+                                 <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                  <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                   <at name="name">border</at>
+                                  </super>
+                                  <at name="borders">
+                                   <object classname="java.util.LinkedList">
+                                    <item >
+                                     <at name="value">
+                                      <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                       <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                        <at name="name">border</at>
+                                       </super>
+                                      </object>
+                                     </at>
+                                    </item>
+                                   </object>
+                                  </at>
+                                 </object>
+                                </at>
+                               </object>
+                              </at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                          <at name="cellpainters">
+                           <object classname="com.jeta.forms.store.support.Matrix">
+                            <at name="rows">
+                             <object classname="[Ljava.lang.Object;" size="1">
+                              <at name="item" index="0">
+                               <object classname="[Ljava.lang.Object;" size="25"/>
+                              </at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                          <at name="rowgroups">
+                           <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                            <at name="groups">
+                             <object classname="java.util.HashMap"/>
+                            </at>
+                           </object>
+                          </at>
+                          <at name="colgroups">
+                           <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                            <at name="groups">
+                             <object classname="java.util.HashMap"/>
+                            </at>
+                           </object>
+                          </at>
+                         </object>
+                        </at>
+                       </item>
+                      </object>
+                     </at>
+                     <at name="properties">
+                      <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                       <at name="classname">com.jeta.forms.gui.form.GridView</at>
+                       <at name="properties">
+                        <object classname="com.jeta.forms.store.support.PropertyMap">
+                         <at name="border">
+                          <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                           <super classname="com.jeta.forms.store.properties.BorderProperty">
+                            <at name="name">border</at>
+                           </super>
+                           <at name="borders">
+                            <object classname="java.util.LinkedList"/>
+                           </at>
+                          </object>
+                         </at>
+                         <at name="name"/>
+                         <at name="fill">
+                          <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                           <at name="name">fill</at>
+                          </object>
+                         </at>
+                         <at name="scollBars">
+                          <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+                           <at name="name">scollBars</at>
+                           <at name="verticalpolicy">21</at>
+                           <at name="horizontalpolicy">31</at>
+                           <at name="border">
+                            <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                             <super classname="com.jeta.forms.store.properties.BorderProperty">
+                              <at name="name">border</at>
+                             </super>
+                             <at name="borders">
+                              <object classname="java.util.LinkedList">
+                               <item >
+                                <at name="value">
+                                 <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                  <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                   <at name="name">border</at>
+                                  </super>
+                                 </object>
+                                </at>
+                               </item>
+                              </object>
+                             </at>
+                            </object>
+                           </at>
+                          </object>
+                         </at>
+                        </object>
+                       </at>
+                      </object>
+                     </at>
+                     <at name="cellpainters">
+                      <object classname="com.jeta.forms.store.support.Matrix">
+                       <at name="rows">
+                        <object classname="[Ljava.lang.Object;" size="6">
+                         <at name="item" index="0">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="1">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="2">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="3">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="4">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="5">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                        </object>
+                       </at>
+                      </object>
+                     </at>
+                     <at name="rowgroups">
+                      <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                       <at name="groups">
+                        <object classname="java.util.HashMap"/>
+                       </at>
+                      </object>
+                     </at>
+                     <at name="colgroups">
+                      <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                       <at name="groups">
+                        <object classname="java.util.HashMap"/>
+                       </at>
+                      </object>
+                     </at>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                </item>
+                <item >
+                 <at name="value">
+                  <object classname="com.jeta.forms.store.properties.TabProperty">
+                   <at name="name">tab</at>
+                   <at name="title">_Parameters</at>
+                   <at name="icon">
+                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                     <at name="embedded">false</at>
+                     <at name="width">0</at>
+                     <at name="height">0</at>
+                    </object>
+                   </at>
+                   <at name="form">
+                    <object classname="com.jeta.forms.store.memento.FormMemento">
+                     <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                      <at name="cellconstraints">
+                       <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                        <at name="column">1</at>
+                        <at name="row">1</at>
+                        <at name="colspan">1</at>
+                        <at name="rowspan">1</at>
+                        <at name="halign">default</at>
+                        <at name="valign">default</at>
+                        <at name="insets" object="insets">0,0,0,0</at>
+                       </object>
+                      </at>
+                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+                     </super>
+                     <at name="id">embedded.2138351478</at>
+                     <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE</at>
+                     <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
+                     <at name="components">
+                      <object classname="java.util.LinkedList">
+                       <item >
+                        <at name="value">
+                         <object classname="com.jeta.forms.store.memento.BeanMemento">
+                          <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                           <at name="cellconstraints">
+                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                             <at name="column">2</at>
+                             <at name="row">6</at>
+                             <at name="colspan">1</at>
+                             <at name="rowspan">1</at>
+                             <at name="halign">default</at>
+                             <at name="valign">default</at>
+                             <at name="insets" object="insets">0,0,0,0</at>
+                            </object>
+                           </at>
+                           <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                          </super>
+                          <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                          <at name="beanclass">javax.swing.JPanel</at>
+                          <at name="beanproperties">
+                           <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                            <at name="classname">javax.swing.JPanel</at>
+                            <at name="properties">
+                             <object classname="com.jeta.forms.store.support.PropertyMap">
+                              <at name="name">pnlParameters</at>
+                              <at name="width">908</at>
+                              <at name="height">317</at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                         </object>
+                        </at>
+                       </item>
+                       <item >
+                        <at name="value">
+                         <object classname="com.jeta.forms.store.memento.BeanMemento">
+                          <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                           <at name="cellconstraints">
+                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                             <at name="column">2</at>
+                             <at name="row">4</at>
+                             <at name="colspan">1</at>
+                             <at name="rowspan">1</at>
+                             <at name="halign">default</at>
+                             <at name="valign">default</at>
+                             <at name="insets" object="insets">0,0,0,0</at>
+                            </object>
+                           </at>
+                           <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                          </super>
+                          <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                          <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
+                          <at name="beanproperties">
+                           <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                            <at name="classname">com.jeta.forms.components.label.JETALabel</at>
+                            <at name="properties">
+                             <object classname="com.jeta.forms.store.support.PropertyMap">
+                              <at name="border">
+                               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                 <at name="name">border</at>
+                                </super>
+                                <at name="borders">
+                                 <object classname="java.util.LinkedList">
+                                  <item >
+                                   <at name="value">
+                                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                    </object>
+                                   </at>
+                                  </item>
+                                 </object>
+                                </at>
+                               </object>
+                              </at>
+                              <at name="name">lblActionDescription</at>
+                              <at name="width">908</at>
+                              <at name="fill">
+                               <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                                <at name="name">fill</at>
+                               </object>
+                              </at>
+                              <at name="height">12</at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                         </object>
+                        </at>
+                       </item>
+                       <item >
+                        <at name="value">
+                         <object classname="com.jeta.forms.store.memento.BeanMemento">
+                          <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                           <at name="cellconstraints">
+                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                             <at name="column">2</at>
+                             <at name="row">2</at>
+                             <at name="colspan">1</at>
+                             <at name="rowspan">1</at>
+                             <at name="halign">default</at>
+                             <at name="valign">default</at>
+                             <at name="insets" object="insets">0,0,0,0</at>
+                            </object>
+                           </at>
+                           <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                          </super>
+                          <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                          <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
+                          <at name="beanproperties">
+                           <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                            <at name="classname">com.jeta.forms.components.label.JETALabel</at>
+                            <at name="properties">
+                             <object classname="com.jeta.forms.store.support.PropertyMap">
+                              <at name="border">
+                               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                 <at name="name">border</at>
+                                </super>
+                                <at name="borders">
+                                 <object classname="java.util.LinkedList">
+                                  <item >
+                                   <at name="value">
+                                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                    </object>
+                                   </at>
+                                  </item>
+                                 </object>
+                                </at>
+                               </object>
+                              </at>
+                              <at name="name">lblActionTitle</at>
+                              <at name="width">908</at>
+                              <at name="fill">
+                               <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                                <at name="name">fill</at>
+                               </object>
+                              </at>
+                              <at name="height">12</at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                         </object>
+                        </at>
+                       </item>
+                       <item >
+                        <at name="value">
+                         <object classname="com.jeta.forms.store.memento.FormMemento">
+                          <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                           <at name="cellconstraints">
+                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                             <at name="column">2</at>
+                             <at name="row">8</at>
+                             <at name="colspan">1</at>
+                             <at name="rowspan">1</at>
+                             <at name="halign">default</at>
+                             <at name="valign">default</at>
+                             <at name="insets" object="insets">0,0,0,0</at>
+                            </object>
+                           </at>
+                           <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+                          </super>
+                          <at name="id">embedded.1789563886</at>
+                          <at name="rowspecs">CENTER:DEFAULT:NONE</at>
+                          <at name="colspecs">FILL:DEFAULT:GROW(1.0),FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE</at>
+                          <at name="components">
+                           <object classname="java.util.LinkedList">
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">5</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="actionCommand">_Cancel</at>
+                                   <at name="name">btnParametersCancel</at>
+                                   <at name="width">76</at>
+                                   <at name="text">_Cancel</at>
+                                   <at name="height">22</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">3</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="actionCommand">_Execute</at>
+                                   <at name="name">btnParametersAccept</at>
+                                   <at name="width">82</at>
+                                   <at name="text">_Execute</at>
+                                   <at name="height">22</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                           </object>
+                          </at>
+                          <at name="properties">
+                           <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                            <at name="classname">com.jeta.forms.gui.form.GridView</at>
+                            <at name="properties">
+                             <object classname="com.jeta.forms.store.support.PropertyMap">
+                              <at name="border">
+                               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                 <at name="name">border</at>
+                                </super>
+                                <at name="borders">
+                                 <object classname="java.util.LinkedList"/>
+                                </at>
+                               </object>
+                              </at>
+                              <at name="name"/>
+                              <at name="fill">
+                               <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                                <at name="name">fill</at>
+                               </object>
+                              </at>
+                              <at name="scollBars">
+                               <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+                                <at name="name">scollBars</at>
+                                <at name="verticalpolicy">21</at>
+                                <at name="horizontalpolicy">31</at>
+                                <at name="border">
+                                 <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                  <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                   <at name="name">border</at>
+                                  </super>
+                                  <at name="borders">
+                                   <object classname="java.util.LinkedList">
+                                    <item >
+                                     <at name="value">
+                                      <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                       <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                        <at name="name">border</at>
+                                       </super>
+                                      </object>
+                                     </at>
+                                    </item>
+                                   </object>
+                                  </at>
+                                 </object>
+                                </at>
+                               </object>
+                              </at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                          <at name="cellpainters">
+                           <object classname="com.jeta.forms.store.support.Matrix">
+                            <at name="rows">
+                             <object classname="[Ljava.lang.Object;" size="1">
+                              <at name="item" index="0">
+                               <object classname="[Ljava.lang.Object;" size="5"/>
+                              </at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                          <at name="rowgroups">
+                           <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                            <at name="groups">
+                             <object classname="java.util.HashMap"/>
+                            </at>
+                           </object>
+                          </at>
+                          <at name="colgroups">
+                           <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                            <at name="groups">
+                             <object classname="java.util.HashMap"/>
+                            </at>
+                           </object>
+                          </at>
+                         </object>
+                        </at>
+                       </item>
+                      </object>
+                     </at>
+                     <at name="properties">
+                      <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                       <at name="classname">com.jeta.forms.gui.form.GridView</at>
+                       <at name="properties">
+                        <object classname="com.jeta.forms.store.support.PropertyMap">
+                         <at name="border">
+                          <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                           <super classname="com.jeta.forms.store.properties.BorderProperty">
+                            <at name="name">border</at>
+                           </super>
+                           <at name="borders">
+                            <object classname="java.util.LinkedList"/>
+                           </at>
+                          </object>
+                         </at>
+                         <at name="name"/>
+                         <at name="fill">
+                          <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                           <at name="name">fill</at>
+                          </object>
+                         </at>
+                         <at name="scollBars">
+                          <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+                           <at name="name">scollBars</at>
+                           <at name="verticalpolicy">21</at>
+                           <at name="horizontalpolicy">31</at>
+                           <at name="border">
+                            <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                             <super classname="com.jeta.forms.store.properties.BorderProperty">
+                              <at name="name">border</at>
+                             </super>
+                             <at name="borders">
+                              <object classname="java.util.LinkedList">
+                               <item >
+                                <at name="value">
+                                 <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                  <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                   <at name="name">border</at>
+                                  </super>
+                                 </object>
+                                </at>
+                               </item>
+                              </object>
+                             </at>
+                            </object>
+                           </at>
+                          </object>
+                         </at>
+                        </object>
+                       </at>
+                      </object>
+                     </at>
+                     <at name="cellpainters">
+                      <object classname="com.jeta.forms.store.support.Matrix">
+                       <at name="rows">
+                        <object classname="[Ljava.lang.Object;" size="9">
+                         <at name="item" index="0">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="1">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="2">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="3">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="4">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="5">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="6">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="7">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="8">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                        </object>
+                       </at>
+                      </object>
+                     </at>
+                     <at name="rowgroups">
+                      <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                       <at name="groups">
+                        <object classname="java.util.HashMap"/>
+                       </at>
+                      </object>
+                     </at>
+                     <at name="colgroups">
+                      <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                       <at name="groups">
+                        <object classname="java.util.HashMap"/>
+                       </at>
+                      </object>
+                     </at>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                </item>
+               </object>
+              </at>
+             </object>
+            </at>
+            <at name="width">953</at>
+            <at name="tabCount">2</at>
+            <at name="height">493</at>
+           </object>
+          </at>
+         </object>
+        </at>
+       </object>
+      </at>
+     </item>
+     <item >
+      <at name="value">
+       <object classname="com.jeta.forms.store.memento.FormMemento">
+        <super classname="com.jeta.forms.store.memento.ComponentMemento">
+         <at name="cellconstraints">
+          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+           <at name="column">2</at>
+           <at name="row">4</at>
+           <at name="colspan">1</at>
+           <at name="rowspan">1</at>
+           <at name="halign">default</at>
+           <at name="valign">default</at>
+           <at name="insets" object="insets">0,0,0,0</at>
+          </object>
+         </at>
+         <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+        </super>
+        <at name="id">embedded.1162152160</at>
+        <at name="rowspecs">CENTER:DEFAULT:NONE</at>
+        <at name="colspecs">FILL:DEFAULT:GROW(0.3),FILL:4DLU:NONE,FILL:DEFAULT:GROW(0.7),FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE</at>
+        <at name="components">
+         <object classname="java.util.LinkedList">
+          <item >
+           <at name="value">
+            <object classname="com.jeta.forms.store.memento.BeanMemento">
+             <super classname="com.jeta.forms.store.memento.ComponentMemento">
+              <at name="cellconstraints">
+               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                <at name="column">3</at>
+                <at name="row">1</at>
+                <at name="colspan">1</at>
+                <at name="rowspan">1</at>
+                <at name="halign">default</at>
+                <at name="valign">default</at>
+                <at name="insets" object="insets">0,0,0,0</at>
+               </object>
+              </at>
+              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+             </super>
+             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+             <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
+             <at name="beanproperties">
+              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+               <at name="classname">com.jeta.forms.components.label.JETALabel</at>
+               <at name="properties">
+                <object classname="com.jeta.forms.store.support.PropertyMap">
+                 <at name="border">
+                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                   <at name="borders">
+                    <object classname="java.util.LinkedList">
+                     <item >
+                      <at name="value">
+                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                        <super classname="com.jeta.forms.store.properties.BorderProperty">
+                         <at name="name">border</at>
+                        </super>
+                       </object>
+                      </at>
+                     </item>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="name">lblTaskStatusMessage</at>
+                 <at name="width">524</at>
+                 <at name="text">...</at>
+                 <at name="fill">
+                  <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                   <at name="name">fill</at>
+                  </object>
+                 </at>
+                 <at name="height">14</at>
+                </object>
+               </at>
+              </object>
+             </at>
+            </object>
+           </at>
+          </item>
+          <item >
+           <at name="value">
+            <object classname="com.jeta.forms.store.memento.BeanMemento">
+             <super classname="com.jeta.forms.store.memento.ComponentMemento">
+              <at name="cellconstraints">
+               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                <at name="column">5</at>
+                <at name="row">1</at>
+                <at name="colspan">1</at>
+                <at name="rowspan">1</at>
+                <at name="halign">default</at>
+                <at name="valign">default</at>
+                <at name="insets" object="insets">0,0,0,0</at>
+               </object>
+              </at>
+              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+             </super>
+             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+             <at name="beanclass">javax.swing.JProgressBar</at>
+             <at name="beanproperties">
+              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+               <at name="classname">javax.swing.JProgressBar</at>
+               <at name="properties">
+                <object classname="com.jeta.forms.store.support.PropertyMap">
+                 <at name="border">
+                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                   <at name="borders">
+                    <object classname="java.util.LinkedList">
+                     <item >
+                      <at name="value">
+                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                        <super classname="com.jeta.forms.store.properties.BorderProperty">
+                         <at name="name">border</at>
+                        </super>
+                       </object>
+                      </at>
+                     </item>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="name">pbTaskStatusProgress</at>
+                 <at name="width">148</at>
+                 <at name="percentComplete">0.25</at>
+                 <at name="value">25</at>
+                 <at name="height">14</at>
+                </object>
+               </at>
+              </object>
+             </at>
+            </object>
+           </at>
+          </item>
+          <item >
+           <at name="value">
+            <object classname="com.jeta.forms.store.memento.BeanMemento">
+             <super classname="com.jeta.forms.store.memento.ComponentMemento">
+              <at name="cellconstraints">
+               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                <at name="column">7</at>
+                <at name="row">1</at>
+                <at name="colspan">1</at>
+                <at name="rowspan">1</at>
+                <at name="halign">default</at>
+                <at name="valign">default</at>
+                <at name="insets" object="insets">0,0,0,0</at>
+               </object>
+              </at>
+              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+             </super>
+             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+             <at name="beanclass">javax.swing.JButton</at>
+             <at name="beanproperties">
+              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+               <at name="classname">javax.swing.JButton</at>
+               <at name="properties">
+                <object classname="com.jeta.forms.store.support.PropertyMap">
+                 <at name="border">
+                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                   <at name="borders">
+                    <object classname="java.util.LinkedList">
+                     <item >
+                      <at name="value">
+                       <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                        <super classname="com.jeta.forms.store.properties.BorderProperty">
+                         <at name="name">border</at>
+                        </super>
+                        <at name="top">2</at>
+                        <at name="left">2</at>
+                        <at name="bottom">2</at>
+                        <at name="right">2</at>
+                       </object>
+                      </at>
+                     </item>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="name">btnTaskStatusCancel</at>
+                 <at name="width">12</at>
+                 <at name="toolTipText">_Zoom</at>
+                 <at name="height">12</at>
+                </object>
+               </at>
+              </object>
+             </at>
+            </object>
+           </at>
+          </item>
+          <item >
+           <at name="value">
+            <object classname="com.jeta.forms.store.memento.BeanMemento">
+             <super classname="com.jeta.forms.store.memento.ComponentMemento">
+              <at name="cellconstraints">
+               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                <at name="column">1</at>
+                <at name="row">1</at>
+                <at name="colspan">1</at>
+                <at name="rowspan">1</at>
+                <at name="halign">default</at>
+                <at name="valign">default</at>
+                <at name="insets" object="insets">0,0,0,0</at>
+               </object>
+              </at>
+              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+             </super>
+             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+             <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
+             <at name="beanproperties">
+              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+               <at name="classname">com.jeta.forms.components.label.JETALabel</at>
+               <at name="properties">
+                <object classname="com.jeta.forms.store.support.PropertyMap">
+                 <at name="border">
+                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                   <at name="borders">
+                    <object classname="java.util.LinkedList">
+                     <item >
+                      <at name="value">
+                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                        <super classname="com.jeta.forms.store.properties.BorderProperty">
+                         <at name="name">border</at>
+                        </super>
+                       </object>
+                      </at>
+                     </item>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="name">lblTaskStatusTitle</at>
+                 <at name="width">231</at>
+                 <at name="text">...</at>
+                 <at name="fill">
+                  <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                   <at name="name">fill</at>
+                  </object>
+                 </at>
+                 <at name="height">14</at>
+                </object>
+               </at>
+              </object>
+             </at>
+            </object>
+           </at>
+          </item>
+         </object>
+        </at>
+        <at name="properties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">com.jeta.forms.gui.form.GridView</at>
+          <at name="properties">
+           <object classname="com.jeta.forms.store.support.PropertyMap">
+            <at name="border">
+             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+              <super classname="com.jeta.forms.store.properties.BorderProperty">
+               <at name="name">border</at>
+              </super>
+              <at name="borders">
+               <object classname="java.util.LinkedList"/>
+              </at>
+             </object>
+            </at>
+            <at name="name"/>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="scollBars">
+             <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+              <at name="name">scollBars</at>
+              <at name="verticalpolicy">21</at>
+              <at name="horizontalpolicy">31</at>
+              <at name="border">
+               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                 <at name="name">border</at>
+                </super>
+                <at name="borders">
+                 <object classname="java.util.LinkedList">
+                  <item >
+                   <at name="value">
+                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                      <at name="name">border</at>
+                     </super>
+                    </object>
+                   </at>
+                  </item>
+                 </object>
+                </at>
+               </object>
+              </at>
+             </object>
+            </at>
+           </object>
+          </at>
+         </object>
+        </at>
+        <at name="cellpainters">
+         <object classname="com.jeta.forms.store.support.Matrix">
+          <at name="rows">
+           <object classname="[Ljava.lang.Object;" size="1">
+            <at name="item" index="0">
+             <object classname="[Ljava.lang.Object;" size="7"/>
+            </at>
+           </object>
+          </at>
+         </object>
+        </at>
+        <at name="rowgroups">
+         <object classname="com.jeta.forms.store.memento.FormGroupSet">
+          <at name="groups">
+           <object classname="java.util.HashMap"/>
+          </at>
+         </object>
+        </at>
+        <at name="colgroups">
+         <object classname="com.jeta.forms.store.memento.FormGroupSet">
+          <at name="groups">
+           <object classname="java.util.HashMap"/>
+          </at>
+         </object>
+        </at>
+       </object>
+      </at>
+     </item>
+    </object>
+   </at>
+   <at name="properties">
+    <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+     <at name="classname">com.jeta.forms.gui.form.GridView</at>
+     <at name="properties">
+      <object classname="com.jeta.forms.store.support.PropertyMap">
+       <at name="border">
+        <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+         <super classname="com.jeta.forms.store.properties.BorderProperty">
+          <at name="name">border</at>
+         </super>
+         <at name="borders">
+          <object classname="java.util.LinkedList"/>
+         </at>
+        </object>
+       </at>
+       <at name="name"/>
+       <at name="fill">
+        <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+         <at name="name">fill</at>
+        </object>
+       </at>
+       <at name="scollBars">
+        <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+         <at name="name">scollBars</at>
+         <at name="verticalpolicy">21</at>
+         <at name="horizontalpolicy">31</at>
+         <at name="border">
+          <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+           <super classname="com.jeta.forms.store.properties.BorderProperty">
+            <at name="name">border</at>
+           </super>
+           <at name="borders">
+            <object classname="java.util.LinkedList">
+             <item >
+              <at name="value">
+               <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                 <at name="name">border</at>
+                </super>
+               </object>
+              </at>
+             </item>
+            </object>
+           </at>
+          </object>
+         </at>
+        </object>
+       </at>
+      </object>
+     </at>
+    </object>
+   </at>
+   <at name="cellpainters">
+    <object classname="com.jeta.forms.store.support.Matrix">
+     <at name="rows">
+      <object classname="[Ljava.lang.Object;" size="4">
+       <at name="item" index="0">
+        <object classname="[Ljava.lang.Object;" size="3"/>
+       </at>
+       <at name="item" index="1">
+        <object classname="[Ljava.lang.Object;" size="3"/>
+       </at>
+       <at name="item" index="2">
+        <object classname="[Ljava.lang.Object;" size="3"/>
+       </at>
+       <at name="item" index="3">
+        <object classname="[Ljava.lang.Object;" size="3"/>
+       </at>
+      </object>
+     </at>
+    </object>
+   </at>
+   <at name="rowgroups">
+    <object classname="com.jeta.forms.store.memento.FormGroupSet">
+     <at name="groups">
+      <object classname="java.util.HashMap"/>
+     </at>
+    </object>
+   </at>
+   <at name="colgroups">
+    <object classname="com.jeta.forms.store.memento.FormGroupSet">
+     <at name="groups">
+      <object classname="java.util.HashMap"/>
+     </at>
+    </object>
+   </at>
+  </object>
+ </at>
+</object>
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyReportView.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyReportView.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyReportView.java	(revision 808)
@@ -0,0 +1,351 @@
+package org.gvsig.topology.swing.impl;
+
+import com.jeta.open.i18n.I18NUtils;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import java.awt.BorderLayout;
+import java.awt.ComponentOrientation;
+import java.awt.Container;
+import java.awt.Dimension;
+import javax.swing.Box;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JTable;
+import javax.swing.JToggleButton;
+import javax.swing.border.EmptyBorder;
+
+
+public class DefaultJTopologyReportView extends JPanel
+{
+   JTabbedPane tabData = new JTabbedPane();
+   JTable tblErrors = new JTable();
+   JLabel lblShow = new JLabel();
+   JComboBox cboRules = new JComboBox();
+   JToggleButton btnVisibleExtentOnly = new JToggleButton();
+   JButton btnZoomGeometry = new JButton();
+   JButton btnActions = new JButton();
+   JButton btnRefresh = new JButton();
+   JToggleButton btnShowErrors = new JToggleButton();
+   JToggleButton btnShowExceptions = new JToggleButton();
+   JToggleButton btnShowForm = new JToggleButton();
+   JButton btnCenterError = new JButton();
+   JButton btnCenterGeometry = new JButton();
+   JButton btnZoomError = new JButton();
+   JButton btnEraseErrorMarks = new JButton();
+   JPanel pnlParameters = new JPanel();
+   JLabel lblActionDescription = new JLabel();
+   JLabel lblActionTitle = new JLabel();
+   JButton btnParametersCancel = new JButton();
+   JButton btnParametersAccept = new JButton();
+   JLabel lblTaskStatusMessage = new JLabel();
+   JProgressBar pbTaskStatusProgress = new JProgressBar();
+   JButton btnTaskStatusCancel = new JButton();
+   JLabel lblTaskStatusTitle = new JLabel();
+
+   /**
+    * Default constructor
+    */
+   public DefaultJTopologyReportView()
+   {
+      initializePanel();
+   }
+
+   /**
+    * Adds fill components to empty cells in the first row and first column of the grid.
+    * This ensures that the grid spacing will be the same as shown in the designer.
+    * @param cols an array of column indices in the first row where fill components should be added.
+    * @param rows an array of row indices in the first column where fill components should be added.
+    */
+   void addFillComponents( Container panel, int[] cols, int[] rows )
+   {
+      Dimension filler = new Dimension(10,10);
+
+      boolean filled_cell_11 = false;
+      CellConstraints cc = new CellConstraints();
+      if ( cols.length > 0 && rows.length > 0 )
+      {
+         if ( cols[0] == 1 && rows[0] == 1 )
+         {
+            /** add a rigid area  */
+            panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
+            filled_cell_11 = true;
+         }
+      }
+
+      for( int index = 0; index < cols.length; index++ )
+      {
+         if ( cols[index] == 1 && filled_cell_11 )
+         {
+            continue;
+         }
+         panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
+      }
+
+      for( int index = 0; index < rows.length; index++ )
+      {
+         if ( rows[index] == 1 && filled_cell_11 )
+         {
+            continue;
+         }
+         panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
+      }
+
+   }
+
+   /**
+    * Helper method to load an image file from the CLASSPATH
+    * @param imageName the package and name of the file to load relative to the CLASSPATH
+    * @return an ImageIcon instance with the specified image file
+    * @throws IllegalArgumentException if the image resource cannot be loaded.
+    */
+   public ImageIcon loadImage( String imageName )
+   {
+      try
+      {
+         ClassLoader classloader = getClass().getClassLoader();
+         java.net.URL url = classloader.getResource( imageName );
+         if ( url != null )
+         {
+            ImageIcon icon = new ImageIcon( url );
+            return icon;
+         }
+      }
+      catch( Exception e )
+      {
+         e.printStackTrace();
+      }
+      throw new IllegalArgumentException( "Unable to load image: " + imageName );
+   }
+
+   /**
+    * Method for recalculating the component orientation for 
+    * right-to-left Locales.
+    * @param orientation the component orientation to be applied
+    */
+   public void applyComponentOrientation( ComponentOrientation orientation )
+   {
+      // Not yet implemented...
+      // I18NUtils.applyComponentOrientation(this, orientation);
+      super.applyComponentOrientation(orientation);
+   }
+
+   public JPanel createPanel()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE","CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE,CENTER:DEFAULT:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      tabData.setName("tabData");
+      tabData.addTab("_Errors",null,createPanel1());
+      tabData.addTab("_Parameters",null,createPanel3());
+      jpanel1.add(tabData,cc.xy(2,2));
+
+      jpanel1.add(createPanel5(),cc.xy(2,4));
+      addFillComponents(jpanel1,new int[]{ 1,2,3 },new int[]{ 1,2,3,4 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel1()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE","CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      tblErrors.setName("tblErrors");
+      JScrollPane jscrollpane1 = new JScrollPane();
+      jscrollpane1.setViewportView(tblErrors);
+      jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+      jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+      jpanel1.add(jscrollpane1,cc.xy(2,5));
+
+      jpanel1.add(createPanel2(),cc.xy(2,2));
+      addFillComponents(jpanel1,new int[]{ 1,2,3 },new int[]{ 1,2,3,4,5,6 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel2()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:8DLU:NONE,FILL:DEFAULT:NONE,FILL:8DLU:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE","CENTER:DEFAULT:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      lblShow.setName("lblShow");
+      lblShow.setText("_Show");
+      jpanel1.add(lblShow,cc.xy(1,1));
+
+      cboRules.setName("cboRules");
+      jpanel1.add(cboRules,cc.xy(3,1));
+
+      btnVisibleExtentOnly.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-report-filter-visible-extent.png"));
+      btnVisibleExtentOnly.setName("btnVisibleExtentOnly");
+      btnVisibleExtentOnly.setToolTipText("_Show_only_in_visible_extent");
+      EmptyBorder emptyborder1 = new EmptyBorder(2,2,2,2);
+      btnVisibleExtentOnly.setBorder(emptyborder1);
+      jpanel1.add(btnVisibleExtentOnly,cc.xy(9,1));
+
+      btnZoomGeometry.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-report-zoom-geometry.png"));
+      btnZoomGeometry.setName("btnZoomGeometry");
+      btnZoomGeometry.setToolTipText("_Zoom");
+      EmptyBorder emptyborder2 = new EmptyBorder(2,2,2,2);
+      btnZoomGeometry.setBorder(emptyborder2);
+      jpanel1.add(btnZoomGeometry,cc.xy(13,1));
+
+      btnActions.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-report-actions.png"));
+      btnActions.setName("btnActions");
+      btnActions.setToolTipText("_Actions");
+      EmptyBorder emptyborder3 = new EmptyBorder(2,2,2,2);
+      btnActions.setBorder(emptyborder3);
+      jpanel1.add(btnActions,cc.xy(23,1));
+
+      btnRefresh.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-report-refresh.png"));
+      btnRefresh.setName("btnRefresh");
+      btnRefresh.setToolTipText("_Update");
+      EmptyBorder emptyborder4 = new EmptyBorder(2,2,2,2);
+      btnRefresh.setBorder(emptyborder4);
+      jpanel1.add(btnRefresh,cc.xy(25,1));
+
+      btnShowErrors.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-report-filter-errors.png"));
+      btnShowErrors.setName("btnShowErrors");
+      btnShowErrors.setToolTipText("_Show_errors");
+      EmptyBorder emptyborder5 = new EmptyBorder(2,2,2,2);
+      btnShowErrors.setBorder(emptyborder5);
+      jpanel1.add(btnShowErrors,cc.xy(5,1));
+
+      btnShowExceptions.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-report-filter-exceptions.png"));
+      btnShowExceptions.setName("btnShowExceptions");
+      btnShowExceptions.setToolTipText("_Show_exceptions");
+      EmptyBorder emptyborder6 = new EmptyBorder(2,2,2,2);
+      btnShowExceptions.setBorder(emptyborder6);
+      jpanel1.add(btnShowExceptions,cc.xy(7,1));
+
+      btnShowForm.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-report-show-form.png"));
+      btnShowForm.setName("btnShowForm");
+      btnShowForm.setToolTipText("_Show_form_when_modify_geometry");
+      EmptyBorder emptyborder7 = new EmptyBorder(2,2,2,2);
+      btnShowForm.setBorder(emptyborder7);
+      jpanel1.add(btnShowForm,cc.xy(11,1));
+
+      btnCenterError.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-report-center-error.png"));
+      btnCenterError.setName("btnCenterError");
+      btnCenterError.setToolTipText("_Center_error");
+      EmptyBorder emptyborder8 = new EmptyBorder(2,2,2,2);
+      btnCenterError.setBorder(emptyborder8);
+      jpanel1.add(btnCenterError,cc.xy(19,1));
+
+      btnCenterGeometry.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-report-center-geometry.png"));
+      btnCenterGeometry.setName("btnCenterGeometry");
+      btnCenterGeometry.setToolTipText("_Center_geometry");
+      EmptyBorder emptyborder9 = new EmptyBorder(2,2,2,2);
+      btnCenterGeometry.setBorder(emptyborder9);
+      jpanel1.add(btnCenterGeometry,cc.xy(15,1));
+
+      btnZoomError.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-report-zoom-error.png"));
+      btnZoomError.setName("btnZoomError");
+      btnZoomError.setToolTipText("_Zoom");
+      EmptyBorder emptyborder10 = new EmptyBorder(2,2,2,2);
+      btnZoomError.setBorder(emptyborder10);
+      jpanel1.add(btnZoomError,cc.xy(17,1));
+
+      btnEraseErrorMarks.setIcon(loadImage("org/gvsig/topology/swing/impl/images/topology-report-erase-errors.png"));
+      btnEraseErrorMarks.setName("btnEraseErrorMarks");
+      btnEraseErrorMarks.setToolTipText("_Erase_error_marks");
+      EmptyBorder emptyborder11 = new EmptyBorder(2,2,2,2);
+      btnEraseErrorMarks.setBorder(emptyborder11);
+      jpanel1.add(btnEraseErrorMarks,cc.xy(21,1));
+
+      addFillComponents(jpanel1,new int[]{ 2,4,6,8,10,12,14,16,18,20,22,24 },new int[0]);
+      return jpanel1;
+   }
+
+   public JPanel createPanel3()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE","CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      pnlParameters.setName("pnlParameters");
+      jpanel1.add(pnlParameters,cc.xy(2,6));
+
+      lblActionDescription.setName("lblActionDescription");
+      jpanel1.add(lblActionDescription,cc.xy(2,4));
+
+      lblActionTitle.setName("lblActionTitle");
+      jpanel1.add(lblActionTitle,cc.xy(2,2));
+
+      jpanel1.add(createPanel4(),cc.xy(2,8));
+      addFillComponents(jpanel1,new int[]{ 1,2,3 },new int[]{ 1,2,3,4,5,6,7,8,9 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel4()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:DEFAULT:GROW(1.0),FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE","CENTER:DEFAULT:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      btnParametersCancel.setActionCommand("_Cancel");
+      btnParametersCancel.setName("btnParametersCancel");
+      btnParametersCancel.setText("_Cancel");
+      jpanel1.add(btnParametersCancel,cc.xy(5,1));
+
+      btnParametersAccept.setActionCommand("_Execute");
+      btnParametersAccept.setName("btnParametersAccept");
+      btnParametersAccept.setText("_Execute");
+      jpanel1.add(btnParametersAccept,cc.xy(3,1));
+
+      addFillComponents(jpanel1,new int[]{ 1,2,4 },new int[]{ 1 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel5()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:DEFAULT:GROW(0.3),FILL:4DLU:NONE,FILL:DEFAULT:GROW(0.7),FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE","CENTER:DEFAULT:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      lblTaskStatusMessage.setName("lblTaskStatusMessage");
+      lblTaskStatusMessage.setText("...");
+      jpanel1.add(lblTaskStatusMessage,cc.xy(3,1));
+
+      pbTaskStatusProgress.setName("pbTaskStatusProgress");
+      pbTaskStatusProgress.setValue(25);
+      jpanel1.add(pbTaskStatusProgress,cc.xy(5,1));
+
+      btnTaskStatusCancel.setName("btnTaskStatusCancel");
+      btnTaskStatusCancel.setToolTipText("_Zoom");
+      EmptyBorder emptyborder1 = new EmptyBorder(2,2,2,2);
+      btnTaskStatusCancel.setBorder(emptyborder1);
+      jpanel1.add(btnTaskStatusCancel,cc.xy(7,1));
+
+      lblTaskStatusTitle.setName("lblTaskStatusTitle");
+      lblTaskStatusTitle.setText("...");
+      jpanel1.add(lblTaskStatusTitle,cc.xy(1,1));
+
+      addFillComponents(jpanel1,new int[]{ 2,4,6 },new int[0]);
+      return jpanel1;
+   }
+
+   /**
+    * Initializer
+    */
+   protected void initializePanel()
+   {
+      setLayout(new BorderLayout());
+      add(createPanel(), BorderLayout.CENTER);
+   }
+
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyPlanProperties.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyPlanProperties.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyPlanProperties.java	(revision 808)
@@ -0,0 +1,258 @@
+package org.gvsig.topology.swing.impl;
+
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.net.URL;
+import java.util.List;
+import javax.swing.DefaultListModel;
+import javax.swing.ImageIcon;
+import javax.swing.JComponent;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import org.apache.commons.io.FilenameUtils;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.i18n.I18nManager;
+import org.gvsig.tools.swing.api.ListElement;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.tools.swing.api.ToolsSwingManager;
+import org.gvsig.tools.swing.api.windowmanager.Dialog;
+import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
+import org.gvsig.tools.swing.icontheme.IconTheme;
+import org.gvsig.topology.lib.api.TopologyDataSet;
+import org.gvsig.topology.lib.api.TopologyLocator;
+import org.gvsig.topology.lib.api.TopologyPlan;
+import org.gvsig.topology.lib.api.TopologyRule;
+import org.gvsig.topology.swing.api.JTopologyPlanProperties;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class DefaultJTopologyPlanProperties
+        extends DefaultJTopologyPlanPropertiesView
+        implements JTopologyPlanProperties {
+
+    private TopologyPlan plan;
+
+    public DefaultJTopologyPlanProperties() {
+        this.plan = TopologyLocator.getTopologyManager().createTopologyPlan();
+
+        this.initComponents();
+    }
+
+    private void initComponents() {
+        this.translate();
+        
+        this.btnAddDataSet.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                performAddDataSet();
+            }
+        });
+        this.btnRemoveDataSet.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                performRemoveDataSet();
+            }
+        });
+        this.btnAddRule.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                performAddRule();
+            }
+        });
+        this.btnRemoveRule.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                performRemoveRule();
+            }
+        });
+        this.lstDataSets.setModel(new DefaultListModel());
+        this.lstDataSets.addListSelectionListener(new ListSelectionListener() {
+            @Override
+            public void valueChanged(ListSelectionEvent e) {
+                performDataSetSelected();
+            }
+        });
+        this.lstRules.setModel(new DefaultListModel());
+        this.lstRules.addListSelectionListener(new ListSelectionListener() {
+            @Override
+            public void valueChanged(ListSelectionEvent e) {
+                performRuleSelected();
+            }
+        });
+        this.setPreferredSize(new Dimension(450, 300));
+    }
+
+    @Override
+    public ImageIcon loadImage(String imageName) {
+        String name = FilenameUtils.getBaseName(imageName);
+        IconTheme theme = ToolsSwingLocator.getIconThemeManager().getDefault();
+        if (theme.exists(name)) {
+            return theme.get(name);
+        }
+        URL url = this.getClass().getResource("/"+imageName);
+        if (url == null) {
+            return null;
+        }
+        return new ImageIcon(url);
+    }
+    
+    private void translate() {
+        ToolsSwingManager tsm = ToolsSwingLocator.getToolsSwingManager();
+        tsm.translate(this.btnAddRule);
+        tsm.translate(this.btnRemoveRule);
+        tsm.translate(this.btnAddDataSet);
+        tsm.translate(this.btnRemoveDataSet);
+        tsm.translate(this.lblName);
+        tsm.translate(this.tabPanel);
+        tsm.translate(this.lblTolerance);
+    }
+    
+    public void performDataSetSelected() {
+        if( lstDataSets.getValueIsAdjusting()  ) {
+            return;
+        }
+        btnRemoveDataSet.setEnabled(!lstDataSets.isSelectionEmpty());
+    }
+    
+    public void performRuleSelected() {
+        if( lstRules.getValueIsAdjusting()  ) {
+            return;
+        }
+        btnRemoveRule.setEnabled(!lstRules.isSelectionEmpty());
+    }
+
+    @Override
+    public void put(TopologyPlan thePlan) {
+        this.plan = TopologyLocator.getTopologyManager().createTopologyPlan();
+        this.plan.setName(thePlan.getName());
+        this.plan.setTolerance(thePlan.getTolerance());
+        for (TopologyDataSet dataSet : thePlan.getDataSets()) {
+            this.plan.addDataSet(dataSet);
+        }
+        for (TopologyRule rule : thePlan.getRules()) {
+            this.plan.addRule(rule);
+        }
+        
+        this.txtName.setText(this.plan.getName());
+        this.txtTolerance.setText(String.valueOf(this.plan.getTolerance()));
+        this.lstDataSets.removeAll();
+        DefaultListModel<TopologyDataSet> modelDataSets = new DefaultListModel<>();
+        for (TopologyDataSet dataSet : thePlan.getDataSets()) {
+            modelDataSets.addElement(dataSet);
+        }
+        this.lstDataSets.setModel(modelDataSets);
+
+        this.lstRules.removeAll();
+        DefaultListModel<ListElement<TopologyRule>> modelRules = new DefaultListModel<>();
+        for (TopologyRule rule : thePlan.getRules()) {
+            modelRules.addElement(new ListElement<>(
+                    rule.getName() + " ["+rule.getDataSet1().getName()+"]",
+                    rule
+                )
+            );
+        }
+        this.lstRules.setModel(modelRules);
+    }
+
+    @Override
+    public TopologyPlan fetch(TopologyPlan thePlan) {
+        if( thePlan == null ) {
+            thePlan = TopologyLocator.getTopologyManager().createTopologyPlan();
+        } else {
+            thePlan.clear();
+        }
+        thePlan.setName(thePlan.getName());
+        for (TopologyDataSet dataSet : this.plan.getDataSets()) {
+            thePlan.addDataSet(dataSet);
+        }
+        for (TopologyRule rule : this.plan.getRules()) {
+            thePlan.addRule(rule);
+        }
+        return thePlan;
+    }
+
+    @Override
+    public JComponent asJComponent() {
+        return this;
+    }
+
+    private void performAddDataSet() {
+        I18nManager i18n = ToolsLocator.getI18nManager();
+        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
+        SelectDataSetDialog panel = new SelectDataSetDialog();
+        Dialog dlg = winManager.createDialog(
+                panel,
+                i18n.getTranslation("_Select_a_dataset"),
+                null, 
+                WindowManager_v2.BUTTONS_OK_CANCEL
+        );
+        panel.setDialog(dlg);
+        dlg.show(WindowManager_v2.MODE.DIALOG);
+        if( dlg.getAction()==WindowManager_v2.BUTTON_OK) {
+            List<TopologyDataSet> dataSets = panel.getDataSets();
+            if( dataSets != null ) {
+                for (TopologyDataSet dataSet : dataSets) {
+                    this.plan.addDataSet(dataSet);
+                    DefaultListModel model = (DefaultListModel) this.lstDataSets.getModel();
+                    model.addElement(dataSet);
+                }
+            }
+        }
+    }
+
+    private void performRemoveDataSet() {
+        if( lstDataSets.getValueIsAdjusting()  ) {
+            return;
+        }
+        if( lstDataSets.isSelectionEmpty() ) {
+            return;
+        }
+        int index = lstRules.getSelectedIndex();
+        TopologyDataSet dataSet = (TopologyDataSet) lstDataSets.getSelectedValue();
+        this.plan.removeDataSet(dataSet);
+        ((DefaultListModel)(lstRules.getModel())).remove(index);
+    }
+
+    private void performAddRule() {
+        I18nManager i18n = ToolsLocator.getI18nManager();
+        WindowManager_v2 winManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
+        CreateRuleDialog panel = new CreateRuleDialog(this.plan);
+        Dialog dlg = winManager.createDialog(
+                panel,
+                i18n.getTranslation("_Add_new_rule"),
+                null, 
+                WindowManager_v2.BUTTONS_OK_CANCEL
+        );
+        panel.setDialog(dlg);
+        dlg.show(WindowManager_v2.MODE.DIALOG);
+        if( dlg.getAction()==WindowManager_v2.BUTTON_OK) {
+            TopologyRule rule = panel.getRule();
+            if( rule != null ) {
+                this.plan.addRule(rule);
+                DefaultListModel model = (DefaultListModel) this.lstRules.getModel();
+                model.addElement(new ListElement(
+                        rule.getName() + " ["+rule.getDataSet1().getName()+"]",
+                        rule
+                    )
+                );
+            }
+        }
+    }
+
+    private void performRemoveRule() {
+        if( lstRules.getValueIsAdjusting()  ) {
+            return;
+        }
+        if( lstRules.isSelectionEmpty() ) {
+            return;
+        }
+        int index = lstRules.getSelectedIndex();
+        TopologyRule rule = (TopologyRule) ListElement.getSelected(lstRules);
+        this.plan.removeRule(rule);
+        ((DefaultListModel)(lstRules.getModel())).remove(index);
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultTopologySwingManager.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultTopologySwingManager.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultTopologySwingManager.java	(revision 808)
@@ -0,0 +1,40 @@
+
+package org.gvsig.topology.swing.impl;
+
+import org.gvsig.topology.lib.api.TopologyPlan;
+import org.gvsig.topology.swing.api.JTopologyPlanProperties;
+import org.gvsig.topology.swing.api.JTopologyReport;
+import org.gvsig.topology.swing.api.TopologySwingManager;
+import org.gvsig.topology.swing.api.TopologySwingServices;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class DefaultTopologySwingManager implements TopologySwingManager {
+
+    private TopologySwingServices services;
+
+    @Override
+    public JTopologyPlanProperties createJTopologyPlan() {
+        DefaultJTopologyPlanProperties x = new DefaultJTopologyPlanProperties();
+        return x;
+    }
+
+    @Override
+    public JTopologyReport createJTopologyReport(TopologyPlan plan) {
+        DefaultJTopologyReport x = new DefaultJTopologyReport(plan);
+        return x;
+    }
+
+    @Override
+    public void setDefaultServices(TopologySwingServices services) {
+        this.services = services;
+    }
+
+    @Override
+    public TopologySwingServices getDefaultServices() {
+        return this.services;
+    }
+    
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/CreateRuleDialogView.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/CreateRuleDialogView.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/CreateRuleDialogView.xml	(revision 808)
@@ -0,0 +1,926 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<object classname="com.jeta.forms.store.memento.FormPackage">
+ <at name="fileversion">
+  <object classname="com.jeta.forms.store.memento.FormsVersion2">
+   <at name="major">2</at>
+   <at name="minor">0</at>
+   <at name="sub">0</at>
+  </object>
+ </at>
+ <at name="form">
+  <object classname="com.jeta.forms.store.memento.FormMemento">
+   <super classname="com.jeta.forms.store.memento.ComponentMemento">
+    <at name="cellconstraints">
+     <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+      <at name="column">1</at>
+      <at name="row">1</at>
+      <at name="colspan">1</at>
+      <at name="rowspan">1</at>
+      <at name="halign">default</at>
+      <at name="valign">default</at>
+      <at name="insets" object="insets">0,0,0,0</at>
+     </object>
+    </at>
+    <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+   </super>
+   <at name="id">/home/jjdelcerro/datos/devel/prototipo-topologia/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/CreateRuleDialogView.xml</at>
+   <at name="rowspecs">CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:DEFAULT:NONE</at>
+   <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:GROW(0.5),FILL:4DLU:NONE,FILL:DEFAULT:GROW(0.5),FILL:4DLU:NONE</at>
+   <at name="components">
+    <object classname="java.util.LinkedList">
+     <item >
+      <at name="value">
+       <object classname="com.jeta.forms.store.memento.FormMemento">
+        <super classname="com.jeta.forms.store.memento.ComponentMemento">
+         <at name="cellconstraints">
+          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+           <at name="column">2</at>
+           <at name="row">2</at>
+           <at name="colspan">1</at>
+           <at name="rowspan">1</at>
+           <at name="halign">default</at>
+           <at name="valign">default</at>
+           <at name="insets" object="insets">0,0,0,0</at>
+          </object>
+         </at>
+         <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+        </super>
+        <at name="id">embedded.688400936</at>
+        <at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE</at>
+        <at name="colspecs">FILL:DEFAULT:GROW(1.0)</at>
+        <at name="components">
+         <object classname="java.util.LinkedList">
+          <item >
+           <at name="value">
+            <object classname="com.jeta.forms.store.memento.BeanMemento">
+             <super classname="com.jeta.forms.store.memento.ComponentMemento">
+              <at name="cellconstraints">
+               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                <at name="column">1</at>
+                <at name="row">15</at>
+                <at name="colspan">1</at>
+                <at name="rowspan">1</at>
+                <at name="halign">default</at>
+                <at name="valign">default</at>
+                <at name="insets" object="insets">0,0,0,0</at>
+               </object>
+              </at>
+              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+             </super>
+             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+             <at name="beanclass">javax.swing.JTextField</at>
+             <at name="beanproperties">
+              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+               <at name="classname">javax.swing.JTextField</at>
+               <at name="properties">
+                <object classname="com.jeta.forms.store.support.PropertyMap">
+                 <at name="border">
+                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                   <at name="borders">
+                    <object classname="java.util.LinkedList">
+                     <item >
+                      <at name="value">
+                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                        <super classname="com.jeta.forms.store.properties.BorderProperty">
+                         <at name="name">border</at>
+                        </super>
+                       </object>
+                      </at>
+                     </item>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="horizontalAlignment">4</at>
+                 <at name="name">txtTolerance</at>
+                 <at name="width">484</at>
+                 <at name="height">20</at>
+                </object>
+               </at>
+              </object>
+             </at>
+            </object>
+           </at>
+          </item>
+          <item >
+           <at name="value">
+            <object classname="com.jeta.forms.store.memento.BeanMemento">
+             <super classname="com.jeta.forms.store.memento.ComponentMemento">
+              <at name="cellconstraints">
+               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                <at name="column">1</at>
+                <at name="row">3</at>
+                <at name="colspan">1</at>
+                <at name="rowspan">1</at>
+                <at name="halign">default</at>
+                <at name="valign">default</at>
+                <at name="insets" object="insets">0,0,0,0</at>
+               </object>
+              </at>
+              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+             </super>
+             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+             <at name="beanclass">javax.swing.JComboBox</at>
+             <at name="beanproperties">
+              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+               <at name="classname">javax.swing.JComboBox</at>
+               <at name="properties">
+                <object classname="com.jeta.forms.store.support.PropertyMap">
+                 <at name="border">
+                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                   <at name="borders">
+                    <object classname="java.util.LinkedList">
+                     <item >
+                      <at name="value">
+                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                        <super classname="com.jeta.forms.store.properties.BorderProperty">
+                         <at name="name">border</at>
+                        </super>
+                       </object>
+                      </at>
+                     </item>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="name">cboDataSet1</at>
+                 <at name="width">484</at>
+                 <at name="items">
+                  <object classname="com.jeta.forms.store.properties.ItemsProperty">
+                   <at name="name">items</at>
+                  </object>
+                 </at>
+                 <at name="height">20</at>
+                </object>
+               </at>
+              </object>
+             </at>
+            </object>
+           </at>
+          </item>
+          <item >
+           <at name="value">
+            <object classname="com.jeta.forms.store.memento.BeanMemento">
+             <super classname="com.jeta.forms.store.memento.ComponentMemento">
+              <at name="cellconstraints">
+               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                <at name="column">1</at>
+                <at name="row">1</at>
+                <at name="colspan">1</at>
+                <at name="rowspan">1</at>
+                <at name="halign">default</at>
+                <at name="valign">default</at>
+                <at name="insets" object="insets">0,0,0,0</at>
+               </object>
+              </at>
+              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+             </super>
+             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+             <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
+             <at name="beanproperties">
+              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+               <at name="classname">com.jeta.forms.components.label.JETALabel</at>
+               <at name="properties">
+                <object classname="com.jeta.forms.store.support.PropertyMap">
+                 <at name="border">
+                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                   <at name="borders">
+                    <object classname="java.util.LinkedList">
+                     <item >
+                      <at name="value">
+                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                        <super classname="com.jeta.forms.store.properties.BorderProperty">
+                         <at name="name">border</at>
+                        </super>
+                       </object>
+                      </at>
+                     </item>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="name">lblDataSet1</at>
+                 <at name="width">484</at>
+                 <at name="text">_Primary_dataset</at>
+                 <at name="fill">
+                  <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                   <at name="name">fill</at>
+                  </object>
+                 </at>
+                 <at name="height">14</at>
+                </object>
+               </at>
+              </object>
+             </at>
+            </object>
+           </at>
+          </item>
+          <item >
+           <at name="value">
+            <object classname="com.jeta.forms.store.memento.BeanMemento">
+             <super classname="com.jeta.forms.store.memento.ComponentMemento">
+              <at name="cellconstraints">
+               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                <at name="column">1</at>
+                <at name="row">5</at>
+                <at name="colspan">1</at>
+                <at name="rowspan">1</at>
+                <at name="halign">default</at>
+                <at name="valign">default</at>
+                <at name="insets" object="insets">0,0,0,0</at>
+               </object>
+              </at>
+              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+             </super>
+             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+             <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
+             <at name="beanproperties">
+              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+               <at name="classname">com.jeta.forms.components.label.JETALabel</at>
+               <at name="properties">
+                <object classname="com.jeta.forms.store.support.PropertyMap">
+                 <at name="border">
+                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                   <at name="borders">
+                    <object classname="java.util.LinkedList">
+                     <item >
+                      <at name="value">
+                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                        <super classname="com.jeta.forms.store.properties.BorderProperty">
+                         <at name="name">border</at>
+                        </super>
+                       </object>
+                      </at>
+                     </item>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="name">lblRule</at>
+                 <at name="width">484</at>
+                 <at name="text">_Rule</at>
+                 <at name="fill">
+                  <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                   <at name="name">fill</at>
+                  </object>
+                 </at>
+                 <at name="height">14</at>
+                </object>
+               </at>
+              </object>
+             </at>
+            </object>
+           </at>
+          </item>
+          <item >
+           <at name="value">
+            <object classname="com.jeta.forms.store.memento.BeanMemento">
+             <super classname="com.jeta.forms.store.memento.ComponentMemento">
+              <at name="cellconstraints">
+               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                <at name="column">1</at>
+                <at name="row">7</at>
+                <at name="colspan">1</at>
+                <at name="rowspan">1</at>
+                <at name="halign">default</at>
+                <at name="valign">default</at>
+                <at name="insets" object="insets">0,0,0,0</at>
+               </object>
+              </at>
+              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+             </super>
+             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+             <at name="beanclass">javax.swing.JComboBox</at>
+             <at name="beanproperties">
+              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+               <at name="classname">javax.swing.JComboBox</at>
+               <at name="properties">
+                <object classname="com.jeta.forms.store.support.PropertyMap">
+                 <at name="border">
+                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                   <at name="borders">
+                    <object classname="java.util.LinkedList">
+                     <item >
+                      <at name="value">
+                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                        <super classname="com.jeta.forms.store.properties.BorderProperty">
+                         <at name="name">border</at>
+                        </super>
+                       </object>
+                      </at>
+                     </item>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="name">cboRule</at>
+                 <at name="width">484</at>
+                 <at name="items">
+                  <object classname="com.jeta.forms.store.properties.ItemsProperty">
+                   <at name="name">items</at>
+                  </object>
+                 </at>
+                 <at name="enabled">false</at>
+                 <at name="height">20</at>
+                </object>
+               </at>
+              </object>
+             </at>
+            </object>
+           </at>
+          </item>
+          <item >
+           <at name="value">
+            <object classname="com.jeta.forms.store.memento.BeanMemento">
+             <super classname="com.jeta.forms.store.memento.ComponentMemento">
+              <at name="cellconstraints">
+               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                <at name="column">1</at>
+                <at name="row">9</at>
+                <at name="colspan">1</at>
+                <at name="rowspan">1</at>
+                <at name="halign">default</at>
+                <at name="valign">default</at>
+                <at name="insets" object="insets">0,0,0,0</at>
+               </object>
+              </at>
+              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+             </super>
+             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+             <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
+             <at name="beanproperties">
+              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+               <at name="classname">com.jeta.forms.components.label.JETALabel</at>
+               <at name="properties">
+                <object classname="com.jeta.forms.store.support.PropertyMap">
+                 <at name="border">
+                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                   <at name="borders">
+                    <object classname="java.util.LinkedList">
+                     <item >
+                      <at name="value">
+                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                        <super classname="com.jeta.forms.store.properties.BorderProperty">
+                         <at name="name">border</at>
+                        </super>
+                       </object>
+                      </at>
+                     </item>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="name">lblDataSet2</at>
+                 <at name="width">484</at>
+                 <at name="text">_Secondary_dataset</at>
+                 <at name="fill">
+                  <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                   <at name="name">fill</at>
+                  </object>
+                 </at>
+                 <at name="height">14</at>
+                </object>
+               </at>
+              </object>
+             </at>
+            </object>
+           </at>
+          </item>
+          <item >
+           <at name="value">
+            <object classname="com.jeta.forms.store.memento.BeanMemento">
+             <super classname="com.jeta.forms.store.memento.ComponentMemento">
+              <at name="cellconstraints">
+               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                <at name="column">1</at>
+                <at name="row">11</at>
+                <at name="colspan">1</at>
+                <at name="rowspan">1</at>
+                <at name="halign">default</at>
+                <at name="valign">default</at>
+                <at name="insets" object="insets">0,0,0,0</at>
+               </object>
+              </at>
+              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+             </super>
+             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+             <at name="beanclass">javax.swing.JComboBox</at>
+             <at name="beanproperties">
+              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+               <at name="classname">javax.swing.JComboBox</at>
+               <at name="properties">
+                <object classname="com.jeta.forms.store.support.PropertyMap">
+                 <at name="border">
+                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                   <at name="borders">
+                    <object classname="java.util.LinkedList">
+                     <item >
+                      <at name="value">
+                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                        <super classname="com.jeta.forms.store.properties.BorderProperty">
+                         <at name="name">border</at>
+                        </super>
+                       </object>
+                      </at>
+                     </item>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="name">cboDataSet2</at>
+                 <at name="width">484</at>
+                 <at name="items">
+                  <object classname="com.jeta.forms.store.properties.ItemsProperty">
+                   <at name="name">items</at>
+                  </object>
+                 </at>
+                 <at name="enabled">false</at>
+                 <at name="height">20</at>
+                </object>
+               </at>
+              </object>
+             </at>
+            </object>
+           </at>
+          </item>
+          <item >
+           <at name="value">
+            <object classname="com.jeta.forms.store.memento.BeanMemento">
+             <super classname="com.jeta.forms.store.memento.ComponentMemento">
+              <at name="cellconstraints">
+               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                <at name="column">1</at>
+                <at name="row">13</at>
+                <at name="colspan">1</at>
+                <at name="rowspan">1</at>
+                <at name="halign">default</at>
+                <at name="valign">default</at>
+                <at name="insets" object="insets">0,0,0,0</at>
+               </object>
+              </at>
+              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+             </super>
+             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+             <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
+             <at name="beanproperties">
+              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+               <at name="classname">com.jeta.forms.components.label.JETALabel</at>
+               <at name="properties">
+                <object classname="com.jeta.forms.store.support.PropertyMap">
+                 <at name="border">
+                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                   <at name="borders">
+                    <object classname="java.util.LinkedList">
+                     <item >
+                      <at name="value">
+                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                        <super classname="com.jeta.forms.store.properties.BorderProperty">
+                         <at name="name">border</at>
+                        </super>
+                       </object>
+                      </at>
+                     </item>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="name">lblTolerance</at>
+                 <at name="width">484</at>
+                 <at name="text">_Tolerance</at>
+                 <at name="fill">
+                  <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                   <at name="name">fill</at>
+                  </object>
+                 </at>
+                 <at name="height">14</at>
+                </object>
+               </at>
+              </object>
+             </at>
+            </object>
+           </at>
+          </item>
+         </object>
+        </at>
+        <at name="properties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">com.jeta.forms.gui.form.GridView</at>
+          <at name="properties">
+           <object classname="com.jeta.forms.store.support.PropertyMap">
+            <at name="border">
+             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+              <super classname="com.jeta.forms.store.properties.BorderProperty">
+               <at name="name">border</at>
+              </super>
+              <at name="borders">
+               <object classname="java.util.LinkedList"/>
+              </at>
+             </object>
+            </at>
+            <at name="name"></at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="scollBars">
+             <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+              <at name="name">scollBars</at>
+              <at name="verticalpolicy">21</at>
+              <at name="horizontalpolicy">31</at>
+              <at name="border">
+               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                 <at name="name">border</at>
+                </super>
+                <at name="borders">
+                 <object classname="java.util.LinkedList">
+                  <item >
+                   <at name="value">
+                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                      <at name="name">border</at>
+                     </super>
+                    </object>
+                   </at>
+                  </item>
+                 </object>
+                </at>
+               </object>
+              </at>
+             </object>
+            </at>
+           </object>
+          </at>
+         </object>
+        </at>
+        <at name="cellpainters">
+         <object classname="com.jeta.forms.store.support.Matrix">
+          <at name="rows">
+           <object classname="[Ljava.lang.Object;" size="15">
+            <at name="item" index="0">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="1">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="2">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="3">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="4">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="5">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="6">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="7">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="8">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="9">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="10">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="11">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="12">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="13">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+            <at name="item" index="14">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+           </object>
+          </at>
+         </object>
+        </at>
+        <at name="rowgroups">
+         <object classname="com.jeta.forms.store.memento.FormGroupSet">
+          <at name="groups">
+           <object classname="java.util.HashMap"/>
+          </at>
+         </object>
+        </at>
+        <at name="colgroups">
+         <object classname="com.jeta.forms.store.memento.FormGroupSet">
+          <at name="groups">
+           <object classname="java.util.HashMap"/>
+          </at>
+         </object>
+        </at>
+       </object>
+      </at>
+     </item>
+     <item >
+      <at name="value">
+       <object classname="com.jeta.forms.store.memento.FormMemento">
+        <super classname="com.jeta.forms.store.memento.ComponentMemento">
+         <at name="cellconstraints">
+          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+           <at name="column">4</at>
+           <at name="row">2</at>
+           <at name="colspan">1</at>
+           <at name="rowspan">1</at>
+           <at name="halign">default</at>
+           <at name="valign">default</at>
+           <at name="insets" object="insets">0,0,0,0</at>
+          </object>
+         </at>
+         <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+        </super>
+        <at name="id">embedded.1334163672</at>
+        <at name="rowspecs">FILL:DEFAULT:GROW(1.0)</at>
+        <at name="colspecs">FILL:DEFAULT:GROW(0.7)</at>
+        <at name="components">
+         <object classname="java.util.LinkedList">
+          <item >
+           <at name="value">
+            <object classname="com.jeta.forms.store.memento.BeanMemento">
+             <super classname="com.jeta.forms.store.memento.ComponentMemento">
+              <at name="cellconstraints">
+               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                <at name="column">1</at>
+                <at name="row">1</at>
+                <at name="colspan">1</at>
+                <at name="rowspan">1</at>
+                <at name="halign">default</at>
+                <at name="valign">default</at>
+                <at name="insets" object="insets">0,0,0,0</at>
+               </object>
+              </at>
+              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+             </super>
+             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+             <at name="beanclass">javax.swing.JEditorPane</at>
+             <at name="beanproperties">
+              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+               <at name="classname">javax.swing.JEditorPane</at>
+               <at name="properties">
+                <object classname="com.jeta.forms.store.support.PropertyMap">
+                 <at name="border">
+                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                   <at name="borders">
+                    <object classname="java.util.LinkedList">
+                     <item >
+                      <at name="value">
+                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                        <super classname="com.jeta.forms.store.properties.BorderProperty">
+                         <at name="name">border</at>
+                        </super>
+                       </object>
+                      </at>
+                     </item>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="scrollableTracksViewportHeight">true</at>
+                 <at name="scrollableTracksViewportWidth">true</at>
+                 <at name="name">txtDescription</at>
+                 <at name="width">446</at>
+                 <at name="scollBars">
+                  <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+                   <at name="name">scollBars</at>
+                   <at name="verticalpolicy">20</at>
+                   <at name="horizontalpolicy">30</at>
+                   <at name="border">
+                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                      <at name="name">border</at>
+                     </super>
+                     <at name="borders">
+                      <object classname="java.util.LinkedList">
+                       <item >
+                        <at name="value">
+                         <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                           <at name="name">border</at>
+                          </super>
+                         </object>
+                        </at>
+                       </item>
+                      </object>
+                     </at>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                 <at name="height">496</at>
+                </object>
+               </at>
+              </object>
+             </at>
+            </object>
+           </at>
+          </item>
+         </object>
+        </at>
+        <at name="properties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">com.jeta.forms.gui.form.GridView</at>
+          <at name="properties">
+           <object classname="com.jeta.forms.store.support.PropertyMap">
+            <at name="border">
+             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+              <super classname="com.jeta.forms.store.properties.BorderProperty">
+               <at name="name">border</at>
+              </super>
+              <at name="borders">
+               <object classname="java.util.LinkedList"/>
+              </at>
+             </object>
+            </at>
+            <at name="name"/>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="scollBars">
+             <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+              <at name="name">scollBars</at>
+              <at name="verticalpolicy">21</at>
+              <at name="horizontalpolicy">31</at>
+              <at name="border">
+               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                 <at name="name">border</at>
+                </super>
+                <at name="borders">
+                 <object classname="java.util.LinkedList">
+                  <item >
+                   <at name="value">
+                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                      <at name="name">border</at>
+                     </super>
+                    </object>
+                   </at>
+                  </item>
+                 </object>
+                </at>
+               </object>
+              </at>
+             </object>
+            </at>
+           </object>
+          </at>
+         </object>
+        </at>
+        <at name="cellpainters">
+         <object classname="com.jeta.forms.store.support.Matrix">
+          <at name="rows">
+           <object classname="[Ljava.lang.Object;" size="1">
+            <at name="item" index="0">
+             <object classname="[Ljava.lang.Object;" size="1"/>
+            </at>
+           </object>
+          </at>
+         </object>
+        </at>
+        <at name="rowgroups">
+         <object classname="com.jeta.forms.store.memento.FormGroupSet">
+          <at name="groups">
+           <object classname="java.util.HashMap"/>
+          </at>
+         </object>
+        </at>
+        <at name="colgroups">
+         <object classname="com.jeta.forms.store.memento.FormGroupSet">
+          <at name="groups">
+           <object classname="java.util.HashMap"/>
+          </at>
+         </object>
+        </at>
+       </object>
+      </at>
+     </item>
+    </object>
+   </at>
+   <at name="properties">
+    <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+     <at name="classname">com.jeta.forms.gui.form.GridView</at>
+     <at name="properties">
+      <object classname="com.jeta.forms.store.support.PropertyMap">
+       <at name="border">
+        <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+         <super classname="com.jeta.forms.store.properties.BorderProperty">
+          <at name="name">border</at>
+         </super>
+         <at name="borders">
+          <object classname="java.util.LinkedList"/>
+         </at>
+        </object>
+       </at>
+       <at name="name"/>
+       <at name="fill">
+        <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+         <at name="name">fill</at>
+        </object>
+       </at>
+       <at name="scollBars">
+        <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+         <at name="name">scollBars</at>
+         <at name="verticalpolicy">21</at>
+         <at name="horizontalpolicy">31</at>
+         <at name="border">
+          <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+           <super classname="com.jeta.forms.store.properties.BorderProperty">
+            <at name="name">border</at>
+           </super>
+           <at name="borders">
+            <object classname="java.util.LinkedList">
+             <item >
+              <at name="value">
+               <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                 <at name="name">border</at>
+                </super>
+               </object>
+              </at>
+             </item>
+            </object>
+           </at>
+          </object>
+         </at>
+        </object>
+       </at>
+      </object>
+     </at>
+    </object>
+   </at>
+   <at name="cellpainters">
+    <object classname="com.jeta.forms.store.support.Matrix">
+     <at name="rows">
+      <object classname="[Ljava.lang.Object;" size="3">
+       <at name="item" index="0">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="1">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="2">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+      </object>
+     </at>
+    </object>
+   </at>
+   <at name="rowgroups">
+    <object classname="com.jeta.forms.store.memento.FormGroupSet">
+     <at name="groups">
+      <object classname="java.util.HashMap"/>
+     </at>
+    </object>
+   </at>
+   <at name="colgroups">
+    <object classname="com.jeta.forms.store.memento.FormGroupSet">
+     <at name="groups">
+      <object classname="java.util.HashMap"/>
+     </at>
+    </object>
+   </at>
+  </object>
+ </at>
+</object>
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/SelectDataSetDialog.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/SelectDataSetDialog.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/SelectDataSetDialog.java	(revision 808)
@@ -0,0 +1,132 @@
+package org.gvsig.topology.swing.impl;
+
+import java.awt.Dimension;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import javax.swing.JTree;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.TreePath;
+import org.apache.commons.lang3.StringUtils;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.tools.swing.api.ToolsSwingManager;
+import org.gvsig.tools.swing.api.windowmanager.Dialog;
+import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
+import org.gvsig.topology.lib.api.TopologyDataSet;
+import org.gvsig.topology.swing.api.TopologySwingLocator;
+import org.gvsig.topology.swing.api.TopologySwingServices;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class SelectDataSetDialog extends SelectDataSetDialogView {
+
+    private final TopologySwingServices services;
+    private Dialog dialog = null;
+
+    SelectDataSetDialog() {
+        this.services = TopologySwingLocator.getTopologySwingManager().getDefaultServices();
+        this.initComponents();
+    }
+
+    private void initComponents() {
+        this.treeDataSets.setModel(this.services.getDataSetTreeModel());
+        this.expandAll(this.treeDataSets);
+        this.treeDataSets.addTreeSelectionListener(new TreeSelectionListener() {
+            @Override
+            public void valueChanged(TreeSelectionEvent e) {
+                performDataSetSelected();
+            }
+        });
+        this.treeDataSets.setCellRenderer(new DefaultTreeCellRenderer() {
+            @Override
+            public java.awt.Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
+                JLabel label = (JLabel) super.getTreeCellRendererComponent(tree,value, selected, expanded, leaf, row, hasFocus);
+                ImageIcon icon = services.getTreeIcon(tree.getModel(),value);
+                label.setIcon(icon);
+                label.setText(Objects.toString(value, ""));
+                return label;
+            }
+        });
+//        this.treeDataSets.addMouseListener(new MouseAdapter() {
+//            @Override
+//            public void mouseClicked(MouseEvent e) {
+//                if( e.getButton()==MouseEvent.BUTTON1 && e.getClickCount()==2 ) {
+//                    setVisible(false);
+//                }
+//            }
+//        });
+        this.setPreferredSize(new Dimension(350, 400));
+        this.translate();
+    }
+
+    private void expandAll(JTree tree) {
+        int r = 0;
+        while (r < tree.getRowCount()) {
+            tree.expandRow(r);
+            r++;
+        }
+    }
+
+    private void translate() {
+        ToolsSwingManager tsm = ToolsSwingLocator.getToolsSwingManager();
+        tsm.translate(this.lblName);
+    }
+
+    public void setDialog(Dialog dialog) {
+        this.dialog = dialog;
+    }
+
+    private void setOkButtonEnabled(boolean enabled) {
+        if (this.dialog == null) {
+            return;
+        }
+        this.dialog.setButtonEnabled(WindowManager_v2.BUTTONS_OK, enabled);
+    }
+
+    private List<TopologyDataSet> getSelectedDataSets() {
+        TreePath[] paths = treeDataSets.getSelectionPaths();
+        List<TopologyDataSet> datasets = new ArrayList<>();
+        for (TreePath path : paths) {
+            Object element = path.getLastPathComponent();
+            if (element instanceof TopologyDataSet) {
+                TopologyDataSet dataSet = (TopologyDataSet) element;
+                datasets.add(dataSet);
+            }
+        }
+        return datasets;
+    }
+
+    public List<TopologyDataSet> getDataSets() {
+        List<TopologyDataSet> dataSets = this.getSelectedDataSets();
+        if (dataSets == null || dataSets.isEmpty()) {
+            return null;
+        }
+        if( dataSets.size()==1 ) {
+            String name = this.txtName.getText();
+            if (!StringUtils.isEmpty(name)) {
+                dataSets.get(0).setName(name);
+            }
+        }
+        return dataSets;
+    }
+
+    public void performDataSetSelected() {
+        List<TopologyDataSet> dataSets = this.getSelectedDataSets();
+        if (dataSets == null || dataSets.isEmpty()) {
+            this.txtName.setText("");
+            this.setOkButtonEnabled(false);
+        } else {
+            this.txtName.setText(dataSets.get(0).getName());
+            this.setOkButtonEnabled(true);
+        }
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/CreateRuleDialogView.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/CreateRuleDialogView.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/CreateRuleDialogView.java	(revision 808)
@@ -0,0 +1,203 @@
+package org.gvsig.topology.swing.impl;
+
+import com.jeta.open.i18n.I18NUtils;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import java.awt.BorderLayout;
+import java.awt.ComponentOrientation;
+import java.awt.Container;
+import java.awt.Dimension;
+import javax.swing.Box;
+import javax.swing.ImageIcon;
+import javax.swing.JComboBox;
+import javax.swing.JEditorPane;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextField;
+
+
+public class CreateRuleDialogView extends JPanel
+{
+   JTextField txtTolerance = new JTextField();
+   JComboBox cboDataSet1 = new JComboBox();
+   JLabel lblDataSet1 = new JLabel();
+   JLabel lblRule = new JLabel();
+   JComboBox cboRule = new JComboBox();
+   JLabel lblDataSet2 = new JLabel();
+   JComboBox cboDataSet2 = new JComboBox();
+   JLabel lblTolerance = new JLabel();
+   JEditorPane txtDescription = new JEditorPane();
+
+   /**
+    * Default constructor
+    */
+   public CreateRuleDialogView()
+   {
+      initializePanel();
+   }
+
+   /**
+    * Adds fill components to empty cells in the first row and first column of the grid.
+    * This ensures that the grid spacing will be the same as shown in the designer.
+    * @param cols an array of column indices in the first row where fill components should be added.
+    * @param rows an array of row indices in the first column where fill components should be added.
+    */
+   void addFillComponents( Container panel, int[] cols, int[] rows )
+   {
+      Dimension filler = new Dimension(10,10);
+
+      boolean filled_cell_11 = false;
+      CellConstraints cc = new CellConstraints();
+      if ( cols.length > 0 && rows.length > 0 )
+      {
+         if ( cols[0] == 1 && rows[0] == 1 )
+         {
+            /** add a rigid area  */
+            panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
+            filled_cell_11 = true;
+         }
+      }
+
+      for( int index = 0; index < cols.length; index++ )
+      {
+         if ( cols[index] == 1 && filled_cell_11 )
+         {
+            continue;
+         }
+         panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
+      }
+
+      for( int index = 0; index < rows.length; index++ )
+      {
+         if ( rows[index] == 1 && filled_cell_11 )
+         {
+            continue;
+         }
+         panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
+      }
+
+   }
+
+   /**
+    * Helper method to load an image file from the CLASSPATH
+    * @param imageName the package and name of the file to load relative to the CLASSPATH
+    * @return an ImageIcon instance with the specified image file
+    * @throws IllegalArgumentException if the image resource cannot be loaded.
+    */
+   public ImageIcon loadImage( String imageName )
+   {
+      try
+      {
+         ClassLoader classloader = getClass().getClassLoader();
+         java.net.URL url = classloader.getResource( imageName );
+         if ( url != null )
+         {
+            ImageIcon icon = new ImageIcon( url );
+            return icon;
+         }
+      }
+      catch( Exception e )
+      {
+         e.printStackTrace();
+      }
+      throw new IllegalArgumentException( "Unable to load image: " + imageName );
+   }
+
+   /**
+    * Method for recalculating the component orientation for 
+    * right-to-left Locales.
+    * @param orientation the component orientation to be applied
+    */
+   public void applyComponentOrientation( ComponentOrientation orientation )
+   {
+      // Not yet implemented...
+      // I18NUtils.applyComponentOrientation(this, orientation);
+      super.applyComponentOrientation(orientation);
+   }
+
+   public JPanel createPanel()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:4DLU:NONE,FILL:DEFAULT:GROW(0.5),FILL:4DLU:NONE,FILL:DEFAULT:GROW(0.5),FILL:4DLU:NONE","CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:DEFAULT:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      jpanel1.add(createPanel1(),cc.xy(2,2));
+      jpanel1.add(createPanel2(),cc.xy(4,2));
+      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5 },new int[]{ 1,2,3 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel1()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:DEFAULT:GROW(1.0)","CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      txtTolerance.setName("txtTolerance");
+      txtTolerance.setHorizontalAlignment(JTextField.RIGHT);
+      jpanel1.add(txtTolerance,cc.xy(1,15));
+
+      cboDataSet1.setName("cboDataSet1");
+      jpanel1.add(cboDataSet1,cc.xy(1,3));
+
+      lblDataSet1.setName("lblDataSet1");
+      lblDataSet1.setText("_Primary_dataset");
+      jpanel1.add(lblDataSet1,cc.xy(1,1));
+
+      lblRule.setName("lblRule");
+      lblRule.setText("_Rule");
+      jpanel1.add(lblRule,cc.xy(1,5));
+
+      cboRule.setEnabled(false);
+      cboRule.setName("cboRule");
+      jpanel1.add(cboRule,cc.xy(1,7));
+
+      lblDataSet2.setName("lblDataSet2");
+      lblDataSet2.setText("_Secondary_dataset");
+      jpanel1.add(lblDataSet2,cc.xy(1,9));
+
+      cboDataSet2.setEnabled(false);
+      cboDataSet2.setName("cboDataSet2");
+      jpanel1.add(cboDataSet2,cc.xy(1,11));
+
+      lblTolerance.setName("lblTolerance");
+      lblTolerance.setText("_Tolerance");
+      jpanel1.add(lblTolerance,cc.xy(1,13));
+
+      addFillComponents(jpanel1,new int[0],new int[]{ 2,4,6,8,10,12,14 });
+      return jpanel1;
+   }
+
+   public JPanel createPanel2()
+   {
+      JPanel jpanel1 = new JPanel();
+      FormLayout formlayout1 = new FormLayout("FILL:DEFAULT:GROW(0.7)","FILL:DEFAULT:GROW(1.0)");
+      CellConstraints cc = new CellConstraints();
+      jpanel1.setLayout(formlayout1);
+
+      txtDescription.setName("txtDescription");
+      JScrollPane jscrollpane1 = new JScrollPane();
+      jscrollpane1.setViewportView(txtDescription);
+      jscrollpane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+      jscrollpane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
+      jpanel1.add(jscrollpane1,cc.xy(1,1));
+
+      addFillComponents(jpanel1,new int[0],new int[0]);
+      return jpanel1;
+   }
+
+   /**
+    * Initializer
+    */
+   protected void initializePanel()
+   {
+      setLayout(new BorderLayout());
+      add(createPanel(), BorderLayout.CENTER);
+   }
+
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyReport.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyReport.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyReport.java	(revision 808)
@@ -0,0 +1,765 @@
+package org.gvsig.topology.swing.impl;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.DefaultListSelectionModel;
+import javax.swing.ImageIcon;
+import javax.swing.JComponent;
+import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+import javax.swing.SwingUtilities;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.TableModel;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.gvsig.expressionevaluator.ExpressionBuilder;
+import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
+import org.gvsig.fmap.dal.feature.FeatureSelection;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.primitive.Envelope;
+import org.gvsig.tools.ToolsLocator;
+import org.gvsig.tools.dynform.DynFormLocator;
+import org.gvsig.tools.dynform.JDynForm;
+import org.gvsig.tools.dynobject.DynObject;
+import org.gvsig.tools.i18n.I18nManager;
+import org.gvsig.tools.observer.Observable;
+import org.gvsig.tools.observer.Observer;
+import org.gvsig.tools.swing.api.ListElement;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.tools.swing.api.ToolsSwingManager;
+import org.gvsig.tools.swing.api.task.TaskStatusController;
+import org.gvsig.tools.swing.icontheme.IconTheme;
+import org.gvsig.tools.task.TaskStatus;
+import org.gvsig.topology.lib.api.TopologyLocator;
+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.TopologyReportLineSet;
+import org.gvsig.topology.lib.api.TopologyRule;
+import org.gvsig.topology.lib.api.TopologyRuleAction;
+import org.gvsig.topology.lib.api.TopologyRuleFactory;
+import org.gvsig.topology.swing.api.JTopologyReport;
+import org.gvsig.topology.swing.api.TopologySwingLocator;
+import org.gvsig.topology.swing.api.TopologySwingServices;
+import org.gvsig.topology.swing.api.TopologySwingServices.WorkingAreaChangedListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+@SuppressWarnings("UseSpecificCatch")
+public class DefaultJTopologyReport
+        extends DefaultJTopologyReportView
+        implements JTopologyReport {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultJTopologyReport.class);
+    private ListSelectionModel selection;
+
+    private class TopologyRuleActionParametersListener implements ActionListener {
+
+        private final TopologyRule rule;
+        private final List<TopologyReportLine> lines;
+        private final TopologyRuleAction action;
+        private final JDynForm form;
+
+        public TopologyRuleActionParametersListener(
+                TopologyRule rule,
+                List<TopologyReportLine> lines,
+                TopologyRuleAction action,
+                JDynForm form
+        ) {
+            this.action = action;
+            this.lines = lines;
+            this.rule = rule;
+            this.form = form;
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            doExecuteRuleAction(rule, lines, action, form);
+        }
+    }
+
+    private class TopologyRuleActionListener implements ActionListener {
+
+        private final TopologyRule rule;
+        private final List<TopologyReportLine> lines;
+        private final TopologyRuleAction action;
+
+        public TopologyRuleActionListener(
+                TopologyRule rule,
+                List<TopologyReportLine> lines,
+                TopologyRuleAction action
+        ) {
+            this.action = action;
+            this.lines = lines;
+            this.rule = rule;
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            if (this.action.hasParameters()) {
+                doShowActionParametersPanel(this.rule, this.lines, this.action);
+            } else {
+                doExecuteRuleAction(rule, lines, action, null);
+            }
+        }
+    }
+
+    private ReportTable linesModel;
+    private final TopologySwingServices services;
+    private TaskStatusController taskStatusController;
+    private TopologyPlan plan;
+    private WorkingAreaChangedListener workingAreaChangedListener;
+
+    public DefaultJTopologyReport(TopologyPlan plan) {
+        this.services = TopologySwingLocator.getTopologySwingManager().getDefaultServices();
+        this.initComponents();
+    }
+
+    private void initComponents() {
+        I18nManager i18n = ToolsLocator.getI18nManager();
+        this.selection = this.tblErrors.getSelectionModel();
+        this.linesModel = new ReportTable();
+
+        this.workingAreaChangedListener = new WorkingAreaChangedListener() {
+            @Override
+            public void workingAreaChanged(Envelope workingArea) {
+                doUpdateFilter();
+            }
+        };
+        this.tblErrors.setModel(this.linesModel);
+        this.tblErrors.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
+
+        this.btnZoomGeometry.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                doZoomGeometry();
+            }
+        });
+        this.btnZoomError.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                doZoomError();
+            }
+        });
+        this.btnCenterGeometry.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                doCenterGeometry();
+            }
+        });
+        this.btnCenterError.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                doCenterError();
+            }
+        });
+        this.btnRefresh.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                doExecutePlan();
+            }
+        });
+        this.tblErrors.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+            @Override
+            public void valueChanged(ListSelectionEvent e) {
+                doRowSelected();
+            }
+        });
+        this.tblErrors.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {
+                    doCenterError();
+                }
+            }
+        });
+
+        this.btnActions.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                doSelectAction();
+            }
+        });
+        this.btnParametersCancel.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                tabData.setEnabledAt(0, true);
+                tabData.setEnabledAt(1, false);
+                tabData.setSelectedIndex(0);
+                pnlParameters.removeAll();
+            }
+        });
+        this.btnShowErrors.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                doUpdateFilter();
+            }
+        });
+        this.btnShowExceptions.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                doUpdateFilter();
+            }
+        });
+        this.btnVisibleExtentOnly.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                doUpdateFilter();
+            }
+        });
+        this.btnShowForm.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                services.setShowFormWhenEdit(btnShowForm.isSelected());
+            }
+        });
+        this.btnEraseErrorMarks.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                services.addError(null);
+            }
+        });
+        DefaultComboBoxModel<ListElement<TopologyRuleFactory>> modelRules = new DefaultComboBoxModel<>();
+        modelRules.addElement(new ListElement<>(i18n.getTranslation("_Any_rule"), (TopologyRuleFactory) null));
+        List<TopologyRuleFactory> factories = TopologyLocator.getTopologyManager().getRuleFactories();
+        for (TopologyRuleFactory factory : factories) {
+            modelRules.addElement(new ListElement<>(factory.getName(), factory));
+        }
+        this.cboRules.setModel(modelRules);
+        this.cboRules.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                // Llama al invokeLater para poder debugguear
+                SwingUtilities.invokeLater(new Runnable() {
+                    @Override
+                    public void run() {
+                        doUpdateFilter();
+                    }
+                });
+            }
+        });
+        this.taskStatusController = ToolsSwingLocator.getTaskStatusSwingManager().createTaskStatusController(
+                null,
+                this.lblTaskStatusTitle,
+                this.lblTaskStatusMessage,
+                this.pbTaskStatusProgress,
+                this.btnTaskStatusCancel,
+                null
+        );
+        this.translate();
+        this.setPreferredSize(new Dimension(700, 200));
+
+        this.btnShowErrors.setSelected(false);
+        this.btnShowExceptions.setSelected(false);
+        this.btnVisibleExtentOnly.setSelected(false);
+
+        this.tabData.setEnabledAt(1, false);
+
+    }
+
+    @Override
+    public ImageIcon loadImage(String imageName) {
+        String name = FilenameUtils.getBaseName(imageName);
+        IconTheme theme = ToolsSwingLocator.getIconThemeManager().getDefault();
+        if (theme.exists(name)) {
+            return theme.get(name);
+        }
+        URL url = this.getClass().getResource("/" + imageName);
+        if (url == null) {
+            return null;
+        }
+        return new ImageIcon(url);
+    }
+
+    private void translate() {
+        ToolsSwingManager tsm = ToolsSwingLocator.getToolsSwingManager();
+        tsm.translate(this.btnActions);
+        tsm.translate(this.btnCenterError);
+        tsm.translate(this.btnCenterGeometry);
+        tsm.translate(this.btnRefresh);
+        tsm.translate(this.btnShowErrors);
+        tsm.translate(this.btnShowExceptions);
+        tsm.translate(this.btnZoomError);
+        tsm.translate(this.btnZoomGeometry);
+        tsm.translate(this.btnEraseErrorMarks);
+        tsm.translate(this.btnVisibleExtentOnly);
+        tsm.translate(this.btnParametersAccept);
+        tsm.translate(this.btnParametersCancel);
+        tsm.translate(this.btnShowForm);
+        tsm.translate(this.lblShow);
+        tsm.translate(this.tabData);
+    }
+
+    @Override
+    public void put(TopologyPlan plan) {
+        this.plan = plan;
+        this.taskStatusController.bind(this.plan.getTaskStatus());
+        this.plan.getTaskStatus().addObserver(new Observer() {
+            @Override
+            public void update(Observable o, Object o1) {
+                doTaskStatusUpdated(o, o1);
+            }
+        });
+        this.linesModel.setReport(plan.getReport());
+    }
+
+    @Override
+    public JComponent asJComponent() {
+        return this;
+    }
+
+    private void doUpdateFilter() {
+        this.linesModel.setFilter(this.getFilter());
+    }
+
+    private String getFilter() {
+        ExpressionBuilder builder = ExpressionEvaluatorLocator.getManager().createExpressionBuilder();
+        TopologyRuleFactory ruleFactory = (TopologyRuleFactory) ListElement.getSelected(cboRules);
+        if (ruleFactory != null) {
+            builder.setValue(
+                    builder.eq(
+                            builder.column(TopologyReport.RULE_ID),
+                            builder.constant(ruleFactory.getId())
+                    )
+            );
+        }
+        if (this.btnShowErrors.isSelected()) {
+            if (btnShowExceptions.isSelected()) {
+                builder.and(
+                        builder.or(
+                                builder.column(TopologyReport.IS_ERROR),
+                                builder.column(TopologyReport.IS_EXCEPTION)
+                        )
+                );
+            } else {
+                builder.and(
+                        builder.column(TopologyReport.IS_ERROR)
+                );
+            }
+        } else if (btnShowExceptions.isSelected()) {
+            builder.and(
+                    builder.column(TopologyReport.IS_EXCEPTION)
+            );
+        }
+        if (this.btnVisibleExtentOnly.isSelected()) {
+            Envelope workingArea = this.services.getWorkingArea();
+            if (workingArea != null) {
+                builder.and(
+                        builder.ST_Intersects(
+                                builder.column(TopologyReport.GEOMETRY),
+                                builder.geometry(workingArea.getGeometry())
+                        )
+                );
+            }
+            this.services.addWorkingAreaChangedListener(this.workingAreaChangedListener);
+        } else {
+            this.services.removeWorkingAreaChangedListener(this.workingAreaChangedListener);
+        }
+        if (builder.getValue() == null) {
+            return null;
+        }
+        return builder.toString();
+    }
+
+    private void doExecutePlan() {
+        Thread th = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                plan.execute();
+            }
+        }, "TopologyPlan-" + plan.getName());
+        th.start();
+    }
+
+    private void doTaskStatusUpdated(final Observable observable, final Object notification) {
+        if (observable != null && !(observable instanceof TaskStatus)) {
+            return;
+        }
+        if (!SwingUtilities.isEventDispatchThread()) {
+            SwingUtilities.invokeLater(new Runnable() {
+                public void run() {
+                    doTaskStatusUpdated(observable, notification);
+                }
+            });
+            return;
+        }
+        TaskStatus taskStatus = (TaskStatus) observable;
+        if (taskStatus == null || !taskStatus.isRunning()) {
+            this.lblTaskStatusTitle.setVisible(false);
+            this.lblTaskStatusMessage.setVisible(false);
+            this.pbTaskStatusProgress.setVisible(false);
+            this.btnTaskStatusCancel.setVisible(false);
+            this.btnRefresh.setEnabled(true);
+            I18nManager i18n = ToolsLocator.getI18nManager();
+            message(i18n.getTranslation("_Errors") + ": " + this.linesModel.getRowCount());
+            return;
+        }
+        if (!this.pbTaskStatusProgress.isVisible()) {
+            this.lblTaskStatusTitle.setVisible(true);
+            this.lblTaskStatusMessage.setVisible(true);
+            this.pbTaskStatusProgress.setVisible(true);
+            this.btnTaskStatusCancel.setVisible(true);
+            this.btnRefresh.setEnabled(false);
+        }
+    }
+
+    private void message(String msg) {
+        this.lblTaskStatusTitle.setText(msg);
+        this.lblTaskStatusTitle.setVisible(true);
+    }
+
+    private void doSelectAction() {
+        int n = this.tblErrors.getSelectedRow();
+        if (n < 0) {
+            return;
+        }
+        int[] selectedRows = this.tblErrors.getSelectedRows();
+        TopologyRule rule = this.linesModel.getLine(selectedRows[0]).getRule();
+        List<TopologyRuleAction> actions = rule.getActions();
+        if (actions == null || actions.isEmpty()) {
+            return;
+        }
+        List<TopologyReportLine> lines = new ArrayList<>();
+        for (int selectedRow : selectedRows) {
+            TopologyReportLine line = this.linesModel.getLine(selectedRow);
+            if (line.getRule() == rule) {
+                lines.add(line);
+            }
+        }
+        JPopupMenu menu = new JPopupMenu();
+        for (TopologyRuleAction action : actions) {
+            JMenuItem item;
+            if (action.hasParameters()) {
+                item = new JMenuItem(action.getName() + "...");
+            } else {
+                item = new JMenuItem(action.getName());
+            }
+            item.addActionListener(new TopologyRuleActionListener(rule, lines, action));
+            if (lines.size() > 1 && action.hasParameters()) {
+                item.setEnabled(false);
+            }
+            menu.add(item);
+        }
+        menu.show(this.btnActions, 0, this.btnActions.getHeight());
+    }
+
+    private void doExecuteRuleAction(
+            TopologyRule rule,
+            List<TopologyReportLine> lines,
+            TopologyRuleAction action,
+            JDynForm form
+    ) {
+        DynObject parameters = null;
+        if (form != null) {
+            parameters = action.createParameters();
+            if (parameters != null) {
+                form.getValues(parameters);
+            }
+        }
+        for (TopologyReportLine line : lines) {
+            action.execute(rule, line, parameters);
+        }
+        this.tabData.setEnabledAt(0, true);
+        this.tabData.setEnabledAt(1, false);
+        this.tabData.setSelectedIndex(0);
+        this.pnlParameters.removeAll();
+        this.services.addError(null);
+    }
+
+    private void doShowActionParametersPanel(
+            TopologyRule rule,
+            List<TopologyReportLine> lines,
+            TopologyRuleAction action
+    ) {
+        I18nManager i18n = ToolsLocator.getI18nManager();
+        this.tabData.setEnabledAt(0, false);
+        this.tabData.setEnabledAt(1, true);
+        this.tabData.setSelectedIndex(1);
+
+        try {
+            JDynForm form = null;
+            this.lblActionTitle.setText(
+                    "<html>"
+                    + i18n.getTranslation("_Rule") + ": <b>"
+                    + rule.getName() + "</b>, "
+                    + i18n.getTranslation("_Action") + ": <b>"
+                    + action.getName() + "</b></html>"
+            );
+            this.lblActionDescription.setText("<html>" + action.getShortDescription() + "</html>");
+            DynObject parameters = action.createParameters();
+            if (parameters != null) {
+                form = DynFormLocator.getDynFormManager().createJDynForm(parameters);
+                if (form != null) {
+                    this.pnlParameters.setLayout(new BorderLayout());
+                    this.pnlParameters.removeAll();
+                    this.pnlParameters.add(form.asJComponent(), BorderLayout.CENTER);
+                    this.pnlParameters.revalidate();
+                    this.pnlParameters.repaint();
+                }
+            }
+            this.btnParametersAccept.addActionListener(
+                    new TopologyRuleActionParametersListener(rule, lines, action, form)
+            );
+        } catch (Exception ex) {
+            LOGGER.warn("Can't show action parameters panel.", ex);
+        }
+    }
+
+    private void doZoomGeometry() {
+        int n = this.tblErrors.getSelectedRow();
+        if (n < 0) {
+            return;
+        }
+        TopologyReportLine line = this.linesModel.getLine(n);
+        Geometry geom = line.getGeometry();
+        this.services.zoomTo(geom.getEnvelope());
+    }
+
+    private void doZoomError() {
+        int n = this.tblErrors.getSelectedRow();
+        if (n < 0) {
+            return;
+        }
+        TopologyReportLine line = this.linesModel.getLine(n);
+        Geometry geom = line.getError();
+        if (geom == null) {
+            geom = line.getGeometry();
+            services.addError(null);
+        } else {
+            services.addError(geom);
+        }
+        this.services.zoomTo(geom.getEnvelope());
+    }
+
+    private void doCenterGeometry() {
+        try {
+            int n = this.tblErrors.getSelectedRow();
+            if (n < 0) {
+                return;
+            }
+            TopologyReportLine line = this.linesModel.getLine(n);
+            Geometry geom = line.getGeometry();
+            this.services.centerTo(geom.centroid());
+        } catch (Exception ex) {
+            LOGGER.warn("Can't center topology error", ex);
+        }
+    }
+
+    private void doCenterError() {
+        try {
+            int n = this.tblErrors.getSelectedRow();
+            if (n < 0) {
+                return;
+            }
+            TopologyReportLine line = this.linesModel.getLine(n);
+            Geometry geom = line.getError();
+            if (geom == null) {
+                geom = line.getGeometry();
+                services.addError(null);
+            } else {
+                services.addError(geom);
+            }
+            this.services.centerTo(geom.centroid());
+        } catch (Exception ex) {
+            LOGGER.warn("Can't center topology error", ex);
+        }
+    }
+
+    private void doRowSelected() {
+        try {
+            int n = this.tblErrors.getSelectedRow();
+            if (n < 0) {
+                return;
+            }
+            TopologyReportLine line = this.linesModel.getLine(n);
+            if (line.getFeature1() == null) {
+                return;
+            }
+            this.services.addError(null);
+            FeatureSelection selection = line.getDataSet1().getFeatureStore().getFeatureSelection();
+            selection.deselectAll();
+            selection.select(line.getFeature1());
+        } catch (Exception ex) {
+            LOGGER.warn("Can't select topology error", ex);
+        }
+    }
+
+    private class ReportTable implements TableModel {
+
+        private TopologyReport report;
+        private TopologyReportLineSet lines;
+        private final String[] columnNames;
+        private final Class[] columnClasses;
+        private final Set<TableModelListener> tableListeners;
+        private final ChangeListener reportListener;
+        private String lastFilter;
+
+        public ReportTable() {
+            I18nManager i18n = ToolsLocator.getI18nManager();
+            this.report = null;
+            this.lines = null;
+            this.tableListeners = new HashSet<>();
+            this.columnNames = new String[]{
+                i18n.getTranslation("_Rule"),
+                i18n.getTranslation("_Dataset1"),
+                i18n.getTranslation("_Dataset2"),
+                i18n.getTranslation("_Exception"),
+                i18n.getTranslation("_Description")
+            };
+            this.columnClasses = new Class[]{
+                String.class,
+                String.class,
+                String.class,
+                Boolean.class,
+                String.class
+            };
+            this.reportListener = new ChangeListener() {
+                @Override
+                public void stateChanged(final ChangeEvent e) {
+                    if (!SwingUtilities.isEventDispatchThread()) {
+                        SwingUtilities.invokeLater(new Runnable() {
+                            @Override
+                            public void run() {
+                                stateChanged(e);
+                            }
+                        });
+                        return;
+                    }
+                    fireTableChanged();
+                }
+            };
+        }
+
+        public void setReport(TopologyReport report) {
+            if (this.report != null) {
+                this.report.removeChangeListener(this.reportListener);
+            }
+            this.report = report;
+            this.lines = this.report;
+            this.lines.addChangeListener(this.reportListener);
+        }
+
+        public void setFilter(String filter) {
+            if (StringUtils.equals(filter, this.lastFilter)) {
+                return;
+            }
+            this.lines = this.report.getLineSet(filter);
+            this.lines.addChangeListener(this.reportListener);
+            this.lastFilter = filter;
+            this.fireTableChanged();
+        }
+
+        public TopologyReport getReport() {
+            return this.report;
+        }
+
+        @Override
+        public int getRowCount() {
+            if (this.lines == null) {
+                return 0;
+            }
+            return this.lines.size();
+        }
+
+        @Override
+        public int getColumnCount() {
+            return 5;
+        }
+
+        @Override
+        public String getColumnName(int columnIndex) {
+            return this.columnNames[columnIndex];
+        }
+
+        @Override
+        public Class<?> getColumnClass(int columnIndex) {
+            return this.columnClasses[columnIndex];
+        }
+
+        @Override
+        public boolean isCellEditable(int rowIndex, int columnIndex) {
+            return false;
+        }
+
+        @Override
+        public Object getValueAt(int rowIndex, int columnIndex) {
+            if (this.lines == null) {
+                return "";
+            }
+            TopologyReportLine line = this.lines.get(rowIndex);
+            switch (columnIndex) {
+                case 0:
+                    return line.getRule().getName();
+                case 1:
+                    return line.getDataSet1().getName();
+                case 2:
+                    if (line.getDataSet2() == null) {
+                        return "";
+                    }
+                    return line.getDataSet2().getName();
+                case 3:
+                    return line.isException();
+                case 4:
+                    return line.getDescription();
+                default:
+                    return "???";
+            }
+        }
+
+        @Override
+        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
+        }
+
+        @Override
+        public void addTableModelListener(TableModelListener l) {
+            this.tableListeners.add(l);
+        }
+
+        @Override
+        public void removeTableModelListener(TableModelListener l) {
+            this.tableListeners.remove(l);
+        }
+
+        private void fireTableChanged() {
+            saveCurrentSelection();
+            for (TableModelListener tableListener : this.tableListeners) {
+                tableListener.tableChanged(new TableModelEvent(this));
+            }
+            restoreCurrentSelection();
+        }
+
+        public TopologyReportLine getLine(int lineNum) {
+            return this.lines.get(lineNum);
+        }
+
+    }
+
+    private void saveCurrentSelection() {
+        this.tblErrors.setSelectionModel(new DefaultListSelectionModel());
+    }
+
+    private void restoreCurrentSelection() {
+        this.tblErrors.setSelectionModel(this.selection);
+    }
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/CreateRuleDialog.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/CreateRuleDialog.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/CreateRuleDialog.java	(revision 808)
@@ -0,0 +1,288 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.gvsig.topology.swing.impl;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.Objects;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.Icon;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.ListCellRenderer;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import org.gvsig.fmap.dal.DataStore;
+import org.gvsig.fmap.dal.exception.DataException;
+import org.gvsig.fmap.dal.feature.FeatureStore;
+import org.gvsig.fmap.geom.Geometry;
+import org.gvsig.fmap.geom.GeometryUtils;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.tools.swing.api.ToolsSwingManager;
+import org.gvsig.tools.swing.api.windowmanager.Dialog;
+import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
+import org.gvsig.tools.swing.icontheme.IconTheme;
+import org.gvsig.topology.lib.api.TopologyDataSet;
+import org.gvsig.topology.lib.api.TopologyLocator;
+import org.gvsig.topology.lib.api.TopologyManager;
+import org.gvsig.topology.lib.api.TopologyPlan;
+import org.gvsig.topology.lib.api.TopologyRule;
+import org.gvsig.topology.lib.api.TopologyRuleFactory;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+@SuppressWarnings("UseSpecificCatch")
+public class CreateRuleDialog extends CreateRuleDialogView {
+
+    private class DataSetListCellRenderer extends DefaultListCellRenderer {
+
+        private Icon pointIcon;
+        private Icon lineIcon;
+        private Icon polygonIcon;
+        private Icon multipolygonIcon;
+        private Icon multilineIcon;
+        private Icon multipointIcon;
+
+        public DataSetListCellRenderer() {
+            IconTheme iconTheme = ToolsSwingLocator.getIconThemeManager().getCurrent();
+            if( iconTheme.exists("layer-type-point") ) {
+                this.pointIcon = iconTheme.get("layer-type-point");
+            }
+            if( iconTheme.exists("layer-type-line") ) {
+                this.lineIcon = iconTheme.get("layer-type-line");
+            }
+            if( iconTheme.exists("layer-type-polygon") ) {
+                this.polygonIcon = iconTheme.get("layer-type-polygon");
+            }
+            if( iconTheme.exists("layer-type-multipoint") ) {
+                this.multipointIcon = iconTheme.get("layer-type-multipoint");
+            }
+            if( iconTheme.exists("layer-type-multiline") ) {
+                this.multilineIcon = iconTheme.get("layer-type-multiline");
+            }
+            if( iconTheme.exists("layer-type-multipolygon") ) {
+                this.multipolygonIcon = iconTheme.get("layer-type-multipolygon");
+            }
+        }
+        
+        @Override
+        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+            JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+            this.setText(Objects.toString(value, ""));
+            this.setIcon(null);
+            if( value instanceof TopologyDataSet ) {
+                DataStore store = ((TopologyDataSet) value).getStore();
+                if( store instanceof FeatureStore ) {
+                    try {
+                        int geomtype = ((FeatureStore) store).getDefaultFeatureType().getDefaultGeometryAttribute().getGeomType().getType();
+                        if( GeometryUtils.isSubtype(Geometry.TYPES.POINT, geomtype) ) {
+                            this.setIcon(this.pointIcon);
+                        } else if( GeometryUtils.isSubtype(Geometry.TYPES.CURVE, geomtype) ) {
+                            this.setIcon(this.lineIcon);
+                        } else if( GeometryUtils.isSubtype(Geometry.TYPES.SURFACE, geomtype) ) {
+                            this.setIcon(this.polygonIcon);
+                        } else if( GeometryUtils.isSubtype(Geometry.TYPES.MULTIPOINT, geomtype) ) {
+                            this.setIcon(this.multipointIcon);
+                        } else if( GeometryUtils.isSubtype(Geometry.TYPES.MULTICURVE, geomtype) ) {
+                            this.setIcon(this.multilineIcon);
+                        } else if( GeometryUtils.isSubtype(Geometry.TYPES.MULTISURFACE, geomtype) ) {
+                            this.setIcon(this.multipolygonIcon);
+                        }
+                    } catch (DataException ex) {
+                    }
+                }
+            }
+            return label;
+        }
+        
+    }
+    private final TopologyPlan plan;
+    private Dialog dialog;
+
+    CreateRuleDialog(TopologyPlan plan) {
+        this.plan = plan;
+        this.dialog = null;
+        this.initComponents();
+    }
+
+    private void initComponents() {
+        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
+
+        toolsSwingManager.setDefaultPopupMenu(this.txtDescription);
+        this.txtDescription.setPreferredSize(new Dimension(200,200));
+
+        DefaultComboBoxModel<TopologyDataSet> model1 = new DefaultComboBoxModel<>();
+        for (TopologyDataSet dataSet : this.plan.getDataSets()) {
+            model1.addElement(dataSet);
+        }
+        this.cboDataSet1.setModel(model1);
+        this.cboDataSet1.setSelectedIndex(-1);
+        this.cboDataSet1.addItemListener(new ItemListener() {
+            @Override
+            public void itemStateChanged(ItemEvent e) {
+                performDataSet1Selected();
+            }
+        });
+        this.cboDataSet1.setRenderer(new DataSetListCellRenderer());
+        this.cboDataSet2.setRenderer(new DataSetListCellRenderer());
+        this.cboRule.addItemListener(new ItemListener() {
+            @Override
+            public void itemStateChanged(ItemEvent e) {
+                performRuleSelected();
+            }
+        });
+        this.txtTolerance.setText(String.valueOf(this.plan.getTolerance()));
+        this.txtTolerance.getDocument().addDocumentListener(new DocumentListener() {
+            @Override
+            public void insertUpdate(DocumentEvent e) {
+                validateData();
+            }
+
+            @Override
+            public void removeUpdate(DocumentEvent e) {
+                validateData();
+            }
+
+            @Override
+            public void changedUpdate(DocumentEvent e) {
+                validateData();
+            }
+        });
+
+        this.setOkButtonEnabled(false);
+        this.cboRule.setSelectedIndex(-1);
+        this.cboRule.setEnabled(false);
+        this.cboDataSet2.setEnabled(false);
+        this.cboDataSet2.setSelectedItem(-1);
+
+        this.setPreferredSize(new Dimension(650, 200));
+
+        this.translate();
+    }
+
+    public void setDialog(Dialog dialog) {
+        this.dialog = dialog;
+    }
+
+    private void setOkButtonEnabled(boolean enabled) {
+        if (this.dialog == null) {
+            return;
+        }
+        this.dialog.setButtonEnabled(WindowManager_v2.BUTTONS_OK, enabled);
+    }
+
+    private void translate() {
+        ToolsSwingManager tsm = ToolsSwingLocator.getToolsSwingManager();
+        tsm.translate(this.lblDataSet1);
+        tsm.translate(this.lblDataSet2);
+//        tsm.translate(this.lblLabelDescription);
+        tsm.translate(this.lblRule);
+        tsm.translate(this.lblTolerance);
+    }
+
+    private void validateData() {
+        try {
+            double x = Double.parseDouble(this.txtTolerance.getText());
+        } catch (Exception ex) {
+            this.setOkButtonEnabled(false);
+            return;
+        }
+        TopologyDataSet dataSet = (TopologyDataSet) this.cboDataSet1.getSelectedItem();
+        if (dataSet == null) {
+            this.setOkButtonEnabled(false);
+            return;
+        }
+        TopologyRuleFactory ruleFactory = (TopologyRuleFactory) this.cboRule.getSelectedItem();
+        if (ruleFactory == null) {
+            this.setOkButtonEnabled(false);
+            return;
+        }
+        this.setOkButtonEnabled(true);
+    }
+
+    private void performDataSet1Selected() {
+        TopologyDataSet dataSet = (TopologyDataSet) this.cboDataSet1.getSelectedItem();
+        if (dataSet == null) {
+            this.setOkButtonEnabled(false);
+            this.cboRule.setSelectedIndex(-1);
+            this.cboRule.setEnabled(false);
+            this.cboDataSet2.setEnabled(false);
+            this.cboDataSet2.setSelectedItem(-1);
+            return;
+        }
+        TopologyManager manager = TopologyLocator.getTopologyManager();
+        DefaultComboBoxModel<TopologyRuleFactory> model1 = new DefaultComboBoxModel<>();
+        for (TopologyRuleFactory ruleFactory : manager.getRuleFactories(dataSet)) {
+            model1.addElement(ruleFactory);
+        }
+        this.cboRule.setModel(model1);
+        this.cboRule.setSelectedIndex(-1);
+        this.cboRule.setEnabled(true);
+    }
+
+    private void performRuleSelected() {
+        TopologyRuleFactory ruleFactory = (TopologyRuleFactory) this.cboRule.getSelectedItem();
+        if (ruleFactory == null) {
+            this.setOkButtonEnabled(false);
+            this.cboDataSet2.setEnabled(false);
+            this.cboDataSet2.setSelectedItem(-1);
+            return;
+        }
+        DefaultComboBoxModel<TopologyDataSet> model2 = new DefaultComboBoxModel<>();
+        if (ruleFactory.hasSecondaryDataSet()) {
+            for (TopologyDataSet dataSet : this.plan.getSecondaryDataSets(ruleFactory)) {
+                model2.addElement(dataSet);
+            }
+        }
+        if (model2.getSize() == 0) {
+            this.cboDataSet2.setEnabled(false);
+        } else {
+            this.cboDataSet2.setEnabled(true);
+        }
+        this.cboDataSet2.setModel(model2);
+        this.cboDataSet2.setSelectedItem(-1);
+
+        StringBuilder html = new StringBuilder();
+        html.append("<html>\n");
+        html.append(ruleFactory.getDescription().replace("\n", "<br>")).append("<br>\n");
+        html.append("</html>\n");
+
+        this.txtDescription.setContentType("text/html");
+        this.txtDescription.setText(html.toString());
+        this.txtDescription.setCaretPosition(0);
+        
+        this.validateData();
+    }
+
+    public TopologyRule getRule() {
+        TopologyDataSet dataSet1 = (TopologyDataSet) this.cboDataSet1.getSelectedItem();
+        TopologyRuleFactory ruleFactory = (TopologyRuleFactory) this.cboRule.getSelectedItem();
+        if (dataSet1 == null || ruleFactory == null) {
+            return null;
+        }
+        TopologyDataSet dataSet2 = (TopologyDataSet) this.cboDataSet2.getSelectedItem();
+        double tolerance = this.plan.getTolerance();
+        try {
+            tolerance = Double.parseDouble(this.txtTolerance.getText());
+        } catch (Exception ex) {
+
+        }
+        TopologyRule rule;
+        if( dataSet2==null ) {
+            rule = ruleFactory.createRule(plan, dataSet1.getName(), null, tolerance);
+        } else {
+            rule = ruleFactory.createRule(plan, dataSet1.getName(), dataSet2.getName(), tolerance);
+        }
+        return rule;
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/TopologySwingImplLibrary.java
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/TopologySwingImplLibrary.java	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/TopologySwingImplLibrary.java	(revision 808)
@@ -0,0 +1,76 @@
+/**
+ * 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.swing.impl;
+
+import java.net.URL;
+import org.gvsig.tools.ToolsLibrary;
+import org.gvsig.tools.library.AbstractLibrary;
+import org.gvsig.tools.library.LibraryException;
+import org.gvsig.tools.swing.api.ToolsSwingLocator;
+import org.gvsig.tools.swing.icontheme.IconTheme;
+import org.gvsig.topology.lib.api.TopologyLibrary;
+import org.gvsig.topology.lib.api.TopologyLocator;
+import org.gvsig.topology.lib.api.TopologyManager;
+import org.gvsig.topology.swing.api.TopologySwingLibrary;
+import org.gvsig.topology.swing.api.TopologySwingLocator;
+import org.gvsig.topology.swing.api.TopologySwingManager;
+
+/**
+ *
+ * @author jjdelcerro
+ */
+public class TopologySwingImplLibrary extends AbstractLibrary {
+
+    @Override
+    public void doRegistration() {
+        super.doRegistration();
+        registerAsImplementationOf(TopologySwingLibrary.class);
+        this.require(ToolsLibrary.class);
+        this.require(TopologyLibrary.class);
+    }
+
+    @Override
+    protected void doInitialize() throws LibraryException {
+        TopologySwingLocator.registerDefaultTopologySwingManager(DefaultTopologySwingManager.class);
+        
+    }
+
+    @Override
+    protected void doPostInitialize() throws LibraryException {
+        String[][] iconNames = new String[][] {
+            new String[] { "layertypes", "layer-type-point" },
+            new String[] { "layertypes", "layer-type-line" },
+            new String[] { "layertypes", "layer-type-polygon" },
+            new String[] { "layertypes", "layer-type-multipoint" },
+            new String[] { "layertypes", "layer-type-multiline" },
+            new String[] { "layertypes", "layer-type-multipolygon" }
+        };
+        IconTheme theme = ToolsSwingLocator.getIconThemeManager().getCurrent();
+        for (String[] icon : iconNames) {
+            URL url = this.getClass().getResource("images/layertypes/"+icon[1]+".png");
+            theme.registerDefault("topology", icon[0], icon[1], null, url);
+        }
+    }
+
+}
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyPlanPropertiesView.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyPlanPropertiesView.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyPlanPropertiesView.xml	(revision 808)
@@ -0,0 +1,1407 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<object classname="com.jeta.forms.store.memento.FormPackage">
+ <at name="fileversion">
+  <object classname="com.jeta.forms.store.memento.FormsVersion2">
+   <at name="major">2</at>
+   <at name="minor">0</at>
+   <at name="sub">0</at>
+  </object>
+ </at>
+ <at name="form">
+  <object classname="com.jeta.forms.store.memento.FormMemento">
+   <super classname="com.jeta.forms.store.memento.ComponentMemento">
+    <at name="cellconstraints">
+     <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+      <at name="column">1</at>
+      <at name="row">1</at>
+      <at name="colspan">1</at>
+      <at name="rowspan">1</at>
+      <at name="halign">default</at>
+      <at name="valign">default</at>
+      <at name="insets" object="insets">0,0,0,0</at>
+     </object>
+    </at>
+    <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+   </super>
+   <at name="id">/home/jjdelcerro/datos/devel/org.gvsig.topology/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/src/main/java/org/gvsig/topology/swing/impl/DefaultJTopologyPlanPropertiesView.xml</at>
+   <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE</at>
+   <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
+   <at name="components">
+    <object classname="java.util.LinkedList">
+     <item >
+      <at name="value">
+       <object classname="com.jeta.forms.store.memento.BeanMemento">
+        <super classname="com.jeta.forms.store.memento.ComponentMemento">
+         <at name="cellconstraints">
+          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+           <at name="column">2</at>
+           <at name="row">2</at>
+           <at name="colspan">1</at>
+           <at name="rowspan">1</at>
+           <at name="halign">default</at>
+           <at name="valign">default</at>
+           <at name="insets" object="insets">0,0,0,0</at>
+          </object>
+         </at>
+         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+        </super>
+        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+        <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
+          <at name="properties">
+           <object classname="com.jeta.forms.store.support.PropertyMap">
+            <at name="border">
+             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+              <super classname="com.jeta.forms.store.properties.BorderProperty">
+               <at name="name">border</at>
+              </super>
+              <at name="borders">
+               <object classname="java.util.LinkedList">
+                <item >
+                 <at name="value">
+                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                  </object>
+                 </at>
+                </item>
+               </object>
+              </at>
+             </object>
+            </at>
+            <at name="name">lblName</at>
+            <at name="width">62</at>
+            <at name="text">_Name</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">14</at>
+           </object>
+          </at>
+         </object>
+        </at>
+       </object>
+      </at>
+     </item>
+     <item >
+      <at name="value">
+       <object classname="com.jeta.forms.store.memento.BeanMemento">
+        <super classname="com.jeta.forms.store.memento.ComponentMemento">
+         <at name="cellconstraints">
+          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+           <at name="column">4</at>
+           <at name="row">2</at>
+           <at name="colspan">1</at>
+           <at name="rowspan">1</at>
+           <at name="halign">default</at>
+           <at name="valign">default</at>
+           <at name="insets" object="insets">0,0,0,0</at>
+          </object>
+         </at>
+         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+        </super>
+        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+        <at name="beanclass">javax.swing.JTextField</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">javax.swing.JTextField</at>
+          <at name="properties">
+           <object classname="com.jeta.forms.store.support.PropertyMap">
+            <at name="border">
+             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+              <super classname="com.jeta.forms.store.properties.BorderProperty">
+               <at name="name">border</at>
+              </super>
+              <at name="borders">
+               <object classname="java.util.LinkedList">
+                <item >
+                 <at name="value">
+                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                  </object>
+                 </at>
+                </item>
+               </object>
+              </at>
+             </object>
+            </at>
+            <at name="name">txtName</at>
+            <at name="width">880</at>
+            <at name="height">20</at>
+           </object>
+          </at>
+         </object>
+        </at>
+       </object>
+      </at>
+     </item>
+     <item >
+      <at name="value">
+       <object classname="com.jeta.forms.store.memento.BeanMemento">
+        <super classname="com.jeta.forms.store.memento.ComponentMemento">
+         <at name="cellconstraints">
+          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+           <at name="column">2</at>
+           <at name="row">6</at>
+           <at name="colspan">3</at>
+           <at name="rowspan">1</at>
+           <at name="halign">default</at>
+           <at name="valign">default</at>
+           <at name="insets" object="insets">0,0,0,0</at>
+          </object>
+         </at>
+         <at name="componentclass">com.jeta.forms.gui.form.FormContainerComponent</at>
+        </super>
+        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+        <at name="beanclass">javax.swing.JTabbedPane</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">javax.swing.JTabbedPane</at>
+          <at name="properties">
+           <object classname="com.jeta.forms.store.support.PropertyMap">
+            <at name="border">
+             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+              <super classname="com.jeta.forms.store.properties.BorderProperty">
+               <at name="name">border</at>
+              </super>
+              <at name="borders">
+               <object classname="java.util.LinkedList">
+                <item >
+                 <at name="value">
+                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                  </object>
+                 </at>
+                </item>
+               </object>
+              </at>
+             </object>
+            </at>
+            <at name="componentCount">2</at>
+            <at name="name">tabPanel</at>
+            <at name="tabs">
+             <object classname="com.jeta.forms.store.properties.TabbedPaneProperties">
+              <at name="name">tabs</at>
+              <at name="items">
+               <object classname="java.util.LinkedList">
+                <item >
+                 <at name="value">
+                  <object classname="com.jeta.forms.store.properties.TabProperty">
+                   <at name="name">tab</at>
+                   <at name="title">_DataSets</at>
+                   <at name="icon">
+                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                     <at name="embedded">false</at>
+                     <at name="width">0</at>
+                     <at name="height">0</at>
+                    </object>
+                   </at>
+                   <at name="form">
+                    <object classname="com.jeta.forms.store.memento.FormMemento">
+                     <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                      <at name="cellconstraints">
+                       <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                        <at name="column">1</at>
+                        <at name="row">1</at>
+                        <at name="colspan">1</at>
+                        <at name="rowspan">1</at>
+                        <at name="halign">default</at>
+                        <at name="valign">default</at>
+                        <at name="insets" object="insets">0,0,0,0</at>
+                       </object>
+                      </at>
+                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+                     </super>
+                     <at name="id">embedded.536063130</at>
+                     <at name="rowspecs">CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE</at>
+                     <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
+                     <at name="components">
+                      <object classname="java.util.LinkedList">
+                       <item >
+                        <at name="value">
+                         <object classname="com.jeta.forms.store.memento.BeanMemento">
+                          <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                           <at name="cellconstraints">
+                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                             <at name="column">2</at>
+                             <at name="row">2</at>
+                             <at name="colspan">1</at>
+                             <at name="rowspan">1</at>
+                             <at name="halign">default</at>
+                             <at name="valign">default</at>
+                             <at name="insets" object="insets">0,0,0,0</at>
+                            </object>
+                           </at>
+                           <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                          </super>
+                          <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                          <at name="beanclass">javax.swing.JList</at>
+                          <at name="beanproperties">
+                           <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                            <at name="classname">javax.swing.JList</at>
+                            <at name="properties">
+                             <object classname="com.jeta.forms.store.support.PropertyMap">
+                              <at name="border">
+                               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                 <at name="name">border</at>
+                                </super>
+                                <at name="borders">
+                                 <object classname="java.util.LinkedList">
+                                  <item >
+                                   <at name="value">
+                                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                    </object>
+                                   </at>
+                                  </item>
+                                 </object>
+                                </at>
+                               </object>
+                              </at>
+                              <at name="scrollableTracksViewportHeight">true</at>
+                              <at name="scrollableTracksViewportWidth">true</at>
+                              <at name="name">lstDataSets</at>
+                              <at name="width">906</at>
+                              <at name="items">
+                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
+                                <at name="name">items</at>
+                               </object>
+                              </at>
+                              <at name="scollBars">
+                               <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+                                <at name="name">scollBars</at>
+                                <at name="verticalpolicy">20</at>
+                                <at name="horizontalpolicy">30</at>
+                                <at name="border">
+                                 <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                  <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                   <at name="name">border</at>
+                                  </super>
+                                  <at name="borders">
+                                   <object classname="java.util.LinkedList">
+                                    <item >
+                                     <at name="value">
+                                      <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                       <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                        <at name="name">border</at>
+                                       </super>
+                                      </object>
+                                     </at>
+                                    </item>
+                                   </object>
+                                  </at>
+                                 </object>
+                                </at>
+                               </object>
+                              </at>
+                              <at name="height">346</at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                         </object>
+                        </at>
+                       </item>
+                       <item >
+                        <at name="value">
+                         <object classname="com.jeta.forms.store.memento.FormMemento">
+                          <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                           <at name="cellconstraints">
+                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                             <at name="column">2</at>
+                             <at name="row">4</at>
+                             <at name="colspan">1</at>
+                             <at name="rowspan">1</at>
+                             <at name="halign">default</at>
+                             <at name="valign">default</at>
+                             <at name="insets" object="insets">0,0,0,0</at>
+                            </object>
+                           </at>
+                           <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+                          </super>
+                          <at name="id">embedded.535055035</at>
+                          <at name="rowspecs">CENTER:DEFAULT:NONE</at>
+                          <at name="colspecs">FILL:8DLU:GROW(1.0),FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE</at>
+                          <at name="components">
+                           <object classname="java.util.LinkedList">
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">6</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-plan-dataset-add.png</at>
+                                     <at name="description">topology-plan-dataset-add.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnAddDataSet</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Add_dataset</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">4</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-plan-dataset-remove.png</at>
+                                     <at name="description">topology-plan-dataset-remove.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnRemoveDataSet</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Remove_dataset</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                           </object>
+                          </at>
+                          <at name="properties">
+                           <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                            <at name="classname">com.jeta.forms.gui.form.GridView</at>
+                            <at name="properties">
+                             <object classname="com.jeta.forms.store.support.PropertyMap">
+                              <at name="border">
+                               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                 <at name="name">border</at>
+                                </super>
+                                <at name="borders">
+                                 <object classname="java.util.LinkedList"/>
+                                </at>
+                               </object>
+                              </at>
+                              <at name="name"/>
+                              <at name="fill">
+                               <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                                <at name="name">fill</at>
+                               </object>
+                              </at>
+                              <at name="scollBars">
+                               <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+                                <at name="name">scollBars</at>
+                                <at name="verticalpolicy">21</at>
+                                <at name="horizontalpolicy">31</at>
+                                <at name="border">
+                                 <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                  <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                   <at name="name">border</at>
+                                  </super>
+                                  <at name="borders">
+                                   <object classname="java.util.LinkedList">
+                                    <item >
+                                     <at name="value">
+                                      <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                       <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                        <at name="name">border</at>
+                                       </super>
+                                      </object>
+                                     </at>
+                                    </item>
+                                   </object>
+                                  </at>
+                                 </object>
+                                </at>
+                               </object>
+                              </at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                          <at name="cellpainters">
+                           <object classname="com.jeta.forms.store.support.Matrix">
+                            <at name="rows">
+                             <object classname="[Ljava.lang.Object;" size="1">
+                              <at name="item" index="0">
+                               <object classname="[Ljava.lang.Object;" size="6"/>
+                              </at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                          <at name="rowgroups">
+                           <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                            <at name="groups">
+                             <object classname="java.util.HashMap"/>
+                            </at>
+                           </object>
+                          </at>
+                          <at name="colgroups">
+                           <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                            <at name="groups">
+                             <object classname="java.util.HashMap"/>
+                            </at>
+                           </object>
+                          </at>
+                         </object>
+                        </at>
+                       </item>
+                      </object>
+                     </at>
+                     <at name="properties">
+                      <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                       <at name="classname">com.jeta.forms.gui.form.GridView</at>
+                       <at name="properties">
+                        <object classname="com.jeta.forms.store.support.PropertyMap">
+                         <at name="border">
+                          <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                           <super classname="com.jeta.forms.store.properties.BorderProperty">
+                            <at name="name">border</at>
+                           </super>
+                           <at name="borders">
+                            <object classname="java.util.LinkedList"/>
+                           </at>
+                          </object>
+                         </at>
+                         <at name="name"/>
+                         <at name="fill">
+                          <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                           <at name="name">fill</at>
+                          </object>
+                         </at>
+                         <at name="scollBars">
+                          <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+                           <at name="name">scollBars</at>
+                           <at name="verticalpolicy">21</at>
+                           <at name="horizontalpolicy">31</at>
+                           <at name="border">
+                            <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                             <super classname="com.jeta.forms.store.properties.BorderProperty">
+                              <at name="name">border</at>
+                             </super>
+                             <at name="borders">
+                              <object classname="java.util.LinkedList">
+                               <item >
+                                <at name="value">
+                                 <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                  <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                   <at name="name">border</at>
+                                  </super>
+                                 </object>
+                                </at>
+                               </item>
+                              </object>
+                             </at>
+                            </object>
+                           </at>
+                          </object>
+                         </at>
+                        </object>
+                       </at>
+                      </object>
+                     </at>
+                     <at name="cellpainters">
+                      <object classname="com.jeta.forms.store.support.Matrix">
+                       <at name="rows">
+                        <object classname="[Ljava.lang.Object;" size="5">
+                         <at name="item" index="0">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="1">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="2">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="3">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="4">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                        </object>
+                       </at>
+                      </object>
+                     </at>
+                     <at name="rowgroups">
+                      <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                       <at name="groups">
+                        <object classname="java.util.HashMap"/>
+                       </at>
+                      </object>
+                     </at>
+                     <at name="colgroups">
+                      <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                       <at name="groups">
+                        <object classname="java.util.HashMap"/>
+                       </at>
+                      </object>
+                     </at>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                </item>
+                <item >
+                 <at name="value">
+                  <object classname="com.jeta.forms.store.properties.TabProperty">
+                   <at name="name">tab</at>
+                   <at name="title">_Rules</at>
+                   <at name="icon">
+                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                     <at name="embedded">false</at>
+                     <at name="width">0</at>
+                     <at name="height">0</at>
+                    </object>
+                   </at>
+                   <at name="form">
+                    <object classname="com.jeta.forms.store.memento.FormMemento">
+                     <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                      <at name="cellconstraints">
+                       <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                        <at name="column">1</at>
+                        <at name="row">1</at>
+                        <at name="colspan">1</at>
+                        <at name="rowspan">1</at>
+                        <at name="halign">default</at>
+                        <at name="valign">default</at>
+                        <at name="insets" object="insets">0,0,0,0</at>
+                       </object>
+                      </at>
+                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+                     </super>
+                     <at name="id">embedded.586608407</at>
+                     <at name="rowspecs">CENTER:2DLU:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE</at>
+                     <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
+                     <at name="components">
+                      <object classname="java.util.LinkedList">
+                       <item >
+                        <at name="value">
+                         <object classname="com.jeta.forms.store.memento.BeanMemento">
+                          <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                           <at name="cellconstraints">
+                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                             <at name="column">2</at>
+                             <at name="row">2</at>
+                             <at name="colspan">1</at>
+                             <at name="rowspan">1</at>
+                             <at name="halign">default</at>
+                             <at name="valign">default</at>
+                             <at name="insets" object="insets">0,0,0,0</at>
+                            </object>
+                           </at>
+                           <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                          </super>
+                          <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                          <at name="beanclass">javax.swing.JList</at>
+                          <at name="beanproperties">
+                           <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                            <at name="classname">javax.swing.JList</at>
+                            <at name="properties">
+                             <object classname="com.jeta.forms.store.support.PropertyMap">
+                              <at name="border">
+                               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                 <at name="name">border</at>
+                                </super>
+                                <at name="borders">
+                                 <object classname="java.util.LinkedList">
+                                  <item >
+                                   <at name="value">
+                                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                    </object>
+                                   </at>
+                                  </item>
+                                 </object>
+                                </at>
+                               </object>
+                              </at>
+                              <at name="scrollableTracksViewportHeight">true</at>
+                              <at name="scrollableTracksViewportWidth">true</at>
+                              <at name="name">lstRules</at>
+                              <at name="width">906</at>
+                              <at name="items">
+                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
+                                <at name="name">items</at>
+                               </object>
+                              </at>
+                              <at name="scollBars">
+                               <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+                                <at name="name">scollBars</at>
+                                <at name="verticalpolicy">20</at>
+                                <at name="horizontalpolicy">30</at>
+                                <at name="border">
+                                 <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                  <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                   <at name="name">border</at>
+                                  </super>
+                                  <at name="borders">
+                                   <object classname="java.util.LinkedList">
+                                    <item >
+                                     <at name="value">
+                                      <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                       <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                        <at name="name">border</at>
+                                       </super>
+                                      </object>
+                                     </at>
+                                    </item>
+                                   </object>
+                                  </at>
+                                 </object>
+                                </at>
+                               </object>
+                              </at>
+                              <at name="height">346</at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                         </object>
+                        </at>
+                       </item>
+                       <item >
+                        <at name="value">
+                         <object classname="com.jeta.forms.store.memento.FormMemento">
+                          <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                           <at name="cellconstraints">
+                            <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                             <at name="column">2</at>
+                             <at name="row">4</at>
+                             <at name="colspan">1</at>
+                             <at name="rowspan">1</at>
+                             <at name="halign">default</at>
+                             <at name="valign">default</at>
+                             <at name="insets" object="insets">0,0,0,0</at>
+                            </object>
+                           </at>
+                           <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
+                          </super>
+                          <at name="id">embedded.82125976</at>
+                          <at name="rowspecs">CENTER:DEFAULT:NONE</at>
+                          <at name="colspecs">FILL:DEFAULT:GROW(1.0),FILL:DEFAULT:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE</at>
+                          <at name="components">
+                           <object classname="java.util.LinkedList">
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">7</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-plan-rule-add.png</at>
+                                     <at name="description">topology-plan-rule-add.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnAddRule</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Add_rule</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">3</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-plan-rule-remove.png</at>
+                                     <at name="description">topology-plan-rule-remove.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnRemoveRule</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Remove_rule</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                            <item >
+                             <at name="value">
+                              <object classname="com.jeta.forms.store.memento.BeanMemento">
+                               <super classname="com.jeta.forms.store.memento.ComponentMemento">
+                                <at name="cellconstraints">
+                                 <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+                                  <at name="column">5</at>
+                                  <at name="row">1</at>
+                                  <at name="colspan">1</at>
+                                  <at name="rowspan">1</at>
+                                  <at name="halign">default</at>
+                                  <at name="valign">default</at>
+                                  <at name="insets" object="insets">0,0,0,0</at>
+                                 </object>
+                                </at>
+                                <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+                               </super>
+                               <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+                               <at name="beanclass">javax.swing.JButton</at>
+                               <at name="beanproperties">
+                                <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                                 <at name="classname">javax.swing.JButton</at>
+                                 <at name="properties">
+                                  <object classname="com.jeta.forms.store.support.PropertyMap">
+                                   <at name="border">
+                                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                     <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                      <at name="name">border</at>
+                                     </super>
+                                     <at name="borders">
+                                      <object classname="java.util.LinkedList">
+                                       <item >
+                                        <at name="value">
+                                         <object classname="com.jeta.forms.store.properties.EmptyBorderProperty">
+                                          <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                           <at name="name">border</at>
+                                          </super>
+                                          <at name="top">2</at>
+                                          <at name="left">2</at>
+                                          <at name="bottom">2</at>
+                                          <at name="right">2</at>
+                                         </object>
+                                        </at>
+                                       </item>
+                                      </object>
+                                     </at>
+                                    </object>
+                                   </at>
+                                   <at name="icon">
+                                    <object classname="com.jeta.forms.store.properties.IconProperty">
+                                     <at name="embedded">false</at>
+                                     <at name="path">org/gvsig/topology/swing/impl/images/topology-plan-rule-edit.png</at>
+                                     <at name="description">topology-plan-rule-edit.png</at>
+                                     <at name="width">16</at>
+                                     <at name="height">16</at>
+                                    </object>
+                                   </at>
+                                   <at name="name">btnEditRule</at>
+                                   <at name="width">20</at>
+                                   <at name="toolTipText">_Edit_rule</at>
+                                   <at name="height">20</at>
+                                  </object>
+                                 </at>
+                                </object>
+                               </at>
+                              </object>
+                             </at>
+                            </item>
+                           </object>
+                          </at>
+                          <at name="properties">
+                           <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                            <at name="classname">com.jeta.forms.gui.form.GridView</at>
+                            <at name="properties">
+                             <object classname="com.jeta.forms.store.support.PropertyMap">
+                              <at name="border">
+                               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                 <at name="name">border</at>
+                                </super>
+                                <at name="borders">
+                                 <object classname="java.util.LinkedList"/>
+                                </at>
+                               </object>
+                              </at>
+                              <at name="name"/>
+                              <at name="fill">
+                               <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                                <at name="name">fill</at>
+                               </object>
+                              </at>
+                              <at name="scollBars">
+                               <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+                                <at name="name">scollBars</at>
+                                <at name="verticalpolicy">21</at>
+                                <at name="horizontalpolicy">31</at>
+                                <at name="border">
+                                 <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                                  <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                   <at name="name">border</at>
+                                  </super>
+                                  <at name="borders">
+                                   <object classname="java.util.LinkedList">
+                                    <item >
+                                     <at name="value">
+                                      <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                       <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                        <at name="name">border</at>
+                                       </super>
+                                      </object>
+                                     </at>
+                                    </item>
+                                   </object>
+                                  </at>
+                                 </object>
+                                </at>
+                               </object>
+                              </at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                          <at name="cellpainters">
+                           <object classname="com.jeta.forms.store.support.Matrix">
+                            <at name="rows">
+                             <object classname="[Ljava.lang.Object;" size="1">
+                              <at name="item" index="0">
+                               <object classname="[Ljava.lang.Object;" size="7"/>
+                              </at>
+                             </object>
+                            </at>
+                           </object>
+                          </at>
+                          <at name="rowgroups">
+                           <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                            <at name="groups">
+                             <object classname="java.util.HashMap"/>
+                            </at>
+                           </object>
+                          </at>
+                          <at name="colgroups">
+                           <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                            <at name="groups">
+                             <object classname="java.util.HashMap"/>
+                            </at>
+                           </object>
+                          </at>
+                         </object>
+                        </at>
+                       </item>
+                      </object>
+                     </at>
+                     <at name="properties">
+                      <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+                       <at name="classname">com.jeta.forms.gui.form.GridView</at>
+                       <at name="properties">
+                        <object classname="com.jeta.forms.store.support.PropertyMap">
+                         <at name="border">
+                          <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                           <super classname="com.jeta.forms.store.properties.BorderProperty">
+                            <at name="name">border</at>
+                           </super>
+                           <at name="borders">
+                            <object classname="java.util.LinkedList"/>
+                           </at>
+                          </object>
+                         </at>
+                         <at name="name"/>
+                         <at name="fill">
+                          <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+                           <at name="name">fill</at>
+                          </object>
+                         </at>
+                         <at name="scollBars">
+                          <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+                           <at name="name">scollBars</at>
+                           <at name="verticalpolicy">21</at>
+                           <at name="horizontalpolicy">31</at>
+                           <at name="border">
+                            <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+                             <super classname="com.jeta.forms.store.properties.BorderProperty">
+                              <at name="name">border</at>
+                             </super>
+                             <at name="borders">
+                              <object classname="java.util.LinkedList">
+                               <item >
+                                <at name="value">
+                                 <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                                  <super classname="com.jeta.forms.store.properties.BorderProperty">
+                                   <at name="name">border</at>
+                                  </super>
+                                 </object>
+                                </at>
+                               </item>
+                              </object>
+                             </at>
+                            </object>
+                           </at>
+                          </object>
+                         </at>
+                        </object>
+                       </at>
+                      </object>
+                     </at>
+                     <at name="cellpainters">
+                      <object classname="com.jeta.forms.store.support.Matrix">
+                       <at name="rows">
+                        <object classname="[Ljava.lang.Object;" size="5">
+                         <at name="item" index="0">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="1">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="2">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="3">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                         <at name="item" index="4">
+                          <object classname="[Ljava.lang.Object;" size="3"/>
+                         </at>
+                        </object>
+                       </at>
+                      </object>
+                     </at>
+                     <at name="rowgroups">
+                      <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                       <at name="groups">
+                        <object classname="java.util.HashMap"/>
+                       </at>
+                      </object>
+                     </at>
+                     <at name="colgroups">
+                      <object classname="com.jeta.forms.store.memento.FormGroupSet">
+                       <at name="groups">
+                        <object classname="java.util.HashMap"/>
+                       </at>
+                      </object>
+                     </at>
+                    </object>
+                   </at>
+                  </object>
+                 </at>
+                </item>
+               </object>
+              </at>
+             </object>
+            </at>
+            <at name="width">953</at>
+            <at name="tabCount">2</at>
+            <at name="height">484</at>
+           </object>
+          </at>
+         </object>
+        </at>
+       </object>
+      </at>
+     </item>
+     <item >
+      <at name="value">
+       <object classname="com.jeta.forms.store.memento.BeanMemento">
+        <super classname="com.jeta.forms.store.memento.ComponentMemento">
+         <at name="cellconstraints">
+          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+           <at name="column">2</at>
+           <at name="row">4</at>
+           <at name="colspan">1</at>
+           <at name="rowspan">1</at>
+           <at name="halign">default</at>
+           <at name="valign">default</at>
+           <at name="insets" object="insets">0,0,0,0</at>
+          </object>
+         </at>
+         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+        </super>
+        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+        <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
+          <at name="properties">
+           <object classname="com.jeta.forms.store.support.PropertyMap">
+            <at name="border">
+             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+              <super classname="com.jeta.forms.store.properties.BorderProperty">
+               <at name="name">border</at>
+              </super>
+              <at name="borders">
+               <object classname="java.util.LinkedList">
+                <item >
+                 <at name="value">
+                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                  </object>
+                 </at>
+                </item>
+               </object>
+              </at>
+             </object>
+            </at>
+            <at name="name">lblTolerance</at>
+            <at name="width">62</at>
+            <at name="text">_Tolerance</at>
+            <at name="fill">
+             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+              <at name="name">fill</at>
+             </object>
+            </at>
+            <at name="height">14</at>
+           </object>
+          </at>
+         </object>
+        </at>
+       </object>
+      </at>
+     </item>
+     <item >
+      <at name="value">
+       <object classname="com.jeta.forms.store.memento.BeanMemento">
+        <super classname="com.jeta.forms.store.memento.ComponentMemento">
+         <at name="cellconstraints">
+          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
+           <at name="column">4</at>
+           <at name="row">4</at>
+           <at name="colspan">1</at>
+           <at name="rowspan">1</at>
+           <at name="halign">default</at>
+           <at name="valign">default</at>
+           <at name="insets" object="insets">0,0,0,0</at>
+          </object>
+         </at>
+         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
+        </super>
+        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
+        <at name="beanclass">javax.swing.JTextField</at>
+        <at name="beanproperties">
+         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+          <at name="classname">javax.swing.JTextField</at>
+          <at name="properties">
+           <object classname="com.jeta.forms.store.support.PropertyMap">
+            <at name="border">
+             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+              <super classname="com.jeta.forms.store.properties.BorderProperty">
+               <at name="name">border</at>
+              </super>
+              <at name="borders">
+               <object classname="java.util.LinkedList">
+                <item >
+                 <at name="value">
+                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                   <super classname="com.jeta.forms.store.properties.BorderProperty">
+                    <at name="name">border</at>
+                   </super>
+                  </object>
+                 </at>
+                </item>
+               </object>
+              </at>
+             </object>
+            </at>
+            <at name="horizontalAlignment">4</at>
+            <at name="name">txtTolerance</at>
+            <at name="width">880</at>
+            <at name="height">20</at>
+           </object>
+          </at>
+         </object>
+        </at>
+       </object>
+      </at>
+     </item>
+    </object>
+   </at>
+   <at name="properties">
+    <object classname="com.jeta.forms.store.memento.PropertiesMemento">
+     <at name="classname">com.jeta.forms.gui.form.GridView</at>
+     <at name="properties">
+      <object classname="com.jeta.forms.store.support.PropertyMap">
+       <at name="border">
+        <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+         <super classname="com.jeta.forms.store.properties.BorderProperty">
+          <at name="name">border</at>
+         </super>
+         <at name="borders">
+          <object classname="java.util.LinkedList"/>
+         </at>
+        </object>
+       </at>
+       <at name="name"/>
+       <at name="fill">
+        <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
+         <at name="name">fill</at>
+        </object>
+       </at>
+       <at name="scollBars">
+        <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
+         <at name="name">scollBars</at>
+         <at name="verticalpolicy">21</at>
+         <at name="horizontalpolicy">31</at>
+         <at name="border">
+          <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
+           <super classname="com.jeta.forms.store.properties.BorderProperty">
+            <at name="name">border</at>
+           </super>
+           <at name="borders">
+            <object classname="java.util.LinkedList">
+             <item >
+              <at name="value">
+               <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
+                <super classname="com.jeta.forms.store.properties.BorderProperty">
+                 <at name="name">border</at>
+                </super>
+               </object>
+              </at>
+             </item>
+            </object>
+           </at>
+          </object>
+         </at>
+        </object>
+       </at>
+      </object>
+     </at>
+    </object>
+   </at>
+   <at name="cellpainters">
+    <object classname="com.jeta.forms.store.support.Matrix">
+     <at name="rows">
+      <object classname="[Ljava.lang.Object;" size="7">
+       <at name="item" index="0">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="1">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="2">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="3">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="4">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="5">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+       <at name="item" index="6">
+        <object classname="[Ljava.lang.Object;" size="5"/>
+       </at>
+      </object>
+     </at>
+    </object>
+   </at>
+   <at name="rowgroups">
+    <object classname="com.jeta.forms.store.memento.FormGroupSet">
+     <at name="groups">
+      <object classname="java.util.HashMap"/>
+     </at>
+    </object>
+   </at>
+   <at name="colgroups">
+    <object classname="com.jeta.forms.store.memento.FormGroupSet">
+     <at name="groups">
+      <object classname="java.util.HashMap"/>
+     </at>
+    </object>
+   </at>
+  </object>
+ </at>
+</object>
Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/pom.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/pom.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl/pom.xml	(revision 808)
@@ -0,0 +1,37 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.gvsig</groupId>
+        <artifactId>org.gvsig.topology.swing</artifactId>
+        <version>1.0.3</version>
+    </parent>
+    <artifactId>org.gvsig.topology.swing.impl</artifactId>
+    <name>${project.artifactId}</name>
+    <dependencies>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.topology.lib.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.topology.swing.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.jeta</groupId>
+            <artifactId>formsrt</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.jgoodies</groupId>
+            <artifactId>jgoodies-forms</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.gvsig</groupId>
+            <artifactId>org.gvsig.tools.dynform.api</artifactId>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file

Property changes on: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/org.gvsig.topology.swing.impl
___________________________________________________________________
Added: svn:ignore
   + target


Index: org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/pom.xml
===================================================================
--- org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/pom.xml	(revision 0)
+++ org.gvsig.topology/tags/org.gvsig.topology-1.0.3/org.gvsig.topology.swing/pom.xml	(revision 808)
@@ -0,0 +1,15 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.gvsig</groupId>
+    <artifactId>org.gvsig.topology</artifactId>
+    <version>1.0.3</version>
+  </parent>
+  <artifactId>org.gvsig.topology.swing</artifactId>
+  <packaging>pom</packaging>
+  <name>${project.artifactId}</name>
+  <modules>
+  	<module>org.gvsig.topology.swing.api</module>
+  	<module>org.gvsig.topology.swing.impl</module>
+  </modules>
+</project>
\ No newline at end of file
